- 1、本文档共63页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章节 词法分析(lly)4
第四章 词法分析 考查重点 基本概念 :正规式、正规集、有穷自动机(DFA与NFA) 基本方法: 由正规文法或自然语言描述求正规式 由正规式构造有穷自动机(FA) 确定化(NFA→DFA),DFA最小化 正规文法与有穷自动机转换 4.1 词法分析程序的设计 1、词法分析(lexical analysis) 逐个读入源程序字符并按照构词规则切分成一系列单词。 2、词法分析程序 单词符号一般可分为下列五种: 1、基本字(关键字):if, while, 等 2、标识符:如常量名、变量名、过程名等 3、常数(量):25, 3.1415, TRUE, “ABC”等 4、运算符:如 + - * / =等 5、界符:逗号,分号,括号等 词法分析工作独立的原因: 简化设计:词法分析比语法分析简单,如果与语法分析一起,会导致程序结构复杂。 改进编译效率:编译的大部分时间花在扫描字符区分单词上,专门的词法分析可加快编译速度。 增加编译系统的可移植性。 4.2 单词的描述工具 词法:?? 单词符号的文法,用来描述高级语言中的:标识符、常数、运算符、分界符、关键字 单词的描述工具:????????????? 正规文法??? ??? 正规式 一、正规文法与单词描述1、正规文法G=(VN,VT,P,S),P中每一产生式的形式都为: ? 右线性: A→aB A→a ? 左线性: A→Ba A→a 其中A∈VN ,B∈VN ,a∈VT 注:正规文法中可能既右线性文法又左线性文法?。 2、程序设计语言几类单词的描述 ?如:程序设计语言( l 表示a~z中的任一英文字母,d表示0~9中的任一数字。) 标识符 → l字母数字|l ?字母数字→ l|d|l字母数字|d字母数字 无符号整数 → d| d无符号整数 运算符 → +|-|*| / | = | 等号|等号 等号 → = 关键字 → if | while | else 无符号实数:(其中s表示正或负号) 〈无符号实数〉→ d 〈余留无符号数〉| . 〈十进小数〉 | e〈指数部分〉 〈余留无符号数〉→ d 〈余留无符号数〉| . 〈十进小数〉 | e〈指数部分〉|ε 〈十进小数〉 → d 〈余留十进小数〉 〈余留十进小数〉 → e〈指数部分〉| d 〈余留十进小数〉| ε 〈指数部分〉 → d 〈余留整指数〉| s〈整指数〉 〈整指数〉 → d 〈余留整指数〉 〈余留整指数〉 → d 〈余留整指数〉 |ε 如 25.55e+5 和 2.1 思考:以上文法为几型文法? 二、正规式和正规集 1、正规式和正规集递归定义: 字母表?,辅助表?‘={?,?,?,?,?,?,?} ?和?都是?上的正规式,它们所表示的 正规集分别为{?}和?; 任何a? ?,a是?上的一个正规式,它所 表示的正规集为{a}; 假定e1和e2都是?上的正规式,它们所表示的正规集分别为L(e1)和L(e2),那么,(e1), e1?e2, e1?e2, e1?也都是正规式,它们所表示的正规集分别为L(e1), L(e1)∪L(e2), L(e1)L(e2)和(L(e1))?。 仅由有限次使用上述三步骤而定义的表达式才是?上的正规式,仅由这些正规式所表示的字集才是?上的正规集。 例4.2 令?={a,b}, ?上的正规式和相应的正规集的例子有: 正规式 正规集(特点) a {a} a?b {a,b} ab {ab} a ? {? ,a,a, ……任意个a的串} (a?b)? {? ,a,b,aa,ab ……所有由a 和b组成的串} (a?b)(a?b) {aa,ab,ba,bb} (a?b)?(aa?bb)(a?b)? {??上所有含有两个相继 的a或两个相继的b组成 的串} 程序设计语言中的单词都可由正规式来定义: 例 ?={l,d},r=l(l ?d) ?定义的正规集: {l,ll,ld,ldd,……}(标识符) 例4.3 ?={d,.,e,+,-},则?上的正规式 dd?(.dd ?? ? )(e(+?- ??)dd? ??)表示的是无符号数的集合。其中d为0~9的数字。如:2,12.59, 3.6e2, 4.71e-1(参考P49) 2、若两个正规式e1和e2所表示的正规集相同,则说e1和e2等价,写作e1=e2。????????????? 例如: e1= (a|b), e
文档评论(0)