Здравствуйте, VladD2, Вы писали:
VD>Приветствуется любая критика.
1.
syntax "if" "(" cond ")" e1 ";"? "else" e2
Зачем ";"? Ведь в Немерле-1 к любому выражению и так можно приписать ; без последствий.
2. Почему бы не дать каждому виду макросов свое имя? Например, оставить macro для самого популярного вида: тех, которые расширяют другие макросы. Расширяемые макросы типа Expr назвать macrobase, или там choice, или extensible.
3. Я так и не понял,
во что в конечном итоге переписываются макросы. В Nemerle 1 с этим просто — MacroCall переписывается в PExpr. Но в Nemerle 2 нету никакого PExpr! Есть только Expr, который сам по себе макрос.
@?. переписывается в if, if переписывается в match, но match тоже Expr. Что с ним-то делать?
4. Мне кажется, не стоит называть дерево разбора Ast. AST означает Abstract syntax tree — важное понятие для авторов языка, и непонятную белиберду для пользователей. Им вряд ли интересно, что такое ast, почему оно abstract и так далее.
Это как с лямбдами. Почему они лямбды? Кому интересно, что их прародитель — λ-исчисление какого-то древнего дядьки? Название "анонимные функции" понятнее.
В данном случае, проще и правильнее назвать класс просто Code.