我正在使用pyPEG来解析函数的声明。目前我有这个写:
from pypeg2 import attr, \
optional, \
csl, \
name, \
List, \
Namespace
class Parameters(Namespace):
grammar = optional(csl(name()))
class Function(List):
grammar = "def", name(), \
"(", attr("params", Parameters), "):"
例如,如果我这样做:
>>> import pypeg2
>>> f = pypeg2.parse("def f(a, b):", Function)
我希望f.params
包含a
和b
作为参数。反而:
>>> f.params
Parameters([], name=Symbol('b'))
只有b
被发现。为什么是b
唯一发现的符号?