Вопросы по теме 'shift-reduce-conflict'

Как исправить конфликты сдвига / уменьшения YACC от оператора постинкремента?
Я пишу грамматику в YACC (на самом деле Bison), и у меня проблема со сдвигом / уменьшением. Это результат включения постфиксных операторов инкремента и декремента. Вот урезанная версия грамматики: %token NUMBER ID INC DEC %left '+' '-'...
9302 просмотров

Сдвиг/уменьшение конфликтов в грамматике арифметического выражения с 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 просмотров

Как решить этот конфликт 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 просмотров

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 просмотров