write(x); end (* A *); procedure B; const n=7; var e,g; procedure D; var j,k;
begin (* D *) read(j,k); x:=x+j*n; call A; end ;(* D *) begin (* B *) call D; end ;(* B *) begin (* main *) read(x); call B; end. (* main *)
给出PL/0示意程序编译到D过程体时TABLE表的内容。其中TABLE表的格式可为下表。 TABLE表的格式 name kind level val adr size 解:问答第5题PL/0示意程序编译到D过程体时TABLE表的内容如下表。 TABLE表的内容 name main x A B n e g D j k kind procedure variable procedure procedure constant variable variable procedure variable variable level . 0 0 0 . 1 1 1 2 2 val . . . . 7 adr 0 dx 过程A的入口 过程B的入口 (待填) . dx dx+1 过程D的入口 dx dx+1 size 4 . 4 (待填5) . . . 5 由于A和B是并列过程,当编译到B过程时A过程体已经编译结束,A所定义的标识符不会再被使用,所以由B过程定义的标识符覆盖。