【发布时间】:2013-11-12 06:38:41
【问题描述】:
我正在阅读“龙之书”,我想我了解词法分析器、解析树和语法树的要点以及它们通常应该捕获哪些错误(假设我们使用的是上下文无关语言),但如果我错了,我需要有人来抓住我。我的理解是,词法分析器只是对输入进行标记并捕获与代码中的无效结构有关的错误,例如以不包含分号的语言传递分号。解析树用于验证语法是否被遵循以及代码的顺序是否正确,语法树用于实际评估代码中的语句和表达式并生成诸如三地址代码或机器代码之类的东西。这些都是正确的吗?
旁注:具体语法树和解析树是一回事吗?
旁注:在构建 AST 时,整个程序是构建成一个巨大的 AST,还是每个语句/表达式构建一个不同的 AST?
【问题讨论】:
标签: parsing compiler-construction lexer abstract-syntax-tree