
编译原理
文章平均质量分 80
tm_wb
好
展开
-
词法分析
词法分析--------编译原理学习笔记(1)一: 词法分析的一般过程是:1. 语言的词法描述.2. 根据描述产生正则表达式.3. 根据正则表达式产生NFA->DFA4. 根据DFA来构造程序. 参考> >(龙书)例子是根据>中提供的TINY语言 二: 词法描述 TINY原创 2007-11-12 12:45:00 · 6727 阅读 · 0 评论 -
语法分析(1)
语法分析(1)--------自顶向下的语法分析(1) 语法分析是以词法分析产生的记号流作为输入, 产生分析树或语法树. 自顶向下的语法分析分为递归下降语法分析和预测语法分析. 预测语法分析又分为递归预测语法分析, 非递归预测语法分析. 递归下降的语法分析有很多确定, 而且使用的不多所以没有仔细学习, 主要学习了预测语法分析.原创 2007-11-13 12:02:00 · 2074 阅读 · 0 评论 -
语法分析(2)
语法分析(2)--------自顶向下的语法分析(2) 语法分析程序除了采用递归的预测分析方法外, 还有非递归的预测分析方法, 也就是LL(1)分析. 与递归的预测分析方法类似, LL(1)分析也是使用first集合follow集合以及select集合为制导构建程序, 但是它显式的维护一个分析栈, 通过栈来进行语法分析.一. LL(1)模型及过程.如图:原创 2007-11-22 12:48:00 · 1025 阅读 · 0 评论 -
语法分析(3)
语法分析(3)--------自底向上的语法分析自底向上的语法分析又叫移动归约分析, 其中一种最容易实现的算法叫做算符优先算符, 但是这种算法有很多缺陷. 更一般的移动归约分析法叫LR分析法, 其中包括SLR, LR, LALR(参考龙书). 一 LR分析模型. 上面几种LR分析程序都是使用一种模型, 它是由输入, 输出, 栈, 驱动程序和包原创 2007-11-30 11:49:00 · 1229 阅读 · 1 评论 -
语义分析
语义分析 进行语法分析后正确的源代码只能证明是语法方面正确的, 但是语言还有许多语义上的要求和规矩. 语义分析就是基于整个源代码的上下文的分析. >中对TINY语言的语义规定很简单. 因为TINY中没有声明, 也没有作用域的规定, 表达式的类型只有两种整型和布尔型, 所以整个TINY的语义分析主要集中在对表达式的类型检查上. 而这个检查也是十分简单的, 只有四条规则:原创 2007-12-20 11:53:00 · 3240 阅读 · 0 评论 -
符号表与中间代码
符号表与中间代码 符号表是记录编译过程中的源代码中的符号的数据结构, 符号表几乎在编译的每一个阶段都能用到, 符号表中可以保存很多信息, 如行数,类型,作用域等, 但是>中TINY的符号表很简单, 只是用来保存符号出现的函数, 在这里还要进行扩展, 使TINY语言带有作用域. 中间代码也是编译过程中的一个中间形式, 它是语法树的线性表示. 使用中间代码能够使代原创 2007-12-30 12:48:00 · 2107 阅读 · 1 评论 -
语法分析 (4)
语法分析4 主要介绍构造LR(1)和LALR(1)分析表的算法: LR(1)语法分析表的主要核心是求出各个状态的克林闭包,具体看龙书算法4.9简单表达如下:有产生式:A -> αBβB -> η当输入字符为a时表示为:[A -> α.Bβ, a]目的是要求出它的闭包,这个运算的最关键的步骤在于求出可接受的下一个输入字符.算法简单的描述为:[A原创 2008-10-29 12:31:00 · 926 阅读 · 1 评论