Я пытаюсь реализовать игрушечный язык с динамической типизацией, т.е. переменные не имеют типов, только значения делают, и каждая переменная должна быть объявлена перед использованием. Например, код может выглядеть как var x; x = 3; x = 'a';
. Кроме того, я хочу скомпилировать этот игрушечный язык с собственным кодом вместо того, чтобы запускать его на какой-либо виртуальной машине.
В настоящее время я создал AST, и собираюсь скомпилировать AST для LLVM IR, используя LLVM С++ API. Вопрос в том, какой IR я должен генерировать для
- Переменная декларация (с начальным значением или без него, например
var x;
илиvar y = 3.4;
- Переменный доступ (например,
a
вc = a + 1
)