【发布时间】:2016-12-07 06:53:52
【问题描述】:
好的,我组装了一个解析器来解析像这样的表达式
abc def ghi LONG|SHORT 12345
----^------ ----^----- --^--
A: alphas B: choice C: num
pyparsing 编写的解析器如下所示:
a = pp.OneOrMore(pp.Word(pp.alphas)).setName("PRT_A")
b = pp.Or(['LONG','SHORT']).setName("PRT_B")
c = pp.Word(pp.nums).setName("PRT_C")
expr = a('A') + b('B') + c('C')
当我向其中输入“某事说 SHORT 13”时:
res = expr.parseString("something said SHORT 13")
我得到错误:
ParseException:
Expected {"LONG" ^ "SHORT"} (at char 21), (line:1, col:22)
"something said SHORT >!<13"
为什么?我认为OneOrMore 应该将所有单词加起来,直到出现 LONG|SHORT 选择...
【问题讨论】:
-
@user2357112 我已将问题简化为仅包含前瞻问题-我认为,使问题更清晰,更有价值。您介意相应地更新(现在接受的)答案吗(即删除关于
Combine的内容)? -
答案已更新,但您还应该更新问题中的错误消息。没有
Combine的版本应该在以后的位置产生错误。
标签: python grammar text-parsing pyparsing