我正在尝试使用pyparsing以下形式解析函数调用:
f(x, y)
Run Code Online (Sandbox Code Playgroud)
这很简单.但由于它是一个递归下降的解析器,它也应该很容易解析:
f(g(x), y)
Run Code Online (Sandbox Code Playgroud)
这是我无法得到的.这是一个煮沸的例子:
from pyparsing import Forward, Word, alphas, alphanums, nums, ZeroOrMore, Literal
lparen = Literal("(")
rparen = Literal(")")
identifier = Word(alphas, alphanums + "_")
integer = Word( nums )
functor = identifier
# allow expression to be used recursively
expression = Forward()
arg = identifier | integer | expression
args = arg + ZeroOrMore("," + arg)
expression << functor + lparen + args + rparen
print expression.parseString("f(x, y)")
print expression.parseString("f(g(x), y)")
Run Code Online (Sandbox Code Playgroud)
这是输出:
['f', …Run Code Online (Sandbox Code Playgroud)