C++ implementation of regular expression to minimal DFA conversion.
发布时间
阅读量:
阅读量
当前阶段,学校正在开设编译原理相关课程。为更深入掌握正则表达式向最小化DFA转换的实现过程,本人采用C++语言开发了相应程序。现将该程序及其所采用的实现方式进行分享,期望能够对同学们的学习提供一定帮助。
完整代码:https://github.com/GgBondXiang/RexToMinDFA
本文主要从以下几个方面进行讲解,建议搭配代码一起看
- 正则表达式
-
- 操作数
- 运算符
-
算法流程
-
- 1.正则表达式的预处理阶段
- 2.将中缀表达式转换为后缀表达式
- 3.依据后缀表达式构建NFA
- 4.将NFA转换为DFA
- 5.对DFA进行最小化处理
-
正则表达式
操作数
本程序所支持的运算对象限定为小写英文字母‘a’至‘z’之间的字符。
运算符
正则表达式由三种运算符构成
1)“|”表示或运算
2)“.”为连接运算符,通常情况下可以省略,在本程序中采用“&”作为替代符号
3)“*”代表闭包运算,意味着该符号所标识的元素可以重复出现任意有限次数
对于运算符的优先级设定,遵循以下顺序:首先执行“*”操作,随后进行“.”连接,最后处理“|”或运算。
算法流程
1.正则表达式的预处理
预处理过程主要是将表达
全部评论 (0)
还没有任何评论哟~
