结构推理 程序的文法如下:
   P→D
   D→D;D|id T|procid;D;S
   写一个语义子程序,打印该程序一共声明了多少个id。
【正确答案】引进属性i,得到语义子程序如下:
   P→D      {print(D,i);}
   D→D1;D2  (D·i:=D1·+D2·i;}
   D→id:T   {D·i:=1;}
   D→proc id;D1;S    {D·i:=D1·+1;}
【答案解析】