Advertisement

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)

还没有任何评论哟~