使用pyparsing键入结果检查

wik*_*ier 7 python parsing pyparsing

我是新用的pyparsing,但我找不到如何解决这个相当容易的问题.我(目前)有一个简单的语法,但我找不到根据我在语法中定义的类型来区分解析结果的方法.

也许通过一个例子来解释它可能更容易.假设这个元素:

elem = foo | bar
Run Code Online (Sandbox Code Playgroud)

当我调用时:

elem.parseString("...")
Run Code Online (Sandbox Code Playgroud)

假设字符串与我的语法匹配,我如何区分它是否与'foo'或'bar'匹配?我得到了ParseResults的实例对象,没有这样的元数据.

提前致谢.

Jon*_*nts 4

您可以为它们指定一个名称(使用 Literal 的复杂示例):

foo = Literal('foo').setResultsName('foo')
bar = Literal('bar').setResultsName('bar')
grammar = foo | bar
parsed = grammar.parseString('bar foo')
print parsed
# (['bar'], {'bar': [('bar', 0)]})
print parsed.asDict()
# {'bar': 'bar'}
Run Code Online (Sandbox Code Playgroud)