假设使用类似javascript的语言,我们如何实现如下系统:
a = {};
a.foo = {};
a.foo.bar = 42;
print a.foo['bar'];
使用LLVM C ++ API?
我没有找到任何关于复杂数据类型的文档(例如HashMap从Value中删除),所以我有点迷失在这里。 LLVM C演示网页也没用,因为C / C ++中没有这样的数据类型。
我已经完成了Kaleidoscope教程,但没有找到任何其他非常好的教程。
答案 0 :(得分:4)
使用llvm在python中编写的 jit语言的示例是link to a student project。
它不是你需要的,而是面向对象的,报告涵盖了实现语言面向对象的简单方法。
答案 1 :(得分:3)
就像你在任何其他低级语义上做的那样。您必须实现自己的运行时库,您自己的哈希映射(或者您希望用于动态分派的任何其他内容)。 LLVM不会(也不应该)为它生成的代码提供任何运行时。