(注:このような他の質問を読みましたが、これを理解できませんでした)。
私はこの文法を書きました:
start = call
ident = [a-z]+
spaces = [ ]+
call = f:ident spaces g:(call / ident) {
return f + "(" + g + ")";
}
この入力で
a b c d
戻ります
"a(b(c(d)))"
そして、私はしたいです
"a(b)(c)(d)"
この左再帰ルールはそのようなものを与えることができると思いますが、PEG.js は左再帰をサポートしていません。
call = f:(call / ident) spaces g:ident {
return f + "(" + g + ")";
}
この場合、左再帰を削除するにはどうすればよいですか?
PS: これは、オンラインの PEG.js デモでテストできます。