2017-11-06 6 views
-1

내가 아는 한, 왼쪽 재귀는 LR 파서에 문제가되지 않습니다. 모호한 문법은 모든 파서에서 파싱 할 수 없습니다. 다음과 같이 모호한 문법이있는 경우 ,이 문법이 SLR (1)인지 아닌지를 확인할 수 있도록 어떻게 모호성을 제거 할 수 있습니까?컴파일러 디자인의 구문 분석

E-> E + E | E-E | (E) | 문법은 LL (1) 또는 SLR (1)이 있는지 확인하기 위해 문법에 필요한 ID

그리고 하나 개 더 질문, 남아있는 인수 분해? 도움이 될 것입니다.

답변

0

발생할 가능성이있는 파서 생성기는 문법의 모호성을 간단하게 처리 할 수 ​​있습니다.

문법에 따라 이동/축소 충돌이 발생합니다. 이것들은 반드시 문제가되는 것은 아닙니다 (줄이기/줄이기). 모든 파서 생성기에서 shift/reduce 충돌에 대한 기본 동작은 문제를 해결하는 shift입니다. 이것을 경고로 무시하는 메커니즘 (YACC 또는 Bison에서와 같이)이 일반적으로 있습니다.

여러 수준의 식을 설정하여 연산자의 우선 순위를 강제로 설정하여 문법의 충돌을 제거 할 수 있습니다.