# RegExp2StateMachine **Repository Path**: FlyingFatPenguin/RegExp2StateMachine ## Basic Information - **Project Name**: RegExp2StateMachine - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-04-07 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 正则表达式转有穷自动机 ## 简介 该项目的目标是,将一个写好的正则表达式转换为有穷自动机,并将该自动机显示出来。 ## 运行截图 ![演示](./img/v0.3_demo.png) ## 结构 该项目核心分为 3 个部分 1. 正则表达式解析模块 `Re.js` 其功能是将正则表达式解析为语法树 2. 状态机模块 `StateMachine.js` 该模块的功能是实现一个状态机,同时可以支持状态转化。 该状态机维护一个状态转化表,同时维护当前的状态。 3. 显示模块 该模块使用百度提供的 `echarts.min.js` 。 这是一个前端可视化工具库。 在这三个基础模块之间,有两个重要的转化函数。 分别是: 1. `addNodesToStateMachine` 该函数的功能是将正则表达式解析出来的语法树, 转化为状态添加到状态机中。 2. 显示模块 `Display.js` 该模块的功能是将状态机中的数据传递到 `echarts` 模块中。 ## 项目使用 ### 打开项目 访问 index.html 即可,可不需要服务器。 [项目](./src/html/index.html) ### 使用 1. 生成状态机 启动该项目后,在 `正则表达式` 中输入要匹配的正则表达式 如: ``` a(b*c)*|d ``` 点击生成状态机就可以生成对应的状态机。 2. 运行状态机 生成状态机后,在待测试的输入框中输入要尝试匹配的字符串。 如 ``` abcbcbbcbc ``` 点击运行就可以查看在状态机中,状态的转化过程。 如果状态最终有 `end`,则说明成功匹配。 ## 后续工作 1. 提供对 `?`, `+`, `[]`, `{}` 的完整支持。 2. 提供将状态机转化为最小状态机的功能。