第03讲-词法分析-II.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中国科大 第二章 词法分析 本章内容 词法分析器:把构成源程序的字符流翻译成记号流,还完成和用户接口的一些任务 介绍正规式、状态转换图和有限自动机概念 Lex与词法分析器的自动生成 回顾 词法分析概念 词法记号的描述 词法单元、词法记号 词法单元 又称单词,是编程语言中合法的字符串 词法记号 满足某种规则的词法单元,采用同一种记法——词法记号。 词法单元 词法记号 2.2 词法记号的描述与识别 2.2.1 串和语言 字母表:符号的有限集合, 例:? = {0,1} 串:符号的有穷序列,例:0110,? 语言:字母表上的一个串集 {?,0,00,000,…}, {?}, ? 2.2 词法记号的描述与识别 2.2.1 串和语言 串的运算 连接 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 ∪… 例2.2(p17) L: { A, B, …, Z, a, b, …, z }, D: { 0, 1, …, 9 } L∪D, LD, L6, L*, L(L∪D )*, D+ 本讲纲要 正规式 词法记号的识别 有限自动机定义 DFA构建方法 正规式 正规式,又称正则表达式,Regular Expression 2.2 词法记号的描述与识别 2.2.2 正规式 正规式:按照一组定义规则,由较简单的正规式构成的,每个正规式 r 表示一个语言 L(r).定义规则说明 L(r) 是怎样以各种方式从 r 的子正规式所表示的语言组合而成。 正规式用来表示简单的语言,叫做正规集。 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 }上的正规式 Pascal里面的标识符模式 正规式表示 letter ? A | B | … | Z | a | b | … | z digit ? 0 | 1 | … | 9 id ? letter(letter|digit)* C语言的标识符模式 模式的非形式描述 首字符必须是_或者字母,由_、字母或数字组成的字符串 请仿照Pascal标识符的例子,写出C语言的标识符的正规式表示 C语言的标识符模式 正规定义的例子 C语言的标识符是字母、数字和下划线组成的串 letter_ ? A | B | … | Z | a | b | … | z | _ digit ? 0 | 1 | … | 9 id ? letter_(letter_ |digit)* 2.2 词法记号的描述与识别 正规定义的例子 Pascal无符号数集合,例1946,11.28,63.6E8,1.99E?6 digit ? 0 | 1 | … | 9 digits ? digit digit* optional_fraction ? .digits|? optional_exponent ? (E ( + | ? | ? ) digits ) | ? num?digits optional_fraction optional_expon

文档评论(0)

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

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

1亿VIP精品文档

相关文档