1、词法分析习题课,词法分析习题课 一、填空题,1.设文法G的产生式是 a | b | c | a | c | 0 | 1则文法的终结符号集合VT=_ ,非终结符号集合VN=_。 2.高级程序设计语言的翻译主要有两种方式: _和_。二者的根本区别在于 _。,a,b,c,0,1,编译方式 解释方式 是否生成目标代码,3.一个文法GZ若存在推导Z=Z则称GZ是 _文法,这类文法所产生的句子有_个。 4.编译过程中扫描器所完成的任务是从字符串形式的_中识别出一个个具有独立意义的最小语法单位-_。 5.高级语言程序设计的单词通常分为五类,它们是_、_、_、_、_。 6.词法分析程序的输出形式为_,每一个_
2、由_和_两部分组成。,+,递归 无穷,源程序单词,保留字 标识符 常量 运算符 界符,单词 单词 单词种别码 单词自身值,二.判断题,( )1.编译程序的输入是高级语言程序,输出是机器语言程序。 ( )2.每一个编译程序都由词法分析、语法分析、语义分析、代码优化、代码生成五部分组成。 ( )3.可以使用相同的编译程序在不同类型的计算机上对同一种高级语言的程序进行翻译。 ( )4.一个语言的文法是唯一的。 ( )5.若一个语言的句子有无穷多个,则对应的文法必定是递归的。 ( )6.正规文法不能产生语言L=anbn|n1。,( )7.上下文无关文法可以产生语言L=anbnci | i1 , n1。
3、 ( )8.一个句型对应的一棵语法树包括了该句型的所有推导。 ( )9.对每一个左线性文法G1,一定存在一个右线性文法G2,使得L(G1)=L(G2)。 ( )10.存在这样一些语言,它们能被确定的有穷自动机识别,但不能用正规式表示。 ( )11.每一个DFA都对应有唯一的一个NFA。 ( )12.每一个NFA都对应有唯一的一个最小化的DFA。,三.选择题,1.文法G所描述的语言是_的集合。a.文法G的字母表中所有符号组成的符号串。b.文法G的字母表的闭包V*中所有符号串。c.由文法的识别符号推出的所有符号串。d.由文法的识别符号推出的所有终结符号串。 2.设文法G的产生式是a | b | c
4、 | a | c | 0 | 1则下列符号串中为该文法句子的是_。a.a b.ab0 c.a0c01d.0a e.11 f.aaa,d,a , c , f,3.如果一个文法满足_,则称该文法是二义文法。a.文法的某一个句子存在两棵以上的语法树。b.文法中存在某个句子,它有两个以上的最右(或最左)推导。c.文法中存在某个句子,它有两个以上的最右(或最左)归约。d.在进行归约时,文法的某些规范句型的句柄不唯一。4.下述正规表达式中,_描述了字母表a,b上长度不为3的符号串。a. (|0|1|00|01|10|11) ( (0|1) (0|1) *)b. |0|1|00|01|10|11| (0|1
5、) (0|1) +c. |0|1 (00|01|10|11) + (0|1) *d. |0|1 (00|01|10|11) *e. 没有一个,a,b,c,d,e,5.有文法 GS=( S , A , B , a , b , P , S )其中P为: SAB | ASAa | aABb |bb 则图所示的语法树中,_正确的描述了对符号串“aaabb”的推导过程。,b,6.下列工作中,由编译程序扫描器完成的任务有_. a.组织源程序的输入 b.按词法规则分割出单词,识别出其属性 c.删除注解 d.删除空格以及无用字符 e.行计数、列计数 f.发现并定位词法错误 g.建立符号表7.假设正在为PASC
6、AL语言构造编译程序,下述单词中,_不需要超前搜索即可识别。a. end b.case c. :=,ag,c,8.下述正规表达式中_与(a*+b)*(c+d)等价。a.a*(c+d)+b(c+d) b. a*(c+d)*+b(c+d)*c. a*(c+d)+b*(c+d) d. (a+b)*c+(a+b)*de. (a*+b)*c+(a*+b)*d9.已知文法G定义为:G=( S,W,X,Y,Z , x,y,z , P , S )与该文法描述相同语言的正规表达式有_。其中P为 SWZ a.xx* | yy* | zz*WX | Y b. (xx* | yy* ) zz*Xx | xX c. x
7、x* ( yy* | zz*)Yy | yY d. (xx | yy)* zz*Zz | zZ e. xx* yy* zz*,d,e,b,10.设有穷自动机的状态图如图所示,其中,状态为开始状态,状态为终止状态。下述正规表达式中_不可被该有穷自动机接受。a.0(10)*0b.11(01)*1c.1(101)*00,c,四.解答题,1.已知语言求文法 (1).构造语言L(GS)= (n )n | n0 的文法。句子结构特征: L=,(),( ),( ),文法为: GS : S(S) | (2).构造语言L(G)= am bn | nm0 的文法。单独生成am 或bn 可以用 AAa|a BBb|
8、b要考虑句子中b的个数大于a的个数,因此文法为GS: SAb | SbAaAb | ab,(3).L=w | w0,1+ , 且w不含两个相邻的1GS : S0 | 1 | 0S | 1AA0S | 0(4).L(G)= | a , b+ , 且中含相同个数的a和bGS : SaSbS | bSaS | ab | ba | 或GS : SaSb | bSa | abS | Sab | baS | Sba |ab | ba(5).已知语言L=x | xa,b,c* , 且x中符号的排列是对称的 。例如:aabcbaa , aabbaa 。GS : SaSa | bSb | cSc | a | b
9、 | c | ,2.把下面的文法改写成无二义性文法。SSS | (S) | ( )原因: SSS 对于( ) ( ) ( )存在两棵语法树改写: SAS | (S) | ( )A(S) | ( )3.化简文法: GS: SBab | cC 化简为: SBab Bb | bS Bb | bSCDaDCb | CDa,4.构造自动机A,使得它识别字母表a,b上的符号串,但符号串不能含有两个相邻的a,也不能含有两个相邻的b。 解:正规文法为:SaB | bA | a | b | AaB | aBbA | b,5.构造自动机A,使得它识别字母表0,1上的符号串,这些符号串由任意的1、0和随后任意的11、00对组成。 解:正规表达式为 (1 | 0 )* (11 |00)*,6.构造文法GZ的自动机,该自动机是确定的吗?写出相应的语言。GZ : ZA0AA0 | Z1 | 0 解:左线性文法,其NFA为 :该自动机不确定,语言为: L(GZ)=a|a是由0和1组成的以0开头结尾的符号串,并且该符号串不含有两个连续的1 正规式为: 0(0|01)*0,S,A,Z,0,0,0,1,=,7.,五、课堂作业,构造下述正规表达式的最小化DFA:xy* | yx*y | xyx(注意:最小化DFA 为6个状态),