相关疑难解决方法(0)

使用pyparsing解析嵌套函数调用

我正在尝试使用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)

python parsing pyparsing

9
推荐指数
2
解决办法
2304
查看次数

标签 统计

parsing ×1

pyparsing ×1

python ×1