Описание тега left-recursion

A special kind of recursion, defined through a particular grammar property: grammar is left-recursive if we can find some non-terminal A which will eventually derive a sentential form with itself as the left-symbol.
1 ответ

Устранение левой рекурсии из этой странной грамматики выражения

Я пытаюсь написать грамматику выражений, в которой есть 3 оператора "+", "-" и "/". Оператор умножения подразумевается сопоставлением, как в: (1 + 2) (3 + 4 5) Вот грамматика: S -> A ('+' A) * A -> B ('-' B) * B -> C ('/' C) * C -> D (D) * D -> ID |…
01 июл '17 в 01:17
1 ответ

Грако покинул рекурсию

Я пытаюсь использовать грако для описания простой леворекурсивной грамматики, но у меня проблемы с этим. Правая рекурсия работает без проблем: symbol = /[a-z]/ ; condition = symbol "AND" condition | symbol ; start = condition $ ; Согласно всем найде…
21 дек '16 в 11:15
1 ответ

Взаимная левая рекурсия ANTLR 4

Мне жаль задавать еще один вопрос о взаимной левой рекурсии, я чувствую, что мой характерен только для моей ситуации, или, по крайней мере, я не могу понять достаточно, чтобы связать его с грамматикой всех остальных. Я немного новичок в мире компьют…
19 фев '14 в 03:12
0 ответов

Удаление косвенной левой рекурсии

У меня есть интересная проблема непрямой рекурсии, которую, я думаю, я решил, но я не совсем уверен, что она правильная. Начальная грамматика: A-> Bxy | x B-> CD C-> A | c D-> d Мое решение состояло в том, чтобы сначала развиваться на A,…
08 сен '15 в 12:23
2 ответа

Левый рекурсивный разбор

Описание: Читая книгу " Дизайн компилятора в Си", я наткнулся на следующие правила для описания контекстно-свободной грамматики: грамматика, которая распознает список из одного или нескольких операторов, каждое из которых является арифметическим выр…
0 ответов

Левая рекурсия JavaCC

Я пытаюсь удалить левую рекурсию для этой грамматики JavaCC. Я получаю ошибку, обнаруженную рекурсией Left, в минуту для условия, приведенной ниже, и я не могу понять, как ее исправить. Любая помощь будет принята с благодарностью:) void condition():…
10 ноя '17 в 21:39
0 ответов

LPEG - ошибка "Правило может быть леворекурсивной", несмотря на то, что это грамматика, которую можно прекратить

Я пытаюсь использовать LPEG для создания препроцессора для GLSL. Мне удалось заставить работать операторы #define и #undef без проблем, но мои проблемы возникают, когда я пытаюсь работать с операторами #ifdef. Я думал, что смогу создать правило, кот…
21 апр '18 в 13:33
1 ответ

Intellij Antlr4 Plugin Левая прямая рекурсия не работает

Я пытаюсь сделать парсер, используя Antlr4 для оператора выбора SQL, в котором содержится следующая часть expr: '1' | expr('*'|'/'|'+'|'-'|'||') expr; // As the re-factored form of expression: compound expression; WS :[ \t\r\n]+ -> skip ; Я предп…
28 фев '14 в 07:44
2 ответа

Левое рекурсивное правило Antlr4 содержит левую рекурсивную альтернативу, за которой может следовать пустая строка

Поэтому я определил грамматику для синтаксического анализа языка синтаксиса в стиле C: grammar mygrammar; program : (declaration)* (statement)* EOF ; declaration : INT ID '=' expression ';' ; assignment : ID '=' expression ';' ; expression : express…
26 сен '16 в 23:55
1 ответ

Удаление взаимной левой рекурсии из леворекурсивных правил

С ANTLR 4.6, снимок от 23.11.2016. У меня есть два правила, каждое из которых является леворекурсивным. Я расширил несколько альтернатив, чтобы раскрыть левую рекурсию. ANTLR4 обрабатывает это, потому что левая рекурсия является явной. Тем не менее,…
25 ноя '16 в 04:22
0 ответов

Контекстно-бесплатная грамматика и удаление левой рекурсии

Следующая грамматика вышла из рекурсии E -> E + T|T T -> T * F|F F -> F*|a | b Как это убрать? Есть ли какая-то общая процедура для этого?
21 окт '16 в 09:32
0 ответов

Дерево унарных операторов

Я хочу разобрать выражения как ++ A ++ ++ A ++ ++ ++++ Оператор предварительного увеличения имеет приоритет над оператором последующего увеличения. У меня есть парсеры: public static readonly TokenListParser<LangToken, UnaryOperator> Increment…
21 дек '18 в 12:17
1 ответ

Я получаю ошибку левой рекурсии в моей грамматике анализатора antlr

Я получаю ошибку [fatal] rule statement has non-LL(*) decision due to recursive rule invocations reachable from alts 6,7. Resolve by left-factoring or using syntactic predicates or using backtrack=true option. Я не знаю точно, какая часть моей грамм…
2 ответа

Удалить левую рекурсию в грамматике

У меня есть эта грамматика: agent = nil | @ | id | act . agent | agent + agent | agent "|" agent | agent \ restriction | agent [relabeling] | agent where agent_frame end | automation | (agent) где приоритеты: "where" < "+" < "|" < "\" < …
10 июл '15 в 09:36
2 ответа

Практическое решение проблемы грамматики

У нас есть небольшие фрагменты кода vb6 (единственное использование подмножества функций), который запрограммирован не программистами. Это так называемые правила. Людям, пишущим их, их сложно отлаживать, поэтому кто-то написал своего рода анализатор…
1 ответ

Удаление прямой левой рекурсии в JavaCC

У меня есть следующее в файле JavaCC: void condition() : {} { expression() comp_op() expression() | condition() (<AND> | <OR>) condition() } где <AND> это "&&" и <OR> это "||". Это вызывает проблемы из-за того, что это прямая…
1 ответ

Эти грамматики оставлены рекурсивными и почему?

У меня есть эти грамматики для решения левой рекурсии. Но почему эти грамматики остаются рекурсивными? Они не следуют схеме A -> Aa | b: 1., S → 0S1 | 01 2., S → + SS | * SS
1 ответ

ANTLR4 Взаимно леворекурсивная ошибка при разборе источника C++

Я пытаюсь проанализировать подмножество синтаксиса исходного кода cpp. Следующие правила синтаксического анализа ANTLR4 напрямую скопированы из спецификации языка C++ (за исключением того, что переносы заменяются подчеркиванием): abstract_declarator…
0 ответов

ANTLR3 взаимно леворекурсивное правило

Каждое решение, которое я нашел на SO, было "переключение на ANTLR4", что на самом деле не вариант, потому что я использую antlr4ruby (что является ANTLR3, 4 означает "для"). Я хочу построить правило для доступа к свойству, оно должно соответствоват…
28 апр '15 в 00:17
1 ответ

Грамматические ограничения на токен смотреть в будущее

Я знаю, что есть два типа ограничений на грамматику, которые используются с парсерами рекурсивного спуска. грамматика не может иметь никаких левых рекурсивных произведений Грамматика не должна требовать больше, чем на токене. Я понимаю первое, но не…