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¶ IntExpressioncan represent any integer in range
.To create objects of this class, use the
Expressionconstructor:>>> 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
Expressionconstructor:>>> 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
Expressionconstructor:>>> 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
Expressionconstructor:>>> x = Expression(Symbol('ham')) >>> x Expression(Symbol('ham')) >>> type(x) <class 'djvu.sexpr.SymbolExpression'> >>> x.as_string() 'ham' >>> x.value Symbol('ham')