llvm cookbook 2.7/2.8 调用和运行

调用

static void Driver() {
  while (true) {
    switch (current_token) {
      case EOF_TOKEN : return;
      case ';' : next_token(); break;
      case DEF_TOKEN : HandleDefn(); break;
      default : HandleTopExpression(); break;
    }
  }
}

int main(int argc, char* argv[]) {
  LLVMContext &context = getGlobalContext();
  init_precedence();
  file = fopen(argv[1], "r");
  if (file == NULL) perror("Error opening file");

  next_token();
  Module_Ob = new Module("my compiler", context);
  Driver();
  Module_Ob->dump();

  return 0;
}

运行

clang++ toy.cpp -O3 -p toy

从实现来看,程序读入源码文件,不断调用 next_token(),对于每次获得的token要么是关键字,要么是分号(行结束符),要么是文件结尾,要么就是top表达式。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,686评论 0 13
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,800评论 0 5
  • 文/爱学习的飞哥 ‖飞哥有话说,专注于探求大学生学习、读书、生活那些事。 1 小Q绝对是我的最忠诚粉丝,从我写的第...
    爱学习的飞哥阅读 502评论 2 6
  • 版本更新需要注意的点 兼容Android7.0 最近我们发现Android7.0的手机更新App的时候会出andr...
    烂吹笙阅读 3,609评论 0 2
  • 大家好,我是石辰萱。 我完成了6条英语配音,八张五年级上册字贴,两本书 《特别女生萨哈拉》和《南风》。 ...
    疯狂哦天动物城阅读 511评论 1 0

友情链接更多精彩内容