第三章 词法分析.

Slides:



Advertisements
Similar presentations
請按左鍵換頁 為人的藝術 ~善緣貴人多~ 廣結善緣 1. 有什麼觀念,就有什麼行為; 有什麼行為,就有什麼習慣; 有什麼習慣,就有什麼性格; 有什麼性格,就有什麼命運。 2. 對長輩謙虛是本分,對平輩謙虛是修養, 對 晚輩謙虛是高貴,對所有人謙虛是安全。 3. 廣結善緣,圓融的人際關係( EQ ):
Advertisements

专题复习 --- 走进名著 亲近经典 读完《鲁滨孙漂流记》这本精彩的小说 后,一个高大的形象时时浮现在我的眼 前,他就是勇敢的探险家、航海家鲁滨 孙。他凭着顽强的毅力,永不放弃的精 神,实现了自己航海的梦想。 我仿佛看到轮船甲板上站着这样的一 个人:他放弃了富裕而又舒适的生活, 厌恶那庸庸碌碌的人生,从而开始了一.
Linux 环境及 Shell 程序 操作系统实验 1. 二、 Shell 编程与进程通信 常用 shell 命令 文件及文件属性操作 ls 、 cp 、 mv 、 rm ln 、 ln –s 、 chmod 、 groupadd 、 useradd 输入输出操作 echo 、 cat >> 、
國中教育會考說明 年 5 月 14 日(六) 105 年 5 月 15 日(日)  08:20- 08:30 考試說明  08:20- 08:30 考試說明  08:30-  09:40 社 會  08:30-  09:40 自 然 09:40- 10:20 休息 09:40-
平面构成 第六章 平面构成形式与法则 — 破规与变异. 第七章 平面构成形式与法则 — 破规与变异 破规与变异构成的形式、有下列四类: 一、特异构成 特异构成。其表现特征是,在普遍相同性质的事物 当中,有个别异质性的事物,便会立即显现出来。
第2章 证券市场的运行与管理.
說 劍 《莊子‧雜篇》─ 第 一 組 賴泊錞 謝孟儒 張維真 羅苡芸
德 国 鼓 励 生 育 的 宣 传 画.
第四章:长期股权投资 长期股权投资效果 1、控制:50%以上 有权决定对方财务和经营.
幼小課程統合與銜接 楊朝祥 中原大學講座教授.
知识聚焦 光合作用 呼吸作用 条件 场所 原料 产物 物质变化 能量变化 有光无光都可以 需要光 主要是线粒体 叶绿体 二氧化碳、水
控制方长投下的子公司,需要编制合并报表的演示思路
600年前,鄭和率領世界上最強大的艦隊,浩浩蕩蕩的駛入印度洋,展開一場「文化帝國」的海上大秀。
機關改制(含員工權益保障)業務簡介 報告人:王奐寅 100年6月24日.
人民版必修三专题三复习 近代中国 思想解放的潮流 灵石中学 易吉华.
8 企业信息管理的定量分析 第八讲 企业信息管理的定量分析 8.1 企业信息化水平的测评 8.2 企业信息管理绩效的测评.
判断推理,必须学会这些 主讲老师:小胡胡 2016年3月25日20:00 YY频道:
第五章 语法制导的翻译 赵建华 南京大学计算机系 2010年3月.
编译原理第二次习题课 王静.
第十章 依赖于机器的优化 在指令级并行的机器上,程序的运行速度依赖于下面几个因素
主講者:林妙容 國立暨南國際大學 輔導與諮商研究所專任助理教授
第五章 心理应激与心身疾病 护理学院 王芳.
“风神初振”的初唐诗 俞冰沁.
忠孝國小自立午餐老師的叮嚀 教師指導手冊.
华东师范大学 软件工程硕士答辩名单 时间:2016年5月14日、15日.
编译原理上机实习
编 译 原 理 指导教师:杨建国 二零一零年三月.
Chapter 4 流程控制.
第四章 时间序列的分析 本章教学目的:①了解从数量方面研究社会经济现象发展变化过程和发展趋势是统计分析的一种重要方法;②掌握时间数列编制的基本要求;③理解和掌握水平速度两方面指标的计算及运用④理解和掌握长期趋势分析和预测的方法。 本章教学重点:现象发展的水平指标和速度指标。 本章教学难点:现象变动的趋势分析。
“08高考化学学业水平(必修科目)测试的命题和教学对策研究”
一、液压与气压传动的控制元件分类 1、按用途分类 根据控制元件在系统中的作用,可分为下几类: 方向控制阀 压力控制阀 3) 流量控制阀
第1节 光的干涉 (第2课时).
EQ劇場 ~ 李爾王.
初中数学七年级上册 (苏科版) 2.3 绝对值与相反数(1).
第4章 种群和群落 第3节 群落的结构 自主学习案   合作探究案 课后练习案. 第4章 种群和群落 第3节 群落的结构 自主学习案   合作探究案 课后练习案.
苏教版小学数学六年级(下册) 认识正比例的量 执教者:朱勤.
第十三章 收入和利润.
Part5语法分析 授课:胡静.
成才之路 · 语文 人教版 · 必修2 路漫漫其修远兮 吾将上下而求索.
2.2 语法分析器生成器YACC 分析器的构造步骤: 产生式→识别活前缀的DFA→分析表(+驱动器) YACC概述
自上而下分析 4.4.
Last Lecture Revisited
Lexical analyzer generator
编译原理与技术 词法分析(1) 2018/11/28 《编译原理与技术》讲义.
如何寫工程計畫書 臺北市童軍會考驗委員會 高級考驗營 版.
第四章 语法分析.
Last Lecture Revisited
Part5语法分析 授课:胡静.
第2次课 上下文无关文法
Chap 3 分支结构 3.1 简单的猜数游戏 3.2 四则运算 3.3 查询自动售货机中商品的价格.
编译原理与技术 词法分析 (2) 2018/12/30 《编译原理与技术》讲义.
编译原理实践 5.给定语法的语法分析程序构造.
第二章 词法分析 (Lexical Analysis)
语法分析 本章内容 语法分析器:把词法分析生成的词法单元流翻译成语法分析树(parse tree)
第二章 词法分析4 词法分析程序实现 构造词法分析器步骤 单词的形式化描述 词法分析程序的实现.
第六章 shell 程序调试 一. 程序执行状态跟踪 程序: -n 读取命令, 但不执行. 主要用于跟踪程序流程是
C语言概述 第一章.
程式結構&語法.
材料二甲 授課教師:王致傑 老師 (學420、分機5305)
第六章 语法制导的翻译 本章内容 介绍一种语义描述方法:语法制导的翻译,介绍语法制导的翻译的实现方法。
電子白板百萬小學堂 本活動建議搭配電子白板 學生最多可分成2~6組(請按組別按鈕) 老師可以視時間多少,來進行活動 每一組要回答十個問題。
開放電腦計劃 報告人:陳鍾誠 2011 年 8 月 20 日 台灣開源人年會 COSCUP 2011 – 中研院
美麗的西子湖.
C++语言程序设计教程 第2章 数据类型与表达式 第2章 数据类型与表达式 制作人:杨进才 沈显君.
大綱:整數的加法 整數的減法 蘇奕君 台灣數位學習科技股份有限公司
香港大學教育應用資訊科技發展研究中心 資訊年代青年自學才能拓展計劃 (S計劃)
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
數學魔術 數學學習領域 林壽福 教育部中央課程與教學輔導諮詢教師 台北市數學科輔導團員 興雅國中教師 95年度台北市數學與自然特殊優良教師
第十章、核銷系統操作之注意事項.
编译原理实践 --词法分析程序的自动生成器LEX
Presentation transcript:

第三章 词法分析

第三章 词法分析 本章内容 词法分析器:把构成源程序的字符流翻译成记号流,还完成和用户接口的一些任务 围绕词法分析器的自动生成展开 第三章 词法分析   词法分析器 语法分析器 符号表 记号(token) 取下一个记号 源程序 本章内容 词法分析器:把构成源程序的字符流翻译成记号流,还完成和用户接口的一些任务 围绕词法分析器的自动生成展开 介绍正则式、状态转换图和有限自动机概念

词法分析初步:正则表达式,状态转换图 3.1~3.4

3.1 词法记号及属性 3.1.1 词法记号、模式、词法单元 if if 字符i, f for for 字符f, o, r 记号名 词法单元例举 模式的非形式描述 if if 字符i, f for for 字符f, o, r relation < , <= , = , … < 或 <= 或 = 或 … id sum, count, D5 由字母开头的字母数字串 number 3.1, 10, 2.8 E12 任何数值常数 literal “seg. error” 引号“和”之间任意不含 引号本身的字符串

3.1 词法记号及属性 历史上词法定义中的一些问题 关键字、保留字和标准标识符的区别 忽略空格带来的困难 DO 8 I  3. 75 等同于 DO8I  3. 75 DO 8 I  3, 75 关键字不保留 IF THEN THEN THEN=ELSE;ELSE … 关键字、保留字和标准标识符的区别 保留字是语言预先确定了含义的词法单元 标准标识符也是预先确定了含义的标识符,但程序可以重新声明它的含义

3.1 词法记号及属性 3.1.2 词法记号的属性 position = initial + rate  60的记号和属性值: id,指向符号表中position条目的指针 assign _ op id,指向符号表中initial条目的指针 add_op id,指向符号表中rate条目的指针 mul_ op number,整数值60

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

3.2 词法记号的描述与识别 3.2.1 串和语言 串的运算 字母表:符号的有限集合, 例: = { 0, 1} 串:符号的有穷序列,例:0110,  语言:字母表上的一个串集 {, 0, 00, 000, …}, {},  句子:属于语言的串 串的运算 连接(积) xy,s = s = s 幂 s0为,si为si-1s(i > 0)

3.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+

3.2 词法记号的描述与识别 3.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

3.2 词法记号的描述与识别 正则式的例子  = {a, b} 复杂的例子 句子:01001101000010000010111001 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

3.2 词法记号的描述与识别 正则式等价:表示同样语言的正则式

3.2 词法记号的描述与识别 3.2.3 正则定义 对正则式命名,使表示简洁 d1  r1 d2  r2 . . . dn  rn 各个di的名字都不同 每个ri都是 {d1, d2, …, di-1 }上的正则式

3.2 词法记号的描述与识别 正则定义的例子 C语言的标识符是字母、数字和下划线组成的串 letter_  A | B | … | Z | a | b | … | z | _ digit  0 | 1 | … | 9 id  letter_(letter_ |digit)*

3.2 词法记号的描述与识别 正则定义的例子  无符号数集合,例1946,11.28,63E8,1.99E6 digit  0 | 1 | … | 9 digits  digit digit* optional_fraction  .digits| optional_exponent  ( E ( + |  |  ) digits ) |  numberdigits optional_fraction optional_exponent  简化表示 number  digit+ (.digit+)? (E(+|)? digit+)?

3.2 词法记号的描述与识别 正则定义的例子(进行下一步讨论的例子) while  while do  do relop  < | < = | = | < > | > | > = letter  A | B | … | Z | a | b | … | z id  letter (letter | digit )* number  digit+ (.digit+)? (E (+ | )? digit+)? delim  blank | tab | newline ws  delim+

3.2 词法记号的描述与识别 词法单元的识别 stmt  if expr then stmt | if expr then stmt else stmt | ε expr  term relop term | term term  id | number

3.2 词法记号的描述与识别 词法单元的识别 stmt  if expr then stmt | if expr then stmt else stmt | ε expr  term relop term | term term  id | number digit  [0-9] digits  digit+ number  digits(.digits)?(E[+-]?digits)? letter  [A-Za-z] id  letter (letter | digit)* if  if then  then else  else relop  < | > | <= | >= | = | <>

3.2 词法记号的描述与识别 词法单元的识别 词素 词法单元名字 属性值 Any ws - if Then then else Any id 指向符号表条目的指针 Any number number < relop LT <= LE = EQ <> NE > GT >= GE

3.2 词法记号的描述与识别 3.2.4 转换图 关系算符的转换图 return(relop, LE) 2 = >   5 1 6 2 4 8 3 7 return(relop, LE) return(relop, NE) return(relop, LT) return(relop, GE) return(relop, GT) return(relop, EQ) 开始 < = > * other

3.2 词法记号的描述与识别 标识符和关键字的转换图 开始 letter other letter或digit 9 10 11 开始 letter other * letter或digit return(install_id())

3.2 词法记号的描述与识别 无符号数的转换图 number  digit+ (.digit+)? (E (+ | )? digit+)? 开始 19 12 13 14 15 16 17 18 digit other . E +/ return( installNum( ) ) *

3.2 词法记号的描述与识别 空白的转换图 delim  blank | tab | newline ws  delim+ 21 22 开始 delim other * 20

3.2 词法记号的描述与识别 合成整体转换图 开始 9 12 20 … … … …

字符串匹配。给你两个字符串,寻找其中一个字符串是否包含另一个字符串,如果包含,返回包含的起始位置。 作业 字符串匹配。给你两个字符串,寻找其中一个字符串是否包含另一个字符串,如果包含,返回包含的起始位置。 如下面两个字符串: 时间复杂度<O(N2) char *str = "bacbababadababacambabacaddababacasdsd"; char *ptr = "ababaca";

重点 串和语言 语言的运算 正则表达式 状态转换图