网站大量收购独家精品文档,联系QQ:2885784924

编译方法、技术与实践课件:词法分析与语法分析(一).pptx

编译方法、技术与实践课件:词法分析与语法分析(一).pptx

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

;

?词法分析概要

?正则表达式

?有限状态自动机

?从NFA到DFA的转换

?状态最小化算法;;;

?词法单元(Token):

O包含单元名(Token-name)和可选的属性值(attribute-value)

O单元名是表示某种词法单位抽象符号。语法分析器通过单元名即可确定词法单元序列的结构。;

词法单元示例;

?一个模式匹配多个词素时,必须通过属性来传递附加的信息。属性值将被用于语义分析、代码生成等阶段。

?不同的目的需要不同的属性。因此,属性值通常是一个结构化数据。

?词法单元id的属性

O词素、类型、第一次出现的位置、…;

词法单元示例(名和属性值);;

?词法分析概要

?正则表达式

?有限状态自动机

?从NFA到DFA的转换

?状态最小化算法;

?字母表:一个有限的符号集合

O二进制{0,1}

OASCII

OUnicode

O典型的字母表包括字母、数位和标点符号

?串:字母表中符号组成的一个有穷序列

O串s的长度|s|

O空串ε,长度为0的串

?语言:给定字母表上一个任意的可数的串的集合

O语法正确的C程序的集合,英语,汉语;

?和串有关的术语(banana)

O前缀:从串的尾部删除0个或多个符号后得到的串(ban、banana、ε)

O后缀:从串的开始处删除0个或多个符号后得到的串(nana、banana、ε)

O子串:删除串的某个前缀和某个后缀得到的串(banana、nan、ε)

O真前缀、真后缀、真子串:既不等于原串,也不等于空串的前缀、后缀、子串

O子序列:从原串中删除0个或者多个符号后得到的串(baan);

?串的运算

O连接(concatenation):x和y的连接时把y附加到x的后面形成的串,记作xy。

?x=dog,y=house,xy=doghouse

O指数运算(幂运算):s0=ε,s1=s,si=si-1s;

?x=dog,x0=ε,x1=dog,x3=dogdogdog;

?语言上的运算;

L={A,B,……,Z,a,b,……,z}

D={0,1,……,9}

LUD:{A,B,……,Z,a,b,……,z,0,1,……,9}LD:520个长度为2的串的集合

L4:所有由四个字母构成的串的集合

L*:所有字母构成的集合,包括ε。L(LUD)*:

D+:;

?正则表达式

O一种描述词素模式的重要表示方法

?正则表达式可以高效、简洁地描述处理词法单元时用到的模式类型

?可以描述所有通过对某个字母表上的符号应用运算符而得到的语言。其定义的集合叫做正则集合(regularset)

?每个正则表达式r可以描述一个语言L(r),也即其定义的正则集合

?例如,C语言标识符的语言,可以用如下正则表达式来表示:letter_(letter_|digit)*;

?正则表达式可以由较小的正则表达式递归构建(字母表Σ上的正则表达式的定义)

O基本部分

?ε是一个正则表达式,L(ε)={ε}

?如果a是Σ上的一个符号,那么a是正则表达式,L(a)={a}

O归纳步骤:

?选择:(r)|(s),L((r)|(s))=L(r)UL(s);

?连接:(r)(s),L((r)(s))=L(r)L(s);

?闭包:(r)*,L((r)*)=(L(r))*;

?括号:(r),L((r))=L(r)

?运算的优先级:*连接符|(a)|((b)*(c))可以改写为a|b*c;

?Σ={a,b}

?L(a|b)={a,b}

?L((a|b)(a|b))={aa,ab,ba,bb}

?L(a*)={ε,a,aa,aaa,aaaa,……}

?L((a|b)*)={ε,a,b,aa,ab,ba,bb,aaa,aab,……}

?L(a|a

文档评论(0)

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

中医资格证持证人

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

领域认证该用户于2023年05月10日上传了中医资格证

1亿VIP精品文档

相关文档