编译原理与技术 词法分析(1) 2018/11/28 《编译原理与技术》讲义.

Slides:



Advertisements
Similar presentations
七年级数学校本课程 台山市任远中学 李锦明. 1. 最古老的过河问题 1. 最古老的过河问题 一个农民携带一只狼,一只羊和一 箱卷心菜,要借助一条小船过河。 小船上除了农民只能再带狼、羊、 卷心菜中的一样。而农民不在时, 狼会吃羊,羊会吃菜。农民如何过 河呢?
Advertisements

1 基北區 103 學年度免試入學志願選填、 超額比序項目、共同就學區規劃說明 臺北市政府教育局 新北市政府教育局 基隆市政府教育處.
专题复习 --- 走进名著 亲近经典 读完《鲁滨孙漂流记》这本精彩的小说 后,一个高大的形象时时浮现在我的眼 前,他就是勇敢的探险家、航海家鲁滨 孙。他凭着顽强的毅力,永不放弃的精 神,实现了自己航海的梦想。 我仿佛看到轮船甲板上站着这样的一 个人:他放弃了富裕而又舒适的生活, 厌恶那庸庸碌碌的人生,从而开始了一.
四、后期物理复习备考建议 不同阶段复习课教学设计(知识建构)的目的 复习课教学 设计的目的 理 解 · 对某知识的全面、抽 象理解 · 抽象知识和具体情景 的转化 综 合 · 多知识点联合解决问 题 基本素质 · 审题、表达、审视答 案等基本能力 复习 ( 一 ) 复习(二) ☆ ☆☆☆ ☆☆  进行科学规划.
林園高中適性入學 高雄區免試入學 及 特色招生介紹 1. 國中學生 國中教育會考 1 ( 每年五月 ) 特色招生 術科考試 五專 免試入學 ( 每年六月 ) 特色招生 甄選入學 高中高職 免試入學 擇一報到 林園高中適性入學  入學管道流程 2.
2016/9/41 12 年國教 入學方案宣導資料. 2016/9/42 安全快樂 健康發展 活力多元 創意發展 適性揚才 特色發展 務實致用 卓越發展 學前教育 國中小教育 高級中等教育 大專以上教育 教育促進個人向上發展教育促進個人向上發展 教育是國家最有利的投資教育是國家最有利的投資.
实数与代数式是初中数学中重要的基础知识, 是中考的必考内容.这部分知识散布于多个章节之中, 知识点琐碎,但概念性强,在中考试卷中多以填空题、 选择题、化简、探索或求值的形式出现.在复习中, 一定要加强对各个概念、性质和公式的辨析和理 解.注重让学生在实际背景中理解基本的数量关系和 变化规律,注重使学生经历从实际问题中建立数学模.
第二節-諧聲修辭 一、生活中的音近諧聲 ( 1 )忌諱語及吉祥話 人們因著趨吉避凶的普遍心理,對於有 災厄的諧音,或有吉祥祈福的近音字, 在詞語的使用上,呈現了特殊的習慣和 文化。
說 劍 《莊子‧雜篇》─ 第 一 組 賴泊錞 謝孟儒 張維真 羅苡芸
德 国 鼓 励 生 育 的 宣 传 画.
控制方长投下的子公司,需要编制合并报表的演示思路
密云季庄小 学心理讲座 合理情绪 幸福生活 武金红 密云教研中心.
性质形容词 软、硬、甜、苦、好、坏、远、近、斜、直、伟大、勇敢、优秀、聪明、大方
温 度 定义: 表示物体冷热程度的物理量。 国际单位:开尔文(K) 单位 常用单位:摄氏度(℃) 原理: 根据液体热胀冷缩的性质制成的。
105年桃連區適性入學宣導 桃園市十二年國民基本教育宣導團 宣講講師:龍岡國中 校長 郭玉承 時 間:105年 3 月 9 日 1.
第十二章 小组评估 本章重点问题: 评估的设计 测量工具的选择和资料的收集 与分析.
第二章 企业并购 企 业 并 购 企业 合并 会计 处理 谋求发展: 迅速扩张、突破壁垒、应对外部环境
前进中的山东省昌乐二中.
第二章 遺傳 2‧4 突變.
第二章 不等式與線性規劃 ‧2-1 一元二次不等式 ‧2-2 絕對不等式 ‧2-3 二元一次不等式的圖形 ‧2-4 線性規劃 總目錄.
江苏省2008年普通高校 招生录取办法 常熟理工学院学生处
合 同 法 主讲人: 教材:《合同法学》(崔建远) 2017/3/10.
现代汉语语法精讲.
现代汉语语法 2017/3/11 语法知识辅导.
第四章 现代汉语语法.
透過教學鷹架引導 三年級學生形成科學議題 高雄市復興國小 李素貞 102年3月20日
巧用叠词,妙趣横生.
教您如何选购血糖仪 之血糖仪选购篇 检测小窍门【如何检测血糖仪误差?】 糖友在医院使用生化检测血糖值时,同时使用血糖仪检测血糖值,并记录
成功教育研究的新进展 上海市闸北八中新校、闸北八中校长 上海市田家炳中学董事长 刘京海 2003年3月14日.
104年振聲國中 志願選填個別序位 說明會 104年06月08日 輔導室關心您.
华东师范大学 软件工程硕士答辩名单 时间:2016年5月14日、15日.
民法总论 北京师范大学珠海分校 法律与行政学院 白 非.
二综防火设计分析.
特殊需求學生 鑑定與安置 特教班 謝順慈 江怡勳.
國立花蓮女中101學年度 開學典禮簡報.
“08高考化学学业水平(必修科目)测试的命题和教学对策研究”
电在我们日常生活、现代化社会中的应用: 电 是 什 么?.
课标教材下教研工作的 实践与思考 山东临沂市教育科学研究中心 郭允远.
台州市2011年科学学业考试试题的命制 台州初级中学 郭海平.
江苏省2009年普通高校 招生录取办法 江苏省教育考试院
1-2 正負數的乘除法.
Part5语法分析 授课:胡静.
成才之路 · 语文 人教版 · 必修2 路漫漫其修远兮 吾将上下而求索.
Last Lecture Revisited
如何寫工程計畫書 臺北市童軍會考驗委員會 高級考驗營 版.
LR(1)分析方法.
第四章 语法分析.
第三章 词法分析.
Part5语法分析 授课:胡静.
数字电子技术 湖南计算机高等专科学校李中发 胡锦 制作.
第二章 词法分析 (Lexical Analysis)
语法分析 本章内容 语法分析器:把词法分析生成的词法单元流翻译成语法分析树(parse tree)
12.3.1运用公式法 —平方差公式.
第二章 词法分析4 词法分析程序实现 构造词法分析器步骤 单词的形式化描述 词法分析程序的实现.
苏 教 版 五 年 级 数 学(上) 用字母表示数 青阳体仁小学 胡春雅.
第二部分 集合论 第六章 集合代数 主要内容 集合的基本概念 属于、包含 幂集、空集 文氏图等 集合的基本运算 并、交、补、差等 集合恒等式
107上五年級〈社會科〉學校日簡報 教師個人檔案 ★民國77年8月開始任職本校 ★在本校擔任自然科任1年、導師8年、
不等式與線性規劃 ‧一元二次不等式 ‧絕對不等式 ‧二元一次不等式的圖形 ‧線性規劃.
大綱:整數的加法 整數的減法 蘇奕君 台灣數位學習科技股份有限公司
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
12.1分解因式.
§12-5 同方向同频率两个简谐振动的合成 一. 同方向同频率的简谐振动的合成 1. 分振动 : 2. 合振动 : 解析法
1.8 完全平方公式(一) 锦州市实验学校 数学组(3).
平面向量.
乘法公式 麗山國中王綉瑗製.
第2讲 实数的运算及大小比较 考点知识精讲 中考典例精析 举一反三 考点训练.
乘法公式 麗山國中王綉瑗製.
编译原理实践 --词法分析程序的自动生成器LEX
2.2.2双曲线的简单几何性质 海口市灵山中学 吴潇.
第二章 柯西不等式与排序不等式及其应用.
Presentation transcript:

编译原理与技术 词法分析(1) 2018/11/28 《编译原理与技术》讲义

词法分析 词法分析器介绍 正规式与正规集 有限自动机 词法分析器的自动生成-Lex 2018/11/28 《编译原理与技术》讲义

词法分析器介绍 词法分析器的功能 词法分析器 语法分析器 符号表 记号(流) 字符流 token 高级语言源程序 编译器其它阶段 get_next_token 字符流 符号表 2018/11/28 《编译原理与技术》讲义

词法分析器介绍 词法分析器的功能 读源程序,产生记号序列 剥去源程序中的注释(块、行)和“空白”符 预处理-宏处理与文件包含 2018/11/28 《编译原理与技术》讲义

词法分析器介绍 词法分析器作为独立子程序 简化设计 提高编译效率 增强可移植性 2018/11/28 《编译原理与技术》讲义

词法分析器介绍 记号、模式与单词 记号-同类单词的总称 模式-描述构成记号的字符串的规则 单词-源程序中能匹配任一记号的字符串 2018/11/28 《编译原理与技术》讲义

程序语言的记号(1) 记号 单词 模式 关键字 while FOR for 标识符 ID temp, i, max 字母开头的字母数字串 常数 NUM 3.14 100 数字字符串{.数字字符串} 2018/11/28 《编译原理与技术》讲义

双(单)引号中间的字符串(不包括引号本身) 程序语言的记号(2) 记号 单词 模式 运算符 MUL * GT > 界符 , 串常量 STRING “hello” ‘there’ 双(单)引号中间的字符串(不包括引号本身) 2018/11/28 《编译原理与技术》讲义

匹配记号的单词多于一个时,须提供额外的信息以区别之 词法分析器介绍 词法分析器的二元输出 <记号,记号的属性> 匹配记号的单词多于一个时,须提供额外的信息以区别之 单词(字符串)的类别 2018/11/28 《编译原理与技术》讲义

词法分析器介绍 词法分析器的二元输出 <记号,记号的属性> 属性(如类型、偏移)则关系到记号的翻译 记号影响语法分析的决策 2018/11/28 《编译原理与技术》讲义

词法分析器介绍 e.g.1 pascal源程序片段: begin length := length + 1; if length<20 then read(nextch); end; 2018/11/28 《编译原理与技术》讲义

e.g.1 pascal源程序片段的字符流(SP表示空格) b e g i n \n \t l t h SP : = + 1 ; f < 2 r a d ( x c ) 2018/11/28 《编译原理与技术》讲义

e.g. 1 词法分析器的输出记号流(1) <BEGIN,-> <ID,指向符号表length条目的指针> <ASSIGN,-> <ID,指向符号表length条目的指针> //不是多余的!! <+, - > <NUM, 1> // 属性是常量“值”本身 <; , - > <IF, - > 2018/11/28 《编译原理与技术》讲义

e.g. 1 词法分析器的输出记号流(2) <ID,指向符号表length条目的指针> <LT, - > <NUM, 20 > <THEN, - > <READ, - > <( , - > <ID,指向符号表nextch条目的指针> < ), - > <END, - > < ; , - > 2018/11/28 《编译原理与技术》讲义

词法分析器介绍 超前搜索 FORTRAN中的关键字“不保留” 1) DO100K=1,10 2) DO100K=1.10 3) IF(5.EQ.M) I=10 4) IF(5)=55 有关算符的识别 C/C++, java的++, --, >=, !=, == 等,与之对应 + , - >, !, = 2018/11/28 《编译原理与技术》讲义

词法分析器介绍 词法错误 词法分析器的设计 可检测非法字符的出现 if VS fi 手工编写-采用汇编语言或高级语言 自动生成-Lex 2018/11/28 《编译原理与技术》讲义

词法分析器介绍 状态转换图 用于记号的识别。状态之间用带有标记(字符)的有向边连接;每读入一个字符会引起状态变化,直至单词(记号)被识别出来。 开始状态:状态转换图的初始状态(尚未读字符) 接受状态:某个单词被识别时所处的状态(终态) 单词(记号)的识别过程即是从开始状态出发到某接受状态的变化过程。 2018/11/28 《编译原理与技术》讲义

词法分析器介绍 状态转换图 识别整数的转换图 识别标识符的转换图 3 4 数字 其它 * 1 2 字母 其它 字母或数字 * 3 4 数字 其它 识别整数的转换图 * 1 2 字母 其它 字母或数字 识别标识符的转换图 * 2018/11/28 《编译原理与技术》讲义

词法分析器介绍 状态转换图 . E +|- E 识别Pascal无符号数的转换图 数字 数字 数字 * 数字 数字 数字 其它 5 6 7 5 6 7 8 9 10 11 数字 其它 其它 识别Pascal无符号数的转换图 2018/11/28 《编译原理与技术》讲义

(红线)识别Pascal无符号整数的转换图 词法分析器介绍 状态转换图 E 数字 数字 数字 . +|- * 数字 数字 E 数字 其它 5 6 7 8 9 10 11 数字 其它 其它 (红线)识别Pascal无符号整数的转换图 2018/11/28 《编译原理与技术》讲义

词法分析器介绍 状态转换图 . E +|- E 识别Pascal无符号小数的转换图 数字 数字 数字 * 数字 数字 数字 其它 5 6 7 5 6 7 8 9 10 11 数字 其它 其它 识别Pascal无符号小数的转换图 2018/11/28 《编译原理与技术》讲义

状态转换图的实现 e.g. 2 简单词法分析的转换图(识别关键字、标识符、无符号整数、算符和界符) 1 空白符(\n,\t,SP) 1 空白符(\n,\t,SP) 字母或数字 字母 非字母数字 2 * return( ID, 符号表条目指针) or return( 关键字,-) 3 数字 非数字字符 4 return(NUM, 常量值或者常量表条目指针) to be continued  2018/11/28 《编译原理与技术》讲义

e.g. 2简单词法分析的转换图 + - * 非*字符 5 return(+, -) 6 return(-, -) return(*, -) 7 * 非*字符 8 return(*, -) 9 return(**, -) to be continued  2018/11/28 《编译原理与技术》讲义

e.g. 2简单词法分析的转换图 < = > 其它字符 = > = 其它字符 return(LE, -) 11 10 12 return(NE, -) 其它字符 * 13 return(LT, -) = 14 return(EQ, -) > = 16 return(GE, -) 15 其它字符 * 17 return(GT, -) to be continued  2018/11/28 《编译原理与技术》讲义

e.g. 2简单词法分析的转换图 : = 其它字符 ; 其它 简单扫描程序 状态转换程序 return(ASSIGN, -) 19 18 * 20 return(:, -) ; 21 return(;, -) 其它 22 Error() 简单扫描程序 状态转换程序 2018/11/28 《编译原理与技术》讲义

串与语言 语言 语言L={ s | s 是∑上任一字符串}, s称为语言L的一个句子。 字母表∑-符号/字符的非空有限集合 e.g. 二进制数的∑={0,1},而十进制数的∑={0,1,…,9} ∑*-表示∑上所有字符串的集合;L∑* 字符串- ∑上若干字符组成的有穷序列 2018/11/28 《编译原理与技术》讲义

串与语言 语言 字符串 e.g. ∑={0,1}上的0,1串(二进制数)如0111,10101;∑={a,b}上的 a, b, aa , abab, … 空串-, ∈ ∑*, 串长-|s|={s中所含字符的个数},| |=0 串的连接运算-任意串x,y,一般地,xyyx, x= x 串的前缀- 任意串x,从其第一个字符(最左字符)起的字符序列是其前缀。亦是。 e.g. x = abc, 则,a,ab,abc均是x的前缀 2018/11/28 《编译原理与技术》讲义

语言的运算 语言的运算 描述 运算 语言L和语言M 连接(积) LM={ xy| x∈L 且 y∈M } 合并(和) L∪M={x| x∈L 或 x∈M } 闭包 L*=L0∪L1∪L2∪…= 正闭包 L+=L1∪L2∪L3∪…= 2018/11/28 《编译原理与技术》讲义

e.g. L={a,b,…,z}, D={0,1,…,9}, B={ _ } 语言 e.g. L={a,b,…,z}, D={0,1,…,9}, B={ _ } L∪D = {…} LD={…} L*={…} L(L∪D)*={…} (L∪ B)(L∪D∪B)*={…} D+={…} 2018/11/28 《编译原理与技术》讲义

正规式与正规集 正规式-用于描述记号的构成规则 正规集-正规式描述的语言(匹配正规式的串集) 正规式 正规集  {} ∅ a∈ {a} 2018/11/28 《编译原理与技术》讲义

正规式与正规集 如果R和S是上的正规式,分别对应上的正规集L(R)和L(S),则 正规式 正规集 R | S L(R) ∪ L(S) 2018/11/28 《编译原理与技术》讲义

正规式与正规集 上的正规式,其运算有 | 、 · 和 * 运算符 优先级 结合性 或 | 低 左结合 连接 · 高 闭包 * 最高 2018/11/28 《编译原理与技术》讲义

正规式与正规集 上的正规式,满足如下代数定律-- 代数定律 描述 交换律 R | S = S | R 结合律 R | (S|T) = (R|S) | T R (ST) = (RS) T 分配律 R (S|T) = (RS) | (RT) (R|S) T = (RT) | (ST) 同一律  R = R  = R 2018/11/28 《编译原理与技术》讲义

正规式与正规集 上的正规式,也具有如下代数定律-- ( R* ) * = R * ( R |  ) * = R * R+ = R R* 2018/11/28 《编译原理与技术》讲义

正规式与正规集 e.g.3 设={a, b}, 则 正规式 正规集 a(a|b)* 上以a开头的串集 ba* 2018/11/28 《编译原理与技术》讲义

正规式与正规集 e.g.3 设={a, b},R = a(a|b)*,事实上有 L(R) = L( a(a|b)* ) = L(a) L((a|b)*) = L(a) ( L(a|b) )* = L(a) ( L(a) ∪L(b) )* = {a} ( {a} ∪ {b} )* = {a} ( { a, b } )* = {a} { , a, b, aa, ab, ba, bb, abb, … } = {a,aa, ab, aaa, aab, aba, abb, aabb, …} 即L(R)是 上以a开头的串集。 2018/11/28 《编译原理与技术》讲义

正规式与正规集 正规定义 d1  r1 d2  r2 … dn  rn 各个di的名字不同;每个ri是∪{d1 ,d2, … di-1}上的正规式 2018/11/28 《编译原理与技术》讲义

正规式与正规集 e.g.4 Pascal 标识符 letter  A | B | … | Z | a | b | … | z digit  0 | 1 | … | 9 id  letter ( letter | digit )* 英文字母集合 十进制数字集合 标识符的 正规定义 2018/11/28 《编译原理与技术》讲义

正规式与正规集 e.g.5 Pascal 无符号数 digit  0 | 1 | … | 9 digits  digit digit* 数字串 集合 e.g.5 Pascal 无符号数 digit  0 | 1 | … | 9 digits  digit digit* fraction  ‘.’ digits |  exponent  ( E (+ | - | ) ) digits |  num  digits fraction exponent 小数部分(可空) 指数部分(可空) 2018/11/28 《编译原理与技术》讲义

正规式与正规集 e.g.6 email 地址: qlzheng@ustc.edu.cn name  letter letter* field  ( ’.’ name) * email  name ‘@’ name field 2018/11/28 《编译原理与技术》讲义