编译原理课件Chapter4.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理课件Chapter4

第四章 词法分析 4.1 词法分析程序的设计 (1)任务 ①主要任务 逐个字符地扫描源程序,识别单词符号(终结符)。在拼单词时作词法检查。每识别出一个单词,就翻译成相应的机内表示(语法分析时的终结符)。 ②删去注解、空格、续行符等 ③插入某些信息 为了语法分析出错处理的错误定位,要为源程序增加行号(在列表文件中可见)。 有些语言(如FORTRAN)无语句结束符“;”,就要插入句末符。 ④输出源程序清单 (2)实现方式 ①相对独立方式 ②完全独立方式 (3)单词类别及其输出形式 单词可作各种分类,典型地分为5类: ①保留字:AND,BEGIN,FOR,TYPE,VAR等(个数确定,可全体编为一类,称作“一符一类”) ②标识符:用户定义的常量名、变量名、过程名和类型名(个数不确定,作为一类) ③常量:12,1997,4.14,‘A’,‘scnu’等(个数不确定,按类型分类) ④运算符 +,-,*,/, >,>=,<,<=,#等(个数确定,“一符一类”) ⑤界限符 ;,()等(个数确定,“一符一类”) 词法分析程序输出的单词符号通常用二元式 表示:(单词种别,单词自身的值) 单词种别:表示单词种类,常用整数编码,它是语法分析需要的 单词自身的值:是编译中其他阶段所需要的信息 (4)词法分析程序的设计过程 3G 3型文法 RE  正则表达式 SG  状态图 εDFA ε确定自动机 εNFA ε非确定自动机 DFA  确定自动机 NFA  非确定自动机 minFA 最小确定自动机 Scanner 扫描器 4.2 正则表达式(正则式)和 正则集(正则语言) (1)正规式和正规集 定义4.1(正则式和正则集) 在字母表V上定义的正则式及其描述的正则 集递归地定义如下: (1)Φ是正则式,表示空集; (2)ε是正则式,表示{ε}; (3)每个a∈V是正则式,表示{a}; (4) 若P和Q是正则式,分别表示正则集L(P)和L(Q),则 ① P|Q是正则式,表示L(P)∪L(Q) “或” ② PQ是正则式,表示L(P)L(Q) “联结” ③ P*是正则式,表示L(P)*   “星闭包” ④ (P)是正则式,表示L(P) (5) 仅由有限次使用上述步骤得到的正则式, 才是V上的正则式。运算的优先次序为:* . |(其中“|”可写作“+”)。 例:设V={a,b,0,1}, 则 a|b (a|b)(0|1) ba* (a|b)(a|b|0|1)*  (0|1)(0|1)*   例:对文法G: S→aA A→bS A→a 不易看出其描述的语言。由正则式就容易得多:         例:C语言中无符号实数的正则式: dd* (.dd*|ε)(e(+|-|ε)dd*|ε) (d为0-9中的数字) 在前面加上(+|-|ε)后,就是符号实数的定义。 例:设V={0,1}, (11|0)*(00|1)* 定义的语言 就要用心分析了。可见,正则式也并非一目了 然的。 定义4.2 对正则式P和Q,若L(P)=L(Q), 则P与Q等价,记为P=Q。 ? 例: P=b(ab)* Q=(ba)*b 定理4.1 对正则式P,Q,R,以下关系成立: (1) P|Q=Q|P    “或”交换律 (2) P|(Q|R)=(P|Q)|R “或”结合律 (3) P(QR)=(PQ)R   “联结”结合律 (4) P(Q|R)=PQ|PR “联结”对“或”的左分配律 (5) (Q|R)P=QP|RP “联结”对“或”的右分配律 (6) εP=Pε=P (7) ΦP=PΦ=Φ Φ|P=P|Φ=P (2) 由正则文法构造正则式(3G->RE) 定理4.2 正则文法规则 U→a1W1|a2W2|…|anWn|b1|b2|…|bm 的等价正则式方程为其中 U=(b1+b2+…+bm)+a1W1+a2W2+…+anWn 其中Wi是正则变量 定理4.3 设X是正则变量,a和b是正则 式,且X=aX+b 则 X=a*b。 证:由定理4.2,正则式方程X=aX+b等 价于以下正则规则:X→aX|b 其定义的语言和正则式a*b一样,同为: {anb|n>=0} 定义4.4 n元正则式方程组的标准形式: X1=a10+a11X1+a12X2+ … +a1nXn X2=a20+a21X1+a22X2+ … +a2nXn … …

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档