为什么我的用例无法在pyparsing中进行有序选择?
|
>>> g = MatchFirst( Literal(\"scoobydoo\"), Literal(\"scooby\") )
>>> g.parseString( \"scooby\" )
pyparsing.ParseException: Expected \"scoobydoo\" (at char 0), (line:1, col:1)
是否因为字符流中已经使用了“ 1”而引发了ParseException并因此解析器无法回溯?我正在为此寻求详细的实现说明。
目前,我认为这是一个错误,因为解析器为什么会短路匹配,因为它没有搜索生产规则中的所有选择。
更新:
似乎MatchFirst
并不完全等同于exactly3ѭ运算符。为什么呢
>>> g = Literal(\"scoobydoo\") | Literal(\"scooby\")
>>> g.parseString(\"scooby\").asList()
[\'scooby\']
>>> g.parseString(\"scoobydoo\").asList()
[\'scoobydoo\']
没有找到相关结果
已邀请:
1 个回复
矾醒忻
(或\'| \')设计短路。要强制检查所有替代项,请使用
(或\'^ \')。
也将起作用,因为
会短路,但仅在重新排列具有前导重叠的替代词之后才可以。