- 1、本文档共96页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
哈工大编译原理词法分析
词法分析 第三章 词法分析 词法分析器(Scanner)的功能 正规表达式 状态转换图 词法分析器的设计与实现 有穷自动机FA 3.1 词法分析(扫描)器的功能 功能:输入源程序,输出单词符号(token)。即:把构成源程序的字符串转换成单词符号的序列 单词符号的形式 按照最小的语义单位设计 通常表示为二元组: (单词种别,属性值 ) 关键——找出符号的分割符 1) 单词符号的表示 常用单词种别—分类(肖军模P53,杜P46) 各关键字(保留字、基本字),各种运算符,各种分界符——各用一个种别码标识 其它标识符——用一个种别码标识 整、实、字符常数——各用一个种别码标识 属性(值)——单词的值 常数的值,标识符的名字等 保留字、运算符、分界符的属性值可以省略 例 3-1: 单词符号序列while(*pointer!=\0){pointer++;} while (WHILE, _ ) ( (SLP, _ ) * (FETCH, _ ) pointer (IDN, 符号表入口指针) != (RELOP, NE ) \0 (CONST, 0 ) ) (SRP, _ ) { (LP, _ ) pointer (IDN, 符号表入口指针) ++ (INC, _ ) ; (SEMI, _ ) } (RP, _ ) 2)相关问题 超前扫描 双字符运算符(**, /*,:=,…) DO 90 k=1,10 DO 90 k=1.10 预处理问题 剔除源程序中的无用符号、空格、换行、注释等 扫描器的运行方式 作为独立的遍:简单,但需增加额外的开销 作为独立的子程序:节省内存 扫描器作为独立的子程序 2)相关问题 符号表的存储 线性表 哈希表 发现词法错误 行、列计数 发现并定位词法错误 一种符号表的数据结构 2)相关问题 输入缓冲区 2)相关问题 双缓冲区问题__超前扫描导致的效率问题 3.2 记号的描述__正规(表达)式 例:标识符的文法描述 约定:用digit表示数字:0,1,2,…,9; 用letter表示字母:A,B,…,Z,a,b,…,z G =({digit,letter}, {S}, P, S) S→letter L→letter|letter T S→S digit T→Letter T|letter S→S letter T→digit T|digit 左线性 右线性 表示集合:{letter}{letter,digit}* 1) 正规式:正规语言的另一种描述方法 例3-2:标识符的另一种表示 letter(letter|digit)* | 表示或 * 表示Kleene闭包 Letter和(letter|digit)*的并列表示两者的连接 正规式 r 表示正规集,相应的正规集记为 L(r) 正规(表达)式(Regular Expression——RE) 设∑是一个字母表, ⑴ Φ是∑上的RE,L(Φ)=Φ; ⑵ ε是∑上的RE,L(ε)={ε}; ⑶ 对于?a∈∑,a是RE,L(a)={a}; ⑷如果r和s是RE,L(r)=R,L(s)=S,则: r与s的“和” (r|s)是RE,L(r|s)=R∪S; r与s的“乘积” (rs)是RE,L(rs)=RS; r的克林闭包(r*)是RE,L(r*)=R*。 ⑸ 只有满足⑴、⑵、⑶、⑷的才是RE。 运算的优先级 运算优先级和结合性: *高于“连接” 和| , “连接” 高于 | |具有交换律、结合律 “连接” 具有结合律、和对|的分配律 ( )指定优先关系 意义清楚时,括号可以省略 例:L(a(a|b)*(ε|((.|_)(a|b)(a|b)*))) {a}{a,b}*({ε}∪{.,_}{a,b}{a,b}* ) 2) 正规文法与正规式 正规文法与正规式等价 对任何正规文法,存在定义同一语言的正规式 对任何正规式,存在生成同一语言的正规文法 例 3-3 标识符定义的转换 引入 S S→letter (letter|digit)* 引入A消除闭包 S→letter A A→(letter|digit)A|ε 执行连接对|的分配律 S→letter A A→letter A|digit A|ε 例3-4正规式到正规文法的转换 a(a|b)*(ε|((.|_)(a|b)(a|b)*)) = a(a|b)* |a(a|b)*.(a(a|b)*|b(a|b)*) |a
您可能关注的文档
- 同济版大学物理上册角动量角动量守恒定律.ppt
- 同济大学数字信号处理课件离散傅里叶变换的性质.ppt
- 名词性从句基础.ppt
- 可编程接口芯片及其与CPU的接口西北工业大学微机原理PPT.ppt
- 同济版高数下.ppt
- 合工大高鸿宾有机化学版课件烯烃a.ppt
- 名顾垂直指挥横向联络培训.ppt
- 向量与矩阵的运算.ppt
- 后向通道及接口.ppt
- 向量法.ppt
- 2023-2024学年广东省深圳市龙岗区高二(上)期末物理试卷(含答案).pdf
- 2023-2024学年贵州省贵阳市普通中学高一(下)期末物理试卷(含答案).pdf
- 21.《大自然的声音》课件(共45张PPT).pptx
- 2023年江西省吉安市吉安县小升初数学试卷(含答案).pdf
- 2024-2025学年广东省清远市九校联考高一(上)期中物理试卷(含答案).pdf
- 广东省珠海市六校联考2024-2025学年高二上学期11月期中考试语文试题.pdf
- 2024-2025学年语文六年级上册第4单元-单元素养测试(含答案).pdf
- 2024-2025学年重庆八中高三(上)月考物理试卷(10月份)(含答案).pdf
- 安徽省安庆市潜山市北片学校联考2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 贵州省部分校2024-2025学年九年级上学期期中联考数学试题(含答案).pdf
文档评论(0)