I am reading about pipes and filter architecture pattern in Pattern oriented software architecture. Here I don't have to know compiler design, but author gave example with compiler design. I followed most of it, but I have difficulty in understanding following.
As in compiler design we have different phases like scanner, parser, semantic analysis, intermediate code generation, and backends (MIPS backend, Intel backend...).
Here author mentioned front end stages as , parser, semantic analysis, intermediate code generation. and back end is MIPS backend.
Following is text snippet
We decide not to construct an abstract syntax tree explicitly, to be passed from the parser to the semantic analyzer. Instead we embed calls to the semantic analyzer(sa) and code generator(cg) into yacc's grammer rules:
addexpr : team
| addexpr '+' term
{ sa.checkCompat($1,$3); cg.genAdd($1,$3);}
| addexpr '-' term
{ sa.checkCompat($1,$3); cg.genSub($1,$3);}
My questions on above text 1. What does author mean by " not to construct abstract tree explictily" ? 2. I just need to understand above grammer rules what does it doing? As I am not designing lanuguage, I have to understand pattern. If I have good understanding on above example I can follow pattern effectively?
Thanks for your time and help.