词法
最后更新于:2022-04-02 04:07:46
[TOC]
## 词法
- 词法就是构词的方法(例如:有哪些词性?有哪些字母?有哪些词语?)
- 编译器制作过程中我们通常用**正则表达式**来表述词法;然后用**状态机**
来实现正则表达式
## 串和语言
- 字母表( alphabe):语言L允许的所有字符(如:ansi,utf8)
- 串( string)是语言L字母表中字母的一个有穷序列;通常用希腊字母Ƹ代表**空串**
- 不可能所有的串都是语言支持的,因此我们通常用一些约束规则来描述串,其中就有正则表达式
## 词法分析器的目标
- 给定程序语言(L)以及所有L支持的词汇,从中找出这些词汇并为他们标注词性
- 如果源代码中有语言(L)不支持的词汇,报错并提示用户
## 正则表达式
- 用于正则语言(一种形式语言)的词法;用一串字符串来描述正则语言L接受哪些词语,而不需要理解这些词语
- 最早由 Kleene提出,在Unix釆用后被大众认可(grep,sed等
- 正则语言可以被确定、有限状态的自动机理解
## 最简问题:区分关键词和变量名
- 关键词和变量名都以字母下划线开头,但又有所区别
- 正则表示 `[_a-zA-Z][a-zA-Z0-9]*`(解释:开头为_和字母的字符串)
- 状态机描述
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/20/83/20830e94aec20ee2b5c1f4c03764afb5_800x192.png)
';