从yacc解析器获取clang / llvm解析器

布里斯纳·巴托(Brishna Batool)

我正在尝试在llvm中为Promela构建解析器。我有解析器SPIN使用,它是使用yacc构建的,包括输入yacc的输入。有没有一种方法可以使用yacc解析器快速而轻松地生成clang / llvm解析器?我将使用它来生成调用图并执行静态分析。

sepp2k

现在我需要知道的是,是否可以使用yacc构建的现有Promela编译器,以使用llvm框架快速构建解析器(以及后来的IR生成器)。

是的,您可以为项目重新使用现有的YACC语法(如果需要甚至可以使用现有的AST)。但是,“使用llvm框架构建解析器”有点误导,因为LLVM与解析和AST没有任何关系。除非生成LLVM IR,然后使用它,否则LLVM不会进入。

因此,您可以采用现有的YACC语法和现有的AST,或者仅采用该语法,然后用创建自己定义的AST的动作替换操作。无论哪种方式,该部分都不会涉及LLVM。

然后,您将编写一个单独的阶段,该阶段将遍历AST,并使用LLVM API生成LLVM IR,然后您可以在其上运行LLVM支持的所有转换和分析。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章