- 1、本文档共72页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理(第2章 词法分析)
词法分析程序的输出 词法分析程序的输出形式 单词符号的表示形式:二元式(单词种别,单词自身的值) 单词类别。 1、一类单词统一用一个整数值代表其属性。例如:1代表关键字,2代表标识符等。 2、 每一个单词一个类别。例如:1代表BEGIN,2代表END等。 单词自身的值。可以表示成:常量的二进制表示;常量、变量等在符号表种的地址码,等等。 词法分析输出形式示例 示例1: 程序段If i= 5 then x:=y; 关键字if (3,“if”) 标识符I (1,指向i的符号表入口) 等号= (4,‘=’) 常数5 (2,’5’) 关键字then(3,’then’) 标识符x (1,“指向x的符号表入口”) 赋值号:= (4, ‘:=’) 标识符y (1,“指向y的符号表入口”) 分号; (5,’;’) 词法分析与语法分析的关系 把词法分析从语法分析中脱离出来的优点: 简化设计。使编译程序的结构更加简洁、清晰和条理化。 编译效率改进。专门的读字符和分词技术;词法分析程序的自动构建。 编译程序的可移植性。与源语言的具体要求有关部分。 词法分析作为 独立一遍 or 独立子程序 词法分析程序过程 一些其他任务: 滤掉空格,跳过注释、换行符 追踪换行标志 记录行号 复制出错源程序 宏展开 输入缓冲区 超前搜索 关键字的识别: 例如在标准FORTRAN中 1、DO99K = 1,10 2、IF(5.EQ.M)I = 10 3、DO99K = 1.10 4、IF(5) = 55 示例:PL/0程序的词法分析设计 识别的单词: 保留字:如BEGIN、 END、 IF、 THEN等 标识符: 用户定义的变量名、常数名、过程名 常数: 如:10、25、100等整数 运算符: 如:+、-、*、/、:=、#、=、=等 界符: 如:‘,’、‘.’ 、‘;’ 、‘(’ 、‘)’等 示例: PL/0词法分析程序的设计 词法分析过程GETSYM所要完成的任务: 从源程序读字符(getch) 滤空格 识别保留字 识别标识符 拼数 识别单字符单词 拼双字符单词 识别其它 示例:PL/0词法分析程序的设计 问题 语言层出不穷,N种语言写N种编译程序 有没有可能在规则明确下快速地自动构造出词法分析器? 正则表达式简介 正规式也称正则表达式,是定义正规集的数学工具。 (“正则集的代数” ) 正则表达式(regular expression)用于描述或者匹配一系列符合某个句法规则的字符串。 正则表达式这个概念最初来自Unix中工具软件(例如sed和grep) 许多程序设计语言都支持利用正则表达式进行字符串操作。 由于正则表达式主要应用对象是文本,因此它在各种文本编辑器也都有应用。例:输入的邮件地址的格式是否正确 准备知识:集合运算 ∑* 的子集 U , V: 积 UV ={αβ|α∈ U β∈V } n次积 Vn= VVV… V V0 = {ε}空串 V的闭包 V* = V0 U V1 U V2 U … V的正则闭包 V+ = V V* 正规式与正规集的递归定义 (1)ε和Φ都是字母表∑上的正规式,它们所表示的正规集分别为{ε}和Φ; (2)任何a∈∑,a是∑上的一个正规式,它所表示的正规集为{a}; (3) 正规式 正规集 正规式 正规集 e1 L(e1) (e1|e2) L(e1)∪L(e2) e2 L(e2) (e1·e2) L(e1)L(e2) (e1)* L(e1)* (4)仅由有限次使用上述三步骤而得到的表达式才是∑上正规式。仅由这些正规式所表示的子集才是∑上的正规集。 示例:正规式 令?={a,b}, ?上的正规式和相应的正规集的例子(书P53页) 示例:程序设计语言中的正规式 例1 标识符的词法规则。比如:e123e123 令?={l,d} 则?上的正规式 r= l(l ?d) ?定义的正规集为: {l,ll,ld,ldd,……},其中l代表字母,d代表数字,正规式 即是 字母(字母|数字) ? ,它表示的正规集中的每个元素的模式是“字母打头的字母数字串” 即:多数程序设计语言允许的的标识符的词法规则. 例2 无符号整数的词法规则。比如:123 令?={d} 则?上的
您可能关注的文档
- 训练集.ppt
- 古诗之美.ppt
- 8. 床头上的标签 词语.ppt
- 商业场所.doc
- 兼类词.ppt
- 网络训练.ppt
- 注意力分配性训练.ppt
- 住宿场所.doc
- 亲和力训练.ppt
- 曹刿论战一词多义.ppt
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
文档评论(0)