编译原理 词法分析

原文地址:编译原理 词法分析

编译原理

词法分析

词法分析的主要任务是从左至右逐个字符地对源程序进行扫描,产生一个个单词序列,用于语法分析。

1.正则表达式

对给定的字符集∑={c1,c2,...,cn},归纳定义:
1.空串ε是正则表达式
2.对于任意c∈∑,c是正则表达式
3.如果M和N是正则表达式,则下列表达式也是正则表达式
(1)选择 M|N={M,N}
(2)连接 MN={mn|m∈M,n∈N}
(3)闭包 M*={ε,M,MM,MMM,...}

2.正则表达式的扩展

(1)[c1-cn]==c1|c2|c3|...|cn
(2)e+==一个或多个e
(3)e?==零个或一个e
(4)"a*"==a*自身,不是a的Kleen闭包
(5)e{i,j}==i到j个e的连接

3.状态转换图

状态转换图有一组被称为“状态”的结点或圆圈。词法分析器在扫描输入串的过程中寻找和某个模式匹配的词素,而
转换图中的每个状态代表一个可能在这个过程中出现的情况。

对于

的状态转换图为

4.有穷自动机

有穷自动机是识别器,只能对每个可能的输入串简单地回答“是”或“否”。

(1)有穷自动机分两种

1)不确定的有穷自动机(NFA):对其边上的标号没有任何限制。一个符号标记离开同一状态的多条边,
并且空串ε也可以作为标号。
2)确定的有穷自动机(DFA):对于每个状态及自动机输入字母表中的每个符号,有且只有一条离开该状态、以该符
号为标号的边。

(2)不确定的有穷自动机(NFA)

一个不确定的有穷自动机(NFA)由以下几个部分组成:
1)一个有穷的状态集合S。
2)一个输入符号
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值