Size: a a a

Compiler Development

2021 March 23

к

кана in Compiler Development
Александр
ПМСМ не совсем ясно в чём связанность/связываемость, я в основном в примерах указывал на логический результат выражений, но "логические выражения" занято... хотя не занято "логические обобщения" - указываем и на результат и на применимость к множествам.
кванторы биндят (связывают) свободную переменную внутри терма, создавая из него утверждение без этой свободной переменной
источник

к

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

AT

Alexander Tchitchigi... in Compiler Development
Tim Plotnikov
Господа, я опять с извечными проблемами: parser generator vs. handwritten???
Я почитал плюсы и минусы, проблемы, всё вот это. Но пока всё равно на распутье.
С одной стороны, вроде как индустриальный стандарт это генераторы. Многие умеют в error recovery итд. Но они идут тяжело и надо инвестировать в умение писать граматики.
С другой стороны, как парсер вручную написать я знаю и можно начать хоть сейчас + его тоже многие используют.

Вопрос: стоит ли инвестировать в изучение какого-либо генератора и его использование? Или стоит начать с простого ручного парсера и постепенно его улучшать?
С ручным у меня есть опасения что его сложность можеть сильно возрасти по сравнению с использованием генератора.
С генератором есть опасения, что я уткнусь в какое-то ограничение, которое не позволит мне двигаться дальше))
> И могут ли на выбор повлиять свойста языка, который я хочу сделать?

Безусловно. В основном, "выбор" рукописных парсеров для C/C++ определяется тем, что грамматика у них "вычурная" и ни в какие ворота LL/LR не влазит. Лучшие так не делать.

Отсюда и обратная закономерность: выбор подхода повлияет на грамматику языка. Известный пример – Python, грамматика которого в существенной степени определялась ограничениями LL(1) парсера.
источник

s

suhr in Compiler Development
Tim Plotnikov
Господа, я опять с извечными проблемами: parser generator vs. handwritten???
Я почитал плюсы и минусы, проблемы, всё вот это. Но пока всё равно на распутье.
С одной стороны, вроде как индустриальный стандарт это генераторы. Многие умеют в error recovery итд. Но они идут тяжело и надо инвестировать в умение писать граматики.
С другой стороны, как парсер вручную написать я знаю и можно начать хоть сейчас + его тоже многие используют.

Вопрос: стоит ли инвестировать в изучение какого-либо генератора и его использование? Или стоит начать с простого ручного парсера и постепенно его улучшать?
С ручным у меня есть опасения что его сложность можеть сильно возрасти по сравнению с использованием генератора.
С генератором есть опасения, что я уткнусь в какое-то ограничение, которое не позволит мне двигаться дальше))
Но умение писать грамматики нужно вдвойне в случае ручного парсера.
источник

YS

Yaroslav Schekin in Compiler Development
Кстати, по поводу https://t.me/CompilerDev/81329 , есть такой вопрос — какие компиляторы в области считаются "основными" и почему?
Т.е., например... По распространённости языка, который компилируется? Или по целевому языку (к примеру, всё, что не генерирует машинный код — "мимо")? Или по количеству работающих над ними (или рабочих мест)? Или по количеству "вкладываемых" туда оптимизаций и "продвинутых" технологий?
источник

YS

Yaroslav Schekin in Compiler Development
Alexander Tchitchigin
> И могут ли на выбор повлиять свойста языка, который я хочу сделать?

Безусловно. В основном, "выбор" рукописных парсеров для C/C++ определяется тем, что грамматика у них "вычурная" и ни в какие ворота LL/LR не влазит. Лучшие так не делать.

Отсюда и обратная закономерность: выбор подхода повлияет на грамматику языка. Известный пример – Python, грамматика которого в существенной степени определялась ограничениями LL(1) парсера.
А как же их парсил gcc до перехода на recursive descent (я немного пытался поискать, но в mailing lists gcc мне лично как-то трудно ориентироваться), кстати?
источник

AT

Alexander Tchitchigi... in Compiler Development
Yaroslav Schekin
А как же их парсил gcc до перехода на recursive descent (я немного пытался поискать, но в mailing lists gcc мне лично как-то трудно ориентироваться), кстати?
Я – без понятия. 🤷‍♀️
источник

D

Danya in Compiler Development
Yaroslav Schekin
А как же их парсил gcc до перехода на recursive descent (я немного пытался поискать, но в mailing lists gcc мне лично как-то трудно ориентироваться), кстати?
С болью и простреленными ногами?..
источник

YS

Yaroslav Schekin in Compiler Development
Alexander Tchitchigin
Я – без понятия. 🤷‍♀️
Спасибо, извините (подумал, что Вы можете знать).
источник

D

Danya in Compiler Development
Yaroslav Schekin
Кстати, по поводу https://t.me/CompilerDev/81329 , есть такой вопрос — какие компиляторы в области считаются "основными" и почему?
Т.е., например... По распространённости языка, который компилируется? Или по целевому языку (к примеру, всё, что не генерирует машинный код — "мимо")? Или по количеству работающих над ними (или рабочих мест)? Или по количеству "вкладываемых" туда оптимизаций и "продвинутых" технологий?
В моей голове — это по распространенности языка и самого компилятора
источник

А

Александр in Compiler Development
MrSmith
Я за транслит
Гуманитарий что ли ?)
источник

YS

Yaroslav Schekin in Compiler Development
Danya
В моей голове — это по распространенности языка и самого компилятора
"Распространённость" — это как много программистов его используют?
И интерпретаторы и т.п. — "мимо", я правильно понимаю?
источник

А

Александр in Compiler Development
Sergej Durmanov
со школьных времён привык к statement -> оператор, operator -> операция
осталось перевод для operation услышать)
источник

D

Danya in Compiler Development
Yaroslav Schekin
"Распространённость" — это как много программистов его используют?
И интерпретаторы и т.п. — "мимо", я правильно понимаю?
Господи, это было субъективное высказывание, основанное на небольшом наивном опыте
источник

TP

Tim Plotnikov in Compiler Development
Спасибо, почитал.
Пока прихожу к выводу, что от handwritten парсера я не умру и он позволит мне сделать «всё» что мне нужно будет
источник

TP

Tim Plotnikov in Compiler Development
Так-с, а кто-нибудь знает как парсится Haskell? Там же долбанутая грамматика должна быть)
источник

AT

Alexander Tchitchigi... in Compiler Development
Tim Plotnikov
Спасибо, почитал.
Пока прихожу к выводу, что от handwritten парсера я не умру и он позволит мне сделать «всё» что мне нужно будет
Тут как с Тьюринг-полнотой: проблема не в том, что что-то нельзя сделать, а в том, что сделать можно ещё и лишнего. 😉
источник

YS

Yaroslav Schekin in Compiler Development
Danya
Господи, это было субъективное высказывание, основанное на небольшом наивном опыте
Да я же и не только Вас спрашиваю...
Мне просто интересно, почему у указаний на то, как работает gcc/clang и т.п., такой "вес". ;)
Я так понял, что это потому, что среди "компиляторщиков" они считаются важными/выдающимися... но почему?
источник

D

Danya in Compiler Development
Yaroslav Schekin
Да я же и не только Вас спрашиваю...
Мне просто интересно, почему у указаний на то, как работает gcc/clang и т.п., такой "вес". ;)
Я так понял, что это потому, что среди "компиляторщиков" они считаются важными/выдающимися... но почему?
Ну они для меня считаются таковыми, для остальных не знаю..
источник

K

Kakadu in Compiler Development
Tim Plotnikov
Спасибо, почитал.
Пока прихожу к выводу, что от handwritten парсера я не умру и он позволит мне сделать «всё» что мне нужно будет
Вы можете попробовать поиспользовать high-level парсер-комбинаторы:
1) Будете иметь высокоуровневость между ручным рекурсивным спуском и грамматикой
2) ИСпытаете некоторые проблемы с производительностью, если будут наивные парсер-комбинаторы, без наворотов, придуманных в Parsley и ему подобных
источник