В синтаксическом анализаторе LR (0) каждое состояние состоит из набора элементов LR (0), которые являются продукцией, аннотированной позицией. В синтаксическом анализаторе LR (1) каждое состояние состоит из набора элементов LR (1), которые являются продукцией, аннотированной позицией и символом предпросмотра.
Известно, что при наличии состояния в автомате LR (1) конфигурирующий набор, сформированный путем сбрасывания жетонов предпросмотра из каждого элемента LR (1), дает конфигурационный набор, соответствующий некоторому состоянию в автомате LR (0). В этом смысле основное различие между автоматом LR (1) и автоматом LR (0) состоит в том, что автомат LR (1) имеет больше копий состояний в автомате LR (0), каждое из которых снабжено аннотацией Информация. По этой причине автоматы LR (1) для данного CFG обычно больше соответствующего анализатора LR (0) для этого CFG.
Мой вопрос - насколько большим может быть автомат LR (1). Если в алфавите грамматики есть различных терминальных символов, то в принципе нам может потребоваться повторить каждое состояние в автомате LR (0) хотя бы один раз на подмножество этих различных терминальных символов, что может привести к LR (1). ) автомат, который в раз больше исходного автомата LR (0). Учитывая, что каждый отдельный элемент в автомате LR (0) состоит из набора различных предметов LR (0), мы можем получить еще больший взрыв.n 2 n
Тем не менее, я не могу найти способ построить семейство грамматик, для которых автомат LR (1) значительно больше, чем соответствующий автомат LR (0). Все, что я пробовал, привело к небольшому увеличению размера (обычно около 2-4х), но я не могу найти модель, которая приводит к большому взрыву.
Существуют ли известные семейства контекстно-свободных грамматик, у которых автоматы LR (1) экспоненциально больше соответствующих автоматов LR (0)? Или известно, что в худшем случае вы не сможете получить экспоненциальный взрыв?
Спасибо!