第2章词法分析分解.ppt

  1. 1、本文档共74页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 词法分析 本章主要讨论词法分析程序的设计原则,单词的描述技术、识别机制及词法分析程序的自动构造原理。 1.词法分析的功能 2.程序语言的单词符号种类及词法分析输出 3.词法分析程序的设计与实现 4.正规表达式与有穷自动机 5.词法分析程序的自动生成 本章重点 单词的描述工具 单词的识别系统 设计和实现词法分析程序 首先需要描述和刻画程序设计语言中的原子单位——单词,其次需要识别单词和执行某些相关的动作。 描述程序设计语言的词法的机制是正规表达式,识别机制是有穷自动机。 词法分析程序 词法分析是编译过程中的一个阶段,在语法分析前进行。可以作为一个独立的子程序。 优势表现为: 简化设计 改进编译效率 增加编译系统的可移植性 可以和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。 单词符号 是程序设计语言中具有独立意义的最小单位,程序设计语言基本组成成分。 五类: 关键字(保留字/基本字):if while … 标识符:常量名 变量名 常数:34 56.78 运算符:+ - / AND… 界限符:, ; ( )… 词法分析器的输出:Token串 机内表示形式: 单词类别有多种编码方式: 标识符一般统一为一种:一个编号 常数按类型分别编码:整数、实数、布尔、字符 关键字一般一字一种 运算符一般一符一种 界符一般一符一种 各种常数和标识符一般放在一个符号表中,在输出的token文件中的单词属性值则存放单词在符号表中的指针 例子    a=10+c*20 识别各种单词符号 标识符的识别:字母+(字母/数字) 关键字的识别:与标识符相同,最后查表 常数的识别: 界符和算符的识别: 扫描程序的设计-预处理 预处理:删除无用的空格; 删除跳格; 删除回车和换行等编辑性字符; 删除注解部分。 每一次对一串定长的输入字符串进行预处理,并装入一个指定的缓冲区。 扫描缓冲区 一分为二,互补使用。 有哪些信誉好的足球投注网站指针从单词起点开始有哪些信誉好的足球投注网站,如果遇到半区域的边界,但尚未到达单词的终点时,则可将后续的输入字符装入该缓冲区的另一半。 必须对标识符和常数单词符号的长度加以限制。 单词的构成规则用状态转换图表示 示例语言的单词符号 标识符: name, aaa 基本字: if,else,for,while,do,int,read,write 无符号整数:100,256 算符及界符: 单分界符:如+,-,*,/,(,),;,‘,!等 双字符分界符:=,=,!=,==等。 注释符:用/*….*/括起 示例语言各类单词的状态图 示例语言单词符号的状态图 示例语言词法分析程序的算法 首先读入一个字符,若为空字符,则继续读,直到读进一个非空字符。当这个字符是: 字母:继续读,直到遇见空格、或单字符分界符、或文件尾。组合字符串,查保留字表。若为保留字,输出相应类码。若无,输出标识符的单词记号及单词值(标识符); 数字:继续读,直到非数字字符出现或文件尾。输出无符号整数的单词记号及数字串; =、<、>、!:读下一个字符,判断是否为双字符分界符,若是,组成双字符分界符,输出类码;若不是,输出单分界符记号; 非=、<、>、/等与双分界符首字符不同的单分界字符:输出相应单词记号及单分界符。 /:读下一个。若不是,输出/的类码;若是*,进行注释处理。词法分析不输出“/*”,并要跳过整个注释内容直到遇到“*/”为止,然后返回开始状态,继续识别下一个单词符号。 非法字符:如果读进的字符不属于上面任意情况,则说明词法分析程序从源程序读入了一个不合法的字符,进行错误处理,报告错误信息,跳过这个字符,然后转入开始状态,继续识别下一个单词符号。 正规表达式与有限自动机 要求 正规式与正规集的定义 有穷自动机的定义及表示 NFA确定化为DFA 掌握DFA的化简 掌握用正规式构造DFA 掌握正规文法与有穷自动机间的转换 字母表和符号串的基本概念 字母表:元素的非空有穷集合。记为∑。 字母表包含了语言中所允许出现的一切符号。 例如: ∑= {0,1} 符号串(字):字母表中的符号所组成的有穷序列。 一个语言的句子总是它的字母表的符号串。这个符号串的组成必须是按照文法规则组合而成的。 语法分析的一个重要任务就是:判断一个符号串的组成是否满足某个文法的规定。 字母表和符号串的基本概念(续) 空串:不包含任何符号的串,记为ε。 Σ*:表示Σ上所有符号串的全体。 空集:φ,不

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档