Size: a a a

Compiler Development

2021 March 22

M

MrSmith in Compiler Development
А как же проблема поста?
источник

M

MrSmith in Compiler Development
Поиск неоднозначности это вроде эврестический алгоритм
источник

EM

Evgenii Moiseenko in Compiler Development
MrSmith
Такой вопрос, а есть какие то грамматики гарантирующие отсутствия неоднозначности? На которых можно писать языки программирования, к примеру мейнтсримовые
Есть система типов для грамматик, гарантирующая однозначность :)
https://www.cl.cam.ac.uk/~jdy22/papers/a-typed-algebraic-approach-to-parsing.pdf
источник

M

MrSmith in Compiler Development
источник

M

MrSmith in Compiler Development
Можно ещё старым добрым брутфорсом
источник

K

Kir in Compiler Development
MrSmith
Такой вопрос, а есть какие то грамматики гарантирующие отсутствия неоднозначности? На которых можно писать языки программирования, к примеру мейнтсримовые
Есть, LR(1)
источник

M

MrSmith in Compiler Development
Вопрос исследовательский скорей
источник

K

Kir in Compiler Development
MrSmith
Вопрос исследовательский скорей
LR(1) является наибольших классом грамматик без неоднозначностей
источник

f

fldlg2 in Compiler Development
Kir
LR(1) является наибольших классом грамматик без неоднозначностей
LR(k)?
источник

f

fldlg2 in Compiler Development
Утверждается, что PEG без неоднозначностей и больше, но есть один нюанс 😉
источник

M

MrSmith in Compiler Development
Отсутствует один из видов рекурсии
источник

M

MrSmith in Compiler Development
Вроде бы
источник

K

Kir in Compiler Development
MrSmith
Отсутствует один из видов рекурсии
Ниет, там просто / - это left-biased-choice, он тупо прячет все конфликты
источник

K

Kir in Compiler Development
А, ну и да, нет левой рекурсии
источник

f

fldlg2 in Compiler Development
Да, PEG "решает" проблему леса, игнорируя деревья, которым не повезло.
источник

f

fldlg2 in Compiler Development
С тем же успехом в LR можно игнорировать reduce-reduce конфликты. Некоторые так и делают в промышленных парсерах.
источник

YS

Yaroslav Schekin in Compiler Development
fldlg2
Утверждается, что PEG без неоднозначностей и больше, но есть один нюанс 😉
И он в том, что это — не грамматики. ;)
источник

K

Kir in Compiler Development
Yaroslav Schekin
И он в том, что это — не грамматики. ;)
А, ну да)
источник

VK

Vladimir Kazanov in Compiler Development
Yaroslav Schekin
И он в том, что это — не грамматики. ;)
в смысле? PEG это *другой* формализм, конечно, не такой традиционный, но значительно более удобный в разборе.
источник

s

suhr in Compiler Development
Vladimir Kazanov
в смысле? PEG это *другой* формализм, конечно, не такой традиционный, но значительно более удобный в разборе.
А есть ли какая-нибудь логическая семантика у этого вашего пега?
источник