仓库源文

算法语言原型

上文,实现了以下例程:

和为10
输出和

开源在此。Python代码约200行,测试约80行。

逻辑语言原型, 为支持无空格语法设计,用按语法分词接口。

项目结构与上文的子集项目类似,在语法分析时生成Python语法树后运行输出。

期间碰到的一个情况是,现在输出0生成的Python语法树局部如下:

Module(
  body=[Expr(
      value=Call(
        func=Name(
          id='print'
          ctx=Load()
          lineno=1
          col_offset=1
        )
        args=[Constant(
            value=0
            kind=None
            lineno=1
            col_offset=3
          )]
...

调用函数直接改写成了print,而常数0的列号是按照“输出0”的第3列。如果以后需支持自定义函数再看。

其实不止此处。以后支持多步骤时,算法代码和生成的Python代码的行列数很可能有出入,为调试所需准确定位也许需要设计另一套语法树。

日语版木兰子集

根据之前设想,尝试其他自然语言语法。下面是用抚子语言写的累加例程:

和=0
数=1
数が3以下の間
  和=和+数
  数=数+1
ここまで。
和を表示。

以上为相对接近木兰语言的语法,也是第一期目标。

抚子还有其他语法如下:

和=0
数を1から3まで繰り返す
   和=和+数
ここまで。
和を表示。

或者数を1増やす也可将变量加一。


和に数を足して

和に数を足すこと