0
我想在一個簡單的命令式語言中編寫一個在haskell中的解釋器。 爲此,我首先爲該工具BNFC編寫了該語言的Gramar(http://bnfc.digitalgrammars.com/)。該語法BNFC生成的語法在最簡單的例子上失敗
部分專門算術表達式,如:
EAdd. Expr ::= Expr "+" Expr ;
EMinus. Expr ::= Expr "-" Expr ;
EMul. Expr ::= Expr "*" Expr ;
ENum. Expr ::= Integer ;
剛走,我可以運行BNFC工具,並提供腳本來進行測試。它成功解析算術運算。
不過,如果我添加其他部分(讓我們與類型說):
Tint. Type ::= "int" ;
,然後把EXPR secion,算術運算不再解析(1 + 2它說,在測試時「解析失敗。 .. [一些標記在這裏]在1 + 2之前的第1行的語法錯誤「)
爲什麼會發生?如何解決它?
改變措辭:
TInt. Type ::= "int" ;
EAdd. Expr ::= Expr "+" Expr ;
ENum. Expr ::= Integer ;
不能正確分析1 + 1
使用BNFC:爲什麼這麼gramar
?