- 0
- 0
- 约3.38千字
- 约 24页
- 2019-05-28 发布于江苏
- 举报
第三章 词法分析 词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号。 词法分析器(Lexical Analyzer) 又称扫描器(Scanner):执行词法分析的程序 3.1 对于词法分析器的要求 一、词法分析器的功能和输出形式 功能:输入源程序、输出单词符号 单词符号的种类: 基本字:如 begin,repeat,? 标识符——表示各种名字:如变量名、数组名和过程名 常数:各种类型的常数 运算符:+,-,*,/,? 界符:逗号、分号、括号和空白 输出的单词符号的表示形式: (单词种别,单词符号的属性值) 单词种别通常用整数编码表示。 若一个种别只有一个单词符号,则种别编码就代表该单词符号。假定基本字、运算符和界符都是一符一种。 若一个种别有多个单词符号,则对于每个单词符号,给出种别编码和自身的值。 标识符单列一种;标识符自身的值表示成按机器字节划分的内部码。 常数按类型分种;常数的值则表示成标准的二进制形式。 例 C程序代码 while (i=j) i--; 输出单词符号: while , - ( , - id , 指向i的符号表项的指针 = , - id , 指向j的符号表项的指针 ) , - id , 指向i的符号表项的指针 - - , - ; , - 二、词法分析器作为一个独立子程序 词法分析作为一个独立的阶段,是否应当将其处理为一遍呢? 作为独立阶段的优点:结构简洁、清晰和条理化,有利于集中考虑词法分析一些枝节问题。 不作为一遍:将其处理为一个子程序。 (当语法分析器需要一个单词符号时就调用这个子程序) 词法分析器的结构 输入串放在输入缓冲区中。 预处理子程序:剔除无用的空白、跳格、回车和换行等编辑性字符等 扫描缓冲区 二、单词符号的识别:超前搜索 1 基本字识别: 例如: DO99K=1,10 DO 99 K = 1,10 IF(5.EQ.M)GOTO55 IF (5.EQ.M) GOTO 55 DO99K=1.10 IF(5)=55 需要超前搜索才能确定哪些是基本字 2 标识符识别: 字母开头的字母数字串,后跟界符或算符 3 常数识别: 识别出算术常数并将其转变为二进制内码表示。有些也要超前搜索。 5.EQ.M 5.E08 4 算符和界符的识别 把多个字符符合而成的算符和界符拼合成一个单一单词符号。 :=, **, .EQ. , ++,--,= 三、状态转换图 1 概念 状态转换图是一张有限方向图。 一个状态转换图可用于识别(或接受)一定的字符串。 2 例子 几点重要限制——不必使用超前搜索 所有基本字都是保留字;用户不能用它们作自己的标识符 基本字作为特殊的标识符来处理;不用特殊的状态图来识别,只要查保留字表。 如果基本字、标识符和常数(或标号)之间没有确定的运算符或界符作间隔,则必须使用一个空白符作间隔。 DO99K=1,10 要写成 DO 99 K=1,10 3 状态转换图的实现 思想:每个状态结点对应一小段程序。 做法: 1)对不含回路的分叉结,可用一个CASE语句或一组 if-else 语句实现 2)对含回路的状态结,可对应一段由WHILE结构和IF语句构成的程序. 3) 终态结表示识别出某种单词符号,因此,对应语句为 RETURN (C,VAL) 其中,C为单词种别,VAL为单词自身值. 全局变量与过程 1)ch 字符变量、存放最新读入的源程序字符 2)strToken 字符数组,存放构成单词符号的字符串 3)GetChar 子程序过程,把下一个字符读入到ch中 4)GetBC 子程序过程,跳过空白符,直至ch中读入一非空白符 5)Concat 子程序,把ch中的字符连接到 strToken 6)IsLetter和 IsDigit 布尔函数,判断ch中字符是否为字母和数字 7) Reserve 整型函数,对于 strToken 中的字符串查找保留字表,若它是保留字则给出它的编码,否则回送0 8) Retract 子程序,把搜索指针回调一个字符位置 9)InsertId 整型函数,将strToken中的标识符插入符号表,返回符号表指针 10)InsertConst 整型函数过程,将strToken中的常数插入常数表,返回常数表指针。 int code, value; strToken := “”; /*置strToken为空串*/ GetChar(); GetBC(); if (IsLetter()) begin while (IsLetter() or IsDigit()) begin Conca
您可能关注的文档
最近下载
- 工程勘察设计收费标准-勘测收费标准-(最新版-修订).pdf VIP
- 交付工程师年度工作总结.pptx VIP
- 隧道工程(矿山法)监理实施细则.pdf VIP
- 中国儿童急性非静脉曲张性上消化道出血诊治指南(2024).pptx VIP
- 大肠杆菌血红素合成限速步骤解析及定向强化.docx VIP
- 雨课堂学堂在线《跨文化交际英语(北京理工)》学堂云单元测试考核答案.docx
- 2023年考研英语真题(附答案).pdf VIP
- HPV检测技术及临床应用ppt课件.pptx
- (冀教版)六年级数学上册寒假作业综合练习每日一练(共30天).docx VIP
- 北森:2026年中国企业人力资源数智化成熟度模型与实践白皮书.pdf
原创力文档

文档评论(0)