编译原理
mengsz1
我爱学习
展开
-
编译原理(第四章)——首符号集和后继符号集的求法
一、首符号集的求法注:(1)ay是由x经过0到多步推出来的 且a是终结符号,若x是终结符号,First( x ) = { x };举例:二、后继符号集的求法(1)定义1.例如:再求FOLLOW( T )的时候,在产生式右边寻找含有T的产生式,并且把它的右边的终结符号写入集合中。例题:注解:对于文法开始符号,#都要加进去。三、构造首符号集构造符号的FIRST集步骤:构造文...原创 2018-10-11 09:28:12 · 7137 阅读 · 0 评论 -
第三章——正规式与有限自动机(NFA M与正规式R的相互转化)
一. NFA M ——> 正规式R步骤:(1)用x , y代表开始和结束状态加入原来状态转换图(2)消除x , y之间的状态直至只剩x , y为止,没消除一个状态,重新连接两个状态的弧用正规式表示。消除规则:例题:...原创 2018-10-08 16:41:25 · 8789 阅读 · 2 评论 -
第三章——词法分析器的自动产生(包含LEX程序简介)
一、词法分析器的自动产生注意:词法分析程序由状态转换图构造(1)状态转换图的生成由文法转换成状态图的过程:1、文法左边的非终结符作为终止状态,其它非终结符作为中间状态,终结符作为弧上的符号。2、再看由什么能推出中间状态。就比如下面的例子,由“/”可以推出<斜竖>这个状态。‘生成总的状态装换图...原创 2018-10-08 21:17:44 · 2045 阅读 · 0 评论 -
第四章——自顶向下语法分析方法
一、语法分析器的功能语法分析器的任务:判断所给单词串是不是给定文法的正确句子。1、确定的自顶向下分析思想:从文法的识别符号出发、根据当前的输入符号、唯一的确定一个产生式、用产生式右部的符号串代替相应的非终结符往下推。能构造成功则是句子,否则不是。2、什么样的文法可以用自顶向下的分析方式① ( 1 )每个产生式的右部都由终结符开始(2)产生式的右部以不同的终结符号开始的(3)无空产生...原创 2018-10-09 09:07:14 · 1566 阅读 · 0 评论 -
词法分析器 C++实现
#include<bits/stdc++.h>#include<cstring>using namespace std;//保留字表 static char reserve[32][20] = { "auto", "break", "case", "char", "const", "continue", &qu原创 2018-10-22 11:55:18 · 750 阅读 · 1 评论 -
编译原理第五章——消除左递归
一。消除直接左递归为什么要这样消除左递归?其实这个文法识别的串为以B打头,0~*个a结尾的串,所以用B开头,P’表示多个a。理解一下这个例题,消除的时候用的上面的思想。一般性的规则二。消除间接左递归例子:排序是任意的。在消除完之后开始符号S推不出Q,R,所以是无用的。...原创 2018-11-06 09:01:56 · 7830 阅读 · 1 评论 -
语义分析和中间代码的产生
紧接在词法分析和语法分析之后,编译程序要做的工作是进行静态语义检查和翻译。(图7.1)静态语义检查1、类型检查。2、控制流检查。3、一致性检查。4、相关名字检查。翻译(中间语言)的好处:(1)便于进行与机器无关的代码优化;(2)使编译程序改变目标机更容易;(3)使编译程序的结构在逻辑上更为简单明确,以中间语言为界面,编译前端和后端的接口更清晰。主要掌握几种常见的中间语言表达形式...原创 2018-11-07 17:46:21 · 751 阅读 · 0 评论 -
微机原理第六章—存储器的扩展
1.位扩展——存储芯片的字数满足要求,但是位数不满足要求的情况位扩展的连接方式是将地址总线,片选CS,读/写控制线相应并联,而数据线要分别引出。2.字扩展——位满足要求而字数不够。下图为结果:当A15A14 = 0 时,使用第一个芯片的16K.= 1 时,使用第二个芯片的16K.总计64K;3.字位同时扩展1.上下芯片实现位扩展,左右芯片实现字扩展。...原创 2018-11-27 17:22:09 · 2723 阅读 · 0 评论