语义分析及生成中间代码程序
代码生成程序
代码优化程序
语法分析程序
词法分析程序
错
误
处
理
符
号
表
管
理
第3章词法分析
本章介绍编译第一个阶段词法分析的设计原理和设计方法,要求明确此阶段的任务。
理解通常的单词分类和构词规则。
会使用单词的描述和识别机制。
要求掌握正规文法、状态图、DFA、NFA、正规式和正规集的基本概念和它们之间的关系。
掌握词法分析程序的手工实现方法。
掌握词法分析程序的自动构造原理。
教学目标
词法分析的任务
词法分析程序的输出形式
正规式与有穷自动机
词法分析程序的设计与实现
词法分析程序的自动生成工具LEX
教学内容
(1)分析和识别单词及属性,
包括识别语言的关键字、标识符、常数、运算符等;
(2)跳过各种分隔符,如空格,回车,制表符等;
(3)删除注释;
(4)进行词法检查,报告所发现的错误;
(5)建立符号表。
词法分析的任务
main( )/*ADD*/
{int x=10,y=20,sum;
sum=x+y;
}
main、(、)、{、int、x、=、10、,、y、=、20、,、sum、;、sum、=、x、+、y、;、}
词法分析
实现方案:基本上有两种
.(字符串)
词法分析
.(符号串)
语法分析
第一遍
第二遍
单词串
优点: 结构清晰、各遍功能单一
缺点:效率低
.(字符串)
词法分
析程序
语法分
析程序
取单词
单词
单词的种类
(1)关键字:if、for、while
(2)标识符:
(3) 常数:
(4) 运算符:+、-、*
(5)分界符:, 、;、(、)
词法分析程序的输出形式
词法分析程序的输出形式-----二元式
单词类别单词的属性值
单词类别可以用整数编码表示:一类一种或一字一种
单词类别
关键字
标识符
常数
运算符
分界符
编码
1
2
3
4
5
int x=10,y=20,sum;词法分析的结果
单词类别
单词的属性值
1
int
2
指向x的符号表入口指针
4
=
3
10
5
,
2
指向y的符号表入口指针
4
=
3
20
5
,
2
指向sum的符号表入口指针
5
;
int x=10,y=20,sum;词法分析的结果
【】使用正规式来表示下列文法中的相应单词符号。
<标识符>→字母| <标识符>字母| <标识符>数字
<无符号整数>→数字| <无符号整数>数字
<单界符>→+ | * |< |, | ;
<双界符>→<=
标识符: l(l|d) *
无符号整数: dd*
单界符: + | * |< |, | ;
双界符: <=
S→l | Sd| Sl
左线性文法
编译原理PPT教学课件-第3章 词法分析 来自淘豆网m.daumloan.com转载请标明出处.