【问题标题】:frontend to LLVM-based compiler基于 LLVM 的编译器的前端
【发布时间】:2012-07-14 19:34:12
【问题描述】:

我正在尝试开发基于 LLVM 基础架构的编译器。我的语言具有类似 C 的语法,因此我想利用现有的 C 编译器。现在我专注于前端(词法分析,解析),但我对哪个前端是最好的方法感到困惑。 Clang、llvm-gcc 还是传统的 flex/bison 工具?

我对最简单的解决方案特别感兴趣,它可以让我为编译器的后期阶段生成 LLVM IR 代码。

【问题讨论】:

  • 如果您自己进行解析和语义分析,生成 LLVM IR 会很容易。如果您不得不借用大部分 C 语法,您可以重用现有的前端,例如 Clang。否则不值得,一旦获得有效的 AST,生成 IR 就很简单了。
  • 谢谢。我应该使用什么从 AST 生成 IR?
  • 只使用简单的替换规则 - 请参阅 LLVM Kaleidoscope 示例。
  • 看这个教程:gnuu.org/2009/09/18/writing-your-own-toy-compiler 它展示了如何使用 bison+flex 创建一个 AST,然后将其导出到 LLVM I.R.
  • 感谢您的回答。我的语言从 C 中借鉴了很多,所以我认为最好破解现有的编译器前端(clang)。现在我有兴趣简单地将我自己的关键字添加到词法分析器中,但我对 lex 库中代码的大小感到有点害怕。谁能指出我应该修改哪些文件才能实现这一点。我正在阅读文档,但要适应所有课程需要相当长的时间..

标签: parsing compiler-construction llvm clang llvm-gcc


【解决方案1】:

如果您想手动编写所有代码,那么我向您推荐 LLVM 教程 Kaleidoscope:

【讨论】:

猜你喜欢
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多