我正在尝试使用Python(v3.4.0)和pyparsing(v2.0.1)解析s表达式。我思考了以下代码很长时间,但是仍然收到ParseException的错误信息。该代码可以解析例如“a(”之类的内容,但无法解析“(a(b))”。
import pyparsing as pp
# S-expression grammar
w = pp.Word(pp.alphanums)
lp = pp.Suppress("(")
rp = pp.Suppress(")")
sexp = pp.Forward()
sexp_list = pp.Forward()
sexp_list << (sexp | (sexp + sexp_list))
sexp << (w | (lp + sexp_list + rp))
s = "(a (b))"
try:
pr = sexp.parseString(s)
print(pr)
except pp.ParseException as e:
print(e)