我正在尝试使用 PEG.js 构建一个简单的解析器。我希望用户能够输入一系列关键字,它们之间有一个可选的“AND”,但我似乎无法获得可选和工作。它总是期待它,即使我已经用 ? (零或一)。
将此语法粘贴到http://pegjs.majda.cz/online:
parse = pair+
pair = p:word and? { return p }
word = w:char+ { return w.join(""); }
char = c:[^ \r\n\t] { return c; }
and = ws* 'and'i ws*
ws = [ \t]
我的目标是将这些输入中的任何一个解析为 ["foo", "bar"] 的数组:
foo bar
foo and bar