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