【北航编译原理笔记】2. 词法分析

同系列链接

【北航编译原理笔记】1. 基础知识
【北航编译原理笔记】2. 词法分析
【北航编译原理笔记】3. 语法分析
【北航编译原理笔记】4. 语义分析与符号表

词法分析

功能:
根据词法规则识别及组合单词,进行词法检查
对数字常数完成 数字字符串 -->二进制数值 转换
删去空格字符和注释

单词种类: 保留字, 标识符, 常数, 分界符
单词内部形式: 单词类别 + 单词值
单词类别: 按单词种类分类: 标识符, 无符号常数(整), 无符号浮点数, 布尔常数, 字符串常数, 保留字, 分界符.
保留字和分界符采用一符一类

常用状态图来作词法分析
先将正则表达式转化为非确定自动机(NFA: Non-deterministic Finite Automata)(存在某一个状态,对于同一个输入有不同的结果)
再将非确定自动机转化为确定自动机(DFA: Deterministic Finite Automata)
将确定自动机简化(直到不存在等价状态): 利用一致性状和蔓延性状态不断"分区",最终还在一个分区里的状态即可以简化
画图以及程序

状态图中: 双圈表示"终止符",圈内一般是非终止符,起始圈是新加进去的.

正则文法 和 正则表达式 的相互转化:

  1. A → x B , B → y       ⟺ A → x y A\rightarrow xB, B\rightarrow y \ \ \ \ \ \Longleftrightarrow A \rightarrow xy AxB,By     Axy.
  2. A → x A   ∣   y               ⟺ A → x ∗ y A\rightarrow xA\ |\ y\ \ \ \ \ \ \ \ \ \ \ \ \ \Longleftrightarrow A \rightarrow x^*y AxA  y             Axy.
  3. A → x , A → y          ⟺ A → x   ∣   y A\rightarrow x, A\rightarrow y\ \ \ \ \ \ \ \ \Longleftrightarrow A \rightarrow x\ |\ y Ax,Ay        Ax  y.

对于二义性问题:

  1. 最长匹配原则, 有更长则识别更长的
  2. 优先匹配原则, 规则序列越前优先级越高, 写规则序列时要注意

NFA的确定化:
集合 I I I ε − \varepsilon- ε闭包: ( M M M是自动机, I I I M M M的状态集一个子集)
s ∈ I s \in I sI,则 s ∈ ε − C l o s u r e ( I ) s \in \varepsilon-Closure(I) sεClosure(I).
s ∈ I s \in I sI,则从 s s s出发经过任意条 ε \varepsilon ε弧而能到达的任何状态都属于 ε − C l o s u r e ( I ) \varepsilon-Closure(I) εClosure(I).
ε − C l o u r e ( I ) \varepsilon-Cloure(I) εCloure(I)是集合 I I I ε − \varepsilon- ε闭包:
J J J是从 I I I出发,沿 a a a弧到达的状态所组成的集合.
I a = ε − C l o s u r e ( J ) I_a = \varepsilon-Closure(J) Ia=εClosure(J).

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值