编译方法、技术与实践 课件 第二章 词法分析与语法分析(一).pdf

编译方法、技术与实践 课件 第二章 词法分析与语法分析(一).pdf

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

第二章词法分析和语法分析(一)

提纲

◼词法分析概要

◼正则表达式

◼有限状态自动机

◼从NFA到DFA的转换

◼状态最小化算法

一个实例

词法分析

position=initial+rate*60

id,1=,id,2+,id,3*,number,

4

词法分析器作用

◼词法分析是读入源程序的输入字符、将它们组成词素,生成并输

出一个词法单元序列,每个词法单元对应于一个词素

◼常见的做法

由语法分析器调用,需要的时候不断读取、生成词法单元

可以避免额外的输入输出

◼在识别出词法单元之外,还会完成一些不需要生成词法单元的简

单处理,比如删除注释、将多个连续的空白字符压缩成一个字符

词法分析相关概念

◼词素(Lexeme)

源程序中的字符序列,它和某类词法单元的模式匹配,被词

法分析器识别为该词法单元的实例。

◼词法单元(Token):

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

value)

单元名是表示某种词法单位抽象符号。语法分析器通过单元

名即可确定词法单元序列的结构。

词法单元示例

词法单元的属性

◼一个模式匹配多个词素时,必须通过属性

来传递附加的信息。属性值将被用于语义

分析、代码生成等阶段。

◼不同的目的需要不同的属性。因此,属性

值通常是一个结构化数据。

◼词法单元id的属性

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

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

Specification

词素

第一步:如何描述词素?

词法单元

模式(Pattern)

•词法单元对应的词素可能

具有的形式

•可以用正则表达式来表示

提纲

◼词法分析概要

◼正则表达式

◼有限状态自动机

◼从NFA到DFA的转换

◼状态最小化算法

相关概念

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

二进制{0,1}

ASCII

Unicode

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

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

串s的长度|s|

空串ε,长度为0的串

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

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

相关概念

◼和串有关的术语(banana)

前缀:从串的尾部删除0个或多个符号后得到的串

(ban、banana、ε)

后缀:从串的开始处删除0个或多个符号后得到的串

(nana、banana、ε)

子串:删除串的某个前缀和某个后缀得到的串

(banana、nan、ε)

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

串的前缀、后缀、子串

子序列:从原串中删除0个或者多个符号后得到的串

(baan)

相关概念

◼串的运算

连接(concatenation):x和y的连接时把y附加

到x的后面形成的串,记作xy。

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

文档评论(0)

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

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

1亿VIP精品文档

相关文档