自己写:错误位置和词位置对得上吗
补全 where,返回每个 Token 的 行:列,输出第 1、11、14 个 Token 的位置(从 1 数起)。 let rate = 12; let msg = "hi there"; total = rate &
一个 Lexer 算写完了的判据是什么
判断自己的 Lexer 写完了,最靠得住的判据是【0】。
词法这一站不负责的是什么
下面这几件事里,词法分析不负责的是【0】。
完整 Lexer 跑一遍的四个数
把完整的 Lexer 跑在那段源码上,输出四个数:词数、关键字数、字符串那个词的字符数、最后一个词的列号。 let rate = 12; let msg = "hi there"; total = rate >=
自己写:把八节的规则合成一个 Lexer
补全 lex 的三条分支(数字、字符串、双字符运算符),输出切出的词数。 let rate = 12; let msg = "hi there"; total = rate >= 3; 玩具语言的词法规则:关键字
自己写:带类别的 Token 流
补全 kind,给每个词判类别,输出前四个词的类别用 / 拼起来。 let rate = 12; let msg = "hi there"; total = rate >= 3; 玩具语言的词法规则:关键字 let
自己写:一次核完四件事
补全 audit,把自己切出来的结果和标准答案在四个维度上比:词数、类别序列、字符串内容、位置。返回第一处不同的名字,全对返回 四项全过。
自己写:错误也要能报出来
补全 run:源码合法就返回词数,遇到非法字符就返回 行:列。三段各跑一次。 玩具语言的词法规则:关键字 let if else while;标识符以字母或下划线开头;数字是连续的数位;字符串用一对双引号括起来(不含转义);双字符运算符 &
自己写:交出完整的 Lexer
把八节的东西合起来:补全 lex 的四处 TODO,输出四个数——词数、关键字数、字符串字符数、最后一个词的列号。 let rate = 12; let msg = "hi there"; total = rate &g
词法和语法各管什么
上一站切好了一排词,然后呢 ? 上一站 lexer 把 let rate = 12 ; 切成 5 个 token。这一站 parser 要做的是【0】。