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表达式。

你可能感兴趣的:(llvm cookbook 2.7/2.8 调用和运行)