我自己写的 Python 超集语言发布了能用的版本

2021-09-02 10:09:31 +08:00
 abersheeran

经过这段时间的学习,我终于把编译原理捡回来了一点。然后重新写了 MingShe 现在基本上可以说能用了,细节上可以再优化。

用的 Python3.9 同款编译器( Guido 写的那个),所以不必担心与 Python 的兼容,Python 支持的,我支持,Python 不支持的,我也支持。

目前支持的三种额外特性都写在 README 了,分别是管道、偏函数以及三元运算符。

我随便写个程序展示一下管道和偏函数的效果。把这个写在一个文本文件里,使用命令 mingshe 你的文件路径 就能看到执行结果了。

10 |> range |> map(pow(?, 2), ?) |> list |> print

三元运算符这个就比较简单了,用的 C 语法,编译结果还是 Python 的 if-else 。主要是我觉得 if-else 太长了,a?b:c 这个短一些。

2041 次点击
所在节点    Python
7 条回复
hsfzxjy
2021-09-02 10:29:15 +08:00
好奇 MingShe 中文是什么
abersheeran
2021-09-02 10:35:40 +08:00
@hsfzxjy 《山海经》“鲜山多金玉,无草木,鲜水出焉,而北流注于伊水。其中多鸣蛇,其状如蛇而四翼,其音如磬,见则其邑大旱”。比 Python 多几个翅膀的🐍。
aloxaf
2021-09-02 10:43:40 +08:00
以前玩过个类似的: https://github.com/thautwarm/moshmosh
abersheeran
2021-09-02 10:50:39 +08:00
@aloxaf 其实不太一样,红姐这个我之前也看了,他是先让 Python 解析到 AST,然后修改 AST 去执行。mingshe 这个是直接从代码生成 AST,语法上更自由。我扩展的这三个 feature,红姐这个库是无论如何都解析不了了。
xuanwu
2021-09-02 12:16:06 +08:00
木兰是从代码生成 python AST,也支持三元运算符。重现项目开源在此: https://gitee.com/MulanRevive/mulan-rework
37Y37
2021-09-02 15:56:31 +08:00
虽然看不懂,但感觉很牛逼,支持一下
O5oz6z3
2021-09-02 18:21:48 +08:00
好家伙,血糖拉满。稍微跑个题……虽然看不懂 pegen 的语法,但感觉用途广泛,似乎语法糖、超集、DSL 、多国语言本地化、抛弃游标卡尺都能更容易实现,感觉这个自由度有点夸张?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/799393

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX