これがcofeescriptにあるとしましょう
obj =
one:
one: 11
two: 12
two: 2
three:
four: 34
そしてそれはにコンパイルされます
var obj = {
one: { one: 11, two: 12 },
two: 2,
three: { four: 34 }
}
この PEG.js 文法があるとしましょう
start = expr
vvn = f:[a-z]+
{ return f.join(""); }
spc = [' ''\t''\n']*
number =
f:([1-9][0-9]*) { return f.join(""); }
string =
f:[a-z]+ { return f.join(""); }
value =
spc f:vvn spc ':' spc s:value spc
{ return { var : f, value : s }; }
/ number / string
expr =
spc f:vvn spc '=' s:value+
{ return { var: f, value: s} }
オンライン PEG パーサーでテストしたい場合、その文法は半分のことを行い、two
変数は最初の変数の下ではなく同じスコープで 2 回定義されone
ます。2行の左側に同じスペースがあるかどうかを確認するにはどうすればよいので、それらを同じスコープに追加しますか?