编译原理笔记
酒徒词客
这个作者很懒,什么都没留下…
展开
-
词法分析笔记
编译的过程分为如下几个阶段: 词法分析,语法分析,语义分析和中间代码生成,目标代码生成,代码优化。 词法分析主要识别语言中的单词,填充到符号表中,为下一步的进行做好准备。 语言正规式------->不确定有限自动机(NFA)---------->确定有限自动机(DFA)-------->简化(DFA)----->词法分析器。原创 2013-11-29 12:53:15 · 1268 阅读 · 0 评论 -
语法分析笔记自顶向下分析
进行完词法分析紧接着进入语法分析阶段。语法分析判断一个句子是否合乎语言的文法规则,语法分析阶段的数学元素为: 终结符:数字(1~9),字母(a~z),运算符等字(+ - x /)符。 非终结符:一个抽象化的句子以大写字母表示如:S,R,A,B; 产生式:S-->aB B---->Fb+ F------>i 产生式规原创 2013-11-29 13:40:35 · 2854 阅读 · 2 评论 -
语法分析之自底向上分析
自底向上分析法不存在要进行消除左递归和左公共因子。一般编译器中大多使用这种语法分析。 首先,要解决的第一个问题是,自底向上递归的顺序。 1:每次从最左短语开始归约。 最左短语称为句柄,也就是包含终结符的语法树的最小子树。 2:将文法按照顺序编号。 3:利用增广文法,构造分析表。 4:按照分析表,原创 2013-12-28 18:02:24 · 6167 阅读 · 0 评论 -
属性文法与中间代码生成
java虚拟机的运行环境包括java栈,java堆,java方法区,本地方法区,程序计数器。 堆用来存放java的生成对象,方法区用来存放对象的方法,本地方法区用来存放本地方法,并且本地方法脱离Java虚拟机的调度。 在进行语法分析的同时,进行语义的分析以及属性的添加。一个产生式对应相应的语义动作,生成三地址代码或者四元式。语句翻译包括:赋值语句翻译,基本控制语原创 2013-12-29 10:32:21 · 1529 阅读 · 0 评论 -
目标代码生成与代码优化
目标代码的生成与机器的硬件环境有关,所以有些语言不能跨平台的原因就在于编译时需要了解机器的寄存器等资源,不同的机器寄存器不同,导致代码需要二次编译。 java语言由于是半编译半解释的语言,之所以能跨平台是因为在编译的阶段只生成java虚拟机能识别的中间代码,而不是目标代码,再由Java虚拟机来解释成机器码。 目标代码的生成需要获取寄存器的个数和原创 2013-12-29 10:49:12 · 4081 阅读 · 0 评论