用pegjs解析布尔表达式链
parsing boolean expression chain with pegjs
我正在尝试用peg.js:解析这个字符串
filter a > 2 or b < 3 or b > 10 or c = 12
语法的相关摘录如下:
bool "bool"
= left:expr space+ logicOp:logicOp space+ right:bool { return new options.BooleanExpr(left, logicOp, right); }
/ expr:expr { return expr; }
bools "bools"
= left:bool morebools:(space+ logicOp space+ bool)+ { return options.makeBooleanChain(left, morebools); }
/ bool:bool { return bool; }
filter "filter"
= "filter"i space+ _bool:bools { return new options.FilterCmd(_bool); }
问题是,超过2个表达式(expr1或expr2)无法识别布尔链,我不知道如何解析更多的"或exprN"部分。我引入了"bools"规则,但这也不起作用。你知道我如何解决这个问题并解析任意长的布尔表达式吗?
回到@HBP建议的在线示例,我设法创建了一个工作规则:
bool "bool"
= left:expr space+ logicOp:logicOp space+ right:bool { return new options.BooleanExpr(left, logicOp, right); }
/ expr
仅此一项即可完成任务。。。
相关文章:
- 布尔表达式-与AND、OR逻辑运算符混淆以及它们的工作方式
- 什么's VBA和Javascript布尔表达式之间的区别
- 评估JavaScript中给出布尔表达式的字符串
- 从树遍历中构建布尔表达式的算法
- = vs === 布尔表达式的运算符
- ngAnimateSwap-使用布尔表达式不会按预期设置动画
- 为什么这个布尔表达式不返回 true
- 布尔代数 - 使用 AND/OR 导出条件表达式是棘手的部分
- 如何在复杂的布尔表达式上避免三元
- 用pegjs解析布尔表达式链
- 反转布尔表达式
- 在不带eval的Javascript中计算字符串中的布尔表达式
- 为什么这个JavaScript代码在布尔表达式不再为true之后进入for循环
- 遍历json抽象语法树来构建布尔表达式
- JavaScript布尔表达式中的多个比较运算符
- javascript在布尔表达式中使用优化吗?
- 是Chrome Javascript评估布尔表达式正确
- 用于布尔表达式计算的Javascript eval
- 从JavaScript变量中计算布尔表达式
- AngularJS中布尔表达式的求值