这几天忙着写编译原理课程设计的另一部分. Seu YACC的实现.

这个程序的核心算法实现不是有我来完成,我负责后端输出的模板代码的书写.

实际上就是一个基于LALR分析表的parser.

我附带加上了生成抽象语法树的功能, 并输出DOT 文件,通过graphviz 生成图片.

下面贴一段Min-C 语言的抽象语法树.(图片比较大)

ast.png

对应的代码为
<br /> int main ( )<br /> {<br /> int x = 0 ;<br /> int b = 2 ;<br /> int c = 5 ;<br /> int d = 6 ;<br /> int a = b ;<br /> if ( x < y )<br /> {<br /> int x = y ;<br /> }<br /> while ( c == d )<br /> {<br /> int m = c + d ;<br /> m = x + y ;<br /> }<br /> }<br />