【发布时间】:2018-09-17 13:20:16
【问题描述】:
在学习编译器的过程中,编写了一个简单的标记器和解析器(递归下降)。解析器构造一个抽象语法树。现在我要进行语义分析。但是,我对语义分析器的构建有一些疑问。我应该使用通过树的递归调用在生成的抽象语法树上对代码进行语义分析,还是应该构建另一棵树(例如使用访问者模式)以进行语义分析。我在网上找到a document,说我在解析过程中应该对代码进行语义分析,但这不符合单一职责的规则,使整个解析器更容易出错。或者也许我应该将语义分析作为中间表示生成器的一部分?也许我遗漏了一些东西,如果有人能为我澄清这件事,我将不胜感激。
【问题讨论】:
标签: parsing compiler-construction abstract-syntax-tree semantic-analysis