我已经做过扫描仪,现在应该做一个解析器。有什么不同?

最佳答案

扫描程序只需将输入的字符串(例如文件)转换为令牌列表。这些标记代表标识符,括号,运算符等。

解析器将此标记列表转换为树状对象,以表示标记如何装配在一起以形成一个有凝聚力的整体(有时称为句子)。

就编程语言解析器而言,输出通常称为抽象语法树(AST)。 AST中的每个节点代表该语言的不同结构,例如IF语句将是一个具有2个或3个子节点的节点,一个CONDITION节点,一个THEN节点以及可能的ELSE节点。

解析器不会赋予节点结构上的凝聚力以外的任何意义。接下来要做的是从此结构中提取含义(有时称为上下文分析)。

关于parsing - 解析器和扫描器有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1739175/

10-12 16:14