sompiler 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虚拟机的执行环境。