cd ccompiler
./4YuanFormual.exe.ink
python ./trans4toCode.py
变量消减的代码优化为可选项,建议在即有示例代码
./input.c
上尝试,其余输入情况下发生故障本项目组具有完全解释权
python ./optimize.py
python ./objectcode.py
另:生成四元式后,可一键自动生成MIPS汇编,因为此脚本集成了代码优化,所以不是很推荐
python mips.py
实现了 Node 类,用于保存每个节点的属性并建立语法树。 最重要的三个属性是 Type,Value 和 StyleId(从 Node 开始的中间代码的 Id)。
实现了 SymbolTable(符号表)类,静态使用,可以压栈符号表,出栈符号表,用于表示不同的命名空间,可以递归查询是否声明变量,也可以非递归查询检测同一命名空间中是否变量重名。 当一个变量被声明后再次使用的时候会从符号表中取出之前存储的属性,主要是 Type 用于类型检查,SymbolTable 和符号表项 Entry 类与 Node 类是松耦合的,可以通过 getNode_r 联系到一起。
- 编译错误
- 类型不匹配错误
- 标识符重定义错误
- 标识符未定义错误
实现了 FourTermStyle 类,静态添加四元式并注册顺序 ID,newTemp() 可以生成临时变量,可以实现跳转语句的回填。