chapter 3:Lexical Analysis 词法分析

本文介绍了词法分析的作用,它从源程序中识别逻辑单元(token)。讲解了正规式、状态转换图和有限状态自动机(NFA与DFA)的概念,包括ε-转换、Thompson构造法以及DFA的最小化过程。还探讨了从正规式构建DFA的方法,并提到了程序实现词法分析的两种方式:分支语句和switch-case。
摘要由CSDN通过智能技术生成

3.1 词法分析的作用

从源程序的字符串中找到logic unit逻辑单元,又称语法单元(token)
lexical analysis

  • token: 语法单元,以一个语法单元名和一个可选属性组成
    • <id, 2> : 标识符,其详细信息在符号表地址为2的地方
    • <number, 100>
    • <add_op>
  • pattern: 模式,一个token的词素可能有的形式,可以匹配一个或多个字符串,如“ 所有整数 ”的模式
  • lexeme :词素,源程序的一个字符序列,与某个模式匹配
    lexeme

tokens

3.2 正规式

正则表达式(正规式regular expression)表示一种特定的模式 pattern。

正规式不能表达所有字符串
如 anban

符合正规式r的所有字符串集合称为r定义的语言,写作L®。
其中包含所有的字符集合叫alphabet字母表,写作Σ
ε表示空字符串

三种运算符

  • 选择 | ,L(r|s) = L®∪L(s)
  • 连接,如ab,并列就表示连接, (a|b)c = (ac) | (bc)
  • 重复/闭包 , a = ε,a,aa,……

优先级: * > 连接 > |

转义字符(escape character) :\

定义正规式:

  • 可自定义:digit -> 0|1|2|3|4|5|6|7|8|9
    digit digit*
  • 可用的延伸定义
    【0-9】 = 0|1|2|3|4|5|6|7|8|9
    【A-Za-z】
    r+ = r r*
    r? = r | ε_

3.3 状态转换图

状态转换图:描述状态间的转换关系。
结点表示状态,边表示转换条件,双线圈表示结束状态
状态转换图例
延伸:程序实现(见文末)

3.5 有限状态自动机 finite state automata

有限自动机分类
NFA non-deterministic finite automata 非确定有限自动机
DFA deterministic finite automata 确定有限自动机

NFA

ε-转换:不消耗任何字符的转换
因为存在ε-转换,所以一个字串可能有多种接受路径(如下图abb被接收,可能在NFA中以abb,abεb接收)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值