- 给正规式中添加连接符号
- 将中缀表达式转换为后缀表达式
- 使用 Thompson 算法,根据后缀表达式构建 NFA
- 使用子集构造法,根据 NFA 构建 DFA
- 使用子集划分法,根据 DFA 构建最小化 DFA
- 格式化输入语法
- 消除左递归(显式左递归和隐式左递归)
- 提取左因子
- 提取终结符和非终结符
- 构造first集和follow集
- 构造预测分析表
- LL(1)驱动器分析
- 初始化拓广文法
- 构造文法识别活前缀的DFA
- 调用实验二接口找到非终结符的 first 集和 follow 集
--- dist // 打包路径
------ main.js // 压缩代码
--- node_modules // 外部依赖
--- src // 项目主路径
------ css // 样式文件
------ enum // 常量配置
------ libs // 主路径
--------- Analysis.ts // 语法分析类
--------- CFG.ts // 上下文无关文法类
--------- DFA.ts // DFA 操作类
--------- NFA.ts // NFA 操作类
--------- RegExp.ts // 正规式操作类
--------- State.ts // 节点状态类
------ utils // 工具函数文件
------ index.html // 页面文件
------ index.ts // 打包入口文件
--- test // 测试文件目录
------ cfg_test // CFG 语法文件
------ sentence_test // 测试语句文件
--- package.json // 依赖配置文件
--- tsconfig.json // typescript 配置文件
--- webpack.config.js // webpack 配置文件
本实验使用 TypeScript + Webpack 进行项目代码开发,打开 src 目录下的 index.html 文件即可测试实验代码
其中部分实验测试数据放置于控制台,打开浏览器控制台输出处可见