- SNL语言编译器,使用TypeScript实现
- SNL语言介绍链接
- 《编译程序的设计与实现》pdf书稿
- 《编译程序的设计与实现》随书C++源代码
- 完成了词法分析、语法分析、语义分析、目标代码生成四个阶段,每个步骤的结果都通过网页可视化查看
- 目标代码可以使用TM虚拟机代码运行
- 编译过程中,产生静态错误将会捕获并显示到网页上
- 进入
sompiler/
- 在终端运行
npm install
下载包 - 在终端运行
npm run dev
启动服务 - 进入网页端即可进行 词法分析、语法分析、语义分析、目标代码 生成
- 进入
TM Running Environment
,终端下运行main.exe
,输入文件名,即可执行目标代码
lexicon/
建立Token数据结构,词法符号LexicalType枚举结构;扫描源程序的字符序列,识别每一个单词机器种类,最后表示成Token形式。syntax/
采用递归下降法进行语法分析。建立语法树节点,以及各种需要用到的枚举等数据结构;扫描Token形式的源程序,最终形成语法树结构,返回语法树根节点。semantics/
建立类型的内部表示、标识符的内部表示、语义分析表项、枚举类型等数据结构;检查源程序的语法树有无语义错误,将语义信息存入语法树对应节点中。gencode/
建立TM寄存器枚举结构;将语法树以及对应的语义信息转换为TM汇编代码。TM Running Environment/
TM虚拟机的执行环境。