我已经制作了一个扫描器,现在我应该制作一个解析器。有什么区别?
最佳答案
扫描器只是将输入字符串(例如文件)转换为标记列表。这些标记代表标识符、括号、运算符等内容。
解析器将此标记列表转换为类似树的对象,以表示标记如何组合在一起形成一个有凝聚力的整体(有时称为句子)。
就编程语言解析器而言,输出通常称为抽象语法树(AST)。 AST 中的每个节点代表该语言的不同构造,例如IF 语句将是一个具有 2 或 3 个子节点的节点、一个 CONDITION 节点、一个 THEN 节点以及可能的一个 ELSE 节点。
除了结构内聚力之外,解析器不会赋予节点任何意义。接下来要做的就是从这个结构中提取含义(有时称为上下文分析)。
关于parsing - 解析器和扫描器有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1739175/