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')