‘教案’课程教案-第三章-1

时间:2011-05-05 05:29:43
染雾
分享
WORD下载 PDF下载 投诉

‘教案’课程教案-第三章-1

教案:课程教案---第三章-1-教案作者:编译原理

章节名称第三章高级语言及其语法描述

3.1对于词法分析器的要求3.2词法分析器的设计

3.3.1正规式与正规集3.3.2确定有限自动机

课程类型理论课√讨论课□习题课□实验课□上机课□技能课□其他□

授课时间第4周周二3、4节教学进度

学生考勤应到:实到:请假:旷课:

教学方法多媒体+讲授

目的要求:

了解词法分析器的功能和输出形式,熟练掌握词法分析器设计的原理和方法,能够以转换图为工具

使用某种语言的编写并调试一个扫描器。

重点难点:

重点:词法分析器的设计;难点:状态转换图的实现

课后作业:

作业批改记录:

教学后记:

教学过程:

词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号。

词法分析器(Lexical Analyzer)又称扫描器(Scanner):执行词法分析的程序

3.1对于词法分析器的要求

3.1.1词法分析器的功能和输出形式

功能:输入源程序、输出单词符号

单词符号的种类或者输出形式:

基本字:如begin,repeat,

标识符--表示各种名字:如变量名、数组名和过程名

常数:各种类型的常数

运算符:+,-,*,/,

界符:逗号、分号、括号和空白

输出的单词符号的表示形式:

(单词种别,单词自身的值)

单词种别通常用整数编码表示。若一个种别只有一个单词符号,则种别编码就代表该单词符号。假定基本字、运算符和界符都是一符一种。

若一个种别有多个单词符号,则对于每个单词符号,给出种别编码和自身的值。标识符单列一种;标识符自身的值表示成按机器字节划分的内部码。

常数按类型分种;常数的值则表示成标准的二进制形式。

3.1.2词法分析器作为一个独立子程序

词法分析是作为一个独立的阶段,是否应当将其处理为一遍呢?作为独立阶段的优点:结构简洁、清晰和条理化,有利于集中考虑词法分析一些枝节问题。

不作为一遍:将其处理为一个子程序。

3.2词法分析器的设计

3.2.1输入、预处理

输入串放在输入缓冲区中。

预处理子程序:剔除无用的空白、跳格、回车和换行等编辑性字符;区分标号区、捻接续行和给出句末符等

扫描缓冲区

3.2.2单词符号的识别:超前搜索

基本字识别:需要超前搜索才能确定哪些是基本字

标识符识别:字母开头的`字母数字串,后跟界符或算符

常数识别:识别出算术常数并将其转变为二进制内码表示。有些也要超前搜索。

算符和界符的识别:把多个字符复合而成的算符和界符拼合成一个单词符号。

3.2.3状态转换图

概念:状态转换图是一张有限方向图。结点代表状态,用圆圈表示;状态之间用箭弧连结,箭弧上的标记(字符)代表射出结状态下可能出现的输入字符或字符类;一张转换图只包含有限个状态,其中有一个为初态,实际上至少要有一个终态。

一个状态转换图可用于识别(或接受)一定的字符串。

几点重要限制--不必使用超前搜索:

所有基本字都是保留字;用户不能用它们作自己的标识符

基本字作为特殊的标识符来处理;不用特殊的状态图来识别,只要查保留字表。

如果基本字、标识符和常数(或标号)之间没有确定的运算符或界符作间隔,则必须使用一个空白符作间隔。

3.2.4状态转换图的实现

做法:

1)对不含回路的分叉结,可用一个CASE语句或一组IF-THEN-ELSE语句实现

2)对含回路的状态结,可对应一段由WHILE结构和IF语句构成的程序.

3)终态结表示识别出某种单词符号,因此,对应语句为

RETURN(C,VAL)

其中,C为单词种别,VAL为单词自身值.

3.2词法分析器的设计

3.2.1输入、预处理

输入串放在输入缓冲区中。

预处理子程序:剔除无用的空白、跳格、回车和换行等编辑性字符;区分标号区、捻接续行和给出句末符等

扫描缓冲区

3.2.2单词符号的识别:超前搜索

基本字识别:需要超前搜索才能确定哪些是基本字

标识符识别:字母开头的字母数字串,后跟界符或算符

常数识别:识别出算术常数并将其转变为二进制内码表示。有些也要超前搜索。

算符和界符的识别:把多个字符复合而成的算符和界符拼合成一个单词符号。

3.2.3状态转换图

概念:状态转换图是一张有限方向图。结点代表状态,用圆圈表示;状态之间用箭弧连结,箭弧上的标记(字符)代表射出结状态下可能出现的输入字符或字符类;一张转换图只包含有限个状态,其中有一个为初态,实际上至少要有一个终态。

一个状态转换图可用于识别(或接受)一定的字符串。

几点重要限制--不必使用超前搜索:

所有基本字都是保留字;用户不能用它们作自己的标识符

基本字作为特殊的标识符来处理;不用特殊的状态图来识别,只要查保留字表。

如果基本字、标识符和常数(或标号)之间没有确定的运算符或界符作间隔,则必须使用一个空白符作间隔。

3.2.4状态转换图的实现

做法:

1)对不含回路的分叉结,可用一个CASE语句或一组IF-THEN-ELSE语句实现

2)对含回路的状态结,可对应一段由WHILE结构和IF语句构成的程序.

3)终态结表示识别出某种单词符号,因此,对应语句为

RETURN(C,VAL)

其中,C为单词种别,VAL为单词自身值.

‘教案’课程教案-第三章-1

手机扫码分享

Top