17.05.2015 Views

Pascal News

Pascal News

Pascal News

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

1~57<br />

1~58<br />

1~59<br />

1~60<br />

1~61<br />

1~62<br />

1~63<br />

1~6~<br />

1~65<br />

1~66<br />

1~67<br />

1~68<br />

1~69<br />

1~70<br />

1471<br />

1~72<br />

1~73<br />

1~74<br />

1~75<br />

1~76<br />

1~77<br />

1~78<br />

1479<br />

1~80<br />

1~81<br />

1482<br />

1~83<br />

1484<br />

1485<br />

1487<br />

1488<br />

1~89<br />

1~90<br />

1~91<br />

1~92<br />

1~93<br />

149~<br />

1~95<br />

1496<br />

1~97<br />

1~98<br />

1~99<br />

1500<br />

1501<br />

1502<br />

1503<br />

150~<br />

1505<br />

1507<br />

1508<br />

1510<br />

1511<br />

1512<br />

function compat(p,q :sp) :twostruct;<br />

begin compat: =noteq;<br />

if eqstruct(p,q) then compat:=eq else<br />

begin p:=desub(p); q:=desub(q);<br />

if eqstruct(p,q) then compat:=subeq else<br />

if p' .form=q' .fopm then<br />

case p~ .form of<br />

scalar:<br />

if (p=intptr) and (q=realptr) then compat =ir else<br />

if (p=realptr) and (q=intptr) then compat =ri else<br />

if (p=intptr) and (q=longptr) then compat =il else<br />

if (p=longptr) and (q=intptr) then compat:=11 else<br />

if (p=longptr) and (q=realptr) then compat:=lr else<br />

if (p=realptr) and (q=longptr) then compat:=rl else<br />

pointer:<br />

if (p=nl1ptr) or (q=nilptr) then compat:=eq;<br />

power:<br />

if p=emptyset then compat:=es else<br />

if q=emptyset then compat: =se else<br />

if compat(p' .elset,q' .elset) = maxint-sz then begin error(+017); lc:=O end;<br />

if (not pack) or (sz>1) then if odd(1c) then lc:=lc+1;<br />

address: =10;<br />

Ie! =!c+sz<br />

end;<br />

function reserve( s :integer): integer;<br />

var r :lnteger;<br />

begin r:=address(b.lc,s,false); genreg(r,s,100); reserve:=r;<br />

if b.lc>lcmax then lcmax:=b.lc<br />

end;<br />

f'unction arraysizeCfsp:sp; pack:boolean):integer;<br />

var sZ,min,max,tot,n:integer;<br />

begin sz:=sizeof(fsp' .aeltype);<br />

if not pack then sz:=even(sz);<br />

if bounds(fsp' .inxtype,min,max) then; {we checked before}<br />

dlbno:=dlbno+1; fsp' .arpos.lv:=O; fsp' .arpos.ad:=dlbno;<br />

gendlb(dlbno); gen1(ps rom,min); gencst(max-min);<br />

gencstCsz); genend; -<br />

n: =max-mln+ 1; tot: =sz*n;<br />

if szO then if tot div sz n then begin error(+018); tot:=O end;<br />

arraysize :=tot<br />

end:<br />

procedure treewalk(fip:ip);<br />

var lsp:sp; l:integer;<br />

begin<br />

if fipnil then<br />

begin treewalk( fip' ,llink); treewalk( fip' .rlink);<br />

if fip'.klass=vars then<br />

begin if not (used in fip' .iflag) then errid(-(+019),fip' .name);<br />

if not (assigned in fip' .ifl~g) then errid(-(+020) ,fip' .name);<br />

lsp: =fip' .idtype;<br />

if not (noreg in fip' .iflag) then<br />

genreg( rip' • vpos .ad ,sizeof( lsp) ,ord(formof( lsp, [pointer 1»);<br />

if lspnil then if wi thfile in lsp' .sflag then<br />

if lsp' .form=files then<br />

if level=1 then<br />

begin<br />

for i: =2 to argc do with argyl i] do<br />

z:<br />

m<br />

:E:<br />

tn<br />

....<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!