在学习编译器的过程中,写了一个简单的标记器和解析器(递归下降).解析器构造一个抽象语法树.现在我要进行语义分析.但是我有一些关于语义分析器构造的问题.我是否应该使用树中的递归调用在生成的抽象语法树上语义分析代码,或者我应该构建另一个树(例如使用访问者模式)以进行语义分析.我在网上发现了一个文档,说我应该在解析过程中语义分析代码,但它不符合单一责任规则,并使整个解析器更容易出错.或者我应该将语义分析作为中间表示生成器的一部分?也许我错过了什么,如果有人能为我澄清这件事,我将不胜感激.
compiler-construction parsing abstract-syntax-tree semantic-analysis