我正在閱讀有關管道和過濾器架構模式的面向模式的軟件體系結構。在這裏我不需要知道編譯器的設計,但作者給出了編譯器設計的例子。我遵循了大部分,但我很難理解以下內容。在編譯器設計中,我們有不同的階段,如掃描器,解析器,語義分析,中間代碼生成和後端(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.我只需要了解上面的語法規則,它在做什麼?由於我不是設計語言,我必須瞭解模式。如果我對上面的例子有了很好的理解,我可以有效地遵循模式?
感謝您的時間和幫助。