compiler:抽象语法树

  • W9_157785
    了解作者
  • 23.5KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-06-15 09:16
    上传日期
一个表达式解析器、词法分析器,最终是一个解释器,它实现了一个抽象语法树,用于以整数文字或变量标识符作为其操作数的二进制表达式的链式变量赋值。 当前,当遍历 AST 时,所有变量标识符都将返回 0。 表达式从中缀表示法中解析出来,AST 通过对 AST 进行前序遍历以后缀表示法打印 解析器实现了一个推送或弹出 BTree* 结构的堆栈机器。 AST 中的叶节点是操作数或标识符,而非叶节点(内部节点)在 BTree.value.type 中标识为 IS_OP 的二进制操作; 执行 typedef enum OPType { OP_ADD, OP_SUB, OP_MUL, OP_DIV, OP_ASSIGN } OPType; typedef enum ValueType { IS_OP, IS_INT, IS_IDEN } ValueType; typedef str
compiler-master.zip
  • compiler-master
  • stack.h
    1KB
  • .gitignore
    16B
  • test.txt
    18B
  • build
    75B
  • LICENSE
    34.3KB
  • lexer.c
    2.1KB
  • README.md
    1.1KB
  • parser.c
    10.2KB
  • parser.h
    1.3KB
  • astnotes.txt
    470B
  • stack.c
    1.4KB
  • ast.h
    1.3KB
  • main.c
    3.7KB
  • lexer.h
    984B
  • ast.c
    1.4KB
内容介绍
An expression parser, lexer, and ultimately an interpreter that implements an Abstract Syntax Tree for chained variable assignments of binary expressions with either integer literals or variable identifers as their operands. Currently all variable identifiers will return 0 whenthe AST is traversed. Expressions are parsed from Infix notation, and the AST is printed in Postfix notation by doing a pre-order traversal of the AST The parser implements a stack machine that push or pops BTree* structures. Leaf Nodes int the AST are operands, or identifers, while non leaf nodes (internal nodes) binary operations identifed in the BTree.value.type as IS_OP; Implementation ``` typedef enum OPType { OP_ADD, OP_SUB, OP_MUL, OP_DIV, OP_ASSIGN } OPType; ``` ``` typedef enum ValueType { IS_OP, IS_INT, IS_IDEN } ValueType; ``` ``` typedef struct BTree BTree; typedef struct Value { ValueType type; union { OPType op; long long int value; char* str; } u1; } Value; ``` ``` typedef struct BTree { struct BTree* left, right; struct Value* value; } BTree; ``` Example main "name=2+10*20/2" TODO - Virtual Machine - Garbage Collection
评论
    相关推荐
    • FreeMaker IDE
      FreeMarker的Eclipse插件,可以高亮显示FTL标签,提示语法错误,以及智能提示!
    • selenium ide
      selenium ide下载,fire path
    • IDE设置
      IDE设置
    • FreeMaker IDE
      FreeMaker IDE FreeMaker IDE
    • silabs ide
      用于调试51F023的软件 可以与CE3配套使用
    • ide
      ide
    • ide
      ide
    • IDE Factory
      【名称】IDE Factory 【作用】Flex Builder的AS3开发插件,主要用于生成Geter and Setter 、Format code...etc 【版本】Beta2 1.05(2008.12.20 最新) 【官网】开代理访问 www.idefactory.com 【已知Bug】 根据...
    • SiLabs IDE
      新华龙公司特别为C8051系列开发的编译软件IDE,界面很直观,非常好用!
    • Perl IDE
      一个Perl的程序设计器。