2 + 3 * 4 等于几

一排 token 排成一行 指示块往右挪,左边一路合成一块 按这门语言的规则,2 + 3 * 4 算出来是【0】。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 p

开始练习 →

从左到右连减

按模型,eval_expr(["10","-","3","-","2"], {}) 交回几? 贯穿本节的小语言(判题机没 gcc,这是它的确

开始练习 →

补全:取 token 的值

补全 val:数字 token 转成 int。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达式是空格分隔的 token,从左到右求值(无优

开始练习 →

补全:从左到右求值

补全 eval_expr:按 op 把累计值和右操作数合并。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达式是空格分隔的 token,从左

开始练习 →

补全:执行整段程序

补全 run:print 语句的值收进输出。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达式是空格分隔的 token,从左到右求值(无优先

开始练习 →

补全:数 print 条数

补全 n_prints:程序里有几条 print。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达式是空格分隔的 token,从左到右求值(

开始练习 →

补全:取最后输出

补全 result:跑完后最后一次 print 的值。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达式是空格分隔的 token,从左到右求

开始练习 →

好的报错该带什么

一条对用户友好的报错,最该带上【0】。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达式是空格分隔的 token,从左到右求值(无优先级),

开始练习 →

报错给行号有什么用

报错里带上行号,最直接的好处是【0】。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达式是空格分隔的 token,从左到右求值(无优先级),

开始练习 →

这段有没有语义错误

按模型,has_err([("set","x",["1"]), ("print",None,["x"])]) 交回什么? 贯穿本节的小语言(

开始练习 →