Предмет:
Тип роботи:
Курсова робота
К-сть сторінок:
82
Мова:
Українська
style="text-align: justify;"> write_proc_type(no_name,[],func_type_ptr(addr(return_ofs)));
writeln;
end;
7 : begin {Set}
write('set of ');
write_var_type(base_unit,base_ofs);
end;
8 : begin {Pointer}
write('^');
write_var_type(target_unit,target_ofs);
end;
9 : begin {String}
write('string[',size-1,']');
{N.B. actually record is like array of char, but "string" with
no length is different.}
end;
10 : write('built-in ',size,' byte 8087 type'); {8087}
11 : write('built-in 6-byte real');
12 : begin {Range}
write(lower,'..',upper);
end;
13 : write('built-in boolean');
14 : write('built-in char type');
15 : begin {Enumeration or subrange}
if (type_unit = unit_list[1]^.own_record)
and (type_ofs = obj_ofs(def)) then
begin
{ Must be first definition }
write('(');
NowEnum:=type_def_ptr(Def);
{ Assume following records are constant declarations }
obj := add_only_offset(def,30);
for l:=lower to upper-1 do
begin
write(obj^.name,',');
obj:=add_only_offset(obj,12+length(obj^.name));
end;
write(obj^.name,')');
end
else
begin
{ Must be subrange }
obj := add_only_offset(get_unit(type_unit)^.buffer,type_ofs);
obj := add_only_offset(obj,24);
i := 0;
while i < def^.lower do
begin
obj:=add_only_offset(obj,12+length(obj^.name));
inc(i);
end;
write(obj^.name);
while i < def^.upper do
begin
obj:=add_only_offset(obj,12+length(obj^.name));
inc(i);
end;
write('..',obj^.name);
end;
end;
else
begin
WriteError('Type definition of type '+decword(type_type));
writeln(' otherbyte=',other_byte,'size=',size);
indent;
write(' junk=');
for i:=3 to 8 do
write(who_knows[i]:6);
writeln;
end;
end;
end;
end;
end;
{$ELSE}
procedure write_type_def(def:type_def_ptr);far;
var
i : integer;
l : longint;
save_kind : byte;
field_list :