#sylt #编程语言 #编译器

sylt-compiler

Sylt 编程语言的编译器

1 个不稳定版本

0.1.0 2021年8月13日

#1875 in 开发工具


用于 sylt

MIT 许可证

180KB
4K SLoC

Sylt-lang

The Sylt mascot

codecov

Sylt 是一种为游戏制作节而设计的静态检查和动态类型引用计数的编程语言。

为什么存在这个?为什么使用这个而不是语言 X?

哈哈!我们的标志客观上是最棒的。

入门指南

Sylt 完全用 Rust 编写。有两种主要方式可以使用它。

新建仓库

  1. $cargo new<游戏名称>
  2. 将以下内容添加到你的 Cargo.toml 中
[dependencies.sylt]
git = "https://github.com/FredTheDino/sylt-lang.git"
branch = "main"
features = [ "lingon" ]
  1. 将以下内容添加到你的 src/main.rs
use std::path::Path;

fn main() {
    let args = sylt::Args {
        file: Some(Path::new("game.sy").to_path_buf()),  // or read from args
        is_binary: false,
        compile_target: None,
        verbosity: 0,
        help: false,
    };

    sylt::run_file(&args, sylt::lib_bindings()).unwrap();
}
  1. 编写你的游戏!以下是一个帮助你开始的示例
x := 0.0
y := 0.0

init :: fn {
    l_bind_key("w", "up")
    l_bind_key("a", "left")
    l_bind_key("s", "down")
    l_bind_key("d", "right")

    l_bind_quit("quit")
    l_bind_key("ESCAPE", "quit")
}

update :: fn delta: float -> void {
    x += (l_input_value("right") - l_input_value("left")) * delta
    y += (l_input_value("up") - l_input_value("down")) * delta
}

draw :: fn {
    rgb :: (sin(l_time()), cos(l_time()), 0.0)
    l_gfx_rect! x, y, 1.0, 1.0, rgb
}

start :: fn {
    init!
    for _ in inf(0) {
        _
        if l_input_down("quit") {
            break
        }
        l_update!
        update! l_delta!
        draw!
        l_render!
    }
}
  1. $ cargo run 随心所欲。

分支

分支 Sylt 并进行修改,可以轻松修改语言、标准库以及 Lingon 的绑定,后两者可能更有趣。

  1. 设置分支(可选)
  2. 克隆仓库。
  3. $cargo run<your-game.sy>

基本用法

-v 标志也允许你查看一些调试输出。如果你想调试编译器和运行时,这可能很有帮助。

-vv 标志提供了更多的调试输出。不要期待看到你自己的程序中的任何内容!

结局

具有某种形式静态类型检查的语言,易于使用且速度快。性能应该足够好,以至于你不必真正担心它。

梦想着在游戏运行时自动重新编译和更新游戏。

依赖关系

~3.5MB
~43K SLoC