>> метапрограммирование
>Вы хоть знаете, что это такое? Даже на бейсике можно сделать кодогенерацию и рефлексию.ахахаха +++ видно что википедию почитали прежде чем отвечать. даже наверное абзац прочитали)))
вот примерно так выглядит макрос в nemerle, где это сделано.
macro @if (cond, e1, e2)
syntax ("if", "(", cond, ")", e1, Optional (";"), "else", e2)
{
/*
<[ ]> // <[ ]> определяет области квазицитирования, код внутри них преобразуется в AST Немерле,
аналогично преобразованию кода в Expression компилятором C#
*/
<[
match ($cond : bool)
{
| true => $e1
| _ => $e2
}
]>
}
// Данный макрос вводит в язык конструкцию if:
def max = if (a > b) a else b;
// которая при компиляции раскрывается в:
def max = match (a > b)
{
| true => a
| _ => b
}