手工打造编译器之词法分析2
来源:互联网 发布:像差 知乎 编辑:程序博客网 时间:2024/09/21 09:21
1.5 正则表达式和有限自动机有限自动机是状态的集合以及连接这些状态的边,边上的权值是转化的条件。每个有限自动机有初态和终态。典型的有限自动机如下图
初态为蓝色,终态为红色.
正则表达式和有限自动机是一一对应的,而且有限自动机易于编程实现,所以判断一个字符串是否符合某个正则表达式可以用有限自动机来判断。
1.6 正则表达式向有限自动机的转换
Step 1:去掉特殊符号'.','-','\'。这些符号用字符集合代替,如a-z,转化为从a到z的字符集合。
Step 2:根据符号优先级,生成逆波兰表达式。
Step 3:根据逆波兰表达式组装成有限自动机。
下表是典型的正则表达式向有限自动机的转换的中间步骤。
breakRegExp
RegExp_to_revPolishExp
[_a-zA-Z][_a-zA-Z0-9]*
symbol:
[_a-zA-Z]
act: e_cat
symbol:
[_a-zA-Z0-9]
act: e_rep_0ormore
symbol:
[_a-zA-Z]
symbol:
[_a-zA-Z0-9]
act: e_rep_0ormore
act: e_cat
[0-9]*
0123456789
act: e_rep_0ormore
symbol:
0123456789
act: e_rep_0ormore
([0-9]+/.[0-9]*)|
([0-9]*/.[0-9]+)
act: e_lParenth
symbol:
0123456789
act: e_rep_1ormore
act: e_cat
symbol:
.
act: e_cat
symbol:
0123456789
act: e_rep_0ormore
act: e_rParenth
act: e_alt
act: e_lParenth
symbol:
0123456789
act: e_rep_0ormore
act: e_cat
symbol:
.
act: e_cat
symbol:
0123456789
act: e_rep_1ormore
act: e_rParenth
symbol:
0123456789
act: e_rep_1ormore
symbol:
.
act: e_cat
symbol:
0123456789
act: e_rep_0ormore
act: e_cat
symbol:
0123456789
act: e_rep_0ormore
symbol:
.
act: e_cat
symbol:
0123456789
act: e_rep_1ormore
act: e_cat
act: e_alt
- 手工打造编译器之词法分析2
- 手工打造编译器之词法分析1
- 手工打造编译器之词法分析器3
- 手工打造编译器之语义分析2
- 手工打造编译器之语义分析1
- 手工打造编译器之语法分析器2
- 编译器之词法分析c
- 手工打造编译器之语法分析器1
- 手工打造编译器之语法分析器3
- 手工打造编译器序
- Tiny语言编译器开发之词法分析
- MYC编译器源码之词法分析
- 自己动手写编译器之TINY编译器词法分析
- C编译器剖析_2.2 词法分析
- 编译器-词法分析
- 编译器设计:词法分析
- 词法分析学习-手工构词
- 编译器之词法分析器
- 手工打造编译器之词法分析1
- POJ 3498 March of the Penguins
- input输入框只允许中文汉字、数字、整数等
- dede的采集不好用 火车头2010才是王道
- 当前几个主要的Lucene中文分词器的比较
- 手工打造编译器之词法分析2
- 软件开发人员的出路
- 手工打造编译器之词法分析器3
- HTML 元素
- 关于C中指针和数组的一点学习心得
- MFC Programming Notes 1
- POJ 1698 Alice's Chance ( EK )
- bada的系统事件
- Filter 失效问题