5 个版本
0.0.5 | 2022年4月6日 |
---|---|
0.0.4 | 2022年4月5日 |
0.0.3 | 2022年4月5日 |
0.0.2 | 2022年4月2日 |
0.0.1 | 2022年4月2日 |
#1009 in 编程语言
15KB
228 行
工作进展中:这是一个正在进行中的项目,目前还没有任何功能可用
Mangle
Mangle 是一种 exolang(一种仅供娱乐的脚本编程语言),没有保留关键字,可以在它上面运行任何与超过2个空格分隔的单词兼容的 utf8 文本。
安装
cargo安装 mangle
Python 绑定
Python 绑定适用于 python > 3.7。您可以使用以下命令安装它们:
pip install mangle
然后您可以从 Python 开始评估 mangle,使用以下命令:
import mangle
mangle.eval("cat is fat")
>> '5'
更多信息请参阅:https://github.com/matheusfillipe/mangle/tree/master/python
工作原理
这里只有标签、变量和运算符。所有变量都是全局作用域的,没有局部变量、类或其他复杂功能。所有变量都是动态类型的,并且可以重写。
句子
唯一的作用域类型是句子。句子就像英文句子一样,任何在标点符号之前的文本: .,;:?!
。所有其他符号将被解释为变量名、运算符、标签、字符串或数字。
如果一个文本没有任何这些标点符号,它将作为一个单独的句子执行。
句子标签
句子的标签是除第一个句子外,标点符号之前的最后一个单词。标签是创建此语言中的子程序的方式。它们定义了一个作用域,其中包含一个可以从中跳转到其他子程序的代码体。
解释代码的第一个句子相当于其他语言的 main 函数,因此它不需要标签。如果第一个句子没有调用任何函数,则其他所有标签将按顺序执行,直到退出或跳转到另一个标签。
数据类型
唯一的数据类型是字符串、整数和栈。
整数
单词的 length of a word - 1
定义了其数值。例如 "a" 被评估为 0,而 "cat" 被评估为 2。
字符串
单词本身也可以被解释为字符串。不过,由于这样会将其读取为单个单词,所以无法轻松构建多单词字符串,例如 "a bird": "a
和 bird"
。
栈
字符串本身是解释器在运行时解码的整数栈。您可以通过对其变量的增加来向栈中添加整数。
工作进行中...
运算符
运算符由单词长度定义。以下是该语言上的运算符表
单词长度 | 运算符 | 语法 | 示例 | 描述 |
---|---|---|---|---|
1 | ||||
2 | 赋值 | OP 接收者 值 | is cat fat | 将变量 cat 赋值为 3 |
3 | ||||
4 | ||||
5 | ||||
6 | ||||
7 | ||||
8 | ||||
9 | ||||
10 | ||||
11 |
但是空间是关键字吗?哈哈?
嗯...在某些解释中是的,我想我之前撒谎了,对此表示歉意。您仍然可以通过传递 -F
参数来更改单词分隔符(类似于 awk 中的字段分隔符)为任何其他字符。
依赖项
~7–17MB
~236K SLoC