V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xuanwu
V2EX  ›  推广

木兰编程语言 0.0.14.7:功能覆盖初版用户手册; Gitee Go 流水线尝鲜

  •  
  •   xuanwu · 2020-11-02 11:17:59 +08:00 · 786 次点击
    这是一个创建于 1272 天前的主题,其中的信息可能已经有所发展或是发生改变。

    知乎原文:木兰编程语言 0.0.14.7:功能覆盖初版用户手册; Gitee Go 流水线尝鲜

    木兰编程语言 在 2020 年度 OSC 中国开源项目评选 中已获得 26 票,请投票支持!

    年初对原始木兰可执行文件 ulang-0.2.2.exe 作了些功能上的摸索尝试,将基本功能写在初版用户手册。开展重现项目之后,一直没重走一遍手册中的例程。上周终于完成了这个综合各部分功能的”小测验“,大部分例程在上一版本就能正确运行,余下的小部分在这个版本中也通过了。

    [安装:pip install ulang,用法与例程请见 PyPI。源码位于开源中国注意:必需 python 3.7,源码文件需 UTF-8 编码]

    此版本重现功能

    字符串转义

    比较特别的是反斜杠(木兰交互环境下效果):

    > 'c\\\'+'name'
    c\name
    

    在 Python 中反斜杠如果未配对,会报语法错误:

    >>> print('\')
      File "<stdin>", line 1
        print('\')
                 ^
    SyntaxError: EOL while scanning string literal
    >>> print('\\\')
      File "<stdin>", line 1
        print('\\\')
                   ^
    SyntaxError: EOL while scanning string literal
    

    配对后 Python 的效果:

    >>> print('\\')
    \
    >>> print('\\\\')
    \\
    

    比照木兰中反斜杠转义效果:

    > println('\')
    
    > println('\\')
    
    > println('\\\')
    \
    > println('\\\\')
    \
    > println('\\\\\')
    \\
    > println('\\\\\\')
    \\
    

    实现细节可见源码,个人感觉初用有些别扭,这种使用场景应该不多。

    另外引号与换行转义无需多言:

    > 'doesn\'t'
    doesn't
    > "\"吃了么?\""
    "吃了么?"
    > '第一行\n 第二行'
    第一行
    第二行
    

    函数参数指定类型

    > type Person {
    >>   func $Person(name) {
    >>     $name = name
    >>   }
    >> }
    > func hello(p : Person) {
    >> println("hi " + p.name)
    >> }
    > hello(Person("木兰"))
    hi 木兰
    

    当前路径下 Python 模块导入

    比如当前路径下有 larger.py

    def larger(a, b):
        if a > b:
            print(a)
        else:
            print(b)
    

    木兰交互环境下:

    > using larger
    > larger.larger(5,6)
    6
    

    内置 enumerate 函数

    可以更方便地定义枚举了:

    > for i, v in enumerate(['小', '中', '大']) { println(i, v) }
    0 小
    1 中
    2 大
    

    求余运算

    > 11%3
    2
    

    其他

    Gitee Go 流水线

    惊喜发现 Gitee Go 开通后获赠了 1000 分钟构建时间,而且非常幸运,构建环境的 Python 版本正好支持本项目需要的 3.7 。在新手模板基础上作了一点修改,较顺利地添加了一个费时少又较关键的 unittest 测试集(确认语法树生成正确),挂件看起来不错:

    挂件

    [余下见知乎原文:木兰编程语言 0.0.14.7:功能覆盖初版用户手册; Gitee Go 流水线尝鲜]

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   885 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:10 · PVG 04:10 · LAX 13:10 · JFK 16:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.