Skip to content

基于JavaScript和LR1分析的C语言智能错误处理编译器前端,包括词法分析器和语法分析器不包括语义分析。

Notifications You must be signed in to change notification settings

Vanghua/compiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

1.项目运行结果展示

项目亮点说明:

  1. 编译器前端设计的难点在于错误处理程序的设计。普通的gcc编译器在遇到错误时会直接抛出。本编译器暂时也是使用抛出错误设计方案,在LR1分析时如果在action表中找不到指定的动作,那么就根据action表中期望的动作进行错误修复方案的预测。

  2. 本编译器前端旨在设计自动修复功能。当遇到语法错误时能够自动修复,使用的是字符填充方法。如果遇到错误,那么预测修复结果,并自动修复,并保存此错误。如果预测结果为空,说明此错误无法通过填补法修正,此时立即抛出所有错误。或者程序运行结束抛出所有错误。

2.项目运行说明

2.1 准备nodejs环境

教程参考:https://blog.csdn.net/Small_Yogurt/article/details/104968169

2.2 测试npm

在命令行查看 npm -v 是否能显示版本号。nodejs安装时往往会携带npm。npm是一个类似于python中的pip,java中的maven的包管理工具。

2.3 安装依赖

git项目上传不会上传所有依赖,需要本地重新安装依赖。依赖的信息在package.json中描述。在当前文件夹下,即compiler_work文件夹下进入命令行,执行 npm install 即可。

2.4 运行项目

在安装依赖完毕后运行项目,在刚刚的命令行下继续输入 node server.js 即可运行本项目。运行后再浏览器中输入http://localhost:3000/show.html 查看是否有页面显示,如果有页面显示,说明项目运行成功

3.项目结构说明

3.1 外层文件说明

  • echarts.js 一个流行的客户端JavaScript绘图库,这里直接全部引入,避免使用npm安转,cdn引入可能存在版本问题。该库用于绘制语法分析器结果语法树。

  • main.js 词法分析器和语法分析器总控制程序,输入一个源文件,输出词法分析和语法分析后的tokens集合语法树

  • server.js 原生的nodejs http服务器程序,在本地监听3000端口,为项目在web端进行演示提供支持

  • show.html 项目源代码输入和输出结果演示

  • package.json nodejs项目的依赖表文件,主要是用于记录使用npm包管理工具安装了哪些依赖,也可以提供脚本映射

  • .idea文件夹 使用jetbrains系列开发环境打开本项目会生成该文件夹

3.2 内层文件说明

  • 词法分析器文件夹 负责词法分析模块,文件夹中有对应的readme说明

  • 语法分析器文件夹 负责语法分析模块,文件夹中有对应的readme说明

About

基于JavaScript和LR1分析的C语言智能错误处理编译器前端,包括词法分析器和语法分析器不包括语义分析。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages