#sylt #programming-language #developing #proc-macro

macro sylt-macro

用于开发sylt编程语言的过程宏

1个不稳定版本

0.1.0 2021年8月13日

9#sylt

每月下载量 48
用于 7 个crate(直接使用4个)

MIT 许可证

20KB
580

Sylt语言

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>

基本用法

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

- 标志提供更多的调试输出。不要指望看到您自己的程序中的任何内容!

结局

一种具有某种形式静态类型检查的语言,工作起来既简单又快捷。性能应该足够好,以至于您不必真正担心它。

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

依赖项

~1.5MB
~36K SLoC