#区块链 #Chia #加密 #编程语言

应用程序 rue-cli

用于Rue编译器的CLI工具

3个不稳定版本

0.2.0 2024年8月4日
0.1.1 2024年7月6日
0.1.0 2024年7月6日

#980 in 魔法豆

Download history 202/week @ 2024-07-03 12/week @ 2024-07-10 5/week @ 2024-07-24 117/week @ 2024-07-31 13/week @ 2024-08-07

每月下载量135

Apache-2.0

345KB
8K SLoC

Rue语言

Rue是一种将编译成CLVM字节码的强类型编程语言。它被设计为Chialisp的替代品,用于编写Chia区块链的链上代码。

这是一个非常实验性的编译器,目前不应在生产环境中使用。尽管如此,您也可以尝试示例!

设置

首先,安装Rust并克隆此仓库。然后从仓库根目录运行以下命令来安装CLI

cargo install --path crates/rue-cli

现在您可以运行示例,例如

rue hello_world.rue
rue factorial.rue

您目前不能向程序传递参数,但是您也可以使用Chia开发工具运行

brun -x ff02ffff01ff018d48656c6c6f2c20776f726c6421ff0180 80

编译

有一系列编译器遍历用于构建最终的CLVM输出

源代码

目前,单个文件被用作Rue程序的单个文件源。它作为UTF-8编码的字符串读取到内存中。

词法分析器

然后,源文本被词法分析器分割成标记。每个标记代表诸如标点符号、字符串、标识符和关键字等事物。这样做是为了提高性能并在解析器阶段增强错误消息。

解析器

手写的递归下降解析器负责实现语言的语法。您从整个程序开始自顶向下,例如解析一系列函数,其中每个函数都有一个参数列表,等等。最终,您会得到一个包含整个程序分解成有意义段落的具体语法树(CST)。

AST

CST不适合编译器进行处理,因为它是无类型的,并且包含编译器不关心的标记,例如空白和关键字。因此,在这个阶段,CST被转换成抽象语法树(AST),它是我们关心的所有语法部分的强类型表示。但是,您仍然可以随时获取AST节点及其底层的CST节点,例如用于错误报告。

HIR

AST(抽象语法树)通过几步转换成HIR(高级中间表示)。首先,符号表被填充了函数声明。这允许你调用在评估代码之后定义的函数。接下来,函数本身被实际评估,将AST表达式转换为HIR节点。在这个阶段进行类型检查、名称解析和错误报告。

LIR

一旦构建了带类型的HIR,它就会被转换为一个形式更为简单的表示,所有语言结构都简化为它们的CLVM对应物。这是低级中间表示。在这个阶段应用优化,包括摇树(移除死代码)和表达式简化。

代码生成

最后,你可以通过一系列转换从LIR生成CLVM,并且在最后可以应用一些额外的优化。

依赖

~19–33MB
~625K SLoC