LR (0) 파서에서 각 상태는 위치로 주석이 달린 프로덕션 인 LR (0) 항목의 모음으로 구성됩니다. LR (1) 파서에서 각 상태는 LR (1) 항목의 모음으로 구성되며, 이는 위치 및 미리보기 문자로 주석이 달린 프로덕션입니다.
LR (1) 오토 마톤의 상태에서 각 LR (1) 항목에서 미리보기 토큰을 삭제하여 구성된 구성 세트는 LR (0) 오토 마톤의 일부 상태에 해당하는 구성 세트를 생성하는 것으로 알려져 있습니다. 그런 의미에서, LR (1) 오토 마톤과 LR (0) 오토 마톤의 주요 차이점은 LR (1) 오토 마톤이 LR (0) 오토 마톤의 상태 사본을 더 많이 가지고 있다는 것입니다. 정보. 이러한 이유로, 주어진 CFG에 대한 LR (1) 오토마타는 일반적으로 해당 CFG에 대한 해당 LR (0) 파서보다 큽니다.
내 질문은 LR (1) 오토 마톤 이 얼마나 클 수 있는지입니다. 문법의 알파벳에 별개의 터미널 기호 가 있다면 , 원칙적으로 우리는 n 개의 별개의 터미널 기호의 서브 세트당 적어도 한 번 LR (0) 오토 마톤의 각 상태를 복제해야 할 수 있습니다. ) 오토 마톤 은 원래 LR (0) 오토 마톤보다 2 n 배 더 큽니다. LR (0) 자동 장치의 각 개별 항목이 다른 LR (0) 항목 집합으로 구성되어 있으면 더 큰 폭파가 발생할 수 있습니다.
즉, LR (1) 오토 마톤이 해당 LR (0) 오토 마톤보다 상당히 큰 문법 패밀리를 구성하는 방법을 찾지 못하는 것 같습니다. 내가 시도한 모든 것은 크기가 적당히 증가하지만 (보통 약 2-4x) 큰 파열을 일으키는 패턴을 찾지 못하는 것 같습니다.
LR (1) automata가 해당 LR (0) automata보다 기하 급수적으로 큰 컨텍스트 프리 문법의 알려진 패밀리가 있습니까? 아니면 최악의 경우 실제로 지수 폭발을 얻을 수 없다는 것이 알려져 있습니까?
감사!