三、分离词法分析器理由
简化设计
编译器的效率会改进
编译器的可移植性加强
便于编译器前端的模块划分
四、验证文法产生的语言
G : S ( (S ) S | ( L(G) = 配对的括号串的集合
按推导步数进行归纳:推出的是配对括号串
归纳基础: S ( (
归纳假设:少于n 步的推导都产生配对的括号串
归纳步骤:n 步的最左推导如下:
S ( (S )S (* (x) S (* (x) y
五、自上而下分析
1、如何避免问题
如果要用自上而下的方法进行分析,就必须避免例子中出现的问题。
每一步推导,不能因为左递归的存在而使得推导过程陷入死循环。
每一步推导,可以选择的产生式必须是唯一的。
2、消除左递归
文法中存在左递归时,为了采用自上而下的分析方法,必须采取方法消除左递归。
3、基本思想
寻找输入符号串的最左推导。
试图根据当前输入单词确定使用哪个产生式。
4、基本过程
从S出发,构造输入符号串(Token)的最左推导。
从根开始,按与最左推导相对应的顺序,构造输入符号串(Token)的语法分析树。本章练习题:
(一)选择题
1、形式语言中,不包含( )
A. 上下文有关文法 B.上下文无关文法 C. 短语文法 D.句子文法
答案:D
2、设有语言L(G)={有相同个数(n个,n ( 1)的a和b组成的句子},满足对语言L(G)描述的正确文法是( )。
A. S( abS | a
B. S( aSbS | bSaS | b
C. S( aSb | ab | (
D. S( SS | aSb | bSa | ab | ba
答案:C问答题1、对于文法:
S→aSbS|bSaS|ε
给出句子abab的一个推导。答案:
最左推导S?aSbS?abS?abaSbS?ababS?abab
S?aSbS?abSaSbS?abaSbS?ababS?abab
最右推导S?aSbS?aSb?abSaSb?abSab?abab
S?aSbS?aSbaSbS?aSbaSb?aSbab?abab拓展资料优秀程序员的七大特征,你具备几条
世界上的很多事情都是有规律的,就像 《高效能人士的七个习惯》,优秀的程序员也有七个主要特征。这些特征有些是先天具备的,也就是天赋,但有些是在日常的编程工作中学习、进步、积累、总结获得的。每个程序员都想知道自己是不是一个优秀的程序员,那么,就参考一下下面这 7 条,看看自己是否达到了做一个优秀程序员的标准。
1、喜欢帮助他人,照顾比自己差的程序员