词法分析器的主要任务:
1.主要是负责字符流到记号流的转换。
2.过滤源程序中的空白和注释字符。
3.将编译器生成的错误与源程序的位置系统起来。
词法分析器实现方法
1.正则表达式
通过编写正则表达式的语法规范通过自动生成器变为词法分析器。
正则表达式构造规则:
语法糖
两个正则表达式
R
1
R1
R1,
R
2
R2
R2等价,是指两个表达式描述完全相同的语言,即
R
1
R1
R1,
R
2
R2
R2代表同一正则集。
2. 有限状态自动机(FA finite automaton)
DFA (Deterministic Finite Automaton)
有限状态自动机能识别正则语言。
NFA (Nondeterministic Finite Automaton)
DFA 与 NFA
DFA 可视作有向图,用邻接矩阵、邻接表进行表示
3.NFA构建
由RE -> NFA 包含
- 2种直接构造
- 3种递归构造
实例演示:
括号最先算,选择的优先级比连接要高: