32 正规文法和状态转换图
- 格式:ppt
- 大小:190.00 KB
- 文档页数:13
《编译原理》考试试题及答案(附录)一、判断题:1.一个上下文无关文法的开始符,可以是终结符或非终结符。
( X )2.一个句型的直接短语是唯一的。
( X )3.已经证明文法的二义性是可判定的。
( X )4.每个基本块可用一个DAG表示。
(√)5.每个过程的活动记录的体积在编译时可静态确定。
(√)6.2型文法一定是3型文法。
( x )7.一个句型一定句子。
( X )8.算符优先分析法每次都是对句柄进行归约。
(应是最左素短语) ( X )9.采用三元式实现三地址代码时,不利于对中间代码进行优化。
(√)10.编译过程中,语法分析器的任务是分析单词是怎样构成的。
( x )11.一个优先表一定存在相应的优先函数。
( x )12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
( )13.递归下降分析法是一种自下而上分析法。
( )14.并不是每个文法都能改写成LL(1)文法。
( )15.每个基本块只有一个入口和一个出口。
( )16.一个LL(1)文法一定是无二义的。
( )17.逆波兰法表示的表达试亦称前缀式。
( )18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
( )19.正规文法产生的语言都可以用上下文无关文法来描述。
( )20.一个优先表一定存在相应的优先函数。
( )21.3型文法一定是2型文法。
( )22.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。
( )二、填空题:1.( 最右推导 )称为规范推导。
2.编译过程可分为(词法分析),(语法分析),(语义分析和中间代码生成),(代码优化)和(目标代码生成)五个阶段。
3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是()。
4.从功能上说,程序语言的语句大体可分为()语句和()语句两大类。
5.语法分析器的输入是(),其输出是()。
6.扫描器的任务是从()中识别出一个个()。
一填空题1.编译程序首先要识别出源程序中每个,然后再分析每个并翻译其意义。
单词,句子2.编译器常用的语法分析方法有和两种。
自底向上,自顶向下2.通常把编译过程分为分析与综合两大阶段。
词法、语法和语义分析是对源程序的分析,中间代码生成、代码优化与目标代码的生成则是对源程序的综合。
前端,后端4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即方案和分配方案。
静态存储分配,动态存储5.对编译程序而言,输入数据是,输出结果是。
源程序,目标程序6.文法G包括四个组成部分:一组终结符号,一组非终结符号,一组,以及一个开始符号。
产生式7.文法按产生式的形式分为四种类型,它们是:0型文法,又称短语文法;1型文法,又称上下文有关文法;2型文法,又称;3型文法,又称。
上下文无关文法,正规文法8.最右推导称为,由规范推导产生的句型称为规范句型。
规范推导9.设G是一个文法,S是它的开始符号,如果S=>*α,则称α是一个。
仅由终结符号组成的句型是一个。
句型,句子10 对于一个文法G而言,如果L(G)中存在某个句子对应两棵不同,那么该文法就称为是二义的。
语法树11.通常程序设计语言的单词符号分为五种:基本字、、常数、算符、界限符。
标识符12.在自底向上分析法中,LR分析法把“可归约串”定义为。
句柄13.编译中常用的中间代码形式有逆波兰式、三元式、和四元式等。
树代码14.对中间代码优化按涉及的范围分为,和全局优化。
局部优化,循环优化15.局部优化主要包括、利用公共子表达式和删除无用赋值等内容。
合并已知量16.为了构造不带回溯的递归下降分析程序,我们通常要消除和提取左递归,左公共因子17.计算机执行用高级语言编写的程序主要有两种途径:和。
解释执行,编译执行18.扫描器是词法分析,它接收输入的,对源程序进行词法分析并识别出一个个,供语法分析器使用。
源程序,单词符号19.自下而上分析法采用,,和等四种操作。
词法分析程序的设计与实现方法1:采用C作为实现语言,手工编制一.文法及状态转换图1.语言说明:C语言有以下记号及单词:(1)标识符:以字母开头的、后跟字母或数字组成的符号串。
(2)关键字:标识符集合的子集,该语言定义的关键字有32个,即auto,break,case,char,const,continue,default,do,double,else,enum, extern,float,for,goto,if,int,long,register,return,short,signed,static, sizeof,struct,switch,typedef ,union,unsigned ,void, volatile和while。
(3)无符号数:即常数。
(4)关系运算符:<,<=,==,>,>=,!=。
(5)逻辑运算符:&&、||、!。
(6)赋值号:=。
(7)标点符号:+、++、-、--、*、:、;、(、)、?、/、%、#、&、|、“”、,、.、{}、[]、_、^等(8)注释标记:以“/*”开始,以“*/”结束。
(9)单词符号间的分隔符:空格。
2.记号的正规文法:仅给出各种单词符号的文法产生式(1)标识符的文法id->letter ridrid->ε|letter rid|digit rid(2)无符号整数的文法digits->digit remainderremainder->ε|digit remainder(3)无符号数的文法num->digit num1num1->digit num1|. num2|E num4|εnum2->digit num3num3->digit num3|E num4|εnum4->+digits|-digits|digit num5digits->digit num5num5->digit num5|ε(4)关系运算符的文法relop-> <|<=|==|>|>=|!=(5)赋值号的文法assign_op->=(6)标点符号的文法special_symbol->+|-|*|%|#|^|(|)|{|}|[|]|:|;|”|?|/|,|.& (7)逻辑运算符的文法logic->&&| || | !(8)注释头符号的文法note->/starstar->*3.状态转换图其中,状态0是初始状态,若此时读入的符号是字母,则转换到状态1,进入标识符识别过程;如果读入的是数字,则转换到状态2,进入无符号数识别过程;……;若读入的符号是/,转换到状态11,再读入下一个符号,如果读入的符号是*,则转换到状态12,进入注释处理状态;如果在状态0读入的符号不是语言所定义的单词符号的开始字符,则转换到状态13,进入错误处理状态。
第三章名词解释1.最小化(minimize)指DFA M状态数的最小化,是指构造一个等价的DFA M',而后者有最小的状态。
2.标示符(IDentifier)是指用来标识某个实体的一个符号。
在不同的应用环境下有不同的含义。
3.正规表达式(regular expression)是说明单词的模式(pattern)的一种重要的表示法(记号),是定义正规集的工具。
4.正规式(Normal form)正规式也称正则表达式,也是表示正规集的数学工具。
5.正规集(Normal set)如果把每类单词视作一种语言,那么每一类单词的全体单词组成了相应的正规集。
6. 有限状态自动机(finite state automaton)有限状态自动机拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串决定执行哪个状态的迁移。
有限状态自动机可以表示为一个有向图。
有限状态自动机是自动机理论的研究对象。
7.词法分析器(Lexical analyzer)词法分析是指将我们编写的文本代码流解析为一个一个的记号,分析得到的记号以供后续语法分析使用。
8.确定的有限自动机(DFA: Deterministic Finite Automata)自动机的每个状态都有对字母表中所有符号的转移。
9.五元式(Five element type)由五个要素组成的式子K:由有限个状态组成的集合∑:由有限个输入字符组成的字母表f:从K到∑的单值映射,q),(,指明当前态为p,输入字符a,下一个状态为qf=pas:一个属于K的特定状态,称之为初始状态Z:若干个属于K的特定状态,它们组成的集合称之为终态集,记为Z。
10.非确定的有限自动机(NFA:Non deterministic finite automaton)自动机的状态对字母表中的每个符号可以有也可以没有转移,对一个符号甚至可以有多个转移。
自动机接受一个字,如果存在至少一个从q0 到 F 中标记(label)著这个输入字的一个状态的路径。