你好優秀的程序員,移位減少衝突的幸福語法
我已經建立以下語法快樂(哈斯克爾):現在
P : program C {Prog $2}
E : int {Num $1}
| ident {Id $1}
| true {BoolConst True}
| false {BoolConst False}
| read {ReadInput}
| '(' E ')' {Parens $2}
| E '+' E { Add $1 $3 }
| E '-' E { Sub $1 $3 }
| E '*' E { Mult $1 $3 }
| E '/' E { Div $1 $3 }
| E '=' E { Eq $1 $3 }
| E '>' E { Gt $1 $3 }
| E '<' E { Lt $1 $3 }
C : '(' C ')' {$2}
| ident assign E {Assign $1 $3}
| if E then C else C {Cond $2 $4 $6}
| output E {OutputComm $2}
| while E do C {While $2 $4 }
| begin D ';' C end {Declare $2 $4}
| C ';' C {Seq $1 $3 }
D : D ';' D {DSeq $1 $3 }
| '(' D ')' {$2}
| var ident assign E {Var $2 $4}
,雖然環包括所有「做」後跟隨的命令。如何改變這種行爲?我已經試過%左,右%... :(
這是唯一的解決方案嗎?需要對代碼進行重大更改:( – user1422467
@ user1422467它只需要在解析器中進行更改 - 消耗解析樹的代碼應該能夠保持不變。 –