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"])]) 交回什么? 贯穿本节的小语言(