假设我正在对 ruby​​ 方法定义进行词法分析:

def print_greeting(greeting = "hi")
end

词法分析器的工作是维护状态并发出相关标记,还是应该相对愚蠢?注意在上面的例子中 greeting 参数的默认值是 "hi" 。在不同的上下文中, greeting = "hi" 是将 greeting 设置为 "hi" 的变量赋值。词法分析器应该发出诸如 IDENTIFIER EQUALS STRING 之类的通用标记,还是应该感知上下文并发出诸如 PARAM_NAME EQUALS STRING 之类的东西?

最佳答案

我倾向于尽可能让词法分析器变得愚蠢,从而让它发出 IDENTIFIER EQUALS STRING 标记。在词法分析时,(大部分时间..)没有关于标记应该代表什么的可用信息。在词法分析器中拥有这样的语法规则只会用(非常)复杂的语法规则污染它。这就是解析器的一部分。

关于parsing - 这是词法分析器的工作吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6359427/

10-10 08:31