Вопросы по теме 'shift-reduce-conflict'
Как исправить конфликты сдвига / уменьшения YACC от оператора постинкремента?
Я пишу грамматику в YACC (на самом деле Bison), и у меня проблема со сдвигом / уменьшением. Это результат включения постфиксных операторов инкремента и декремента. Вот урезанная версия грамматики:
%token NUMBER ID INC DEC
%left '+' '-'...
9302 просмотров
schedule
05.07.2022
Сдвиг/уменьшение конфликтов в грамматике арифметического выражения с n-арными суммами/произведениями
Разбирать двоичные суммы/произведения легко, но у меня возникают проблемы с определением грамматики, которая анализирует
a + b * c + d + e
as
sum(a, prod(b, c), d, e)
Моя первоначальная (наивная) попытка породила 61 конфликт...
877 просмотров
schedule
01.04.2023
Конфликты Bison Shift/Reduce для небольшого парсера языка
Моя цель - создать парсер для небольшого языка. В настоящее время он дает мне одну ошибку сдвига/уменьшения.
Мой CFG где-то неоднозначен, но я не могу понять, где
prog: PROGRAM beg {$$ = "program" $2;}
| PROGRAM stmt...
148 просмотров
schedule
10.04.2022
Как решить этот конфликт S/R
Вот упрощение моей рабочей грамматики EBNF:
%token NEWLINE BLOCK_MARK A
%start file
file: block+ NEWLINE*;
block: BLOCK_MARK line;
line: A+;
И \n, и EOF выдают NEWLINE как токен (поэтому перед EOF не требуется одиночное окончание NEWLINE)....
327 просмотров
schedule
19.11.2023
Как переписать контекстно-свободную грамматику, чтобы она была LR(1)?
Для данной контекстно-свободной грамматики:
S -> G $
G -> PG | P
P -> id : R
R -> id R | epsilon
Как мне переписать грамматику, чтобы она была LR(1)? Текущая грамматика имеет конфликты сдвига/уменьшения при синтаксическом...
498 просмотров
schedule
29.04.2023
Shift уменьшает конфликт, финансовый калькулятор с использованием компилятора
Всякий раз, когда я добавляю '(' term ')' { $$=$2; } , у меня возникает конфликт с уменьшением смещения, и я пытаюсь выполнить операцию: (5) + (5) , (5.5) + (5) , ((5.5) + (5)) - (5) , ((5.5) / (5.5)) * (5) и т. д.
Я немного запутался в...
96 просмотров
schedule
03.06.2023
Сдвиг массивов бизонов уменьшает количество конфликтов
Я новичок в Bison, и я долгое время пытался создать массив и правила для конкатенации и многого другого, и не могу понять, почему я получаю сокращение сдвига здесь и как я могу его решить:
arr:
T_OPEN expr {$$ = (void *)(new...
253 просмотров
schedule
25.04.2022
Как решить проблему уменьшения / уменьшения количества зубров в моем коде?
Я новичок в bison .. Я написал правило грамматики для оператора if, else if и else .. Я получил конфликт сокращения, хотя .. Может ли кто-нибудь помочь? Я перепробовал все, что нашел, но, как я сказал, я новичок и не понимаю, что именно происходит...
80 просмотров
schedule
20.07.2022