编译原理
文章平均质量分 74
Rill
这个作者很懒,什么都没留下…
展开
-
深入浅出编译原理-4-一个简单词法分析器的C语言实现
引言 光说不练,假把式。此小节来做一个实验,用c语言自己实现一个简单的词法分析器,来加深对词法分析的理解。感兴趣的就自己分析一下源码吧,挺简单的,就没画流程图,请见谅。闲言少叙,我们开始吧。 4.1实验描述例如:对源程序:begin x:=9: if x>9 then x:=2*x+1/3; end #的源文件,经过词法分析后输出如下序列:…… 4.1.原创 2012-07-06 17:07:13 · 28057 阅读 · 1 评论 -
深入浅出编译原理-5-一个简单语法分析器的C语言实现
引言前面已经介绍了编译器的预处理,词法分析,词法分析器的实现,也在其中说到了语法分析的任务和过程。语法分析的输入是词法单元序列,然后根据语言的文法表示(展开式),利用有限状态机理论,生成抽象语法树,然后遍历得到中间代码,即,三地址码。本节就以一个实验的方式,来看一下,语法分析器的内在实现机制。 5.1实验描述编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查原创 2012-07-10 10:36:24 · 40706 阅读 · 6 评论 -
深入浅出编译原理-2-gcc编译器概览
引言gcc现在的意思是“GUN编译器集合”,这里说的是上个世纪的意思“GUN C语言编译器”。 2.1程序的一般编译过程以gcc为例:一般情况下,比如我们有一个源文件:main.c,里面写的是我们的代码。想执行以下,gcc main.c,执行以下这个命令就会生成一个a.out的文件。然后./a.out就可以执行了。但是,这中间的过程可注意过吗?这就是编译原理要研究的内容了。这一原创 2012-06-29 19:14:59 · 6672 阅读 · 1 评论 -
深入浅出编译原理-3-词法分析器
引言 编译器的工作的开始,就是读入源码(预编译先不考虑),然后,去除一些空字符,然后经过词素匹配,并和其属性(可选),组成一个的词法单元,多个词法单元,连接成词法单元序列。自此,此法分析器的工作就算完成了。呵呵,就这么简单。可见,找到一个词素,是词法分析器的核心工作,那,如何获得一个词素呢?就是本节要讨论的主要内容。3.1工作流程上面已经简单描述了词法分析器的工作流程,下面是一张图,更原创 2012-07-02 17:35:54 · 11764 阅读 · 4 评论 -
深入浅出编译原理-1-C语言的文法
编译原理-1-C语言的文法c语言的文法产生式: programà external_declaration | program external_declaration external_declarationà function_definition | declaration function_definit原创 2012-06-29 08:51:14 · 17682 阅读 · 3 评论 -
深入浅出编译原理-6-一个完整的编译器前端的代码实现
引言 编译原理的学习是一个痛苦并快乐的过程 。经过前面的内容,我们知道了,语言,语法,文法,产生式,推导,语法分析树,语素,词法单元,中间表示,等等等等,这些概念以及他们之间的区别和联系,这一小节就展示一个完整的编译器的前端的代码实现。由简至繁,通过了解这个简单的编译器的前端实现,可以对编译器的工作原理有较好的理解。为下一步的优化技术打下很好的基础。编译原理学起来很难,他涉及到很多原创 2012-07-30 15:43:54 · 8484 阅读 · 2 评论 -
深入浅出编译原理-7-编译器前端实验
引言还是那句话,编译原理比较乏味,所以有一个感性的,直观的认识,很重要。上一节没有做这个事情,这一小节,就以《编译原理》(龙书)里的那个前端的源码为例,感受一下,一个真正的,完整的,我们的手可以摸得到的,编译器前端的工作情况和结果。分三部分内容:1》linux下安装JDK,用来编译front。2》编译front,front的代码,我已经传上来了,在上一篇博客里有具体的下载地址。原创 2012-10-04 18:35:15 · 4861 阅读 · 2 评论