我是PEGjs 的初學者, 我需要幫助來為我的決議器實作變數(識別符號)宣告支持。
我的輸入代碼如下所示:
a=4;
print a
我的 PEGjs 語法:
start
=(line)*
line
=left:var"="right:integer";" {left=right;}
/
print middle:var {return middle;}
print
="print"
var
=(a-zA-z)
Integer "integer"
= _ [0-9] { return parseInt(text(), 10); }
預期輸出: 4
請幫我。#提前致謝
uj5u.com熱心網友回復:
嘗試這個:
all
= _ mn:multiPutN _ pn:printN _
{
return mn[pn];
}
multiPutN
= mp:putN _
{
var r = {};
mp.forEach(it => {
r[it[0]]=it[1];
});
return r;
}
putN
= vn:varName _ "=" _ nn:n _ ";" { return [vn, nn]}
printN
= print _ n:varName _ {return n;}
varName
= [a-zA-Z] {return text();}
print
="print"
n "integer number"
= _ [0-9] { return parseInt(text(), 10); }
_ "whitespace or new line"
= [ \t\n\r]*
這樣上面的代碼也支持多變數但只能列印一個變數。我根據您的示例撰寫了語法,因此在分配變數值時您需要放置“;” 最后但 print var 不需要
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/335604.html
標籤:javascript 解析 pegjs
