Вопросы по теме 'left-recursion'
Практическое решение проблемы с грамматикой
У нас есть небольшие фрагменты кода vb6 (единственное использование подмножества функций), которые пишут непрограммисты. Это называется правила. Для людей, пишущих их, их трудно отлаживать, поэтому кто-то написал своего рода дополнительный...
308 просмотров
schedule
23.10.2022
Превратите грамматику в грамматику LL1
Я готовлюсь к завтрашнему экзамену и пересматриваю прошлогодний.
В тесте была грамматика.
Expression -> Foo "+" Bar "end"
Foo -> [a-z0-9]+ | Expression
Bar -> Expression Foo | a*b*c+
Я пытался и часами изучал, как это сделать, но...
657 просмотров
schedule
09.09.2022
Prolog dcg генерирует все слова из языка
Я пытаюсь написать грамматику dcg в прологе, которая будет описывать язык a^nb^n n>=0 "",ab,aabb,aaabbb itd
Все, что я написал,
s --> slowo.
slowo --> [a],slowo,[b],!.
slowo --> [].
И это хорошо, пока все, что я хочу...
1069 просмотров
schedule
06.05.2022
Что именно делает правила грамматики леворекурсивными в antlr?
Итак, мне было интересно, что делает парсер таким:
line : expression EOF;
expression : m_expression (PLUS m_expression)?;
m_expression: basic (TIMES basic)?;
basic : NUMBER | VARIABLE | (OPENING expression CLOSING) |...
415 просмотров
schedule
28.01.2023
Преобразование ANTLR4 в ANTLR3 — удаление левой рекурсии
Я работал над грамматикой в ANTLR4, но из-за изменения требований мне нужно переключиться на ANTLR3. Поэтому я хотел бы удалить левую рекурсию на следующем.
exp : A
| B
| C
| exp Operator exp...
201 просмотров
schedule
20.08.2022
Как избежать взаимной левой рекурсии в ANTLR 4
Я пишу грамматику для обработки скалярных и векторных выражений. Приведенная ниже грамматика упрощена, чтобы показать мою проблему, когда скалярное выражение может быть получено из вектора, а вектор может быть получен из скаляра. Например, вектор...
4692 просмотров
schedule
27.10.2023
Разбираем Cool Language с помощью antlr, не могу распечатать желаемый результат
Я пишу парсер / лексер для COOL (объектно-ориентированный язык в классе). Вы можете увидеть грамматику по следующей ссылке: (ПОСЛЕДНЯЯ СТРАНИЦА РУКОВОДСТВА)
http://theory.stanford.edu/~aiken/software/cool/cool-manual.pdf
Я использую ANTLR для...
638 просмотров
schedule
28.10.2022
Перевод производства грамматики в Parsec
Я пытаюсь преобразовать следующую грамматическую продукцию
callExpr:
primaryExpr
| callExpr primaryExpr
к выражению Parsec в Haskell.
Очевидно, проблема в том, что он леворекурсивный, поэтому я пытаюсь разобрать его в стиле...
171 просмотров
schedule
02.07.2022
Scala PackratParsers (комбинаторы парсеров) и левая ассоциативность
Я использую Scala's PackratParsers (комбинаторы парсеров) с леворекурсивной грамматикой следующего вида
lazy val expr: PackratParser[Expr] = (
...
| expr ~ (":" ~ expr).+ ^^ {
case expr ~ rest => (expr /: rest)(combineBinary)
}...
619 просмотров
schedule
11.11.2022
Разбор + и * в логических выражениях рекурсивным спуском
Я пишу парсер рекурсивного спуска для логических выражений, например:
(1 * 0)
(0 + ~1)
(0 * (1 + c)
Где 1 — «Истина», 0 — «Ложь», + — «или», * — «и», ~ — «не», а «с» — просто имя переменной (это может быть любая буква алфавита). Я планирую...
347 просмотров
schedule
17.04.2022
Левое рекурсивное правило Antlr4 содержит леворекурсивную альтернативу, за которой может следовать пустая строка
Поэтому я определил грамматику для анализа синтаксиса языка C:
grammar mygrammar;
program
: (declaration)*
(statement)*
EOF
;
declaration
: INT ID '=' expression ';'
;
assignment
: ID '=' expression ';'
;
expression
: expression...
1063 просмотров
schedule
29.07.2022
Удаление прямой левой рекурсии в JavaCC
У меня есть следующее в файле JavaCC:
void condition() : {}
{
expression() comp_op() expression()
| condition() (<AND> | <OR>) condition()
}
где <AND> — это «&&», а <OR> — это «||». Это вызывает проблемы...
532 просмотров
schedule
18.05.2024
дизайн компилятора - нужна помощь в устранении косвенной левой рекурсии из CFG
У меня есть следующая грамматика, которая обрабатывает математические и логические выражения:
A ==> B A'
A' ==> | B A'
A' ==> epsilon
B ==> C B'
B' ==> ^ C B'
B' ==> epsilon
C ==> D C'
C' ==> & D C'
C' ==> epsilon...
63 просмотров
schedule
02.08.2023
Как лучше всего анализировать отдельный список запятых в грамматике PEG
Я пытаюсь разобрать список, разделенный запятыми. Для упрощения я просто использую цифры. Эти выражения будут действительными:
(1, 4, 3)
()
(4)
Я могу придумать два способа сделать это, и мне интересно, почему неудачный пример не...
526 просмотров
schedule
02.10.2023
Antlr странный синтаксис круглых скобок
Не могу понять значение этой круглой скобки. Писать его не обязательно, но иногда может выдавать ошибку левой рекурсии. Где мы должны использовать его в правилах грамматики?
29 просмотров
schedule
16.08.2023