《编译原理》3章 词法分析与有穷自动机
S.P;第3章 词法分析;3.1 词法分析的任务
3.2 词法分析程序的输出形式
3.3 词法分析程序的设计与实现
3.4 正规式与有穷自动机
3.5 词法分析程序的自动生成工具LEX
3.6 PL/0编译程序的词法分析;(1)分析和识别单词及属性,
包括识别语言的关键字、标识符、常数、
运算符等;
(2)跳过各种分隔符,如空格,回车,制表符等;
(3)删除注释;
(4)进行词法检查,报告所发现的错误;
(5)建立符号表。;main( )/*ADD*/
{int x=10,y=20,sum;
sum=x+y;
};实现方案:基本上有两种;单词的种类
(1)关键字:if、for、while
(2)标识符:
(3) 常数:
(4) 运算符:+、-、*
(5)分界符:, 、;、(、);词法分析程序的输出形式-----二元式;3.3 词法分析程序的设计与实现;结点代表状态,用圆圈表示,为非终结符
有向弧表示状态转移
弧上的标记表示在射出弧的结点状态下可能出现的输入字符,为终结符;【例3.1】某语言的标识符可使用以下正规文法G[S]来定义:;2.由正规文法构造状态图;(2)对于左线性文法
步骤1 增加结点S为初态;
步骤2 将每个非终结符号设置为一个对应的状态;
步骤3 对于A→a,引一条从S到A的弧,弧上标记为a;而对于A→Ba,引一条从B到A的弧,弧上标记为a。
;词法规则 状态图 词法分析程序; 标识符
关键字(标识符的子集)
常数
运算符 + * = =
分界符 , ;;(1)根据词法规则写出正规文法;;合并
① 将初始状态合并为一个唯一的初态;
② 化简调整状态冲突并对冲突状态重新编号;
③ 如有必要,增加出错状态。
;;(3)将状态图转换成流程图,如图3.5;0;3.5;正规式中的运算符:
| -----或(选择) ? ----连接
* 或 { } ---重复 () ----括号;【例3.3】设Σ={a,b};【例3.3】使用正规式来表示例3.2中的相应单词符号。 ;设r,s,t均是正规式,则有以下性质:
(1)交换律: r|s= s|r
(2)结合律: r|(s|t)=(r|s)|t
(rs)t=r(st)
(3)分配律: (r|s)t=rt|st
(4)同一律: εr= rε= r
;1.正规文法?正规式;【例3.5】G[S]:
S→aA|a A→dA|d;2.正规式?正规文法;【例3.6】求正规式(a|b)(a|b|0|1)*对应的正规文法;下面是用正规式表示的变量声明:
( int | float ) id (, id )*
请改用上下文无关文法表示,也就是写一个上下文无关文法,它和该正规式等价。 ;3.4.3 有穷自动机;有穷自动机是一种数学模型,具有离散的输入与输出,系统可处于有穷状态中的任何一个
它能准确地识别正规集,即识别正规文法所定义的语言和正规式所表示的集合
引入有穷自动机这个理论,正是为词法分析程序的自动构造寻找特殊的方法和工具;;1.确定的有穷自动机(DFA)
M=(Σ, Q, f,S, Z) ;状态转移函数f可用一矩阵来表示:
输入
字符
状态 a b
0 1 2
1 3 2
2 1 3
3 3 3;一个DFA也可以用一状态转换图表示:;换言之:若存在一条初始状态到某一终止状态的路径,且这条路径上所有弧的标记符号连接成符号串α,则称α为DFA M(接受)识别。; δ(0,abaab)
=δ(1,baab)
=δ(2,aab)
=δ(1,ab)
=δ(3,b)
=3 (接受);f是一个多值函数,是从Q×Σ*到Q的子集的映射:
f:Q×Σ→Q’
其中Q’是Q的幂集,即Q中所有子集组成的集合。
;例: NFA N=({a,b,c} ,{1,2,3,4}, f,{1},{4})
符号
状态 ε a
您可能关注的文档
最近下载
- 2023年江苏省徐州市中考数学试卷.docx VIP
- 微党课认真落实三会一课制度PPT模板课件.pptx VIP
- 常见引流管的护理ppt课件.pptx
- 征兵理论考试题库及答案2025.docx VIP
- ZD中大力德 C20-800LRC驱动器说明书_V1.04.docx VIP
- 山西省英语中考试题及解答参考(2025年).docx VIP
- 05系列建筑标准设计图集05J7-1内装修-墙面、楼地面(上_共二册).pdf VIP
- 语文高考现代文阅读训练试题及答案共50篇.pdf VIP
- 区域数字基础设施碳足迹评估模型构建.pdf VIP
- 2025年特许金融分析师权益投资组合管理策略专题试卷及解析.pdf VIP
原创力文档

文档评论(0)