我正在寻找一个用于匹配的peg.js语法表达式:
"variable"
#Fails "variable."
#Fails ""
#Fails "variable.variable"
#Ok "variable.variable.variable.variable.variable"
#Ok {PATH: "variable.variable"}
{PATH: "variable.variable.variable.variable.variable"}
start =
PATH_EXP
STRING_EXP =
chars:[0-9a-zA-Z_]+ { return chars.join(""); }
PATH_EXP =
path:(STRING_EXP "." STRING_EXP) { return {PATH: path.join("")}; }
我不知道如何使表达式重复,但也使它成为可选的。
答案 0 :(得分:1)
这是我想出去摆脱“。”字符。我承认我之前从未使用过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('')
};
}
编辑 - 如果你想要“。”你将它们包含在第二部分内的动作中的字符。错过了那部分问题。