다음과 같은 간단한 문법 :간단한 모호한 문법 감소-감소 감소/감소 충돌 논리식의 결과 구문 분석 충돌을
이%token AND OR
%token NUMBER VARIABLE
%%
logical_expr
: logical_expr AND logical_term
| logical_expr OR logical_term
| logical_term
;
logical_term
: VARIABLE
| comparison
| '(' logical_expr ')'
;
comparison
: expr '<' expr
| expr '>' expr
;
expr
: expr '+' term
| expr '-' term
| term
;
term
: NUMBER
| VARIABLE
| '(' expr ')'
;
%%
들소에서 상태 보고서가 있습니다
state 2
4 logical_term: VARIABLE .
13 term: VARIABLE .
')' reduce using rule 4 (logical_term)
')' [reduce using rule 13 (term)]
'<' reduce using rule 13 (term)
'>' reduce using rule 13 (term)
'+' reduce using rule 13 (term)
'-' reduce using rule 13 (term)
$default reduce using rule 4 (logical_term)
I을 문제를 짐작하면 "(a) + 1 < 2"를 구문 분석하는 방법을 파악할 수 없다는 것입니다. 이 문법을 어떻게 구별 할 수 있습니까? 가능한가? 그것은 )
후 다음 토큰에 따라 달라집니다 -
감사합니다. 나는 그것이 합리적인 해결책이라고 생각한다. 문법을 완화하여 부울이 예상되는 숫자를 참/거짓 (예 : 0/비제로)에 대한 적절한 규칙으로 허용 할 수 있습니다. – jlam
@ user1745019 - 당신이 새로운 사람이기 때문에 이것을 답으로 표시하는 것을 잊지 마십시오. 좋은 대답, 크리스. –