Size: a a a

Compiler Development

2020 February 26

KR

K R in Compiler Development
А насколько сложно реализовывать эти хаскельные навороты - инфиксное применение и задаваемые приоритеты операторов?
источник

KR

K R in Compiler Development
И вообще, в двух словах, как нормальные люди делают изменяемые приоритеты операторов?
источник

СЛ

Сергей Лапынин in Compiler Development
K R
И вообще, в двух словах, как нормальные люди делают изменяемые приоритеты операторов?
На уровне грамматики можно все операторы делать с одним приоритетом, собирать в список. В дальнейшем уже идет группировка по приоритету (можно в конкретном контексте). Для группирования ОПЗ или сразу строить дерево.

А где это такое бывало, что + - * / могут менять свой приоритет?
источник

KR

K R in Compiler Development
Сергей Лапынин
На уровне грамматики можно все операторы делать с одним приоритетом, собирать в список. В дальнейшем уже идет группировка по приоритету (можно в конкретном контексте). Для группирования ОПЗ или сразу строить дерево.

А где это такое бывало, что + - * / могут менять свой приоритет?
В языке на букву Х вроде все могут.

Может я не прав, но тут проще всем разрешить, чем «руку сбивать» - исключения         прописывать.
источник

DP

Dmitry Ponyatov in Compiler Development
Aleksandr Kravtsov
это не в сторону того чтобы писать компиляторы на плюсах а про то что вроде как gcc более менее документирован, и на llvm переписан и вообще борода от них гуще) а вообще насколько тема языкописания по вашему перспективная, типо вместо dsl-ей всяких под конкретные области свои языки писать?
наоборот тема DSL-трансляторов в mainstream языки не раскрыта на уровне учебников
если взять обычного программиста с галеры, у него Java/JS/C++ залиты в бетоне, и никаких поползновений в сторону невозможно в принципе на уровне повседневной работы, максимум pet-project
источник

DP

Dmitry Ponyatov in Compiler Development
Dmitry Ponyatov
наоборот тема DSL-трансляторов в mainstream языки не раскрыта на уровне учебников
если взять обычного программиста с галеры, у него Java/JS/C++ залиты в бетоне, и никаких поползновений в сторону невозможно в принципе на уровне повседневной работы, максимум pet-project
можно пытаться обойти стену, имплементируя интерпретатор даже не языка, а структур данных (по факту Lisp именно про это, это скорее не ЯП а сериализованные исполняемые списки by design)
источник

DP

Dmitry Ponyatov in Compiler Development
но дальше втыкаешься в то, что нужно сделать сальто через задницу, чтобы интерпретатор из игрушки превратился в инструмент — не хватает знаний, навыков, и хорошего учебника, чтобы затащить туда реально крутые вещи типа унификации, pattern matching, трансформация графов
да, оно есть в функциональных языках — но оно живет в своей нише, императивщику туда лезть бессмысленно без бэкграунда: не получается отделить принципы реализации от заморочек конкретного Haskell, Lisp,.. как среды реализации
источник

DP

Dmitry Ponyatov in Compiler Development
взять тот же PLAI — ну примитивщина же реально, для schemeра/лиспера за вечер половина читается
тот же текст для питониста/жависта — "а про что это вот все? что за лямбда, зачем вся эта лапша ?!"
источник

МБ

Михаил Бахтерев in Compiler Development
Dmitry Ponyatov
но дальше втыкаешься в то, что нужно сделать сальто через задницу, чтобы интерпретатор из игрушки превратился в инструмент — не хватает знаний, навыков, и хорошего учебника, чтобы затащить туда реально крутые вещи типа унификации, pattern matching, трансформация графов
да, оно есть в функциональных языках — но оно живет в своей нише, императивщику туда лезть бессмысленно без бэкграунда: не получается отделить принципы реализации от заморочек конкретного Haskell, Lisp,.. как среды реализации
DCPL.pdf там всё это есть
источник

ИЧ

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

ИЧ

Илья Чистяков in Compiler Development
Dmitry Ponyatov
взять тот же PLAI — ну примитивщина же реально, для schemeра/лиспера за вечер половина читается
тот же текст для питониста/жависта — "а про что это вот все? что за лямбда, зачем вся эта лапша ?!"
А что за PLAI? Не нагуглилось. И в питоне лимбы есть же.
источник

p

polunin.ai in Compiler Development
Илья Чистяков
А что за PLAI? Не нагуглилось. И в питоне лимбы есть же.
Обрезанные
источник

ИЧ

Илья Чистяков in Compiler Development
polunin.ai
Обрезанные
В каком смысле?
источник

p

polunin.ai in Compiler Development
Лямбда в питоне может иметь один statement
источник

ИЧ

Илья Чистяков in Compiler Development
polunin.ai
Лямбда в питоне может иметь один statement
Непонятно
источник

p

polunin.ai in Compiler Development
Илья Чистяков
Непонятно
В расте можно написать:
|| {
 do1();
 do2();
 do3();
}
А в питоне:
lambda: do1()
источник

МБ

Михаил Бахтерев in Compiler Development
Илья Чистяков
А что за PLAI? Не нагуглилось. И в питоне лимбы есть же.
источник

ИЧ

Илья Чистяков in Compiler Development
polunin.ai
В расте можно написать:
|| {
 do1();
 do2();
 do3();
}
А в питоне:
lambda: do1()
А, многострочность. Это да.
источник

ИЧ

Илья Чистяков in Compiler Development
Dmitry Ponyatov
наоборот тема DSL-трансляторов в mainstream языки не раскрыта на уровне учебников
если взять обычного программиста с галеры, у него Java/JS/C++ залиты в бетоне, и никаких поползновений в сторону невозможно в принципе на уровне повседневной работы, максимум pet-project
Ну дак dsl обычно под запретом. Дорогие издержки, а профит спорный.
источник

ИЧ

Илья Чистяков in Compiler Development
Спасибо.
источник