关于Pascal语言,问题3

                            
type      
  alfa=PACKED   ARRAY[1..15]     of   char  
  date=record  
            year:   integer;  
            month:1..12;  
            day:   1..31  
            end;  
  employee=record  
                    name:   alfa;  
                    birthdate:   date;  
                    marridate:   date  
                    end;  
  var  
  programmer:   employee;  
   
  WITH   programmer,birthdate,marridate   DO  
  writeln(name,year,month,day,year,month,day)  
   
  为什么输出的域是:          
          programmer.name  
          programmer.marridate.year  
          programmer.marridate.month  
          programmer.marridate.day  
          programmer.marridate.year  
          programmer.marridate.month  
          programmer.marridate.day  
   
  书中有一段话这样讲:  
   
  “在WITH语句中的域名,将首先与最内层的标识符匹配,然后逐层往外继续匹配,  
  直到最外层,得到完全的域名。也即首先与WITH语句头部的的标识符表中最后1个  
  标识符匹配,然后从后往前(从右往左)继续匹配,得到完全的域名。当次序写错时,  
  可能得不到完全的域名。”  
          请结合上面的例子解释一下。   谢谢  
   
 

查看回复