关于服务
翻译需要一个可用的猴子编程语言解释器——来自书籍《用Go编写解释器》和其续集《用Go编写编译器》的教育语言?我从头开始组装整个管道,并扩展参考实现,增加作者留作练习的功能。
你将获得:
— 一个手写的词法分析器,将源代码转换为令牌,并跟踪位置以提供可读的错误信息。
— 一个Pratt解析器(按操作符优先级自上而下解析),构建一个干净的类型化抽象语法树(AST)。
— 一个树遍历求值器,支持整数、布尔值、字符串、数组、哈希、第一类函数和闭包。
— 一个编译器,将代码编译为字节码和基于栈的虚拟机以实现真实速度:符号表、常量池、帧处理。
— 内置函数,`let`/`if`/`return`,高阶函数和一个方便的REPL。
根据请求的扩展:浮点数,`while`/`for`循环,后缀和复合运算符,带引号/去引号的宏,模块导入,垃圾回收实验,错误值和更丰富的内置标准库函数。
每个构建都附带一整套基于表驱动的测试、干净的提交历史和一个README,逐步引导你通过每个阶段,让你从代码中持续学习。我可以用Go实现,或将设计移植到其他主机语言。这是学生、教师和任何需要一个小而功能齐全的实验语言的人的绝佳选择。
你将获得:
— 一个手写的词法分析器,将源代码转换为令牌,并跟踪位置以提供可读的错误信息。
— 一个Pratt解析器(按操作符优先级自上而下解析),构建一个干净的类型化抽象语法树(AST)。
— 一个树遍历求值器,支持整数、布尔值、字符串、数组、哈希、第一类函数和闭包。
— 一个编译器,将代码编译为字节码和基于栈的虚拟机以实现真实速度:符号表、常量池、帧处理。
— 内置函数,`let`/`if`/`return`,高阶函数和一个方便的REPL。
根据请求的扩展:浮点数,`while`/`for`循环,后缀和复合运算符,带引号/去引号的宏,模块导入,垃圾回收实验,错误值和更丰富的内置标准库函数。
每个构建都附带一整套基于表驱动的测试、干净的提交历史和一个README,逐步引导你通过每个阶段,让你从代码中持续学习。我可以用Go实现,或将设计移植到其他主机语言。这是学生、教师和任何需要一个小而功能齐全的实验语言的人的绝佳选择。