kdrag.parsers.sexp

Functions

parse(s)

Parse an s-expression

pprint_sexp(sexp)

Pretty print a single s-expression

pprint_sexps(sexps)

Pretty print s-expressions

kdrag.parsers.sexp.parse(s: str) list[Sexp]

Parse an s-expression

>>> parse("(foo (bar X Y) Z); yoyoyo \n (foo)")
[['foo', ['bar', 'X', 'Y'], 'Z'], ['foo']]
>>> parse("     (define-const x Int)     (define-fun f ((a Int) (b Int)) Int)     (assert (= (f x 3) 4 4.7))     (check-sat)     ")
[['define-const', 'x', 'Int'],
 ['define-fun', 'f', [['a', 'Int'], ['b', 'Int']], 'Int'],
 ['assert', ['=', ['f', 'x', 3], 4, 4.7]],
 ['check-sat']]
>>> parse("(-17)")
[[-17]]
>>> parse("(- 1 2 3 -3.6)")
[['-', 1, 2, 3, -3.6]]
>>> parse("(foo @@@)")
Traceback (most recent call last):
 ...
ValueError: ('unexpected characters', '@@@', '(foo @@@)')
Parameters:

s (str)

Return type:

list[Sexp]

kdrag.parsers.sexp.pprint_sexp(sexp: Sexp) str

Pretty print a single s-expression

>>> sexp = parse("(foo (bar X Y) Z); yoyoyo \n (foo)")[0]
>>> pprint_sexp(sexp)
'(foo (bar X Y) Z)'
Parameters:

sexp (Sexp)

Return type:

str

kdrag.parsers.sexp.pprint_sexps(sexps: list[Sexp]) str

Pretty print s-expressions

>>> sexps = parse("(foo (bar X Y) Z); yoyoyo \n (foo)")
>>> print(pprint_sexps(sexps))
(foo (bar X Y) Z)
(foo)
Parameters:

sexps (list[Sexp])

Return type:

str