- 1、本文档共111页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
cha词法分析white.ppt
第三章 词法分析 设计词法分析程序 单词的描述工具(正规表达式) 单词的识别工具(有限自动机) 4.1 对于词法分析器的设计 4.2 单词的描述工具 4.3 有穷自动机 4.4 正规式和有穷自动机的等价性 4.5 正规文法和有穷自动机的等价性 4.6 词法分析程序的自动构造工具 本章练习 作业 词法分析(lexical analysis)p38 主要任务 从左至右逐个字符地对源程序进行扫描,产生 一个个的单词符号,把作为字符串的源程序改 造成为单词符号串的中间程序 或者说:逐个读入源程序字符,并按照词法规 则分割成一系列单词,再转换成单词串,同时 进行词法检查 4.1 对于词法分析器的要求 p50 功能:输入源程序,输出单词符号 单词符号一般可分为下列五种: 关键字 C语言main int void 标识符 变量名 数组名 函数名 常数 100 3.14159 ‘a’ 运算符 + - * / 界符 ,;( ) /* */ 单词符号的输出形式 p50 二元式(单词种别,单词自身的值) 单词符号的输出形式 p51 二元式(单词种别,属性值) 例 C++代码段及对应的单词符号序列 p38 while (i=j) i- -; 词法分析器的组织方法 p50 作为单独的一遍,在语法分析前进行 与语法分析结合在一起作为一遍 作为语法分析程序的一个子程序,每次调用识别 一个单词,交给语法分析器使用 词法分析器的设计 作为单独一遍考虑 输入: 输入串放在输入缓冲区 单词符号的识别:超前搜索 单词的识别──状态转换图 状态转换图 有限方向图 结点 —— 状态,用○表示;终态,用◎表示 有向弧 ── 箭头 弧上标记 ── 输入字符 标识符的状态转换图 例 C语言无符号整数的描述 识别非零开头的十进制数的状态转换图 对简单语言进行词法分析的状态转换图 利用状态转换图识别单词 1. 从初态出发 2. 读入一字符 3. 按当前字符转入下一状态 4. 重复 2,3 直到无法继续转移 5. 若当前状态是终止状态,说明读入的字 符组成一单词;否则,说明输入不符合 词法规则 词法分析器的设计 主要步骤 首先画出词法分析的状态转换图 然后编制词法分析子程序 scan( ) 完成以下功能: 从输入流读取下一个单词 返回:单词种别(code) 属性值(value) 词法分析器的流程图P19 词法分析器的实现__所需变量和过程 1 ch 字符变量,存放最新读进的源程序字符 2 strToken 字符数组,存放构成单词符号的字符串 例如 strToken=“AB” 3 GetChar 读入字符过程,将下一个输入字符读到 ch中,搜索指示器前移一个字符位置 4 GetBC 判断ch中字符是否为空白。若是,则调 用GetChar直至ch中进入一个非空白字符 例如 ch=‘C’ 5 Concat 组合符号过程,将ch中的字符连接到 strToken之后 例如 “AB”+‘C’ = “ABC” 所需变量和过程 6 IsLetter和IsDigit 判断ch中字符是否为字母 和数字的布尔函数过程 7 Reserve函数 对strToken中字符串查找保留 字表,若是保留字则返回它的编 码,否则返回0值 8 Retract过程 将搜索指示器回调一个字符位 置,将ch置为空白字符 9 InsertId函数 将strToken中标识符插入符号 表,返回符号表指针 10 InsertConst函数 将strToken中常数插入常 数表,返回常数表指针 词法分析器可构造如下 int code,value; strToken:=“ ”; //置strToken为空串 GetChar();GetBC();//读入空白直到ch为一个非空白字符 if(IsLetter())//ch中是字母,进入关键字和标识符的识别 begin while (IsLetter() or IsDigit()) begin Concat();GetChar();//组合标识符,读入下一字符 end Retract(); //回退字符 code:=Reserve();/
您可能关注的文档
- chapter汽轮机的基本工作原理.ppt
- chapter电路的动态分析.ppt
- Chapter策略群组.ppt
- chapter线性控制系统的数学模型.ppt
- Chapter金属及合金的回复与再结晶.ppt
- Chapter钢的热处理工艺.ppt
- Chapter随机变量的数字特征.ppt
- Chapte废物资源化利用技术.ppt
- chapt羧酸及其衍生物取代酸.ppt
- Chap_税制的设计(经济学原理,曼昆,中英文双语).ppt
- 第二单元1口算除法第1课时(课件)-三年级数学下册(人教版).pptx
- 2025年中考地理复习从“一条鱼”看中国经济发展以广东茂名罗非鱼为例课件.pptx
- 安徽省鼎尖名校高一5月阶段性检测地理SY.pdf
- 小毕考英语总复习课件-第一部分字母语音人教pep.pptx
- 17《宣传片的制作》(课件)赣美版初中美术七年级下册.pptx
- Unit3KeepFitSectionAOpeningPageA1a-1d课件人教版七年级英语下册.pptx
- 发热伴血小板减少综合征疾病分级与重症救治.pptx
- 三个三工程实施方案(3篇).docx
- 山体滑坡监控工程施工方案(3篇).docx
- 设计工程服务实施方案(3篇).docx
文档评论(0)