我正在阅读有关管道和过滤器架构模式的面向模式的软件体系结构。在这里我不需要知道编译器的设计,但作者给出了编译器设计的例子。我遵循了大部分,但我很难理解以下内容。在编译器设计中,我们有不同的阶段,如扫描器,解析器,语义分析,中间代码生成和后端(MIPS后端,英特尔后端...)。管道和过滤器体系结构
这里作者提到了前端阶段,解析器,语义分析,中间代码生成。后端是MIPS后端。
以下是文字片段
我们决定不明确构建一个抽象语法树,从解析器语义分析仪通过。相反,我们嵌入到语义分析仪(SA)和代码生成(CG)调用到YACC的语法规则:
addexpr : team
| addexpr '+' term
{ sa.checkCompat($1,$3); cg.genAdd($1,$3);}
| addexpr '-' term
{ sa.checkCompat($1,$3); cg.genSub($1,$3);}
我上面的文字问题 1.什么是笔者的意思是“不来构建抽象的树explictily” ? 2.我只需要了解上面的语法规则,它在做什么?由于我不是设计语言,我必须了解模式。如果我对上面的例子有了很好的理解,我可以有效地遵循模式?
感谢您的时间和帮助。