编译器开篇:总述

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

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

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

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

      

 

图一 词法分析器整体图

       

图二  输入缓冲区结构图

             

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

             

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

 

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

图六  分析器生成图

 

图七  模板文件图

 附上目前项目的代码:

编译器生成程序Compiler:https://github.com/9527hello/Compiler

C的编译器CCompiler:https://github.com/9527hello/CCompiler

转载于:https://www.cnblogs.com/9527hello/p/5741558.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值