我有一個JavaCUP的LR(1)語法分析器的簡單語法,它可以識別標識符和字符串的連接表達式。我也想添加一些空的函數調用作爲可能的連接參數。但是,當我嘗試時,它會導致轉換/減少衝突。 語法: precedence left PLUS;
e ::= e exp
| exp;
exp ::= concat
| literal;
concatenation ::= e
對於給定上下文無關語法: S -> G $
G -> PG | P
P -> id : R
R -> id R | epsilon
如何重寫語法,使其LR(1)? 當解析輸入「id:.id」時,當前語法會改變/減少衝突,其中「。」是解析器的輸入指針。 該語法生成滿足正則表達式的語言(id:(id)*)+
我試圖定義方法的語法使用(Java等)Happy LALR解析器生成 1. MD ::= some_prefix { list(VD) list(S) }
2. VD ::= T I
3. S ::= I = E | I [ E ] = E | etc...
4. T ::= I | byte | int | etc...
5. E ::= INT | E