Size: a a a

Compiler Development

2021 February 19

M

MrSmith in Compiler Development
Утверждение примерно такое, вам не нужно ничего для того что бы разобрать грамматику однозначно кроме собственно грамматики, и следует это из того что для компиляции вам тоже ничего кроме текста не нужно, вопрос в том сколько достаточно выполнять resolve rules по грамматике (или уже разобранному)
источник

M

MrSmith in Compiler Development
Вот именно этот вопрос и нужно рассматривать а не ячейки в таблице разбора
источник

M

MrSmith in Compiler Development
И если подумать, то окажется что вопрос давно решен
источник

M

MrSmith in Compiler Development
Вам просто ненужно брать turing complite
источник

M

MrSmith in Compiler Development
Так сказать кеп в чате, осталось найти пару лимонов на разработку и буткемп в лесу
источник

K

Kir in Compiler Development
MrSmith
Утверждение примерно такое, вам не нужно ничего для того что бы разобрать грамматику однозначно кроме собственно грамматики, и следует это из того что для компиляции вам тоже ничего кроме текста не нужно, вопрос в том сколько достаточно выполнять resolve rules по грамматике (или уже разобранному)
Чево?
источник

YS

Yaroslav Schekin in Compiler Development
MrSmith
Так что то что написанно в драгон буке приблизительно ничего не значит
Это значит, на практике, приблизительно всё. ;)
Т.е. если нам удалось создать LR(k) для данного языка (на любых токенах, кстати — т.е. если мы уверены, что у lexer-а не будет проблем с их разбором, что нередко вполне очевидно), то это значит, что грамматика однозначна.
По-моему, очень полезно.
источник

M

MrSmith in Compiler Development
Kir
Чево?
Бред какой то
источник

K

Kir in Compiler Development
> у lexer-а не будет проблем с их разбором

Так, а лексер-то тут при чём, он на лексемы входной поток рубит
источник

YS

Yaroslav Schekin in Compiler Development
MrSmith
И если подумать, то окажется что вопрос давно решен
Какой вопрос, какая проблема? Дальше я ничего не понял. :(
источник

YS

Yaroslav Schekin in Compiler Development
Kir
> у lexer-а не будет проблем с их разбором

Так, а лексер-то тут при чём, он на лексемы входной поток рубит
При том, что эти лексемы могут выделяться хоть turing-complete lexer-ом (что не так уж редко и делают), т.е. даже если для данного языка невозможно создать LR-грамматику (или даже CDG) "на символах", то может быть можно на таких токенах.
См. https://t.me/CompilerDev/79938
источник

M

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

K

Kir in Compiler Development
Не, индент проще вставить между лексером и парсером
источник

YS

Yaroslav Schekin in Compiler Development
Kir
Не, индент проще вставить между лексером и парсером
И формальная грамматика тут получается определённой на чём (каких токенах)?
источник

YS

Yaroslav Schekin in Compiler Development
Можно без голосовых сообщений, а? ;(
источник

M

MrSmith in Compiler Development
Я пытался выще
источник

M

MrSmith in Compiler Development
Ладно попробую, речь вот о чем есть некоторые функции разрешения неоднозначностей, который обычно представляют встроенными екшенами, такая функция может производить статический резолв, и динамический, второй может зависит или от уже разобранного потока или текушей позиции разбора (а больше то собственно ничего и нет)
источник

M

MrSmith in Compiler Development
И тут вопрос в том разрешимы ли эти правила за некоторое ограниченное время
источник

M

MrSmith in Compiler Development
Может оказаться что нет и тогда появятся гварды, и мы получим с++
источник

YS

Yaroslav Schekin in Compiler Development
MrSmith
Ладно попробую, речь вот о чем есть некоторые функции разрешения неоднозначностей, который обычно представляют встроенными екшенами, такая функция может производить статический резолв, и динамический, второй может зависит или от уже разобранного потока или текушей позиции разбора (а больше то собственно ничего и нет)
И это уже получается не формальная грамматика, а что-то похожее на неё внешне!
Т.е. с этого момента "all bets are off", как говорится — невозможно установить, на самом ли деле она однозначна (и вообще, что она "разбирает"); или использовать для генерации языка; или перенести в другой parser generator; или доказать её асимптотику и т.п.
источник