交付:修好整趟O2
场景:~/opt/优化.py 的 fold(类型判断写成 float)和 dce(末尾多了 or True)各埋了一个 bug,--O2 既没折叠也没删死代码。 任务:两处都修好(fold 的 float 改回 int、去掉 dce 的 o
源码到跑起来经过几步
一段源码要过好几道关 一关一关往下传,最后才跑得起来 一段源码要在这门小语言里跑起来,大致要依次经过【0】。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 prin
设计语言先定清楚什么
一段源码要过好几道关 一关一关往下传,最后才跑得起来 设计一门语言,最先要定清楚的是【0】。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达
set 和 print 算什么
这门语言里 set、print 这样的词属于【0】。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达式是空格分隔的 token,从左到右求值
为什么先写规格再实现
动手实现前先把语法/语义规格写清楚,好处是【0】。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达式是空格分隔的 token,从左到右求值(
while 是不是这门语言的关键字
按模型,is_keyword("while") 交回什么? 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达式是空格分隔的
补全:判断关键字
补全 is_keyword:一个词是不是关键字(在 KEYWORDS 里)。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达式是空格分隔的
补全:数 token 种类
补全 n_kinds:这门语言的 token 一共分几类(KINDS 的长度)。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达式是空格分隔
词法分析在做什么
词法分析(切词)这一步做的是【0】。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达式是空格分隔的 token,从左到右求值(无优先级),数
这门语言靠什么切词
这门小语言把一行切成 token 的依据是【0】。 贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式 或 print 表达式;表达式是空格分隔的 token,从左到右求值(