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:
第一步()