我試圖在Jison中實現解析器。解析器支持兩種JSON對象:{ a: 1 }
和塊:if (true) { statement(); }
。空塊和空對象語法衝突警告
我的語法是這樣的:
block:
: '{' '}'
| '{' statementList '}'
;
objectExpression:
: '{' '}'
| '{' properties '}'
;
有兩個block
和objectExpression
一個{}
規則,因爲我需要同時支持空對象和空塊。
它的工作原理,但它輸出很多警告,如:
Conflict in grammar: multiple actions possible when lookahead token is ; in state 52
- reduce by rule: objectExpression -> { }
- reduce by rule: block -> { }
我怎樣才能解決或抑制這些警告?
我很懷疑這個解決方案是否真正起作用(而不僅僅是因爲它令人混淆地使'{}'和'{}'在句法上不同)。徹底測試它。正確的解決方案將涉及識別兩個空括號語法可能出現的上下文。 – rici 2014-10-19 22:18:06