仓库源文

https://zhuanlan.zhihu.com/p/2005933781115236466

前文,当前已支持以下语法:

a = 1
b = a
while 1 {print(a>b)}

期间改进了部分 rply 定制版 的反馈信息以提高开发效率。

原型分支 包含如下 14 次提交,287行Python代码,其中词语法解析部分约230行。

支持>
支持两个变量;改进批量测试输出
术语一致化; 加强文档
支持赋值为变量
支持每当语句; 改用rply原接口进行语法分析
支持块; 批量测试语法树输出
改用'按语法分词'并通过两个语法树测试
实现赋值部分的行列号
重构: 按类型生成语法树节点
将词和语法成分常量化
支持变量赋值, 调用函数参数为变量 - 应分两步走
支持两行调用
开源许可证; 实现 print 单参数输出; 取词的列号
实现对 print 最简代码文件的解析并生成语法树

之后估计还需五次左右提交达到初始目标:

数的加法 量的加法 支持ab之外的标识符名 更多比较符号 支持空行

伪代码语言设计初步

参考前文。同样从最基本的累计算法开始,粗写如下:

输入  上限
输出  和,或者失败信息
一步  和为1,当前数为1
二步  当循环次数不到上限时,执行三步
    三步  和增加当前数,当前数加一
四步  输出和
      结束

初步打算用全局变量以及函数实现各步骤,(与上无关)如下:

a = 1
次数 = 0

def 第一步():
  global a
  a = a + 1
  第二步()

def 第二步():
  global 次数
  if a % 5 == 0:
    次数 = 次数 + 1
    if 次数 == 10:
      exit()
  if a < 99:
    第一步()