美文网首页
llvm cookbook 2.7/2.8 调用和运行

llvm cookbook 2.7/2.8 调用和运行

作者: peteyuan | 来源:发表于2018-11-20 13:28 被阅读12次

    调用

    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 调用和运行

          本文链接:https://www.haomeiwen.com/subject/kunmfqtx.html