我正在使用ocaml及其llvm绑定开发玩具编程语言/编译器。我想将hashtables / hashmaps作为我语言的内置数据结构,但是我对如何处理它们很困惑。
我知道llvm c ++ api有一个ADT目录,其中包含一堆满足我需求的数据结构,但我不知道如何使用ocaml api调用它们。
另一个选择是使用c来实现它们并链接它们,但我宁愿专注于第一个想法。
如果有人有关于如何在llvm中使用/实现这些数据结构的有用资源(通过ocaml绑定或直接使用IR,而不是c ++ api),将会很有帮助。
答案 0 :(得分:0)
我知道llvm c ++ api有一个ADT目录,其中包含一堆满足我需求的数据结构,但我不知道如何使用ocaml api调用它们。
您无法通过OCaml API调用它们,但即使可以,也无法解决您的问题。它们只是数据结构,而不是生成LLVM代码的方法。如果您可以在OCaml中使用它们,那么除了OCaml的内置列表,映射,集合和数组之外,您还可以使用其他几种数据结构选项。您将无法生成实现这些数据结构的LLVM代码。这不是班级所做的。
这些数据结构也可以是一个与LLVM无关的独立库。他们是LLVM的一部分,因为它们被LLVM项目使用,而不是因为它们与生成LLVM代码直接相关。
另一个选择是使用c来实现它们并链接它们,但我宁愿专注于第一个想法。
那个或链接现有的库实现哈希表(添加了粘合代码,使它们适合你的语言类型系统和内存模型)将是你唯一的选择。