2014-02-06 84 views
1

我有一个关于词法分析的基本问题。 由于词法分析器(这是一个接受词位并生成令牌的DFA)可以产生可以是标识符([az]/[AZ]/[0-9],知道数字而不是第一个字符的标记),关键字(if,else ,..),运营商&分隔符。词法分析器如何识别给定的标记是标识符还是关键字?

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

词法分析器对标识符,关键字,操作符使用不同的DFA吗?

回答

1

然后会是一个词法错误,指出它不是一个合法的关键字

还是会被接纳为标识符(变量)

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

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

词法分析器对语法没有任何了解。这是解析器的工作。

+0

感谢您的答案。词法分析器是否对标识符,关键字,运算符和分隔符使用不同的DFA? – Sumit

+0

我从来没有见过这样做,我没有看到任何理由。 * flex(1)*使用单个DFA。 – EJP

0

要标识关键字, 它使用相同的标识符正则表达式,然后检查关键字表,不管它是否为关键字。如果是,那么关键字,否则它是一个标识符

相关问题