LPeg语法的奇特之处

我的 Lua 应用程序的一部分是一个搜索栏,我正在尝试使其理解布尔表达式。我正在使用 LPeg,但当前的语法给出了奇怪的结果:

它只解析第一个标记,我无法弄清楚为什么会这样。据我所知,由于起始非终结符末尾的 !.,部分匹配是不可能的。我该如何修复这个问题?

原文链接 https://stackoverflow.com/questions/8844862

点赞
stackoverflow用户343123
stackoverflow用户343123

这个匹配在获取整个字符串,但捕获的内容是错误的。注意,'=>' 优先级比拼接要高,因此你可能需要在像这样的地方加括号:

  EXPR        <- S? ( TERM ( (S OPERATOR)? S TERM )+ ) -> {}
2012-01-13 18:01:58