Size: a a a

Compiler Development

2020 May 29

AT

Alexander Tchitchigi... in Compiler Development
Peter Sovietov
Кстати говоря, во многих случаях контекстную зависимость можно описать и БНФ-подобной нотацией. В двоичных парсерах такое ведь часто встречается: в заголовке указано число секций, а затем идут сами секции. И разве это такая уж серьезная проблема для декларативного описания грамматики?
С декларативным описанием вообще никаких проблем -- комбинаторы парсеров, например, могут быть полностью декларативными.
источник

MM

Mikhail Maltsev in Compiler Development
Я думаю с декларативным описанием "настоящей" грамматики C++ всё сложно: разбор и семантический анализ слишком уж переплетены друг с другом. Формально разбор C++ - неразрешимая задача (т.к. задачу останова можно свести к задаче разбора программы написанной на C++): https://blog.reverberate.org/2013/08/parsing-c-is-literally-undecidable.html
источник

PS

Peter Sovietov in Compiler Development
Mikhail Maltsev
Я думаю с декларативным описанием "настоящей" грамматики C++ всё сложно: разбор и семантический анализ слишком уж переплетены друг с другом. Формально разбор C++ - неразрешимая задача (т.к. задачу останова можно свести к задаче разбора программы написанной на C++): https://blog.reverberate.org/2013/08/parsing-c-is-literally-undecidable.html
Понятно, что C++ это запущенный случай :) А Вы, кстати, не пробовали смотреть на возможности Elsa? http://scottmcpeak.com/elkhound/
источник

AD

Artyom Drozdov in Compiler Development
Peter Sovietov
Понятно, что C++ это запущенный случай :) А Вы, кстати, не пробовали смотреть на возможности Elsa? http://scottmcpeak.com/elkhound/
да, когда в контексте грамматик кто-то упоминает С++, это звучит как ругательство)
источник

MM

Mikhail Maltsev in Compiler Development
Нет, но я знаю что этот проект не поддерживает современные версии стандарта (т.е. там максимум C++03)
источник

BD

Berkus Decker in Compiler Development
Peter Sovietov
Понятно, что C++ это запущенный случай :) А Вы, кстати, не пробовали смотреть на возможности Elsa? http://scottmcpeak.com/elkhound/
кто-нибудь решился обновить это до с++17?
источник

PS

Peter Sovietov in Compiler Development
Я думаю, развить эту Elsa вполне возможно. Там секрет в том, что грамматика описывается довольно-таки императивными средствами. Хотя это и GLR-парсер, но по выразительности ему далеко до SDF.
Смотрите, вот грамматика C++: https://github.com/dtrotzjr/elsa-and-friends/blob/master/elsa/cc.gr
источник

MM

Mikhail Maltsev in Compiler Development
Peter Sovietov
Я думаю, развить эту Elsa вполне возможно. Там секрет в том, что грамматика описывается довольно-таки императивными средствами. Хотя это и GLR-парсер, но по выразительности ему далеко до SDF.
Смотрите, вот грамматика C++: https://github.com/dtrotzjr/elsa-and-friends/blob/master/elsa/cc.gr
В современных версиях C++ значительно расширили функциональность constexpr-функций, вплоть до динамического выделения памяти (new и delete) в C++20. Если в C++03 для разбора достаточно было уметь инстанциировать шаблоны и вычислять целочисленные выражения, то теперь парсер должен включить полноценный интерпретатор почти всех конструкций которые есть в C++.
В Clang, к примеру, уже добавили трансляцию C++ в байт-код и интерпретатор этого байт-кода (именно в Clang, т.е. frontend).
источник

AZ

Alexander Zaitsev in Compiler Development
> В Clang, к примеру, уже добавили трансляцию C++ в байт-код и интерпретатор этого байт-кода (именно в Clang, т.е. frontend).

а там отдельный интерпретатор уже? я думал, что оно всё ещё базируется на ConstantEvaluator или как он там называется
источник

AZ

Alexander Zaitsev in Compiler Development
я помню из рассылки планы по его внедернию (в том числе и JIT), но я думал, что эти работы всё ещё ведутся и пока что не работают в мастере
источник

MM

Mikhail Maltsev in Compiler Development
В мастере оно уже есть, живёт в clang/lib/AST/Interp, но насколько я понимаю это экспериментальная фича и включается по специальному флажку -fexperimental-new-constant-interpreter
источник

MM

Mikhail Maltsev in Compiler Development
Про JIT насколько я помню разговоры были, но дело не дошло даже до прототипа
источник

AZ

Alexander Zaitsev in Compiler Development
Понял, спасибо!
источник

KR

K R in Compiler Development
Peter Sovietov
Обратите внимание, в правиле chunk мы получаем len, а затем используем правила с параметрами.
Между прочим, это тот случай, насколько я понимаю, когда макросы Menhir, о них мы говорили выше, уже не сработали бы.
Вот этого не хватает в ocamllex - возможности вызывать правила с параметрами.

А вот как там с контролем выделения памяти в PEG парсерах? Бинарные парсеры часто используются в местах, где требуется очень высокая производительность.
источник
2020 May 30

ES

Eslam Selim in Compiler Development
Hi
источник

ES

Eslam Selim in Compiler Development
I have no idea about compiler development
источник

ES

Eslam Selim in Compiler Development
And I need help with my assignment
источник

ES

Eslam Selim in Compiler Development
Is that ok?
источник

Т8

Т-34 85 in Compiler Development
Eslam Selim
Is that ok?
источник

AK

Andrei Kurosh in Compiler Development
Eslam Selim
And I need help with my assignment
Sorry, we have a couple of rules here:
1. This is a russian-speaking channel
2. If you have a specific question, people will try to help. If you just want to “know how to make a compiler” - please read the books provided. If you want somebody to do your task for you - tough luck
источник