【问题标题】:How does the lexical analyzer identify whether given token is Identifier or Keyword?词法分析器如何识别给定的标记是标识符还是关键字?
【发布时间】:2014-02-06 05:22:28
【问题描述】:

我有一个关于词法分析的基本问题。 由于词法分析器(这是一个接受词位并生成标记的 DFA)可以生成标记,这些标记可以是标识符([a-z]/[A-Z]/[0-9] 知道数字而不是第一个字符),关键字(如果,否则, ..) , 运算符和分隔符。

所以如果出现像“whil”这样的词素。那么它会是一个词法错误,说明 Its not a valid keyword是否会被接受为标识符(变量),因为词法分析器不考虑语法是否正确或不是吗?

词法分析器是否对标识符、关键字、运算符使用不同的 DFA?

【问题讨论】:

    标签: compiler-construction lexical-analysis


    【解决方案1】:

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

    没有。

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

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

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

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

    【讨论】:

    • 感谢您的回答。词法分析器是否对标识符、关键字、运算符和分隔符使用不同的 DFA?
    • 我从来没有见过这样做的,我看不出有任何理由。 flex(1) 使用单个 DFA。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-07
      • 2018-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多