if else условие для парсера
От: VVVa  
Дата: 11.12.22 10:46
Оценка:
Можно ли как-то создать однозначное условие для "if else" без Warning-ов и разширений синтаксиса.
Re: if else условие для парсера
От: kov_serg Россия  
Дата: 11.12.22 12:04
Оценка:
Здравствуйте, VVVa, Вы писали:

VVV>Можно ли как-то создать однозначное условие для "if else" без Warning-ов и разширений синтаксиса.

А что мешает? (кроме постановки задачи)
Re[2]: if else условие для парсера
От: VVVa  
Дата: 11.12.22 13:02
Оценка:
Здравствуйте, kov_serg, Вы писали:
_>А что мешает? (кроме постановки задачи)
да в обще как я думаю — выходит что в обще теоретически невозможно
если рассматривать что может парсится
if(expr) if(expr)op else op else op

то по любому будет конфликт свертки и сдвига из-за else

видел в интернете задают через приоритеты условий
Re[3]: if else условие для парсера
От: kov_serg Россия  
Дата: 11.12.22 15:36
Оценка:
Здравствуйте, VVVa, Вы писали:

VVV>да в обще как я думаю — выходит что в обще теоретически невозможно

VVV>если рассматривать что может парсится
VVV>
VVV>if(expr) if(expr)op else op else op 
VVV>

VVV>то по любому будет конфликт свертки и сдвига из-за else
Где конфликт-то?
if (EXPR) OP [else OP]

OP=if (EXPR) OP [else OP] | ...

и результат аналогичный этому:
if(expr) { if(expr)op else op } else op
Re[4]: if else условие для парсера
От: VVVa  
Дата: 11.12.22 16:01
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Где конфликт-то?

_>
_>if (EXPR) OP [else OP]

_>OP=if (EXPR) OP [else OP] | ...
_>

_>и результат аналогичный этому:
_>
_>if(expr) { if(expr)op else op } else op 
_>


предположим что определено так
OP : if'('expr')' OP else OP | ...
и если рассматривать вложенную конструкцию (без {} то будет конфликт)
OP : if'('expr')' OP else OP | ...
подставляем вместо него OP — он стоит перед else и то что подставляем содержит else ...
Re[5]: if else условие для парсера
От: VVVa  
Дата: 11.12.22 16:11
Оценка:
блин ! конфликты и варнинги лезут из -за того что появляются неоднозначности

например в
if(expr) if(expr)op else op else op

1 else можно отнести к 1 или 2 if
Re[6]: if else условие для парсера
От: VVVa  
Дата: 11.12.22 16:40
Оценка:
нашел похожий вопрос на
https://stackoverflow.com/questions/42748741/if-else-statement-in-bison ссылка
не могли бы пояснить 1 ответ (там просто ничего не понятно)
https://www.gnu.org/software/bison/manual/html_node/Shift_002fReduce.html ссылка
Отредактировано 11.12.2022 18:08 VVVa . Предыдущая версия . Еще …
Отредактировано 11.12.2022 17:26 VVVa . Предыдущая версия .
Отредактировано 11.12.2022 16:42 VVVa . Предыдущая версия .
Re[7]: if else условие для парсера
От: VVVa  
Дата: 11.12.22 18:32
Оценка:
нашел решение проблемы на англоязычном сайте
вроде это решение 5 способами — переводил с английского ничего не понятно
https://www.linkedin.com/pulse/techniques-resolving-common-grammar-conflicts-parsers-efstathios-1f?trk=articles_directory
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.