Skip to content

cgb-javascript-css-typescript/compiler-principles

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

《 编译原理实验 》

实验介绍:

实验一: 词法分析器内核

  1. 给正规式中添加连接符号
  2. 将中缀表达式转换为后缀表达式
  3. 使用 Thompson 算法,根据后缀表达式构建 NFA
  4. 使用子集构造法,根据 NFA 构建 DFA
  5. 使用子集划分法,根据 DFA 构建最小化 DFA

实验二: LL语法分析器

  1. 格式化输入语法
  2. 消除左递归(显式左递归和隐式左递归)
  3. 提取左因子
  4. 提取终结符和非终结符
  5. 构造first集和follow集
  6. 构造预测分析表
  7. LL(1)驱动器分析

实验三: LR语法分析器

  1. 初始化拓广文法
  2. 构造文法识别活前缀的DFA
  3. 调用实验二接口找到非终结符的 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 文件即可测试实验代码

其中部分实验测试数据放置于控制台,打开浏览器控制台输出处可见

About

编译原理实验-基于 TypeScript ,可在浏览器直接运行

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 83.2%
  • HTML 11.1%
  • CSS 5.4%
  • JavaScript 0.3%