补全:逐行解析
补全 parse_all:把每行源码都 parse 一遍。
贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达式是空格分隔的 token,从左到右求值(无优先级),数字 token 当值、名字到环境里查(没有当 0)。
parse 把一行变成 AST 元组:set 行 ("set", 名, 表达式tokens),print 行 ("print", None, 表达式tokens);prog 是这些元组的列表。
端到端:parse_all 逐行 parse,valid 查语义是否 OK,compile_run 从源码跑到输出(不合法交回 ["ERROR"]),result=最后一次 print 的值。
全部评论