美文网首页
llvm cookbook 2.3 定义AST

llvm cookbook 2.3 定义AST

作者: peteyuan | 来源:发表于2018-11-16 10:41 被阅读13次

定义抽象语法树,也就是各种表达式的数据结构。

class BaseAST {
 public:
  virtual ~BaseAST();
};

class VariableAST : public BaseAST {
  std::string var_name_;
 public:
  VariableAST(std::string &name) : var_name_(name) {}
};

class NumericAST : public BaseAST {
  int numeric_val_;
 public:
  NumericAST(int val) : numeric_val_(val) {}
};

class BinaryAST : public BaseAST {
  std::string operator_;
  BaseAST *lhs_, *rhs_;
 public:
  BinaryAST(std::string op, BaseAST* lhs, BaseAST* rhs) :
      operator_(op), lhs_(lhs), rhs_(rhs) {}
};

class FunctionDeclAST {
  std::string func_name_;
  std::vector<std::string> args_;
 public:
  FunctionDeclAST(const std::string &name, const std::vector<std::string> &args) :
      func_name_(name), args_(args) {}
};

class FunctionDefnAST {
  FunctionDeclAST *func_decl_;
  BaseAST* body_;
 public:
  FunctionDefnAST(FunctionDeclAST *proto, BaseAST *body) :
      func_decl_(proto), body_(body) {}
};

class FunctionCallAST : public BaseAST {
  std::string callee_;
  std::vector<BaseAST*> args_;
 public:
  FunctionCallAST(const std::string &callee, const std::vector<BaseAST*> args) :
      callee_(callee), args_(args) {}
};

相关文章

  • llvm cookbook 2.3 定义AST

    定义抽象语法树,也就是各种表达式的数据结构。

  • llvm cookbook 2.9/2.10/2.11 IR代

    对AST里的每个节点,也即每个AST类都定义Codegen方法。 这个方法会返回一个LLVM Value对象,表示...

  • llvm cookbook 2.1 定义语法

    实现词法分析器和语法分析器之前,需要先定义我们将要实现的语言的语法。 一个语言通常包含了变量、函数调用和常量等。为...

  • 代码混淆

    LLVM编译过程: 预处理,词法分析,token,语法分析,AST,代码生成,LLVM IR,优化,生成,汇编代码...

  • LLVM整理

    LLVM编译一个源文件的过程: 预处理 -> 词法分析 -> Token -> 语法分析 - > AST树 -> ...

  • 逆向 - init

    book 汇编语言 LLVM CookBook 密码学 攻防实战 OS X 与 iOS 内核 iOS 应用安全 黑...

  • 个人计划(过年前)

    读完《人类简史》 读完《C程序设计语言》 好好工作 加油↖(ω)↗ 过年后:《LLVM Cookbook》《程序员...

  • llvm cookbook 2.2 实现lexer

    编写toy.cpp 编译 测试代码source.ty: 运行

  • llvm cookbook 2.4 实现parser

    本文实现一个自顶向下的解析。 递归构造AST:

  • llvm cookbook 1.7 优化ir

    本文介绍如何使用opt工具优化llvm ir。 使用之前编写的代码 multiply.c 执行命令 生成 mult...

网友评论

      本文标题:llvm cookbook 2.3 定义AST

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