start
= intExp
intExp
= andIntExp
/ orIntExp
andIntExp
= integer (andExp intExp)*
orIntExp
= integer (orExp intExp)*
andExp
= space* "and" space* { return "and";}
orExp
= space* "or" space* { return "or";}
space
= [\n \t]
integer "integer"
= digits:[0-9]+ { return parseInt(digits.join(""), 10); }
我想解析输入
2 or 2 or 2
或2 and 2 and 2
但2 or 2 and 2
无效。简而言之,我不想在输入中and
和or
一起出现。有没有办法用 peg 做到这一点,而不涉及 javascript 和存储以前看到的变量(我已经有一个解决方案)?