최근 컴파일러 디자인에 대해 공부하고 있습니다. 두 가지 유형의 문법에 대해 알게되었습니다. 하나는 LL 문법이고 다른 하나는 LR 문법입니다.
또한 모든 LL 문법이 LR이고 LL 문법 인 LR 문법의 적절한 부분 집합이라는 사실도 알고 있습니다. 첫 번째는 하향식 구문 분석에 사용되고 두 번째는 상향식 구문 분석에 사용됩니다.
그러나 주어진 문법이 LL 또는 LR이라고 말할 수있는 방법이 있습니까?
최근 컴파일러 디자인에 대해 공부하고 있습니다. 두 가지 유형의 문법에 대해 알게되었습니다. 하나는 LL 문법이고 다른 하나는 LR 문법입니다.
또한 모든 LL 문법이 LR이고 LL 문법 인 LR 문법의 적절한 부분 집합이라는 사실도 알고 있습니다. 첫 번째는 하향식 구문 분석에 사용되고 두 번째는 상향식 구문 분석에 사용됩니다.
그러나 주어진 문법이 LL 또는 LR이라고 말할 수있는 방법이 있습니까?
답변:
그리고 테이블을 생성 할 수 있기 때문에 (입력 테이블을 구문 분석하는 데 구문 분석 테이블이 사용됨). 이 두 클래스의 경우 구문 분석 테이블을 사용하면 문법에 클래스가 있는지 여부를 즉시 확인할 수 있습니다. 이는 테이블에 오류가없는 경우에만 해당되기 때문입니다. 또한, 구문 분석 테이블이있는 경우 효율적으로 구문 분석 할 수있는 문법 클래스가 있지만 테이블이있는 경우이를 생성 할 수 없습니다.
다항식 시간으로 실행되는지 여부 (테이블 생성은 지수 적입니다). 자세한 내용은 위의 교재를 읽으십시오. 많은 경우에 테이블의 크기가 적당하므로 테스트가 필요하지 않습니다.
(자세한 내용은 여기 를 참조하십시오).