我試圖延長PEG.js例子語法解析所有的4個運營商的數學表達式爲我在線BASIC解釋實驗:解析與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),但不象2-1-1的表達,給出2而不是0。
你能幫我改進和調試嗎?
在此先感謝。
編輯:我已將「數字」規則添加到語法中。是的,我的語法給出了一個類似於分析樹的遞歸結構。
好的謝謝,解決了這個問題,看看你發佈的例子語法。我認爲如果沒有提示,就很難找到這個解決方案! –