Re[4]: Ela. Разработка интерпретируемого языка программирова
От: Воронков Василий Россия  
Дата: 22.06.11 09:38
Оценка:
Здравствуйте, sailichev, Вы писали:

ВВ>>CodeDom весьма ограничен и не покрывает всех возможностей целевого языка. Собственно, он и для представления дерева C# не подходит так же. Ибо в нем много странных ограничений. Например, нет вообще унарных операторов.

S>Незнаю на счет "весьма" но для любого ограничения есть workaround. готовый.

Какой, интересно? Добавлять собственные узлы?

ВВ>>В нем есть разделение на Statement и Expression. В Ela — нет. Да и вообще представление операторов в коде-доме для Ela не подходит.

S>Можно не обращать внимание на наличие Statement.

Нет, нельзя. То, что в Ela является Expression, в CodeDom будет Statement. Соответственно, в голом виде я уже не смогу его использовать в виде выражения. В итоге единственный workaround — заворачивать все Statement в CodeStatementExpression, что уже не добавлят удобства.

S>При чем тут трансляция в разные языки. У вас свой язык. Это не нужно.


Это единственное преимущество CodeDom. Зачем он еще нужен тогда?

ВВ>>А по поводу трансляции в КодеДом — а зачем, собственно?

S>Затем что становится не нужен свой компилятор.
S>И не нужны маленькие фишки упрощающие ему жизнь. И прочая.
S>И не нужна виртуальная машина.

С чего бы это?
Компилятор нужен. Мало того, что CodeDom не покрывает весь язык, так еще и отсутствует однозначная трансляция между, скажем, функциями в C# и функциями в Ela. В итоге вся работа, которую сейчас выполняет компилятор, свалилась бы на парсер. Как бы мы, интересно, паттерн-матчинг представляли? Генерили бы на КодеДоме кучу иф-ов? А каррированные функции как представить? А прозрачную ленивость? Я уж не говорю о том, что даже код вида "x+y" я в C# не могу отранслировать как "x+y", ибо в C# это вполне конкретная операция, а в Ela — абстрактная, так что придется генерить много кода.
В итоге кода получилось бы *больше*, и этот код занимался бы ручным построением CodeDom-а и выглядел бы, соответствующе.

И главное — что бы это дало? Кроме тормознутого компилятора. Итоговая скорость кода отличалась бы незначительно, ценности для эмбединга никакой и пр.

S>Хотя я может цели всей затеи не так понимаю...

S>А есть спецификация по языку в каком-либо виде?

Спецификации нет, есть книга на английском языке.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.