#编程语言 #sylt #vm #运行 #游戏 #程序

sylt-machine

用于在西尔特编程语言中运行程序的虚拟机

1 个不稳定版本

0.1.0 2021年8月13日

#1025编程语言


用于 sylt

MIT 许可证

95KB
2K SLoC

西尔特语言

The Sylt mascot

codecov

西尔特是一种为游戏快闪而设计的静态检查和动态类型引用计数编程语言。

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

呃!我们客观上有最好的标志。

入门

西尔特完全用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
~44K SLoC