オンライン BASIC インタープリター実験用に、4 つの演算子すべてを使用して数式を解析するために、 PEG.jsの文法例を拡張しようとしています。
http://www.dantonag.it/basicjs/basicjs.html
しかし、すべての式が正しく解析されるわけではありません。
これは私のPEG文法です:
expression = additive
additive = left:multiplicative atag:("+" / "-") right:additive { return {tag: atag, left:left, right:right}; } / multiplicative
multiplicative = left:primary atag:("*" / "/") right:multiplicative { return {tag: atag, left:left, right:right}; } / primary
primary = number / "(" additive:additive ")" { return additive; }
number = digits:[0-9]+ { return parseInt(digits.join(""), 10); }
2*3+1 (7 を与える) のような式は正しく解析しますが、0 ではなく 2 を与える 2-1-1 のような式は解析しません。
これを改善してデバッグするのを手伝ってもらえますか?
前もって感謝します。
編集:文法に「数」ルールを追加しました。はい、私の文法は出力として解析木に類似した再帰構造を与えます。