解释和字节码差在哪

解释和字节码差在哪

解释执行和先编译成字节码,最大差别是【0】。 执行方式模型:解释执行边读边跑;字节码先编译一次、之后重复跑更省。cost(方式, runs):解释每次都解释 = 2*runs,字节码 = 1+runs

阅读更多 →
补全:判语义是否 OK

补全:判语义是否 OK

补全 ok:没有未定义变量才算语义 OK。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达式是空格分

阅读更多 →
补全:找未定义变量

补全:找未定义变量

补全 undefined:交回用到了、却没被 set 过的名字。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print

阅读更多 →
补全:收集用到的变量

补全:收集用到的变量

补全 used:把表达式里的变量名收进 names。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达

阅读更多 →
补全:收集已定义变量

补全:收集已定义变量

补全 declared:收集所有 set 定义过的变量名。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式

阅读更多 →
哪个变量没定义

哪个变量没定义

按模型,undefined([("print",None,["a"])]) 交回什么? 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.p

阅读更多 →
这段语义通过吗

这段语义通过吗

按模型,ok([("set","x",["1"]), ("print",None,["x"])])

阅读更多 →
用了没定义的变量算什么

用了没定义的变量算什么

表达式里用到一个从没 set 过的名字,属于【0】。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达

阅读更多 →
语义分析主要查什么

语义分析主要查什么

语法过关之后,语义分析主要负责查【0】。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达式是空格分隔

阅读更多 →
补全:数表达式长度

补全:数表达式长度

补全 expr_len:这条语句的表达式有几个 token(AST 第 2 位)。 parse 把一行变成 AST 元组:set 行 ("set", 名, 表达式tokens),p

阅读更多 →