过程ENTER的实现程序:
 |
tx :table表的指针
procedure enter(k:object );
begin (* enter object into table *)
tx:=tx+1;
with table[tx] do (* 开域语句 *)
begin
name:=id;(* 表示table[tx].name:=id;名字记录在table表中 *)
kind:=k;(* 表示table[tx].kind:=k;类型记录在table表中 * )
case k of
constant:
begin
if num>amax then
begin
error(31);
num:=0;
end;
val:=num;(* table[tx].val:=num;常量的值记录在table表中 *)
end;
variable:
begin
level:=lev;(*表示table[tx].level:=lev变量定义的所在层次记录 在table表中 *)
adr:=dx;(*表示table[tx].adr:=dx给变量分配的位置记录在table表中 *)
dx:=dx+1;(*给变量分配位置的指示器加1,指向下一个变量的位置*)
end;
procedur: level:=lev;
(* 表示table[tx].level:=lev;过程定义的所在层次记录在table表中 *)
end(* case *);
end
end(*enter*); |
|