1 个不稳定版本
0.1.0 | 2024年2月19日 |
---|
#357 在 编程语言
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
) - 设置最大栈大小
从源代码构建
- 克隆存储库:
git clone https://github.com/ksp/ksplang.git
- 在
ksplang
目录下,运行cargo build -p ksplang-cli --release
- 现在你可以运行
target/release/ksplang-cli
在线解释器
解释器的在线版本以及一个简单的单步调试器位于 KSP 网页上。
贡献
如果你对参考实现、工具或描述有改进,请随时创建一个 issue 或 pull request。
不允许对语言进行更改,因为语言已经完美。
许可证
此代码可在 MIT 许可证下获得。有关详细信息,请参阅 LICENSE 文件。