finished DeadClass

Lab 5 Start!!!!!
修改了Tiger.java,与之前变动较大。
finished DeadCode

主要针对Not，While, If做了优化。
finishen Algebraic Simplification

1>修改了Tiger.java。compile，assemble，link分开。
2>完成了代数简化。
发现9+9+9+9+这种Exp  MiniJava是不支持的。
finished Constant folding

TreeVisitor与LinkedList经过优化不受影响。
Not是否可以直接优化为true or false？？
finished Constant folding v2

对Not和And都进行了常量合并优化。

发现一个大问题：
不支持负数！！！！Lexer要修改。
Support the  negative number

对负数的支持写在了Parser中。
Lexer只负责产生Token，Sub的具体含义在Parser可以确定。
cfg 10个测试例通过

没有加绘图功能。cfg的中间表示完成。编译成的C文件变为了3地址码。可以跑通所有测试例。
可生成控制流图

在控制流图里面只显示Label和Transfor，Stms应该没有必要显示。
写了一个很蹩脚的伪逆拓扑

八成有问题。。。
下一步要利用DFS实现BlockInOut

实现了DFS。
下一步要利用DFS实现BlockInOut。
因为之前的做法不对。一个节点的Out必须是它的所有子孙节点的In求并集，而不是只在逆拓扑序里排在前面的求并。
Cycle

上一次的版本有错误！！！
目前的思路
1>找到图中所有的环
2>用HashMap保存环的起点和所牵扯到的点
3>删除图中的环
4>top排序，求逆
5>计算In和Out
6>对删掉的节点根据key补上In和Out

目前实现的1和2.
很重要的一个版本！

对上一个版本进行了改进！发现了一个大问题。经过对象序列化之后，根据Block已经无法找到对应的Gen和Kill，因为key已经改变了。解决方法是从原图中找到对应的Block，根据i的值判断是否相同，然后改变当前Block的指向。

问题6还没有解决。
目前已经能把逆拓扑里面的block的In和Out计算出。
BlockInOut finifshed

解决的无问题是无法输出所有的环。
最后得出结论：没有必要输出所有的环。至于要那个节点上最大的环。

目前能输出所有block的In和Out。
StmInOut  finished

在计算出所有block的In和Out后，计算了每个Block里面每个Stm和Transfer的In和Out。
用的方法跟前面的方法大同小异。

可以正常运行输出结果。
是否正确没有验证。因为理论不足。
merge