- 1、本文档共79页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
compiler4_词法分析
第二章 词法分析 本章内容 词法分析器:把构成源程序的字符流翻译成记号流,还完成和用户接口的一些任务 围绕词法分析器的自动生成展开 介绍正规式、状态转换图和有限自动机概念 词法分析程序的功能 2.1 词法记号及属性 2.1.1 词法记号、模式、词法单元 词法记号 词法单元例举 模式的非形式描述 var var var for for for relation , = , = , … 或 = 或 = 或 … id sum, count, D5 由字母开头的字母数字串 num 3.1, 10, 2.8 E12 任何数值常数 literal “seg. error” 引号“和”之间的任意字符 串,但引号本身除外 2.1 词法记号及属性 历史上词法定义中的一些问题 忽略空格带来的困难 DO 8 I ? 3. 75 DO8I ? 3. 75 DO 8 I ? 3, 75 关键字是否保留 IF THEN THEN THEN=ELSE;ELSE … 关键字、保留字和标准标识符的区别 2.1 词法记号及属性 2.1.2 词法记号的属性 position := initial + rate * 60的记号和属性值: ?id,指向符号表中position条目的指针? ?assign _ op, ? ?id,指向符号表中initial条目的指针? ?add_op,+? ?id,指向符号表中rate条目的指针? ?mul_ op, *? ?num,整数值60? 2.1 词法记号及属性 2.1.3 词法错误 词法分析器对源程序采取非常局部的观点 难以发现下面的错误 fi (a == f (x) ) … 在实数是a.b格式下,可以发现下面的错误 123. 紧急方式的错误恢复 错误修补 2.2 词法结构的表示及识别方法 词法结构的表示方法:正归表达式 词法结构的识别方法:有限自动机 2.2 词法记号的描述与识别 2.2.1 串和语言 字母表:符号的有限集合, 例:? = {0,1} 串:符号的有限序列,例:0110,? 语言:字母表上的一个串集 {?,0,00,000,…}, {?}, ? 句子:属于语言的串 串的运算 连接 xy,s? = ?s = s 积(指数) s0为?,si为si -1s(i 0) 2.2 词法记号的描述与识别 语言的运算 和:L∪M = {s | s ?L 或 s ? M } 连接:LM = {st | s ? L 且 t ? M} 指数:L0是{? },Li是Li -1L 闭包:L? = L0 ∪ L1 ∪ L2 ∪… 正闭包: L+ = L1 ∪ L2 ∪… 例 L: { A, B, …, Z, a, b, …, z }, D: { 0, 1, …, 9 } L∪D, LD, L6, L*, L(L∪D )*, D+ 2.2 正规表达式Regular Expression 2.2.2 用正规表达式的运算符构造正规表达式 2.2.3 程序设计语言中的正规表达式 2.2.4 正规表达式与3型文法等价 2.2 词法记号的描述与识别 2.2.2 正规式 正规式用来表示简单的语言,叫做正规集 正规式 定义的语言 备注 ? {?} a {a} a ? ? (r) | (s) L(r)∪L(s) r和s是正规式 (r)(s) L(r)L(s) r和s是正规式 (r)* (L(r))* r是正规式 (r) L(r) r是正规式 ((a) (b)*)| (c)可以写成ab*| c 2.2 词法记号的描述与识别 正规式的例子 ? = {a, b} a | b {a, b} (a | b) (a | b ) {aa, ab, ba, bb} aa | ab | ba | bb {aa, ab, ba, bb} a* 由字母a构成的所有串集 (a | b)* 由a和b构成的所有串集 复杂的例子 ( 00 | 11 | ( (01 | 10) (00 | 11) ? (01 | 10) ) ) ? 句子:01001101000010000010111001 2.2 词法记号的描述与识别 2.2.3 正规定义 对正规式命名,使表示简洁。 d1 ? r1 d2 ? r2 . . . dn ? rn 各个di的名字都不同 每个ri都是? ?{d1, d2, …, di-1 }上的正规式 2.2 词法记号的描述与识别 正规定义的例子 Pa
文档评论(0)