Описание тега lr1

Парсеры LR - это тип восходящих парсеров, которые эффективно обрабатывают детерминированные контекстно-свободные языки за гарантированное линейное время. За именем LR часто следует числовой квалификатор, как в LR(1). Парсер LR(1) может обрабатывать многие, но не все распространенные грамматики.
0 ответов

Учитывая грамматику, сгенерируйте элементы LR(1)

Я работаю над предметами LR(1), и у меня есть немного сомнений, и я надеюсь, что кто-то может прояснить для меня. Учитывая следующую грамматику, я должен сгенерировать элементы LR(1). Я создал первый элемент, но не уверен, что он правильный, поэтому…
1 ответ

LR(1) предметов и LALR(1) таблица разбора, как это сделать?

Из приведенной ниже грамматики создайте элементы LR(1) и объедините наборы элементов, которые дают набор элементов LALR(1). Я не уверен, как построить из этой грамматики B -> id | id ( B) | Б. id | B [ B ] | Б. id ( B) Ответьте пока: i0- B' -> .B, $…
06 мар '17 в 00:45
2 ответа

LR(1) грамматика: как сказать? примеры за / против?

В настоящее время я смотрю на GNU Bison для анализа кода программы (или на самом деле для расширения программы, которая использует Bison для этого). Я понимаю, что Bison может только (или: лучше) обрабатывать грамматики LR(1), то есть особую форму к…
13 фев '13 в 12:40
1 ответ

Этот генератор синтаксического анализа говорит, что эта грамматика не LR(1), но у меня есть сомнения

Я написал генератор синтаксического анализатора на Java, после нескольких ухищрений (ранняя версия, например, не особенно понравилась левая рекурсия), мне удалось заставить его работать с некоторыми простыми грамматиками (так что я могу вручную пров…
02 июл '15 в 23:33
0 ответов

LR(1) Автоматы: разница между предметами

У меня есть сомнения относительно конструкции автоматов LR(1): Является ли состояние с ядром [A->b., X] (state_1) эквивалентным состоянию с ядром [A->b., X / y] (state_2)? Например, если я нахожусь в состоянии [A->. B, x] и shift_b из этого состояни…
19 сен '15 в 18:39
1 ответ

Как перевести LR(1) Parse в абстрактное синтаксическое дерево?

Я закодировал анализатор LR(1), управляемый таблицей, и он работает очень хорошо, однако у меня возникли некоторые проблемы на этапе анализа синтаксического дерева / абстрактного синтаксического дерева. Это проект, которым я очень увлечен, но я прос…
0 ответов

Как создать парсер Lr(1) для очень простого языка программирования

Мне нужно создать парсер для кода с переменными, простыми условиями, циклами и функциями, что-то вроде: f=1; i=1; while(i<10){ f=f*i; i=i+1; } print(f); Я прочитал много теории, но я не нашел ни одного рабочего примера парсера Lr(1) для кода. Это…
07 апр '15 в 14:35
1 ответ

Печать синтаксического дерева как динамического списка на языке c

Я написал код на C для реализации таблицы разбора LR(1), однако сейчас я сталкиваюсь с проблемой печати дерева разбора. Как мы это делаем в C? Дерево может иметь переменные дочерние элементы, и, поскольку алгоритм синтаксического анализа является во…
19 апр '13 в 16:52
2 ответа

Парсер LR1 и Эпсилон

Я пытаюсь понять, как работают парсеры LR1, но у меня возникла странная проблема: что если грамматика содержит эпсилоны? Например: если у меня есть грамматика: S -> A A -> a A | B B -> a Понятно как начать: S -> .A A -> .a A A -> .…
28 янв '09 в 08:45
2 ответа

Где я могу найти простую, понятную реализацию генератора синтаксического анализатора LR(1)?

Где я могу найти простую (насколько это возможно, но не проще!) Реализацию генератора синтаксического анализатора LR(1)? Я не ищу производительность, просто возможность генерировать состояния LR(1) (наборы элементов).C++, C#, Java и Python будут раб…
10 янв '13 в 07:30
1 ответ

Работа с бесконечными циклами при построении состояний для разбора LR(1)

В настоящее время я строю состояния LR(1) из следующей грамматики. S->AS S->c A->aA A->b where A,S are nonterminals and a,b,c are terminals. Это конструкция I0 I0: S' -> .S, epsilon --------------- S -> .AS, epsilon S -> .c, eps…
28 апр '10 в 12:57
1 ответ

Как переписать грамматику без контекста, чтобы она была LR(1)?

Для данной контекстной свободной грамматики: S -> G $ G -> PG | P P -> id : R R -> id R | epsilon Как мне переписать грамматику так, чтобы она была LR(1)? У текущей грамматики есть конфликты сдвига / уменьшения при разборе ввода "id: .id…
1 ответ

LR(1) сдвиг / уменьшение неоднозначности

Заданный ввод с повторением BLOCKс, где каждый блок имеет повторяющиеся BEGIN EVENT а также END EVENT записи (END EVENT всегда следует за BEGIN EVENT): [TIMESTAMP] BLOCK [TIMESTAMP] BEGIN EVENT [TIMESTAMP] END EVENT [TIMESTAMP] BEGIN EVENT [TIMESTAM…
09 фев '19 в 17:48
0 ответов

LR(1) - Как вычислить Lookaheads

У меня проблемы с пониманием того, как вычислить прогноз. Допустим, у меня есть это расширение грамматики: S'-> S S -> L=R | R L -> *R | i R -> L Я написал State 0 так: S'-> .S, {$} S -> .L=R, {$} S -> .R, {$} L -> .*R, {=,$}…
13 апр '14 в 16:47
1 ответ

LR(1) парсинговый стол с эпсилонами производства

У меня проблемы с созданием коллекции наборов элементов для парсеров LR(1) с грамматикой, содержащей произведения epsilon. Например, учитывая следующую грамматику (где eps означает epsilon) S -> a S U U -> b | eps State0 будет S' -> .S, $ S…
17 май '18 в 14:16
0 ответов

Бизон: сдвиг-уменьшение конфликтов, даже если%left %right

Я знаю, что большинство конфликтов сдвига / уменьшения можно решить с помощью директив% left или% right. Но даже с этим у меня возникают конфликты. Ниже приведен блок моей грамматики: expression: variable '=' expression | expression operator express…
18 окт '17 в 07:14
1 ответ

Что случилось с этой грамматикой

s : cmd | cmd SOMETHING cmd :WORD WORD и SOMETHING не являются нулевыми терминалами это грамматика LR1, поэтому бизон должен разобрать ее без проблем. однако я столкнулся с неожиданной проблемой во время выполнения: программа запрашивает ввод дважды…
11 янв '12 в 16:49
1 ответ

Какие произведения рассматриваются в LR(1) прогноз?

В настоящее время я рассматриваю два примера расчета замыкания с использованием инструмента по адресу http://jsmachines.sourceforge.net/machines/lr1.html Пример 1 S -> A c A -> b B B -> A b Здесь в исходное состояние заканчивается закрытием…
19 авг '19 в 01:10
0 ответов

Разбор LR(1), проблема с упреждающими символами

Я понимаю концепцию синтаксического анализа LR(1) и опережающих символов. У меня есть решение упражнения, и оно не согласуется с моим решением. Я пытаюсь заполнить таблицу синтаксического анализа LR(1) для грамматики ниже: S->xAz S->BAx A->…
30 ноя '19 в 22:00
1 ответ

Является ли QML Grammar 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 ::= '{' (property_definition|s…
12 дек '19 в 14:20