#class #compiler #expressions #variables #scope #definition #rei

bin+lib reic

一 个 即用即装的编译器

1 个 不稳定版本

0.1.0 2022年8月4日

#866编程语言

自定义许可证

43KB
898

Rei

一 个 即用即装的编程语言。

表达式

Rei 由一系列有组织的表达式组成。

函数、类、数据、特质定义总是唯一的且位置无关。这意味着你可以在其他所有内容下方定义一个函数,但它仍然对所有上方的内容可见。它们也不能被阴影化,如果你尝试重新定义一个函数、类等,你会得到一个重复错误。

这不同于变量定义表达式。变量使用 vardef 关键字定义,let, mut, const, static 类似于 Rust 和 v。但变量可以在同一个作用域中被阴影化和重新定义。

一切皆表达式

技术上,一切皆表达式。一个表达式计算出一个值。"语句" 是一种特殊的表达式,其计算结果为 ()。但在 rei 中,我们不区分 "语句" 和 "表达式"。相反,未分配给变量或未在作用域结束时返回的表达式 simply 被丢弃。

从这个意义上说,rei 可以被视为一种面向数据、函数式编程语言。它提供了面向对象编程、模板和元编程的选项。Rei 的目的是给你最大的自由度来高效处理数据并快速编写逻辑。先写起来,优化之后再说。尽管编译器在处理空值和借用规则方面非常 "严格",就像 rustc 一样。

一个例子

fn get_data() -> uint {
    // expression evaluates to (), since mut var definition expr
    mut x = 1

    // expression evaluates to (), since scoped if expr
    for i in 0..10 {
        // expression evaluates to (), since ident ~ operator
        x++
    }

    // expression evaluates to x (identifier)
    // IDE parse warning: ditched non-trivial expr return
    x

    // expression evaluates to x (identifier)
    x
}

Reidoc

你可以在可哈希位置使用哈希注释。像 Rust 一样,在文件开头、函数表达式之前以及其他 "非平凡"、"导出" 块之前。不包括未导出的局部表达式。如果变量定义是导出的,它也可以有哈希注释。

依赖项

~6.5MB
~98K SLoC