Внедрение динамического ввода текста с использованием LLVM IR

Я пытаюсь реализовать игрушечный язык с динамической типизацией, т.е. переменные не имеют типов, только значения делают, и каждая переменная должна быть объявлена ​​перед использованием. Например, код может выглядеть как var x; x = 3; x = 'a';. Кроме того, я хочу скомпилировать этот игрушечный язык с собственным кодом вместо того, чтобы запускать его на какой-либо виртуальной машине.

В настоящее время я создал AST, и собираюсь скомпилировать AST для LLVM IR, используя LLVM С++ API. Вопрос в том, какой IR я должен генерировать для

  • Переменная декларация (с начальным значением или без него, например var x; или var y = 3.4;
  • Переменный доступ (например, a в c = a + 1)