# 编译原理-RhScript **Repository Path**: Rhythm-2019/rh-script ## Basic Information - **Project Name**: 编译原理-RhScript - **Description**: 本项目是作者在学习编译原理过程中的产出,欢迎大家指错 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2021-02-16 - **Last Updated**: 2021-04-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 编译原理实战——RhScript开发 > 作者:Rhythm-2019 > > 创建时间:2020.10.09 > > 邮箱:*rhythm_2019@163.com* logo.png ## Introdution 本项目是使用JavaScript编写的一款代码解析器,能够对代码进行翻译并执行,如下面代码 ``` func cal(int n) int { return n * n } func main(int arg) int { var res = cal(3) return 0; } ``` 最终能够运行并正确计算结果。为了实现代码解析,笔者参考编译原理相关文章、书籍和课程,通过下面四个模块协调实现 * 词法分析器 * 语法分析器 * 三地址代码翻译 * 代码生成及虚拟机 在每一部分的实现中笔者都有详细记录,大家如果有兴趣的话可以看一下下面的开发文档和仓库代码,也欢迎大家指误 ## Document 1. [词法分析器开发记录](/docs/词法分析器/词法分析器.md) 包含流、有穷状态机的实现,字符串、变量、整数、小鼠、关键字、操作数的识别 2. [语法分析器开发记录](/docs/语法分析器/语法分析器.md) 包含使用函数式编程实现表达式抽象语法树的构建,包含赋值语句、if语句等的识别及其语法树的生成 3. [三地址代码翻译器开发记录](/docs/三地址代码翻译/三地址代码翻译.md) 包含符号、符号表的实现,抽象语法树转换为三地址代码的实现 4. [操作码和虚拟机开发记录](/docs/操作码和虚拟机/操作码和虚拟机.md) 包含OpCode代码生成和虚拟机的简单实现 ## Record *2021.03.08*: 1. 已实现条件语句、函数,```for```、```while```等循环结构未完成 2. 现只支持四则运算和大小判断,其他操作未完成