编译原理----第二章:词法分析



一、词法分析器的设计方法

1.词法分析器的处理结构

  • 第一种:词法分析器和语法分析器完全分开
  • 第二种:词法分析器作为语法分析器调用的子程序

2.单词符号的分类与输出形式

(1)分类

单词符号是程序语言的基本语法单位,具有确定的
语法意义。程序语言的单词符号通常可分为下面五种:
• 保留字:如C语言中的if、else、while和do等
–几乎所有的程序语言都禁止用户使用保留字作为标
识符
• 标识符:用户自己定义的常量名、变量名、方法名等
• 常数:布尔常数(true/false)、整型、实型等
• 运算符: “+”、“- ”、“ * ”、“/ ”、“>”、“<”等
• 界符:在语言中是作为语法上的分界符号使用的,如
“,”、“;”、“(”、“)”、“=”等

(2)输出形式

单词符号通常表示成如下的二元式:(单词种别,单词自身的值/入口指针)

3.状态转换图

(1)概念

在词法分析中,可以用状态转换图来识别单词。状态转
换图是状态有限的有向图,结点代表状态,用圆圈表示;结
点之间可由有向边连接,代表状态转换关系,有向边上可标
记字符,表示前一状态接受某一个字符之后的状态转移
在这里插入图片描述

(2)表示

• 初始状态用“ ○”表示
• 非终止状态用“○”表示
• 状态之间的跳转用“ ”(有向边)表示
• 终止状态用“◎”或“◎*”表示(‘*’表示将最后多读入的符号退回)

(3)编程

  • 含分支的状态
    • 对应一个switch()语句
    • 或对应一组if-else语句
  • 含回路的状态
    • 对应一个while语句
  • 终态对应一个return语句
    • 意味着从词法分析器返回
    到调用段,一般指返回到
    语法分析器

二、一个简单的词法分析器

(1)C语言子集对应的状态转换图

  • 对输入程序串预处理,即剔除多余的空白符(在实际的词法分析中,预处理还包括剔除注释和制表换行符等编辑性字符的工作)
  • 将保留字作为一类特殊的标识符来处理

(2)状态转换图的实现

  • 实现方法:让每个状态对应一小段程序

三、正规表达式与有限自动机

(1)前置概念

  • 正规表达式(简称正规式)是词法分析的形式化表示方法
    在这里插入图片描述
  • 字母表:语言元素的非空有穷集合,通常用‘Σ’表示
  • 符号:字母表中的每一个元素,也叫字符
  • 符号串:由符号组成的有穷序列(可以是0个),也叫字
  • 空字:长度为0的字,用‘ε’表示
  • 字的全体:所有字组成的集合,用“ Σ* ”表示
  • 空语言:不含任何字的语言{ },用‘Ф’表示

(2)正规式和正规集

  • 对于给定的字母表Σ,正规式和正规集定义为:
    • (1) ε和Ф都是Σ上的正规式,它们所表示的正规集分别为
    {ε}和Ф。
    • (2) 对于任一个符号a∈Σ,a是Σ上的一个正规式,它所表
    示的正规集为{a}。

  • 如果R和S是Σ上的正规式,它们所表示的正规集分别为L®
    和L(S),则:
    ① R | S是Σ上的正规式,它所表示的正规集为L®∪L(S);
    ② RS是Σ上的正规式,它所表示的正规集为L®L(S);
    ③ ® * 是Σ上的正规式,它所表示的正规集为(L®) * ;

  • 仅由有限次使用规则(1)~(3)得到的表达式是Σ上的正规式,
    它所表示的集合是Σ上的正规集

(3)正规式的运算

1)连接运算

  • 正规式的连接:RS = {α β | α∈R&β∈S}
    例:A={ab,bc} ,B={ac,cb },则:
    AB ={abac,abcb,bcac,bccb}
  • 正规式的幂运算:正规式自身的n次连接
    并约定: R0 = {ε}。

2)闭包运算

  • 集合R的闭包表示为R*,具体定义为:R*= R0∪R1∪R2∪R3∪…
  • 集合R的正闭包表示为R+,具体定义为:R+ = R1∪R2∪R3∪… = RR*
    显然: R*= R0∪R+

(4)正规式的运算性质

• (1)交换律: R | S = S | R
• (2)结合律: R | (S | T) = (R | S) | T;R(ST) = (RS)T
• (3)分配律: R(S | T) = RS | RT;(R | S)T = RT | ST
• (4)同一律: εR = Rε = R

(5)有限自动机(Finite Automation)

1)确定有限自动机(Deterministic FA)

在这里插入图片描述
Z包含于S

  • 对于一个自动机FA 而言,如果存在一条从初始状态到终止
    状态的通路,通路上有向边所识别的字符依次连接所得到
    的字符串为α, 则称α可以为FA 所接受或者α为FA 所识别
    (FA所识别的字)
  • FA 所能识别的字符串集为FA 所识别的语言,记为L(M)
  • FA的等价
    对于任意两个FA M和 FA M’, 如果L(M)=L(M’), 则称M和M’等价
    对于任意一个NFA M,一定存在一个DFA M’与其等价

2)非确定有限自动机(Nondeterministic FA)

在这里插入图片描述

总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值