我正在寻找用于匹配的 peg.js 语法表达式:
"variable"
# 失败“变量。”
# 失败""
# 失败"variable.variable"
# 好的"variable.variable.variable.variable.variable"
#Ok
我期望的输入
{PATH: "variable.variable"}
{PATH: "variable.variable.variable.variable.variable"}
示例.pegjs
start =
PATH_EXP
STRING_EXP =
chars:[0-9a-zA-Z_]+ { return chars.join(""); }
PATH_EXP =
path:(STRING_EXP "." STRING_EXP) { return {PATH: path.join("")}; }
我不知道如何让表达式重复,但也让它成为可选的。
最佳答案
这是我想出的去掉“.”的方法。人物。我承认我以前从未使用过 peg.js :)
PATH_EXP =
(first:STRING_EXP rest:("." STRING_EXP)*) {
return {
PATH: first +
rest.map(function(v) {
return v[1];
}).join("")
};
}
编辑 — 等等,这样更好:
PATH_EXP =
first:STRING_EXP rest:("." s:STRING_EXP { return "." + s; })+ {
return {
PATH: first + rest.join('')
};
}
编辑 — 如果您想要“.”,请明确说明。您将在第二部分的 Action 中包含的字符。错过了问题的那一部分。
关于javascript - 在 PEG.js 上为 STRING.STRING.STRING 制作语法表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19790748/