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

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

Неоднозначность в грамматике зубров

У меня есть проблема в моей грамматике бизонов. У меня есть пара сдвигов / уменьшений, которые в порядке, и шесть уменьшений / уменьшений. Проблема в том, что я не понимаю, как возникают конфликты "уменьшить / уменьшить", так как парсер должен знать…
12 авг '11 в 00:04
1 ответ

Существует ли общий способ преобразования однозначной контекстно-свободной грамматики в грамматику LALR(1)?

Я пытаюсь создать парсер LALR(1) для следующей грамматики и нахожу некоторые сдвиги / сокращения конфликтов. S := expr expr := lval | ID '[' expr ']' OF expr lval := ID | lval '[' expr ']' Поэтому синтаксический анализатор не может правильно проанал…
1 ответ

Сдвиг / уменьшение конфликта в грамматике YACC

Я написал грамматику в следующем порядке: A : B '?' | B | A '+' A ; B : "a" | "c" A "t" A ; И это дает мне сдвиг / уменьшить конфликт на A : B . '?' (96) A : B . (98) Я пробовал несколько способов изменить грамматику, но я, кажется, создаю еще больш…
18 апр '18 в 19:58
3 ответа

Как решить сдвиг / уменьшить конфликт?

Я использую CUP для создания парсера, который мне нужен для моей диссертации. У меня есть конфликт сдвига / уменьшения в моей грамматике. У меня есть это правило производства: command ::= IDENTIFIER | IDENTIFIER LPAREN parlist RPAREN; и у меня есть …
02 июл '10 в 17:11
2 ответа

Как алгоритм yacc/bison LALR(1) обрабатывает "пустые" правила?

В синтаксическом анализаторе LALR(1) правила в грамматике преобразуются в таблицу синтаксического анализа, которая фактически говорит: "Если у вас есть этот ввод до сих пор, и токен предварительного просмотра равен X, то перейдите в состояние Y или …
23 ноя '11 в 12:53
1 ответ

Как понять состояние сокращения без LR(0) в практическом методе построения эффективных анализаторов LALR(k) с автоматическим восстановлением после ошибок

Я не понимаю, откуда исходит состояние сокращения без LR (0). Означает ли это, что: Удалите состояние уменьшения LR (0) И получите состояния LR'(0) Используйте состояния LR'(0) для генерации состояний LR(K). и состояние восстановления без LR (0) пр…
2 ответа

Является ли грамматика Гроффа LALR(1)?

Как домашний проект, я пытаюсь создать синтаксический анализатор groff с Jison (клон Bison на JavaScript), но я изо всех сил пытаюсь понять, является ли грамматика groff LALR(1). У кого-нибудь есть понимание этого? Заранее спасибо. Обновление 1 В от…
06 ноя '15 в 19:54
1 ответ

Решите двусмысленность в моей грамматике с парсером LALR

Я использую whittle для разбора грамматики, но сталкиваюсь с классической проблемой неоднозначности LALR. Моя грамматика выглядит так (упрощенно): <comment> ::= '{' <string> '}' # string enclosed in braces <tag> ::= '[' <name&gt…
05 мар '14 в 17:15
1 ответ

Генератор синтаксического анализатора CUP LALR: предупреждение: производительность никогда не уменьшается

Это первый раз, когда я использую синтаксический анализатор CUP, и у меня постоянно появляется следующая ошибка: "warning: * production"... "никогда не используется. Не могу понять, что не так, пожалуйста, помогите. см. код и журнал ошибок прилагает…
24 дек '13 в 02:20
1 ответ

Реализация функций eval и load в скриптовом движке с помощью Flex и Bison

Привет, ребята, я занимаюсь разработкой скриптового движка с помощью flex и bison, а сейчас я реализую функции eval и load для этого языка. Просто чтобы дать вам пример, синтаксис выглядит так: import std.*; load( "some_script.hy" ); eval( "foo = 12…
19 май '10 в 02:12
1 ответ

Пост инкремент и пре инкремент и Rvals

int a; a = a+++a; // Why does this create no error but a = a+++++a; // Create a semantic error Я немного растерялся, почему вторая строка не создает никаких ошибок, но почему третья создает семантическую ошибку?
1 ответ

PCYACC ожидает, что ключевое слово эквивалентно

Есть ли в PCYACC ключевое слово, которое эквивалентно объявлению ожидания BISON: %expect NUMBER
05 мар '13 в 13:59
1 ответ

Список разбора Bison/EBNF по крайней мере с двумя элементами

В настоящее время я пытаюсь проанализировать разделенный запятыми список, по крайней мере, с двумя элементами, используя бизона. Я знаю, как разобрать список с помощью этого: list : list "," element | element но как я могу убедиться, что в списке ес…
16 мар '17 в 18:13
2 ответа

Левая рекурсия в грамматике приводит к конфликтам

Во всей грамматике бизонов я использую правую рекурсию, и я прочитал, что левая рекурсия лучше, потому что не нужно сначала собирать весь стек. Однако, когда я пытаюсь переключиться на левую рекурсию на любом из них, я всегда сталкиваюсь с множество…
08 ноя '09 в 18:01
1 ответ

Может ли это быть проанализировано парсером LALR(1)?

Я пишу парсер в Bison для языка, который имеет следующие конструкции, среди прочего: Само отправка: [identifier arguments] рассылка: [expression, identifier arguments] нарезка строк: expression[expression,expression] - похоже на Python. arguments сп…
1 ответ

Разбор с круглыми скобками и различными типами выражений

Я сейчас пользуюсь happy для синтаксического анализа языка, но я не думаю, что синтаксический анализатор уместен, за исключением того, что я говорю, что это анализатор LALR. Вот небольшой отрывок из грамматики: ArithExpr -> ArithExpr + ArithExpr …
08 май '17 в 06:55
2 ответа

Установка уровней приоритета в грамматике BNFC

Фон: Я беру урок по семантике программного обеспечения, и мы должны создать небольшой компилятор и среду исполнения для игрушечного языка под названием while. Нам дали скелет кода для Java, но нам разрешено использовать любой язык, который мы хотим…
28 апр '13 в 11:35
1 ответ

Может ли восстановление ошибок парсера автоматически руководствоваться грамматикой?

Я пишу генератор парсера LALR в качестве любимого проекта. Я использую книгу пурпурного дракона, чтобы помочь мне с дизайном, и из этого я понял, что в парсере есть четыре метода восстановления после ошибок: Режим паники: начать сбрасывать символы в…
16 фев '14 в 03:34
1 ответ

Ржавчина lalrpop lexing двусмысленность: не жадное соответствие внутри скобок

Я пытаюсь разобрать формат SGF, который имеет этот BNF: Collection = GameTree { GameTree } GameTree = "(" Sequence { GameTree } ")" Sequence = Node { Node } Node = ";" { Property } Property = PropIdent PropValue { PropValue } PropIdent = UcLetter { …
20 фев '18 в 02:23
1 ответ

Зубр-сдвиг / уменьшение конфликтов

Я знаю, что в коде Bison можно ожидать некоторых конфликтов сдвига / уменьшения, и обычная грамматика C выдает ее для if/else, Тем не менее, у меня есть грамматика, которая производит 330 других конфликтов сдвига / уменьшения. Является ли это призна…
06 авг '11 в 16:37