编译程序一般采用(29)技术进行语义分析和生成中间代码。

admin2009-02-15  20

问题 编译程序一般采用(29)技术进行语义分析和生成中间代码。

选项 A、数据控制翻译
B、流程控制翻译
C、语法制导翻译
D、面向对象的翻译

答案C

解析 目前,编译程序一般采用语法制导翻译技术进行语义分析和生成中间代码,概括说明如下所述。
   根据语义分析和生成中间代码的需要,给每个文法符号设置若干个属性,用以表示它的语义信息。例如,变量可设置类型、层次、内存单元地址等;表达式可设置类型、中间代码等。然后对语言的文法进行扩充,对每条产生式编写一个语义子程序(或函数),用以计算有关文法符号的属性值,即在语法分析过程中使用这条产生式进行语法分析时,调用它的语义子程序完成相应的语义分析和翻译任务。随着语法分析的步步进展,当一条产生式获得匹配(自顶向下分析)或用于归约(自底向上分析)时,就执行这条产生式所对应的语义子程序进行翻译,这种方法称作语法制导翻译。它既适用于自顶向下分析,又适用于自底向上分析。
   例如,若仅把赋值语句翻译成四元式形式的中间代码,下面给出了每个产生式及相应的翻译子程序。
   S→id=E    {  p=Entry(id.name);
                  if(p!=NULL)GEN(:=,E.place,-,p);else error;}
   E→E1+E2    {  E.place=newtemp;
                  GEN(+,E1.place, E2.place, E.place);}
   E→E1*+E2   {  E.place=newtemp;
                  GEN(*,E1.place, E2.place, E.place);}
   E→id       {  p=Entry(id.name);
                  if(p!=NULL)E.place=p; else error;    }
转载请注明原文地址:https://kaotiyun.com/show/njxZ777K
0

相关试题推荐
最新回复(0)