打印词法分析和语法分析.ppt
《打印词法分析和语法分析.ppt》由会员分享,可在线阅读,更多相关《打印词法分析和语法分析.ppt(224页珍藏版)》请在三一办公上搜索。
1、2023/10/7,北京化工大学信息科学与技术学院计算机系,1,Chapter 3 Scanning(lexical analysis)词法分析,3.1 词法分析器的作用3.2 记号的描述3.3 记号的识别3.4 从正规表达式到DFA3.5 TINY扫描程序的实现3.6 LEX,2023/10/7,北京化工大学信息科学与技术学院计算机系,2,3.1 词法分析器的作用,词法分析,源程序,目标程序,语法分析,语义分析,中间代码优化,中间代码生成,The phase of a compiler 编译程序的结构,目标代码生成,2023/10/7,北京化工大学信息科学与技术学院计算机系,3,3.1 词法
2、分析器的作用,读入输入字符,产生记号序列,供语法分析使用3.1.1 词法分析中的问题3.1.2 记号3.1.3 记号的属性,2023/10/7,北京化工大学信息科学与技术学院计算机系,4,3.1 词法分析器的作用,3.1.1 词法分析中的问题,把编译过程的分析阶段划分为词法分析和语法分析的原因如下:1.简化编译器的设计可能是最重要的考虑。2.提高编译器的效率。3.增强编译器的可移植性。,2023/10/7,北京化工大学信息科学与技术学院计算机系,5,3.1 词法分析器的作用,3.1.2 记号:扫描程序生成的逻辑单元,以字母开头:保留字:IF,THEN,ELSE,END,REPEAT,UNTIL
3、,READ,WRITE标识符:字母/数字串以数字开头:整常数:数字开头的数字串实常数:整数.整数符号词:+,-,*,/,(,),:,:=,;,.控制词:enter,Reserved Words保留字,2023/10/7,北京化工大学信息科学与技术学院计算机系,6,typedef enum/*book-keeping tokens*/ENDFILE,ERROR,/*reserved words*/IF,THEN,ELSE,END,REPEAT,UNTIL,READ,WRITE,/*multicharacter tokens*/ID,NUM,/*special symbols*/ASSIGN,EQ
4、,LT,PLUS,MINUS,TIMES,OVER,LPAREN,RPAREN,SEMI TokenType;,Tokens(记号)的枚举表示,每一个记号的表示:Typedef struct TokenType tokenval;char*stringval;int numval;TokenRecord,2023/10/7,北京化工大学信息科学与技术学院计算机系,7,3.1.3记号的属性任何与记号相关的值E=M*C,3.1 词法分析器的作用,2023/10/7,北京化工大学信息科学与技术学院计算机系,8,3.2 记号的描述,be set of the ASCII characters or s
5、ome subset of it,3.2.1 串和语言3.2.2 语言上的运算,2023/10/7,北京化工大学信息科学与技术学院计算机系,9,The single character from the alphabet,expression a matches the character a.L(a)=a empty string():the string contains no characters.L()=or:matches no string at all,whose language is the empty set.L()=,3.2.3 Definition of Regular
6、 Expression,1.Basic Regular Expression 基本正则表达式,2023/10/7,北京化工大学信息科学与技术学院计算机系,10,|Choice among alternatives 或(选择),2.Regular Expression Operation 正则表达式的运算,L(r|s)=L(r)L(s)L(a|b|c|d)=a,b,c,d,例:若S=a|bb,(a|bb)*=?L(a|bb)*)=?,2023/10/7,北京化工大学信息科学与技术学院计算机系,11,Names for regular expression 正则表达式的名字,Precedence
7、of Operation and use of parentheses 运算符的优先级和括号的使用,Precedence of Operation运算符的优先级,Precedence:*the first the second|the third,(0|1|2|3|9)(0|1|2|3|9)*,例:a|bc*a|(b(c*)ab|c*d(ab)|(c*)d),(先*,其次,最后|),digit=0|1|2|3|4|9digit digit*,2023/10/7,北京化工大学信息科学与技术学院计算机系,12,3.Example,1)=a,b,c the set of all strings ov
8、er this alphabet that contain exactly one b.(上只包括一个b的所有串的集合),(a|c)*b(a|c)*,2)=a,b,c the set of all strings that contain at most one b.(上最多包括一个b的所有串的集合),(a|c)*|(a|c)*b(a|c)*(a|c)*(b|)(a|c)*,3)=a,b the set of strings S consists of a single b surrounded by the same number of as.(上由一个b及在其前后有相同数目的a组成的串S的
9、集合),S=b,aba,aabaa,aaabaaa,“regular expression cant count”,2023/10/7,北京化工大学信息科学与技术学院计算机系,13,3.Example,4)=a,b,cthe strings contain no two consecutive bs(上任意两个b都不相连的所有串的集合),(not b|b not b)*(b|)not b=a|c(a|c|ba|bc)*(b|)(b|)(a|c|ab|cb)*,5)=a,b,c,Regular Expression:(b|c)*a(b|c)*a)*(b|c)*,determine a conci
10、se English description of the language(正则表达式描述语言),the strings contain an even number of as偶数个a的串的语言,(b|c)*a(b|c)*a)*(b|c)*(not a*a not a*a)*not a*,2023/10/7,北京化工大学信息科学与技术学院计算机系,14,3.2.4 Extensions to Regular Expressions,r?the strings matched by r are optional,1.one or more repetitions 一个或多个重复(正闭包),r
11、+,2.any character 任意字符,period“”,3.a range of characters 字符范围,0-9,a-zA-Z,4.any character not in a given set 不在给定集合中的任意字符,(a|b|c)a character that is not either a or b or c abc in Lex,5.optional subexpressions 可选的表达式,2023/10/7,北京化工大学信息科学与技术学院计算机系,15,Regular Expressions for Programming Language Tokens,1
12、.Numbers 数,nat=0-9+signedNat=(+|-)?natnumber=signedNat(“”nat)?(E signedNat)?,2.Reserved Words and Identifiers 保留字和标识符,reserved=if|while|do|letter=a-z A-Zdigit=0-9identifier=letter(letter|digit)*,3.Comments 注释,/*this is a C comment*/this is a pascal comment,4.Ambiguity,White Space,and Lookahead 二义性、空
13、格、回溯,2023/10/7,北京化工大学信息科学与技术学院计算机系,16,3.2.5 正则文法,2023/10/7,北京化工大学信息科学与技术学院计算机系,17,3.3 记号的识别,状态转换图有穷自动机,2023/10/7,北京化工大学信息科学与技术学院计算机系,18,3.3.1 状态转换图,状态转换图的表示方法,结点代表状态(state),用圆圈表示。状态之间用箭弧(transition)连结,箭弧上的标记(字符)代表在射出结点(即箭弧始结点)状态下可能出现的输入字符或字符类。一个有穷自动机只包含有限个状态(即有限个结点),其中一个为初态(start state),至少一个为终态(接受状态
14、accepting state)(双圈表示)。,2023/10/7,北京化工大学信息科学与技术学院计算机系,19,3.3.2 Finite Automata有穷自动机,Finite automata(finite-state machines)are a mathematical way of describing particular kinds of algorithms.,Definite of Deterministic finite automation(DFA)确定有穷自动机Nondeterministic finite automation(NFA)非确定有穷自动机,2023/1
15、0/7,北京化工大学信息科学与技术学院计算机系,20,3.3.2.1 Definite of Deterministic finite automation(DFA)确定有穷自动机,由M接受的语言L(M)L(M)|ci,s1=T(s0,c1),s2=T(s1,c2),sn=T(sn-1,cn),sn A.,DFA(deterministic finite automation)M:,“确定”即状态转移函数是单值函数,an alphabet 输入字母表(终极符集合)a set of states S 有穷状态集(非终极符集合)a transition function T:S S(状态转换函数)
16、a start state s0S 唯一的初始状态 a set of accepting states A S 终止状态集,2023/10/7,北京化工大学信息科学与技术学院计算机系,21,Example,1)exactly one b.(上只包括一个b的所有串的集合),2)most one b.(上最多包括一个b的所有串的集合),(not b)*b(not b)*,(not b)*(b|)(not b)*,2023/10/7,北京化工大学信息科学与技术学院计算机系,22,Example,3)digit=0-9nat=digit+signedNat=(+|-)?NatNumber=singed
17、Nat(“.”nat)?(E signedNat)?,2023/10/7,北京化工大学信息科学与技术学院计算机系,23,例:有DFA M=(0,1,2,3,a,b,T,0,3)其中T为:T(0,a)=1 T(0,b)=2 T(1,a)=3 T(1,b)=2 T(2,a)=1 T(2,b)=3 T(3,a)=3 T(3,b)=3,它所对应的状态表如图:,一个DFA可用一个矩阵表示,该矩阵的行表示状态,列表示输入字符,矩阵元素表示T(s,a)的值,这个矩阵称状态表(状态转移矩阵)。,状态,输入字符,后继状态,状态表,2023/10/7,北京化工大学信息科学与技术学院计算机系,24,3.3.2.2
18、Nondeterministic finite automation(NFA)非确定有穷自动机,由M接受的语言L(M)L(M)|ciU,s1=T(s0,c1),s2=T(s1,c2),sn=T(sn-1,cn),sn A.,NFA M:,“非确定”即状态转移函数是多值函数,an alphabet 输入字母表(终极符集合)a set of states S 有穷状态集(非终极符集合)a transition function T:S x(U)(S)(状态转换函数)a set of start states S0 S 初始状态集 a set of accepting states A S 终止状态
19、集,2023/10/7,北京化工大学信息科学与技术学院计算机系,25,2023/10/7,北京化工大学信息科学与技术学院计算机系,26,DFA,NFA,2023/10/7,北京化工大学信息科学与技术学院计算机系,27,3.3.2.3 Implementation of finite automata in Code 用代码实现有穷自动机,识别标识符的DFA(方法1):,starting in state 1 if the next character is a letter then advance the input;now in state 2 while the next charact
20、er is a letter or a digit do advance the input;stay in state 2 end while;go to state 3 without advancing the input accept;else error or other cases end if;,2023/10/7,北京化工大学信息科学与技术学院计算机系,28,识别标识符的DFA(方法2):,state:=1;ch:=next input character;while not Acceptstote and not error(state)do newstate:=Tstate
21、,ch;if Advancestate,ch then ch:=next input character;state:=newstate;end while;if Acceptstate then accept;,2023/10/7,北京化工大学信息科学与技术学院计算机系,29,3.4 From Regular Expression To DFAs从正则表达式到DFA,1.(a)对于正则式,所构造NFA:,x,y,(b)对于正则式,所构造NFA:,x,y,(c)对于正则式a,a,则 NFA:,x,y,a,the algorithm:translating a regular expressio
22、n into a DFA,3.5.1 从正则表达式到NFA,2023/10/7,北京化工大学信息科学与技术学院计算机系,30,2.若s,t为上的正则式,相应的NFA分别为N(s)和N(t);,(a)对于正则式R=s|t,NFA(R),(b)对正则式R=st,NFA(R),(c)对于正则式R=s*,NFA(R),(d)对R=(s),与R=S的NFA一样.,例:为R=(a|b)*abb构造NFA,使得L(N)=L(R),分解R的方法有很多种!,R=(a|b)*abb,2023/10/7,北京化工大学信息科学与技术学院计算机系,33,从正则表达式到NFA 方法二:,AB,i,A,B,i,k,A|B,
23、i,A*,i,A,B,i,i,k,A,NFA替换规则(NFA允许边出现),2023/10/7,北京化工大学信息科学与技术学院计算机系,34,例:令=a,b,上所有含有两个相继的a或两个相继的b的字的集合用NFA表示如下:,(a|b)*(aa|bb)(a|b)*,NFA M=(0,1,2,3,4,5,6,7,a,b,T,0,7)其中T如上(不可省略),初态,终态,(a|b)*(aa|bb)(a|b)*,2023/10/7,北京化工大学信息科学与技术学院计算机系,35,非确定的有穷自动机与确定的有穷自动机从功能上来说是等价的,NFA M,DFA M,构造成一个,使得 L(M)=L(M),3.4.2
24、 从NFA到DFA,2023/10/7,北京化工大学信息科学与技术学院计算机系,36,()合并(如果有S1S2,则把S2状态合并到S1状态)符号合并,NFA允许边出现,NFA到DFA的区别:,转换思想:,2023/10/7,北京化工大学信息科学与技术学院计算机系,37,例1:NFA转换成DFA(符号合并),解:根据题意,得出相应的正则式:0(0|1)*1 得状态转换图(NFA)如下:,2023/10/7,北京化工大学信息科学与技术学院计算机系,38,NFA确定为DFA过程:DFA的初态(为NFA的初始状态经过合并后的状态的并集)例:T(S,)=;DFA的其它状态(为NFA的状态经过输入符号后产
25、生的状态,再经过合并后的状态的并集)例:求T(S,0)=?T(S,0)=A;T(A,)=B;T(B,)=C;T(C,)=;DFA的终态(为所有含有NFA的终态的状态),0,1,0,C,S,A,B,1,2023/10/7,北京化工大学信息科学与技术学院计算机系,39,NFA确定化过程:(初态、其它状态、终态),0,1,0,C,S,A,B,1,2023/10/7,北京化工大学信息科学与技术学院计算机系,40,得状态转换图(DFA)如下:,在DFA中,所有含有NFA的终态的状态作为DFA的终态,DFA M=(S,A,B,C,0,1,T,S,C)其中T如上(不可省略),2023/10/7,北京化工大学
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 打印 词法 分析 语法分析
链接地址:https://www.31ppt.com/p-6226315.html