I am looking for a peg.js grammar expression for matching against:
"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("")}; }
I don't know how to make the expression repeat, but also make it optional.
Here's what I came up with to get rid of the "." characters. I'll admit that I've never used peg.js before :)
PATH_EXP =
(first:STRING_EXP rest:("." STRING_EXP)*) {
return {
PATH: first +
rest.map(function(v) {
return v[1];
}).join("")
};
}
edit — oh wait this is better:
PATH_EXP =
first:STRING_EXP rest:("." s:STRING_EXP { return "." + s; })+ {
return {
PATH: first + rest.join('')
};
}
edit — clearly if you want the "." characters you'd include them in the action inside that second part. Missed that part of the question.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With