你的位置:首页 > Java教程

[Java教程]编译器开篇:总述


      首先声明,该系列博文是我学习编译原理的过程中的记录,其中主要参考的书籍是Allen I Holub的Compiler design in C.

      首先对该书作者表示感谢,像龙书,虎书,鲸书这基本书太过高深,阅读理解核心思想还可以,但离自己动手编写实际的代码还是有距离的,我觉得代码这种东西还是自己写出来才算是真正有意义的,于是动手改写随书代码(原书是C版本,自己尝试改为Java版本)并对编译器整体结构进行了拆分,以求梳理出清晰的线路,以便自己真正理解并在以后可以回想起来,以上就是我学习的初衷。

      按原书籍的组织结构,也是分为词法分析器生成器(LEX)、语法分析器生成器(YACC)来完成,先放一张最近梳理的词法分析器的结构图吧,后续还会继续深入。

      图是用思维导图freeplane画出来的,实在太大,分成几块来看吧。

      

 

图一 词法分析器整体图

       

图二  输入缓冲区结构图

             

图三 词法分析器生成器结构图

             

图四   不确定有限自动机结构图

 

图五确定有限自动机结构图

图六  分析器生成图

 

图七  模板文件图