Вопросы по теме 'lr'

LR (0) Конфликты парсера
Сомневаюсь насчет парсеров lr (0). Например, у меня есть следующая грамматика: S -> S N | N -> terminalsymbol Если я попытаюсь построить первое состояние автомата lr0, я получу следующее первое состояние: S ' -> . S $ S...
2789 просмотров

Перевод if then else в грамматике компилятора
... IF LP assignment-expression RP marker statement { backpatch($3.tlist,$5.instr); $$.nextList = mergeList($3.flist,$6.nextList); } |IF LP assignment-expression RP marker statement ELSE Next statement { backpatch($3.tlist,$5.instr);...
595 просмотров
schedule 15.09.2021

Как лексер может извлечь токен на неоднозначных языках?
Я хочу понять, как работает парсер. Я узнал о частях LL, LR (0), LR (1), о том, как создавать, NFA, DFA, таблицах синтаксического анализа и т. Д. Теперь проблема в том, что я знаю, что лексер должен извлекать токены только по запросу парсера в...
1022 просмотров
schedule 04.03.2022

Построение деревьев синтаксического анализа с синтаксическим анализом shift-reduce
Я экспериментирую с синтаксическим анализом в свободное время, и я хотел реализовать синтаксический анализатор сдвиг-сокращение для очень простой грамматики. Я прочитал много онлайн-статей, но все еще не понимаю, как создавать деревья синтаксического...
1790 просмотров
schedule 28.03.2022

Есть ли общий способ преобразовать однозначную контекстно-свободную грамматику в грамматику LALR (1)?
Я пытаюсь создать парсер LALR (1) для следующей грамматики и обнаруживаю некоторые конфликты сдвига / уменьшения. S := expr expr := lval | ID '[' expr ']' OF expr lval := ID | lval '[' expr ']' Таким образом, парсер не может правильно...
937 просмотров

Является ли грамматика QML LALR (1)?
Вот грамматика QML (извлечена из https://github.com/kropp/intellij-qml/blob/master/grammars/qml.bnf ): /* identifier, value, integer and float are terminals */ qml ::= object /* Simplified */ object ::= type body body ::= '{'...
151 просмотров
schedule 24.06.2022

Как использовать алгоритм Уоршелла для транзитивного закрытия, чтобы определить канонические замыкания синтаксического анализатора LR (1)?
Я пытаюсь реализовать алгоритм Уоршалла для быстрого вычисления замыканий LR(1). Думаю , я понимаю, как это работает для LR(0): Узлы графа — это элементы LR , например A → B • C Ребра являются «переходами», начиная с A → B • C до C →...
458 просмотров

Как выбрать, какое правило использовать при выводе CFG?
У меня проблемы с этим учебником, и мой профессор считает, что отвечать на вопросы несправедливо по отношению к ученикам, которые уже знают материал, поступающий в класс (получение отзывов от этого парня само по себе является процессом...
490 просмотров

Какие преимущества у парсеров LL перед парсерами LR?
Какие преимущества имеют парсеры LL перед парсерами LR, чтобы гарантировать их относительную популярность в современных инструментах генерации парсеров ? Согласно Wikipedia , синтаксический анализ LR имеет преимущества перед LL:...
13847 просмотров
schedule 21.01.2023

Каждая ли грамматика LL(1) также является грамматикой LR(0)?
Я знаю, что каждый LL(1) также является LR(1). Но как насчет отношения между LL(1) и LR(0), может ли LL(1) также быть LR(0)?
2061 просмотров
schedule 02.05.2023

Почему ANTLR не уменьшает это выражение?
У меня есть следующая грамматика: expr : factor op ; op : '+' factor op | // Blank rule for left-recursion elimination ; factor : NUM | '(' expr ')' ; NUM : ('0'..'9')+ ; Я задаю 2 + 3 , используя expr в качестве...
160 просмотров
schedule 27.07.2023

Является ли эта грамматика (для небольшого подмножества Lua) неоднозначной?
У меня есть следующая грамматика, которая является небольшим подмножеством "Полный синтаксис Lua" : chunk -> | chunk stat. stat -> var `=´ exp. var -> Name | exp `[´ exp `]´. exp -> var | exp `(´ exp `)´ | `(´ exp `)´....
304 просмотров

Как предварительно сформировать «просмотр» в лексере OCaml/как откатить лексему?
Ну, я пишу свой первый парсер на OCaml, и мне сразу как-то удалось сделать с бесконечным циклом. Особо следует отметить, что я пытаюсь лексировать идентификаторы в соответствии с правилами спецификации Scheme (очевидно, я понятия не имею, что я...
416 просмотров
schedule 19.07.2023

Разбор LR(0)/SLR/LR(1) - как выбирается продукция?
Я пытаюсь разобраться в теории парсеров и постоянно нахожу один и тот же пример в разных источниках. Грамматика выглядит примерно так (упрощенно): E = T E = E + T T = 0..9 Так что предположительно строка 2 + 2 будет проанализирована как...
69 просмотров
schedule 18.12.2022

Разница между анализом LL и LR
В настоящее время изучает контекстно-свободные грамматики и методы их разбора. Насколько я понимаю, контекстно-свободные грамматики можно анализировать по принципу сверху вниз/LL или снизу вверх/LR. Правильно ли понимается, что синтаксические...
118 просмотров
schedule 10.04.2023

Почему эта грамматика имеет конфликт уменьшения/уменьшения в LR(0)?
У меня есть следующая грамматика: S -> a b D E S -> A B E F D -> M x E -> N y F -> z M -> epsilon N -> epsilon В моем учебнике говорится, что в LR(0) существует конфликт уменьшения/уменьшения. Я построил диаграмму и...
32 просмотров
schedule 30.07.2023

Каковы разумные верхние границы для количества состояний, символов и правил грамматик LR(1)?
Я делаю анализатор LR(1) и столкнулся с узкими местами производительности в разных местах. Я хотел бы попробовать оптимизировать структуры данных для синтаксического анализатора, но для этого мне нужно приблизительное представление о том, сколько...
774 просмотров
schedule 27.05.2024

Что не так с моей грамматикой LR(0)?
Я пытаюсь создать свой собственный синтаксический анализатор LR(0), и у меня возникают проблемы с некоторыми грамматиками. В основном, для грамматики exp: mexp mexp: '1' mexp: mexp '*' '1' мой парсер выводит State 0: • 1 | •...
222 просмотров
schedule 09.06.2024