PowerPoint Presentation

Similar documents
大侠素材铺

Microsoft PowerPoint - lexicalAnalysis

Microsoft PowerPoint - ch2 [Compatibility Mode]

大侠素材铺

大侠素材铺

第三章词法分析 1. 词法分析的含义 ; 2. 词法分析的基本概念 ; 3. 正则表达式 词法单元模式的表达 ; 4. 状态转换图 ; 5. 词法分析器构造工具 ; 6. 有穷状态自动机 ; 7. 从正则表达式到 NFA,DFA 的映射方法 ;

PowerPoint 演示文稿

Personal Branding Roadmap Template

Microsoft PowerPoint - 3-LexicalScanning12.ppt [兼容模式]

Microsoft Word - 國文.doc

Microsoft PowerPoint - 3-LexicalScanning.ppt

Microsoft PowerPoint - L3-Part2-v4.pptx

Microsoft Word - 目次範例-catalog doc

上市公司运作的法律框架及董事会秘书的法律义务和法律责任.ppt

Microsoft Word - 103鐵路佐級-國文(二)

背 景 资 料 水 浒 传 写 的 是 北 宋 宣 和 年 间 (1119~1121 前 后 ) 宋 江 等 聚 众 起 义 的 故 事 全 书 描 写 北 宋 末 年 以 宋 江 为 首 的 一 百 零 八 人 在 山 东 梁 山 泊 聚 义 的 故 事 故 事 在 宋 史 和 宋 人 笔 记 里

产 品 出 口 企 业 当 年 减 半 缴 纳 企 业 所 得 税 的 核 准 外 商 投 资 企 业 财 产 转 让 收 益 分 期 计 入 应 纳 税 所 得 额 的 核 准 外 商 投 资 企 业 技 术 开 发 费 加 计 扣 除 的 核 准 财 政

学 习 贯 彻 中 央 尧 省 尧 市 纪 委 全 会 精 神 专 栏 中 国 共 产 党 第 十 八 届 中 央 纪 律 检 查 委 员 会 第 六 次 全 体 会 议 公 报 渊 2016 年 1 月 14 日 中 国 共 产 党 第 十 八 届 中 央 纪 律 检 查 委 员 会 第 六 次

Microsoft Word - 临政办发12.doc

中共山东省委高校工委

标题

目 录 第 一 部 分 国 家 知 识 产 权 局 概 况 一 主 要 职 能 二 部 门 预 算 单 位 构 成 第 二 部 分 国 家 知 识 产 权 局 2016 年 部 门 预 算 表 一 财 政 拨 款 收 支 总 表 二 一 般 公 共 预 算 支 出 表 三 一 般 公 共 预 算 基

ᄐ↓ᅯᄎ2015ᅣ↑ᄇ﾿ᅢᅤᅯ녜 ̄

科学技术部2013年度部门预算

一、二○○二年学校工作的简要回顾

Microsoft Word - 白俄罗斯公司法汉语译文2015年7月15日修改版.docx

第 一 部 分 中 国 气 象 局 职 责 及 概 况 一 主 要 职 责 ( 一 ) 拟 定 气 象 工 作 的 方 针 政 策 法 律 法 规 发 展 战 略 和 长 远 规 划 ; 制 定 发 布 气 象 工 作 的 规 章 制 度 技 术 标 准 和 规 范 并 监 督 实 施 ; 承 担

数学与统计学院教师支部“两学一做”学习教育实施计划

无 锡 职 业 技 术 学 院 国 有 资 产 管 理 办 法 第 一 章 总 则 第 一 条 为 加 强 学 校 国 有 资 产 管 理, 合 理 配 置 和 有 效 使 用 国 有 资 产, 确 保 国 有 资 产 安 全 与 完 整, 保 障 和 促 进 学 校 各 项 事 业 发 展, 根

省安委会2015冬防工作方案.doc

南 昌 大 学 人 力 资 源 工 作 简 讯 2015 年 第 2 期 ( 总 第 27 期 ) 目 录 1 人 力 资 源 综 合 信 息 2 人 员 调 配 及 机 构 编 制 管 理 信 息 3 劳 资 工 作 信 息 4 师 资 管 理 信 息 5 高 层 次 人 才 及 队 伍 建 设

国家邮政局2010年部门预算

国家邮政局2010年部门预算

11韶关市人力资源和社会保障局权责清单

三亚市政府投资建设项目代建制管理工作介绍

<4D F736F F D20C9FABBB7B9FAD6D CBB6CABFB8B4CAD4B7BDB0B8312E646F63>

目 录 一 部 门 职 责... 1 二 预 算 编 报 范 围... 3 三 2013 年 部 门 预 算 报 表 及 情 况 说 明... 5 收 支 预 算 总 表 及 情 况 说 明... 5 收 入 预 算 表 及 情 况 说 明... 7 支 出 预 算 表 及 情 况 说 明... 1

标题

目 录 一 重 要 提 示... 3 二 公 司 主 要 财 务 数 据 和 股 东 变 化... 3 三 重 要 事 项... 6 四 附 录 / 22

目 录 引 言... 3 第 一 部 分 电 价 水 平 基 本 情 况...4 一 上 网 电 价...4 二 输 配 电 价...6 三 销 售 电 价...9 四 政 府 性 基 金 和 附 加...12 第 二 部 分 电 价 政 策 执 行 情 况...13 一 电 价 水 平 调 整 情

西安邮电学院本科教学工作简报

密 级:

市六届人大--次

目 录 前 言 第 一 章 近 年 来 合 同 行 政 监 管 及 相 关 工 作 改 革 创 新 情 况 第 二 章 2014 年 合 同 行 政 监 管 及 相 关 工 作 情 况 第 一 节 合 同 格 式 条 款 监 管 一 银 行 业 电 信 业 合 同 格 式 条 款 专 项 整 治 二

中国文联部门预算


( 十 ) 其 他 会 计 工 作 第 四 条 单 位 不 得 任 用 ( 聘 用 ) 不 具 备 会 计 从 业 资 格 的 人 员 从 事 会 计 工 作 不 具 备 会 计 从 业 资 格 的 人 员, 不 得 从 事 会 计 工 作, 不 得 参 加 会 计 专 业 技 术 资 格 考 试

附 件 : 顺 德 区 2015 年 高 中 阶 段 学 校 招 生 考 试 工 作 意 见 根 据 佛 山 市 顺 德 区 教 育 事 业 发 展 十 二 五 规 划 2015 年 顺 德 区 教 育 工 作 意 见 的 文 件 精 神 和 上 级 教 育 主 管 部 门 工 作 要 求, 结 合

<C1ACD6DDCAD0CAD0B3A1BCE0B6BDB9DCC0EDBED6C8A8D4F0C7E5B5A5A3A8B9ABCABEA3A92E786C73>

Microsoft Word - Future CEDAW C CHN 7-8.doc


国家发展改革委法治机关建设规划( 年)

烟台经济技术开发区政府采购竞争性磋商文件

<4D F736F F D20342E31332D C4EACCECBDF2CAD0C6D5CDA8B8DFB5C8D1A7D0A3D5D0C9FABFBCCAD4B9A4D7F7B9E6B6A82DCEC4BCFEB8E52E646F63>

2014 年 12 月 16 日 广 西 春 茂 投 资 股 份 有 限 公 司 ( 原 名 广 西 汽 牛 农 业 机 械 股 份 有 限 公 司, 以 下 简 称 春 茂 股 份 挂 牌 公 司 公 司 ) 召 开 2014 年 第 五 次 临 时 股 东 大 会, 通 过 向 特 定 对 象

四、实施步骤

Microsoft Word - 面向合格投资者公开发行公司债券上市预审核反馈意见公告(截至2015年10月8日)

律 师 执 业 必 须 以 事 实 为 根 据, 以 法 律 为 准 绳 律 师 执 业 应 当 接 受 国 家 社 会 和 当 事 人 的 监 督 律 师 依 法 执 业 受 法 律 保 护, 任 何 组 织 和 个 人 不 得 侵 害 律 师 的 合 法 权 益 第 四 条 司 法 行 政 部

(Microsoft Word - \270t\270g\254\354\305\252\270g\274\372\300y\255p\271\ docx)

自 觉 实 践 科 学 发 展 观, 扎 实 推 进 管 理 服 务 工 作 四 川 大 学 档 案 馆 ( 校 史 办 公 室 )2007 年 上 半 年 工 作 总 结 2007 年 上 半 年, 四 川 大 学 档 案 馆 ( 校 史 办 公 室 ) 在 学 校 党 委 行 政 领 导 和 上

2014


第 一 部 分 广 州 市 广 播 电 视 大 学 概 况 一 学 校 的 主 要 任 务 和 业 务 范 围 根 据 市 编 委 的 批 复, 广 州 市 广 播 电 视 大 学 为 市 局 级 事 业 单 位, 归 口 市 教 育 局 管 理 主 要 承 担 以 下 任 务 : ( 一 ) 承

Microsoft Word - 关于印发《云南保险业高级管理人员任职资格考试办法》的通知

<4D F736F F D20CBD5D6DDBFC6BCBCD1A7D4BAB8DFB5C8D1A7D0A3BDCCCAA6D7CAB8F1C8CFB6A8B9A4D7F7CAB5CAA9D2E2BCFB2E646F63>

自评报告合成.doc

第一部分 界定和测量歧视


一 前 言 2 作 為 我 國 儒 家 經 典 及 十 三 經 之 一, 孟 子 流 傳 千 年 不 輟, 足 以 證 明 其 對 中 華 文 化 的 重 要 性 與 影 響 力, 除 了 道 德 文 化 意 識 的 開 發, 也 弘 揚 仁 政 王 道 的 政 治 觀, 大 多 數 人 都 肯 定

法 工 作 计 划 滨 州 市 安 全 生 产 监 督 管 理 局 2016 年 2 月 4 日 ( 此 件 主 动 公 开 ) 2


附件3

关于印发西北政法大学“十二五”

君泰所 稿纸

的 权 利 义 务, 依 照 本 法 在 基 金 合 同 中 约 定 基 金 管 理 人 基 金 托 管 人 依 照 本 法 和 基 金 合 同 的 约 定, 履 行 受 托 职 责 通 过 公 开 募 集 方 式 设 立 的 基 金 ( 以 下 简 称 公 开 募 集 基 金 ) 的 基 金 份

关 于 建 立 失 联 ( 异 常 ) 私 募 机 构 公 示 制 度 的 通 知 私 募 基 金 登 记 备 案 相 关 问 题 解 答

000545C.DOC

世界上最伟大的推销员.doc

第 一 编 国 家 法 律 法 规 - 1 -

隐公(元年~十一年)

目 1 录 第 一 部 分 国 家 省 相 关 法 律 法 规 中 华 人 民 共 和 国 教 育 法 中 华 人 民 共 和 国 高 等 教 育 法 中 华 人 民 共 和 国 学 位 条 例 中 华 人 民 共 和 国 学 位 条 例

<4D F736F F F696E74202D20A5ACB355C0B8B0D1A6D2B8EAAEC6205BB0DFC5AA5D>

E /...ec6

(一)收入支出预算总表及情况说明

五 增 加 一 条 作 为 第 三 十 五 条, 内 容 为 : 按 照 消 防 技 术 标 准 不 需 要 设 置 火 灾 自 动 报 警 系 统 的 养 老 院 福 利 院 寄 宿 制 学 校 幼 儿 园 学 生 校 外 托 管 机 构 小 旅 店 小 型 娱 乐 场 所 以 及 生 产 存 储

民 政 部 废 止 的 政 策 性 文 件 目 录 序 号 标 题 文 号 社 会 组 织 管 理 1 民 政 部 关 于 转 发 民 政 部 财 政 部 关 于 进 一 步 明 确 社 会 团 体 会 费 政 策 的 通 知 的 函 民 函 2006) 240 号 2 民 政 部 关 于 进 一

国家信访局部门预算公开信息说明

目 录 第 一 部 分 国 家 能 源 局 概 况 一 主 要 职 能 二 基 本 情 况 说 明 三 部 门 决 算 单 位 构 成 第 二 部 分 国 家 能 源 局 2015 年 度 部 门 决 算 表 一 收 入 支 出 决 算 总 表 二 收 入 决 算 表 三 支 出 决 算 表 四 财

证券代码: 股票简称:滨化股份 公告编号:

证券代码: 证券简称:岳阳林纸 公告编号:

17 省 物 价 委 员 会 关 于 甘 肃 省 档 案 馆 实 行 利 用 档 案 收 费 的 批 复 甘 价 综 号 1988 年 5 月 30 日 省 物 价 委 18 省 物 价 委 员 会 广 播 电 视 厅 文 化 厅 关 于 制 定 我 省 电 影 电 视 录 像 带

宜 都 改 革 开 放 30 年 宜 都 年 鉴 编 纂 委 员 会 主 任 院 陈 行 甲 副 主 任 院 张 白 华 宋 化 力 胡 卫 东 委 员 院 陈 微 向 家 金 沈 绪 文 王 德 清 郑 蕾 艳 ( 女 ) 张 红 桥 ( 女 ) 张 鸿 庞 友 春 夏 友 生 史 玉 英 ( 女

中共中央党校2011年部门决算

<B8DFC8FDD3EFCEC4A3A838D4C2D4C2BFBCCAD4CCE2A3A9>


Microsoft Word - 诸教〔2016〕97号.doc

鬼 與 亡 魂 的 故 事 事 (3) 亡 魂 返 回 與 人 贈 物 三 類 (1) 亡 魂 返 回 家 人 身 邊 : 最 難 以 割 捨 的 情 感 便 是 親 情 了, 因 此 許 多 亡 魂 返 回 都 是 為 了 關 心 親 人 過 的 是 否 平 安 例 如 探 視 母 親 是 否 於

关 于 在 全 省 县 处 级 以 上 领 导 干 部 中 开 展 三 严 三 实 专 题 教 育 实 施 方 案 根 据 中 共 中 央 办 公 厅 印 发 < 关 于 在 县 处 级 以 上 领 导 干 部 中 开 展 三 严 三 实 专 题 教 育 方 案 > 的 通 知 ( 中 办 发 20

Microsoft Word 中的文档

目 录 第 一 部 分 中 国 科 协 概 况 一 主 要 职 能 二 部 门 决 算 单 位 构 成 第 二 部 分 中 国 科 协 2015 年 度 部 门 决 算 表 一 收 入 支 出 决 算 总 表 二 收 入 决 算 表 三 支 出 决 算 表 四 财 政 拨 款 收 入 支 出 决 算

Transcription:

词法分析 编译原理和技术 张昱 551-636384,yuzhng@ustc.edu.cn 中国科学技术大学计算机科学与技术学院

本章内容 记号 (token) 源程序 词法分析器 取下一个记号 语法分析器 符号表 词法分析及问题 向前看 (Lookhed) 歧义 (Amiguities) 词法分析器的自动生成 词法记号的描述 : 正规式 ; 词法记号的识别 : 转换图 有限自动机 :NFA DFA 张昱 : 编译原理和技术 词法分析 2

2.1 词法记号及属性 记号 词法单元 模式

词法记号 模式 词法单元 记号名 词法单元举例 模式的非形式描述 if if 字符 i, f for for 字符 f, o, r reltion <, <=, =, < 或 <= 或 = 或 id sum, count, D5 由字母开头的字母数字串 numer 3.1, 1, 2.8 E12 任何数值常数 literl seg. error 引号 和 之间任意不含引号本身的字符串 whitespce 换行符 换行符 \n 无意义, 被丢弃, 不提供给语法分析器 张昱 : 编译原理和技术 词法分析 4

词法定义中的问题 关键字 保留字 关键字 (keyword): 有专门的意义和用途, 如 if else 保留字 : 有专门的意义, 不能当作一般的标识符使用例如,C 语言中的关键字是保留字 历史上词法定义中的一些问题 忽略空格带来的困难, 例如 Fortrn DO 8 I 3. 75 等同于 DO8I 3. 75 DO 8 I 3, 75 关键字不保留 IF THEN THEN THEN=ELSE; ELSE 张昱 : 编译原理和技术 词法分析 5

歧义和 lookhed 词法分析 从左到右读取输入串, 每次识别出一个 token 可能需要 lookhed 来判断当前是否是一个 token 的结尾 下一个 token 的 ( 尤其是在 Fortrn 语言中 ) DO 5 I = 1 DO 5 I = 1.25 DO 5 I = 1, 25 if (then.gt. else) then then = else else else = then endif 张昱 : 编译原理和技术 词法分析 6

词法分析器 : 实现 一个词法分析器的实现必须做两件事 1. 识别子串并对应到 tokens 2. 返回 token 的值或词法单元 (lexeme) 词法单元是子串 (token 的实例 ) 张昱 : 编译原理和技术 词法分析 7

词法记号的属性 position = initil + rte 6 的记号和属性值 : id, 指向符号表中 position 条目的指针 ssign _ op id, 指向符号表中 initil 条目的指针 dd_op id, 指向符号表中 rte 条目的指针 mul_ op numer, 整数值 6 张昱 : 编译原理和技术 词法分析 8

2.2 词法记号的描述与识别 描述 : 正规式 识别 : 转换图

串和语言 术语 字母表 : 符号的有限集合, 例 : = {, 1} 串 : 符号的有穷序列, 例 :11, 语言 : 字母表 上的一个串集 {,,,, }, {}, 句子 : 属于语言的串 串的运算 连接 ( 积 ) xy,s = s = s 幂 s 为,s i 为 s i-1 s(i > ) 张昱 : 编译原理和技术 词法分析 1

串和语言 语言的运算 例 并 : L M = {s s L 或 s M } 连接 : LM = {st s L 且 t M} 幂 : 闭包 : 正闭包 : L 是 {},L i 是 L i-1 L L = L L 1 L 2 L + = L 1 L 2 L: { A, B,, Z,,,, z }, D: {, 1,, 9 } L D, LD, L 6, L *, L(L D ) *, D + 优先级 : 幂 连接 并 张昱 : 编译原理和技术 词法分析 11

正规式 (regulr expression) 正规式用来表示简单的语言, 叫做正规集 正规式 定义的语言 备注 {} {} (r) L(r) r 是正规式 (r) (s) L(r) L(s) r 和 s 是正规式 (r)(s) L(r)L(s) r 和 s 是正规式 (r) * (L(r)) * r 是正规式 (() () * ) (c) 可以写成 * c 优先级 : 闭包 * 连接 选择 张昱 : 编译原理和技术 词法分析 12

正规式举例 = {, } {, } ( ) ( ) {,,, } {,,, } * 由字母 构成的所有串的集合 ( ) * 由 和 构成的所有串的集合 复杂的例子 ( 11 ( (1 1) ( 11) (1 1) ) ) 句子 :1111111111 张昱 : 编译原理和技术 词法分析 13

正规定义 (regulr definition) 对正规式命名, 使正规式表示简洁 d 1 r 1 d 2 r 2... d n r n 各个 d i 的名字都不同 每个 r i 都是 {d 1, d 2,, d i-1 } 上的正规式 C 语言的标识符是字母 数字和下划线组成的串 letter_ A B Z z _ digit 1 9 id letter_(letter_ digit) * 张昱 : 编译原理和技术 词法分析 14

正规定义举例 无符号数集合, 例 1946,11.28,63E8,1.99E6 digit 1 9 digits digit digit * optionl_frction.digits optionl_exponent ( E ( + ) digits ) numer digits optionl_frction optionl_exponent 简化的表示 numer digit + (.digit + )? (E(+ -)? digit + )? 张昱 : 编译原理和技术 词法分析 15

词法记号的识别 : 转换图 转换图 (trnsition digrm) 关系算符的转换图 1 < = 5 > 2 > 3 4 return(relop, EQ) 状态 = 6 other 7 8 = other * * 双圈表示接受状态 return(relop, LE) return(relop, NE) return(relop, LT) 星号表示将输入回退一个位置 return(relop, GE) return(relop, GT) 张昱 : 编译原理和技术 词法分析 16

转换图 标识符和关键字的转换图 letter 或 digit * letter other 9 1 11 return(instllid( )) 无符号数的转换图 digit numer digit + (.digit + )? (E(+ -)? digit + )? E digit digit digit digit. digit E +/ digit 12 13 14 15 16 17 18 other other other * 张昱 : 编译原理和技术 词法分析 17 return( instllnum( ) ) 19

转换图 空白的转换图 delim lnk t newline ws delim+ delim * delim other 2 21 22 张昱 : 编译原理和技术 词法分析 18

基于转换图的词法分析 例 :relop 的转换图的概要实现 TOKEN getrelop() { TOKEN rettoken = new(relop); while (1) { switch (stte) { cse : c = nextchr(); if (c == '<') stte = 1; else if (c == '=') stte = 5; else if (c == '>') stte = 6; } } else fil(); rek; cse 1:...... cse 8: retrct(); rettoken.ttriute = GT; return(rettoken); } 出错处理, 要能从错误恢复 回退 = 5 > 张昱 : 编译原理和技术 词法分析 19 < 1 6 = > other = other 2 3 4 7 * * 8

词法分析中的冲突及解决 R = Whitespce Integer Identifier + 分析 foo+3 f 匹配 R, 更精确地说是 Identifier 但是 fo 也匹配 R, foo 也匹配, 但 foo+ 不匹配 如何处理输入? 如果 x 1 x i L(R) 并且 x 1 x K L(R) Mximl munch 规则 : 选择匹配 R 的最长前缀 最长匹配规则在实现时 :lookhed, 不符合则回退 张昱 : 编译原理和技术 词法分析 2

词法分析 : 分类的不确定性 R = Whitespce new Integer Identifier 分析 new foo new 匹配 R, 更精确地说是 new 但是也匹配 Identifier, 此时该选哪个? 一般地, 如果 x 1 x i L(R j ) 和 x 1 x i L(R k ) 规则 : 选择先列出的模式 (j 如果 j < k) 必须将 new 列在 Identifier 的前面 张昱 : 编译原理和技术 词法分析 21

词法错误 词法分析器对源程序采取非常局部的观点 例 : 难以发现下面的错误 fi ( == f (x) ) 在实数是 数字串. 数字串 格式下, 可以发现下面的错误 123.x 紧急方式的错误恢复 删掉当前若干个字符, 直至能读出正确的记号 错误修补 进行增 删 替换和交换字符的尝试 张昱 : 编译原理和技术 词法分析 22

例题 1 写出语言 所有相邻数字都不相同的非空数字 串 的正规定义 12331357167983579123 解答 : nswer ( no_ ) (no_ ) (no_ ) no_ no_ (1 no_-1 1 ) (no_-1 1 ) (no_-1 ) no_-1... no_-8 9 将这些正规定义逆序排列就是答案 张昱 : 编译原理和技术 词法分析 23

例题 2 下面 C 语言编译器编译下面的函数时, 报告 prse error efore else long gcd(p,q) long p,q; { if (p%q == ) /* then prt */ return q 此处遗漏了分号 } else /* else prt */ return gcd(q, p%q); 张昱 : 编译原理和技术 词法分析 24

例题 2 现在少了第一个注释的结束符号后, 反而不报错了 long gcd(p,q) long p,q; { if (p%q == ) /* then prt return q else /* else prt */ return gcd(q, p%q); } 张昱 : 编译原理和技术 词法分析 25

2.3 有限自动机 描述分析器 :NFA DFA 自动机的转换 NFADFA 化简的 DFA

有限自动机 不确定的有限自动机 (NFA) (nondeterministic finite utomton) 一个数学模型, 它包括 : 1 有限的状态集合 S 2 输入符号集合 3 转换函数 move : S ( {} ) P(S) 4 状态 s 是唯一的状态状态 5 F S 是接受状态集合 识别语言 ( ) * 的 NFA 接受状态 1 2 张昱 : 编译原理和技术 词法分析 27

转换表 NFA 的转换表 识别语言 ( ) * 的 NFA 输入符号 {, 1} {} 1 {2} 2 1 2 张昱 : 编译原理和技术 词法分析 28

例题 3 识别 * * 的 NFA 1 2 3 4 张昱 : 编译原理和技术 词法分析 29

确定的有限自动机 确定的有限自动机 (DFA) 一个数学模型, 它包括 : 1 有限的状态集合 S 2 输入符号集合 3 转换函数 move : S S, 且可以是部分函数 4 状态 s 是唯一的状态 5 F S 是接受状态集合 识别语言 ( ) * 的 DFA 1 2 张昱 : 编译原理和技术 词法分析 3

例题 4 构造一个 DFA, 它能识别 {,1} 上能被 5 整除的二进制数 解答 已读过 尚未读 已读部分的值 某时刻 11 111 5 读进 11 111 5 2 = 1 读进 1 111 11 1 2 + 1= 21 引入 5 个状态即可, 分别代表已读部分的值除以 5 的余数 张昱 : 编译原理和技术 词法分析 31

例题 4 构造一个 DFA, 它能识别 {,1} 上能被 5 整除的二进制数 解答 1 1 1 2 1 3 1 11 2 = 1 1 4 1 111 2 = 7 1 张昱 : 编译原理和技术 词法分析 32

例题 5 构造一个 DFA, 它能接受 和 1 的个数都是偶数的 字符串 偶 偶 1 1 1 1 偶 奇 1 奇 偶 1 2 1 1 3 奇 奇 1 张昱 : 编译原理和技术 词法分析 33

NFA 到 DFA 的变换 子集构造法 (suset construction) 1. DFA 的一个状态是 NFA 的一个状态集合 2. 读了输入 i 后, NFA 能到达的所有状态 :s 1, s 2,, s k, 则 DFA 到达一个状态, 对应于 NFA 的 {s 1, s 2,, s k } {} {, 1} 1 2 {, 2} 未画完 张昱 : 编译原理和技术 词法分析 34

NFA 到 DFA 的变换 子集构造法 (suset construction) 1. - 闭包 ( - closure) 状态 s 的 - 闭包是 s 经 转换所能到达的状态集合 2. NFA 的初始状态的 - 闭包对应于 DFA 的初始状态 3. 针对每个 DFA 状态 NFA 状态子集, 求输入每个 i 后能到达的 NFA 状态的 - 闭包并集, 该集合对应于 DFA 中的一个已有状态, 或者是一个要新加的 DFA 状态 张昱 : 编译原理和技术 词法分析 35

例题 6 正规式 ( )* 对应的 NFA 如下, 把它变换为 DFA 2 3 1 6 7 8 9 4 5 张昱 : 编译原理和技术 词法分析 36

例题 6 状态 输入符号 2 3 1 6 7 8 9 4 5 张昱 : 编译原理和技术 词法分析 37

例题 6 A = {, 1, 2, 4, 7} 状态 A 输入符号 2 3 1 6 7 8 9 4 5 张昱 : 编译原理和技术 词法分析 38

例题 6 A = {, 1, 2, 4, 7} B = {1, 2, 3, 4, 6, 7, 8} 状态 A 输入符号 B 2 3 1 6 7 8 9 4 5 张昱 : 编译原理和技术 词法分析 39

例题 6 A = {, 1, 2, 4, 7} B = {1, 2, 3, 4, 6, 7, 8} 状态 A B 输入符号 B 2 3 1 6 7 8 9 4 5 张昱 : 编译原理和技术 词法分析 4

例题 6 A = {, 1, 2, 4, 7} B = {1, 2, 3, 4, 6, 7, 8} C = {1, 2, 4, 5, 6, 7} 状态 输入符号 A B C B 2 3 1 6 7 8 9 4 5 张昱 : 编译原理和技术 词法分析 41

例题 6 A = {, 1, 2, 4, 7} B = {1, 2, 3, 4, 6, 7, 8} C = {1, 2, 4, 5, 6, 7} 2 3 1 6 7 8 9 4 5 状态 输入符号 A B C B C 张昱 : 编译原理和技术 词法分析 42

例题 6 A = {, 1, 2, 4, 7} B = {1, 2, 3, 4, 6, 7, 8} C = {1, 2, 4, 5, 6, 7} 2 3 1 6 7 8 9 4 5 状态 输入符号 A B C B B C 张昱 : 编译原理和技术 词法分析 43

例题 6 A = {, 1, 2, 4, 7} B = {1, 2, 3, 4, 6, 7, 8} C = {1, 2, 4, 5, 6, 7} D = {1, 2, 4, 5, 6, 7, 9} 2 3 1 6 7 8 9 4 5 状态 输入符号 A B C B B D C 张昱 : 编译原理和技术 词法分析 44

例题 6 A = {, 1, 2, 4, 7} B = {1, 2, 3, 4, 6, 7, 8} C = {1, 2, 4, 5, 6, 7} D = {1, 2, 4, 5, 6, 7, 9} 2 3 1 6 7 8 9 4 5 状态 输入符号 A B C B B D C D 张昱 : 编译原理和技术 词法分析 45

例题 6 A = {, 1, 2, 4, 7} B = {1, 2, 3, 4, 6, 7, 8} C = {1, 2, 4, 5, 6, 7} D = {1, 2, 4, 5, 6, 7, 9} 2 3 1 6 7 8 9 4 5 状态 输入符号 A B C B B D C B C D 张昱 : 编译原理和技术 词法分析 46

例题 6 A = {, 1, 2, 4, 7} B = {1, 2, 3, 4, 6, 7, 8} C = {1, 2, 4, 5, 6, 7} D = {1, 2, 4, 5, 6, 7, 9} 2 3 1 6 7 8 9 4 5 状态 输入符号 A B C B B D C B C D B C 张昱 : 编译原理和技术 词法分析 47

例题 6 A C B D 状态 输入符号 A B C B B D C B C D B C 2 3 1 6 7 8 9 4 5 张昱 : 编译原理和技术 词法分析 48

例题 6 识别语言 ( ) * 的 DFA A C B D 1 2 2 3 1 6 7 8 9 4 5 张昱 : 编译原理和技术 词法分析 49

识别语言 ( ) * 的 DFA 例题 6 A C B D 2 3 1 6 7 8 9 4 5 子集构造法不一定得到最简 DFA 1 2 张昱 : 编译原理和技术 词法分析 5

DFA 的化简 该方法用于化简转换函数是全函数的 DFA 死状态 (ded stte) 当转换函数由部分函数改成全函数表示时引入左图引入死状态 E, A C B E D A C B 张昱 : 编译原理和技术 词法分析 51 D

DFA 的化简 可区别的状态 (distinguishle sttes) s 和 t 分别从 s t 出发, 存在一个输入符号 w, 使得一个到达接受状态, 另一个到达非接受状态 A 和 B 是可区别的状态 : 从 A 出发, 读入 后到达非接受状态 C; 从 B 出发, 读过 后到达接受状态 D A 和 C 是不可区别的状态 : 无任何输入符号可用来区别它们 C A B 张昱 : 编译原理和技术 词法分析 52 D

DFA 的化简 方法 1. 按是否是接受状态来区分 {A, B, C}, {D} 1 2 move({a, B, C}, ) = {B} move({a, B, C}, ) = {C, D} 2. {A, C}, {B}, {D} C move({a, C}, ) = {B} move({a, C}, ) = {C} A B 张昱 : 编译原理和技术 词法分析 53 D

例题 7 叙述下面的正规式描述的语言, 并画出接受该语言的最简 DFA 的状态转换图 (1 1)* * 解答 描述的语言是, 所有不含子串 1 的 由 和 1 组成的串 1 1. strt 1 2 3 刚读过的不是 连续读过一个 连续读过 不少于两个 张昱 : 编译原理和技术 词法分析 54

解答 例题 8 用状态转换图表示接受如下正规式的 DFA strt ( ) ( )( ) 张昱 : 编译原理和技术 词法分析 55

2.4 从正规式到有限自动机 分析器的自动构造 正规式 NFADFA 化简的 DFA 采用语法制导的算法来构造 NFA

语法制导的构造算法 语法制导 : 按正规式的语法结构来指导构造 构造识别 和字母表中一个符号的 NFA 重要特点 : 仅一个接受状态 i f i f 识别正规式 的 NFA 识别正规式 的 NFA 对于带括号的正规式 (s), 使用 s 对应的 NFA N(s) 本身作为它的 NFA 张昱 : 编译原理和技术 词法分析 57

语法制导的构造算法 构造识主算符为选择的正规式的 NFA 重要特点 : 仅一个接受状态 N (s) i f N (t) 识别正规式 s t 的 NFA 张昱 : 编译原理和技术 词法分析 58

语法制导的构造算法 构造识主算符为连接的正规式的 NFA 重要特点 : 仅一个接受状态 i N (s) N (t) f 识别正规式 st 的 NFA 张昱 : 编译原理和技术 词法分析 59

语法制导的构造算法 构造识主算符为闭包的正规式的 NFA 重要特点 : 仅一个接受状态, 且接受状态没有出边 i N (s) f 优化 i N (s) f 识别正规式 s * 的 NFA 张昱 : 编译原理和技术 词法分析 6

语法制导的构造算法 本方法产生的 NFA 有下列性质 N(r) 的状态数最多是 r 中符号和算符总数的两倍 N(r) 只有一个接受状态, 接受状态没有向外的转换 N(r) 的每个状态有一个用 的符号标记指向其它结点的 转换, 或者最多两个指向其它结点的 转换 2 3 1 6 7 8 9 4 5 张昱 : 编译原理和技术 词法分析 61

NFA 构造过程举例 ( ) * 的分解 ( r 4 r 3 r 9 r 7 r 8 r 5 r 6 * ) r 1 r 2 2 3 1 6 7 8 9 4 5 张昱 : 编译原理和技术 词法分析 62

NFA 构造过程举例 ( ) * 的分解 ( r 4 r 3 r 9 r 7 r 8 r 5 r 6 * ) r 1 r 2 2 3 1 6 7 8 9 4 5 张昱 : 编译原理和技术 词法分析 63

NFA 构造过程举例 ( ) * 的分解 ( r 4 r 3 r 9 r 7 r 8 r 5 r 6 * ) r 1 r 2 2 3 1 6 7 8 9 4 5 张昱 : 编译原理和技术 词法分析 64

NFA 构造过程举例 ( ) * 的分解 ( r 4 r 3 r 9 r 7 r 8 r 5 r 6 * ) r 1 r 2 2 3 1 6 7 8 9 4 5 张昱 : 编译原理和技术 词法分析 65

NFA 构造过程举例 ( ) * 的分解 ( r 4 r 3 r 9 r 7 r 8 r 5 r 6 * ) r 1 r 2 2 3 1 6 7 8 9 4 5 张昱 : 编译原理和技术 词法分析 66

NFA 构造过程举例 ( ) * 的分解 ( r 4 r 3 r 9 r 7 r 8 r 5 r 6 * ) r 1 r 2 2 3 1 6 7 8 9 4 5 张昱 : 编译原理和技术 词法分析 67

NFA 构造过程举例 ( ) * 的分解 ( r 4 r 3 r 9 r 7 r 8 r 5 r 6 * ) r 1 r 2 2 3 1 6 7 8 9 4 5 张昱 : 编译原理和技术 词法分析 68

NFA 的手工构造和算法构造 ( ) * 的两个 NFA 的比较 手工构造 : 1 2 算法构造 : 2 3 1 6 7 8 9 4 5 张昱 : 编译原理和技术 词法分析 69

2.5 词法分析器的生成器 Lex: flex jflex ntlr

用 Lex 建立词法分析器 词法分析器 - Lexicl nlyzer, scnner 生成器 - genertor Flex https://githu.com/westes/flex ; JFlex http://jflex.de/ Lex 源程序 lex.l lex.yy.c Lex 编译器 C 编译器 lex.yy.c.out 输入流.out 记号序列 张昱 : 编译原理和技术 词法分析 71

Lex 程序 Lex 程序包括三个部分 声明 %% 翻译规则 %% 辅助过程 Lex 程序的翻译规则 p 1 { 动作 1} p 2 { 动作 2} p n { 动作 n} 张昱 : 编译原理和技术 词法分析 72

Lex 文件举例 声明部分 %{ /* 常量 LT, LE, EQ, NE, GT, GE, %} WHILE, DO, ID, NUMBER, RELOP 的定义 */ /* 正规定义 */ delim [ \t \n ] ws {delim}+ letter [A Z z] digit id numer [9] {letter}({letter} {digit})* {digit}+(\.{digit}+)?(e[+\]?{digit}+)? %{ 和 %} 包含的代码将直接复制到生成的分析器源程序文件中 张昱 : 编译原理和技术 词法分析 73

Lex 文件举例 翻译规则部分 {ws} {/* 没有动作, 也不返回 */} while {return (WHILE);} do {return (DO);} {id} {yylvl = instll_id ( ); return (ID);} {numer} {yylvl = instll_num( ); return (NUMBER);} < {yylvl = LT; return (RELOP);} <= {yylvl = LE; return (RELOP);} = {yylvl = EQ; return (RELOP);} <> {yylvl = NE; return (RELOP);} > {yylvl = GT; return (RELOP);} >= {yylvl = GE; return (RELOP);} 张昱 : 编译原理和技术 词法分析 74

Lex 文件举例 辅助过程部分 instllid ( ) { /* 把词法单元装入符号表并返回指针 yytext 指向该词法单元的第一个字符, yyleng 给出的它的长度 */ } instllnum ( ) { } /* 类似上面的过程, 但词法单元不是标识符而是数 */ 张昱 : 编译原理和技术 词法分析 75

ANTLR 的文法文件.g4 格式 grmmr MyG; options { } import ; tokens { } @ctionnme { } rulenme : <stuff> ; 正规定义, DIGIT 不是记号 模式定义词法状态 rulenme 词法 : 大写字母开头 语法 : 小写字母开头 纯词法分析器 lexer grmmr MyG; 词法规则 INT : DIGIT+ ; frgment DIGIT : [-9] ; LQUOTE : '"' -> more, mode(str) ; mode STR; STRING : '"' -> mode(default_mode); 模式调用 张昱 : 编译原理和技术 词法分析 76

ANTLR:Lexer 命令 命令格式 TokenNme : < 选项 > -> 命令名 [( 参数 )] 命令 skip: 不返回记号给 prser, 如识别出空白符或注释 type(t): 设置当前记号的类型 chnnel(c): 设置当前记号的通道, 缺省为 Token.DEFAULT_CHANNEL( 值为 );Token.HIDDEN_CHANNEL( 值为 1) mode(m): 匹配当前记号后, 切换到模式 M pushmode(m): 与 mode(m) 类似, 但将当前模式入栈 popmode: 从模式栈弹出模式, 使之成为当前模式 张昱 : 编译原理和技术 词法分析 77

本章要点 词法分析器的作用和接口, 用高级语言编写词法分析器等 掌握下面的相关概念, 它们之间转换的技巧 方法或算法 非形式描述的语言 正规式 正规式 NFA 非形式描述的语言 NFA NFA DFA DFA 最简 DFA 非形式描述的语言 DFA( 或最简 DFA) 张昱 : 编译原理和技术 词法分析 78