‘教案’课程教案-第三章-1
‘教案’课程教案-第三章-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为单词自身值.