好吧,我認爲這裏有足夠的CS專業來檢查我的遞歸下降解析器的僞代碼。我開發從這個BNF遞歸下降解析器來自BNF的僞代碼
EXP ::= EXP + TERM | EXP - TERM | TERM
TERM ::= TERM * FACTOR | TERM/FACTOR | FACTOR
FACTOR ::= (EXP) | DIGIT
DIGIT ::= 0|1|2|3
這裏是僞代碼:
procedure exp()
term()
if token == ‘+’
match(‘+’)
term()
elseif token == ‘-‘
match(‘-‘)
term()
else
break
procedure term()
factor()
if token == ‘*’
match(‘*’)
factor()
elseif token == ‘/’
match(‘/’)
factor()
else
break
procedure factor()
if token == ‘(‘
match(‘(‘)
exp()
match(‘)’)
else
digit()
procedure digit()
if token == ‘0’
match(‘0’)
elseif token == ‘1’
match(‘1’)
elseif token == ‘2’
match(‘2’)
else
match(‘3’)
match(t)
if token == t
advancetokenpointer
else
error
這是正確的嗎?我想我可能需要在每個程序中都有回報,而且我也不確定我的程序是否正確。也許也包括端程序?無論如何,非常感謝! :-)
爲什麼不編碼/運行它並找出? – 2015-03-03 06:58:59
我會很快! :-) – jeppy7 2015-03-04 19:06:18