编译原理实验设想

###语言的名字:
Tig

一个Tiger语言的实现

###语言可能包含的设施

  1. 词法分析
  2. 语法分析
  3. 抽象语法树
  4. 语义分析
  5. 中间代码生成
  6. 生成完整的程序

###可能存在的与众不同、亮点
可能存在的最大亮点是我们准备利用函数式语言ML(使用standard ML实现)来完成整个编译器。

使用函数式语言ML编写编译器有以下几个优点

  • ML语言有垃圾回收机制,在编写类似于编译器这样复杂的程序时,垃圾收集将很大程度上提升效率,并且减少我们编程过程中的失误。
  • ML使用尾递归,这将减少堆栈空间的使用。
  • ML语言中的数据类型与编译过程中的相匹配
  • ML语言的类型构造可以相当美妙的描述语法树
  • ML语言足够安全
  • ML语言有ML-Lex、ML-Yacc等编写编译器时需要的资源

###已知的完成该项目可以利用的资源
目前已知的有《Modern Compiler Implementation in ML》一书,以及对应的Tiger语言手册

暂时没有找到用ML语言实现的Tiger编译器,可以使用C语言或Java语言的实现进行参考。

###其他设想
在《Modern Compiler》一书的第二部分,包含了对原有编译器的面向对象支持、函数式语言支持,如果时间允许的话,希望能够尝试给Tig增加函数式语言的支持。