A: constant
| OPENINGBRACES B C
;
constant: INTEGER | REAL | CHARACTER ;
C: CLOSINGBRACES
| COMMA CLOSINGBRACES
;
B: A
| A COMMA B
;
此語法是生產移/減少error.after與-v選項運行它,它示出了在狀態7衝突..COMMA移/減少錯誤野牛
**
state 7
8 B: A .
9 | A . COMMA B
COMMA shift, and go to state 10
COMMA [reduce using rule 8 (B)]
$default reduce using rule 8 (B)
**
規則8是
8 B:A
與野牛你應該_always_使用左遞歸而不是右遞歸,不僅要避免這樣的衝突,而且要確保解析器可以在有限的堆棧空間下操作。 –
@JohnBollinger:* always *太強大了 - 當然如果其他所有的東西都是相等的,你應該更喜歡左遞歸到右遞歸,但是有時候右遞歸會簡化東西,而且如果你分配空間給無論如何整個列表。 –