6 个版本

0.0.6 2023 年 9 月 9 日
0.0.5 2023 年 9 月 9 日

#2365解析器实现

MIT 许可证

600KB
439

简介

rinha 的理想是创建一个可以在拥有 2 个核心和 2G RAM 的机器上运行的解释器或编译器。

您的解释器或编译器应使用称为 "抽象语法树" 的内容进行工作,该内容以 JSON 格式存储。这个抽象语法树将使用本存储库中可用的特定工具由我们生成。

您在这个任务中的责任是接收包含抽象语法树的 JSON,然后根据抽象语法树中提供的信息解释或编译程序。

简单来说

  1. 我们给您一个包含树的 JSON
  2. 您运行 JSON
  3. 您很高兴看到结果出现。

执行方式

之后将会添加执行方式

如何测试

要测试,您可以使用文件 files/fib.rinha 并使用我们提供的程序生成 JSON,或者您可以直接使用 files/fib.json 中的 JSON。

在竞赛过程中,我们会添加其他测试 :)

要求

您需要提交一个 PR,更改 PARTICIPANTS.md 文件,并添加一行新内容以及您的存储库。也许之后会有所改变(请注意)。

您的存储库需要在根目录下有一个图像,我们将构建排名时的图像。

规范

语言必须在以下文件上运行,即 rinha 指定的 AST JSON 文件 在此

  1. 文件必须从 /var/rinha/source.rinha.json 读取
  2. 如果您想手动读取 AST,也可以从 /var/rinha/source.rinha 读取

该语言是一种动态编程语言,如 JavaScript、Ruby 等。

编译器竞赛项目有一个 "JSON 解释器",它返回 AST,代码需要以不同的方式测试,例如除了斐波那契数列以外的其他算法。

示例

斐波那契数列示例

let fib = fn (n) => {
  if (n < 2) {
    n
  } else {
    fib(n - 1) + fib(n - 2)
  }
};

print("fib: " + fib(10))

竞赛

提交 PR 的截止日期是 9 月 23 日,之后将拒绝项目。

9 月 25 日之前将允许进行调整,您可以在测试发布后修复您的实现。

资源

以下是一些学习如何创建自己的解释器或编译器的有用资源

请注意,一些有用的视频和帖子将很快发布。

依赖项

~11-24MB
~333K SLoC