使用pyparsing时的s表达式解析错误
我正在用Python(版本3.4.0)和pyparsing(版本2.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)
1 个回答
2
这个差异对你有用吗?
9,10c9,10
< sexp_list << (sexp | (sexp + sexp_list))
< sexp << (w | (lp + sexp_list + rp))
---
> sexp_list = pp.Group(lp + pp.ZeroOrMore(sexp) + rp)
> sexp << (w | sexp_list)