词法分析器如何识别给定令牌是标识符还是关键字?

时间:2014-02-06 05:22:29

标签: compiler-construction lexical-analysis

我有一个关于词法分析的基本问题。 由于词法分析器(它是一个接受词汇并产生令牌的DFA)可以产生标识符([az] / [AZ] / [0-9]知道数字而不是第一个字符),关键字(如果,否则, ..),运营商&分隔符。

所以,如果像'whil'这样的词汇来了。那么它是一个词汇错误,说明它不是一个有效的关键字它会被接受为标识符(变量),因为词法分析器不考虑语法是否正确或不是吗?

Lexical Analyzer是否为标识符,关键字,运算符使用不同的DFA?

2 个答案:

答案 0 :(得分:1)

  

那么它是一个词汇错误,说明它不是一个有效的关键字

没有

  

或将被接受为标识符(变量)

是的,然后解析器会出现语法错误。

  

因为词法分析器不考虑语法是否正确?

词法分析器对语法一无所知。那是解析器的工作。

答案 1 :(得分:0)

识别关键字, 它对标识符使用相同的正则表达式,然后检查关键字表,它是否是关键字。如果是,那么关键字,否则它是标识符