Size: a a a

Compiler Development

2020 April 04

IJ

Igor 🐱 Jirkov in Compiler Development
@fulcanelly вам я советую почитать про формальные  грамматики на википедии, а также про рекурсивный спуск как метод парсинга
источник

IJ

Igor 🐱 Jirkov in Compiler Development
Если в двух словах,  классически со строчкой типа if x>0 then 10 else 24 вам нужно сделать два прохода:
1. Лексический анализ сделает из неё набор лексем. Каждая лексема это единица языка: ключевое слово, число, оператор. Так удаляются  пробелы и детали форматирования.
2. Синтаксический анализ построит дерево из этого набора лексем. Как это сделать -- самый простой способ это алгоритм рекурсивного спуска, написанный под грамматику вашего языка.  Потом можно посмотреть на парсинг с помощью таблиц и стека, в книге с драконом (ахо сети ульман)  он неплохо расписан.
источник

AK

Andrei Kurosh in Compiler Development
Dmitry Ponyatov
а почему никогда не рассматривается третья альтернатива — метапрограммирование, когда _каждая прикладная программа_ является неким узкоспециализированным компилятором? (кодогенерация, биндинг на LLVM)
т.е. вообще не важно, на каком языке писать, и насколько он быстр, так как работает только один раз в compile time
Узкоспециализированным компилятором чего во что?
источник

RS

Rifat S in Compiler Development
Видимо речь про суперкомпиляцию.
источник

МБ

Михаил Бахтерев in Compiler Development
Dmitry Ponyatov
а почему никогда не рассматривается третья альтернатива — метапрограммирование, когда _каждая прикладная программа_ является неким узкоспециализированным компилятором? (кодогенерация, биндинг на LLVM)
т.е. вообще не важно, на каком языке писать, и насколько он быстр, так как работает только один раз в compile time
источник

DP

Dmitry Ponyatov in Compiler Development
акварель на мету
можно пример ?
источник

DP

Dmitry Ponyatov in Compiler Development
раздел "Представление программ"
источник

DP

Dmitry Ponyatov in Compiler Development
смущает фраза "Terra is a low-level system programming language" — т.е. еще один язык, а не комиплирующая библиотека к generic Lua
источник

DP

Dmitry Ponyatov in Compiler Development
Andrei Kurosh
Узкоспециализированным компилятором чего во что?
если вы напрямую функции LLVM дергаете, вы что компилируете? вот того этого
источник

AT

Alexander Tchitchigin in Compiler Development
Dmitry Ponyatov
смущает фраза "Terra is a low-level system programming language" — т.е. еще один язык, а не комиплирующая библиотека к generic Lua
Таки библиотека к generic Lua. 😊
источник

DP

Dmitry Ponyatov in Compiler Development
Dmitry Ponyatov
раздел "Представление программ"
что касается конкретно компиляции такого графа через LLVM, там есть затык — когда делал через компилирующие методы, которые по подграфам ходят рекурсивно, Python-код лавинообразно разрастается, и становится очень плохо читаемым
ищу хороший ман, как сделать на Python прологоподобный pattern matching на графах (с бэктрекингом), библиотек полно находится, но к ним не хватает ключевого описания общих принципов их работы — возможно с матчингом удастся сделать трансформацию графа в компилируюмую форму с более читаемым кодом (через наборы правил перезаписи)
источник

C

Constantine in Compiler Development
Berkus Decker
в гите всего 4 сущности - tree, blob, commit и ref
из них строится все остальное
Это откуда картинка?
источник

AG

Alex Gryzlov in Compiler Development
Berkus Decker
приложил тренинг, сконденсированно о важных внутренностях гита
отсюда
источник

E

EgorBo in Compiler Development
Если кому интересно, написал бложик про инлайнер в C# https://egorbo.com/how-inlining-works.html 😊
источник

ИЧ

Илья Чистяков in Compiler Development
источник

TS

Timur Safin in Compiler Development
немедля ретвитнул!
источник

TS

Timur Safin in Compiler Development
(вот бы приделать такую же команду "Disasm %s method/function" к C/C++ коду в vscode...)
источник

AZ

Alexander Zaitsev in Compiler Development
Timur Safin
(вот бы приделать такую же команду "Disasm %s method/function" к C/C++ коду в vscode...)
Хорошая мысль для плагина, кстати
источник

BD

Berkus Decker in Compiler Development
Constantine
Это откуда картинка?
из моего тренинга и из книжки которая рекомендована в его конце - очень хорошая книжка, рекомендую )
источник

KR

K R in Compiler Development
Есть ли какие-нибудь JIT системы для статически типизированных компилируемых языков типа C++/Fortrana, позволяющие значительно повысить производительность по сравнению с просто компилятором?
Или это тупиковый путь, и больше, чем просто определение типа процессора, и выбор скомпилированного под него кода (AVX vs SSE) не сделать?
источник