#python #repl #pyo3 #exolang

程序+库 mangle

可以将任何 utf8 文本视为有效代码并从中返回一些结果的 exolang

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 编程语言

MIT 许可证

15KB
228

Website Pypi Crates.io Chat with me on irc GitHub license CircleCI Build Status codecov

工作进展中:这是一个正在进行中的项目,目前还没有任何功能可用

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": "abird"

字符串本身是解释器在运行时解码的整数栈。您可以通过对其变量的增加来向栈中添加整数。

工作进行中...

运算符

运算符由单词长度定义。以下是该语言上的运算符表

单词长度 运算符 语法 示例 描述
1
2 赋值 OP 接收者 is cat fat 将变量 cat 赋值为 3
3
4
5
6
7
8
9
10
11

但是空间是关键字吗?哈哈?

嗯...在某些解释中是的,我想我之前撒谎了,对此表示歉意。您仍然可以通过传递 -F 参数来更改单词分隔符(类似于 awk 中的字段分隔符)为任何其他字符。

依赖项

~7–17MB
~236K SLoC