1 个不稳定版本

0.1.0 2024年2月19日

#357编程语言

MIT 许可证

5MB
1.5K SLoC

一个基于栈的编程语言,由33个人独立设计,包含33条指令。

介绍

这是 ksplang 的实现,这是最好的编程语言(正如捷克儿童故事中所证明的逻辑)。

著名的捷克儿童故事 Jak si pejsek s kočičkou dělali k svátku dort (英文翻译) 由Josef Čapek创作,讲述你可以通过加入许多好东西来制作最好的蛋糕。是的,这确实是正确的解释。我们决定通过编程语言进行实验来证明这一点。

我们是在 KSP 中这样做的,这是为高中生举办的捷克编程比赛。在第36届比赛的第一轮任务中,我们要求每位参赛者为基于栈的语言编写一个原始指令。结果是 ksplang,你现在看到的是其在 Rust 中的参考实现。

ksplang 解释器

此存储库包含一个可执行的 ksplang,可用于运行 ksplang 程序。输入作为空白分隔的数字(或 文本)在标准输入中提供。

示例用法

./ksplang program.ksplang < input.txt > output.txt

program.ksplang – ksplang 程序

pop ++

input.txt – 输入栈

41 12

output.txt – 结果

42

文本模式

解释器还可以以文本模式使用,将输入从文本转换为数字,并将输出从数字转换为文本(作为 Unicode 代码点)。您也可以分别使用 --text-input--text-output 只为此进行输入或输出。

echo -n "aaa" | ./ksplang -t program.ksplang
# prints "ab"

更多选项

  • --stats (-s) - 在标准错误上打印统计信息
  • --max-stack-size (-m) - 设置最大栈大小

从源代码构建

  1. 克隆存储库: git clone https://github.com/ksp/ksplang.git
  2. ksplang 目录下,运行 cargo build -p ksplang-cli --release
  3. 现在你可以运行 target/release/ksplang-cli

在线解释器

解释器的在线版本以及一个简单的单步调试器位于 KSP 网页上

贡献

如果你对参考实现、工具或描述有改进,请随时创建一个 issue 或 pull request。

不允许对语言进行更改,因为语言已经完美。

许可证

此代码可在 MIT 许可证下获得。有关详细信息,请参阅 LICENSE 文件。

依赖项