补全:找未定义变量

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

开始练习 →

补全:判语义是否 OK

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

开始练习 →

解释和字节码差在哪

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

开始练习 →

反复跑很多次选哪种

同一段程序要反复跑很多次,通常更划算的是【0】。 执行方式模型:解释执行边读边跑;字节码先编译一次、之后重复跑更省。cost(方式, runs):解释每次都解释 = 2*runs,字节码 = 1+runs;faster_bytecode(r

开始练习 →

解释跑三次的代价

按模型,cost("interp", 3) 交回几? 执行方式模型:解释执行边读边跑;字节码先编译一次、之后重复跑更省。cost(方式, runs):解释每次都解释 = 2*runs,字节码 = 1+runs;faste

开始练习 →

补全:判是不是解释执行

补全 is_interp:方式是 interp 才算解释执行。 执行方式模型:解释执行边读边跑;字节码先编译一次、之后重复跑更省。cost(方式, runs):解释每次都解释 = 2*runs,字节码 = 1+runs;faster_byt

开始练习 →

补全:判是不是字节码

补全 compile_once:方式是 bytecode 才是先编译一次。 执行方式模型:解释执行边读边跑;字节码先编译一次、之后重复跑更省。cost(方式, runs):解释每次都解释 = 2*runs,字节码 = 1+runs;fast

开始练习 →

补全:算执行代价

补全 cost:解释 2*runs,字节码 1+runs。 执行方式模型:解释执行边读边跑;字节码先编译一次、之后重复跑更省。cost(方式, runs):解释每次都解释 = 2*runs,字节码 = 1+runs;faster_bytec

开始练习 →

补全:字节码更快吗

补全 faster_bytecode:1+runs < 2*runs 时字节码更快。 执行方式模型:解释执行边读边跑;字节码先编译一次、之后重复跑更省。cost(方式, runs):解释每次都解释 = 2*runs,字节码 = 1+r

开始练习 →

表达式怎么求值

一排 token 排成一行 指示块往右挪,左边一路合成一块 这门语言的表达式(无优先级)求值方式是【0】。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print

开始练习 →