我目前正在实现自己的简单玩具编程语言。我希望尽快实现这一点,但我很不确定从我所处的当前阶段到哪里去。我打算让我的语言被解释,因为看起来让解释器更容易?还是更快?而不是制作编译器。
无论如何,我很忙,我已经用 Bison/Flex 创建了我的解析器/词法分析器,但是我还没有制作我的 AST。这样做的原因是因为我打算解释 AST,但是我很不确定如何设计受益于多态性的 AST(我使用 C++ 作为我的实现语言)所以我不必使用开关/if-else 语句。有谁知道我应该如何解决这个问题?或者我是否应该不解释 AST,而只是编译为 IR 并解释 IR。
如果那种情况是后者,而不是发明我自己的 IR,我的源代码中可以免费使用哪些可能的 IR 和 VM(解释 IR)而没有任何限制?我知道 LLVM,但还有其他我应该考虑的吗?
编辑:
我正在创建的编程语言是一种简单的类 C 语言,并且具有一些视觉基本特征。它是静态类型的,有两个可用的原语:一个数字(浮点)或一个文本字符串。
这是它的样子:
begin // start of the program
num x = 3; // make a number
str text = "Hello World"; // make a string
print text + x; // prints out "Hello World3"
end // end of the program