LISP S-expressions¶
Textual representation¶
Special characters are:
- the parenthesis
(
and)
, - the double quote
"
, - the vertical bar
|
.
Symbols are represented by their name. Vertical bars |
can be used to
delimit names that contain blanks, special characters, non printable
characters, non-ASCII characters, or can be confused as a number.
Numbers follow the syntax specified by the C function strtol()
with
base=0
.
Strings are delimited by double quotes. All C string escapes are recognized. Non-printable ASCII characters must be escaped.
List are represented by an open parenthesis (
followed by the space
separated list elements, followed by a closing parenthesis )
.
When the cdr
of the last pair is non zero, the closed parenthesis is
preceded by a space, a dot .
, a space, and the textual representation
of the cdr
. (This is only partially supported by Python bindings.)
S-expressions¶
-
class
djvu.sexpr.
Expression
¶ Inheritance diagram:
-
as_string
(width=None, escape_unicode=True)¶ Return a string representation of the expression.
-
print_into
(file, width=None, escape_unicode=True)¶ Print the expression into the file.
-
value
¶ The “pythonic” value of the expression. Lisp lists as mapped to Python tuples.
-
lvalue
¶ The “pythonic” value of the expression. Lisp lists as mapped to Python lists.
New in version 0.4.
-
-
class
djvu.sexpr.
IntExpression
¶ IntExpression
can represent any integer in range .To create objects of this class, use the
Expression
constructor:>>> x = Expression(42) >>> x Expression(42) >>> type(x) <class 'djvu.sexpr.IntExpression'> >>> x.as_string() '42' >>> x.value 42
-
class
djvu.sexpr.
ListExpression
¶ To create objects of this class, use the
Expression
constructor:>>> x = Expression([4, 2]) >>> x Expression([4, 2]) >>> type(x) <class 'djvu.sexpr.ListExpression'> >>> x.as_string() '(4 2)' >>> x.value (4, 2) >>> x.lvalue [4, 2]
-
class
djvu.sexpr.
StringExpression
¶ To create objects of this class, use the
Expression
constructor:>>> x = Expression('eggs') >>> x Expression('eggs') >>> type(x) <class 'djvu.sexpr.StringExpression'> >>> x.as_string() '"eggs"' >>> x.value 'eggs'
-
class
djvu.sexpr.
SymbolExpression
¶ To create objects of this class, use the
Expression
constructor:>>> x = Expression(Symbol('ham')) >>> x Expression(Symbol('ham')) >>> type(x) <class 'djvu.sexpr.SymbolExpression'> >>> x.as_string() 'ham' >>> x.value Symbol('ham')