tokenizer会返回语言关键字吗?

时间:2013-09-16 08:54:50

标签: compiler-construction language-agnostic tokenize

我正在为玩具语言编写玩具编译器,我们假设它有JavaScript语法。

假设源文件是:

var val = 123;

我的简单编译器将包含Tokenizer和Parser(暂时)。

Tokenizer是否应返回完整的语言关键字,例如var或逐字母(var)?

迟早我必须识别关键词,文字等等,我想知道这种工作的地方在哪里?

2 个答案:

答案 0 :(得分:4)

令牌器的整个是获取您的输入流(字符)并为您提供令牌,您可以将其用于语法分析。

因此,您可以期望tokeniser为您提供以下内容:

T_KEYWORD_VAR
T_VARIABLE(val)
T_KEYWORD_EQUALS
T_INTEGER(123)
T_KEYWORD_SEMICOLON

答案 1 :(得分:3)

标记器通常应该已经返回整个关键字(= 标记)。

这样做没有缺点: 只要您的令牌制定者确定 语言关键字(而不是数字或类似关键字),您为什么要削弱"弱化"这些信息是通过拆分已经成功检测到部分内容的部分;)

更一般地说:不要犹豫让令牌器输出为尽可能大的构建块 - 只要你不再给它们任何意义,这应留给解析器。