C에서 LR(1) 구문 분석이 짧은 이유
많은 프로그래밍 언어는 LR 파서의 변형을 사용하여 분석할 수 있지만 C는 주목할만한 예외. 이는 C가 LR(1) 파서가 처리하도록 설계된 모호한 문법 규칙을 허용하기 때문입니다.
다음 C 문을 고려하세요.
x * y ;
이 문은 두 개의 서로 다른 구문 분석을 가질 수 있습니다.
LR(1) 파서는 하나의 토큰에 대한 예측에만 기초하여 이 두 가지 해석을 구별할 수 없습니다. 이러한 모호성은 C에서 표현식을 선언과 명령문 모두로 사용할 수 있다는 사실에서 비롯됩니다.
이러한 모호성을 수용하기 위해 C 파서는 일반적으로 기호 테이블 정보와 결합된 결정론적 구문 분석 기술에 의존합니다. 파서는 x 유형을 확인하여 명령문이 선언인지 아니면 곱셈인지 결정할 수 있습니다.
또는 GLR 파서(일반화 LR 파서)는 두 구문 분석을 모두 허용하고 이를 형식으로 표현하여 C의 모호성을 처리할 수 있습니다. 그래프 구조. 그런 다음 후속 단계에서 해결되지 않은 모호성을 해결할 수 있습니다.
결론적으로 C에는 LR(1) 파서가 효과적으로 처리할 수 없는 모호한 문법 규칙을 수용할 수 있는 구문 분석 기술이 필요합니다.
위 내용은 LR(1) 파서가 C 의 모호한 문법을 처리할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!