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