Primeiro, parabéns pelo projeto! Gosto muito de incentivar as pessoas à entenderem como as coisas funcionam por baixo dos panos. Compiladores é um dos fundamentos de computação que acredito que todo programador deveria dominar.
Dito isto, acho importante fazer uma correção na sua percepção de conceitos. Primeiro, a sua linguagem Su não é funcional, ela é imperativa. Linguagens de programação funcionais são baseadas em cálculo lambda e funcionam essencialmente com a definição, derivação e aplicação de funções. É tudo sobre funções, por isso é chamada de funcional.
Se quiser ver linguagens que são realmente funcionais, veja linguagens como Lisp ou Haskell e você verá como são muito diferentes de linguagens como JavaScript, Python, C ou a Su. Inclusive, programadores que só estão acostumados com paradigma imperativo costumam sofrer para programar em uma linguagem funcional. Não é intuitivo, você tem que reaprender a programar do zero.
Tudo nasceu por curiosidade. Eu estava estudando sobre como as linguagens de programação funcionam por dentro: análise léxica, parsing, AST, resolução de escopo e execução.
Tudo que você listou neste trecho não diz respeito à como linguagens funcionam, mas sim como compiladores/interpretadores funcionam. Esse é um erro muito comum entre os programadores, mas é importante entender que uma linguagem de programação não é um software. Linguagem de programação é um objeto matemático, é teórico.
O software (compilador ou interpretador) é a implementação da linguagem de programação, não a linguagem em si. A linguagem em si é teórica e, normalmente, descrita em um documento. Esse documento a gente chama de especificação da linguagem de programação, e isso é a linguagem de fato. Se quiser ver como a especificação de uma linguagem de programação se parece, veja um desses:
- A especificação do C: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf
- A especificação do Go: https://go.dev/ref/spec
- A especificação do JavaScript (ECMAScript): https://ecma-international.org/publications-and-standards/standards/ecma-262/
Se você quiser entender como linguagens de programação funcionam, você deve estudar Programming Language Theory (PLT), que aí sim você vai realmente aprender sobre linguagens e não sobre detalhes de implementação de um software.
Se quiser uma sugestão de por onde começar a estudar PLT, estude sobre paradigmas de linguagens de programação e sistemas de tipo. Sugiro a leitura:
- Sobre paradigmas: https://webperso.info.ucl.ac.be/~pvr/VanRoyChapter.pdf
- Sobre sistemas de tipo: http://lucacardelli.name/papers/typesystems.pdf
Parabéns pelo interesse em estudar fundamentos. É sempre legal fazer esse tipo de projeto e aprender coisas novas.