我使用的是:
parser = parser1 ^ parser2 ^ parser3
然后
result = parser.parseString(line)
是否有一个简单的内置方法来确定哪3个OR解析器成功了?
答案 0 :(得分:1)
给他们结果名称:
parser = parser1("p1") ^ parser2("p2") ^ parser3("p3")
然后解析后:
if result.p1:
# parser1 was matched
elif result.p2:
# parser2 was matched
elif result.p3:
# parser3 was matched
else:
# no parser matched, or a parser matched with empty contents
另外,请考虑使用'|'如果3个解析器中没有歧义,则运算符代替'^'。 '|'将在第一场比赛后停止尝试替代方案,其中'^'将全部尝试,然后选择最长的比赛。