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.

337<br />

338<br />

339<br />

3~O<br />

3~1<br />

342<br />

343<br />

344<br />

345<br />

346<br />

347<br />

348<br />

349<br />

350<br />

351<br />

352<br />

353<br />

35q<br />

355<br />

356<br />

357<br />

358<br />

359<br />

360<br />

361<br />

362<br />

363<br />

36q<br />

365<br />

367<br />

368<br />

369<br />

310<br />

311<br />

372<br />

373<br />

374<br />

376<br />

377<br />

378<br />

379<br />

380<br />

381<br />

382<br />

383<br />

384<br />

385<br />

386<br />

387<br />

388<br />

389<br />

390<br />

391<br />

392<br />

case klasa<br />

types<br />

konst<br />

end;<br />

ide lass of<br />

0;<br />

(value:integer);<br />

{for integers the value is<br />

COInputed and stored in this field.<br />

For strings and reals an assembler constant is<br />

defined labeled '.1', '.2' •...<br />

This '.' number is then stored in value.<br />

For reals value may be negated to indicate that<br />

the opposite of the assembleroonstant is needed.<br />

val'S :(vpos:position); {position of' var}<br />

field : (totfset:integer); {offset to begin of record}<br />

carrbnd :0:<br />

lid type pOints to carray)'<br />

proe,func:<br />

(oase pfkind :kindofpf of<br />

standard :(key:standpf): {identifioation}<br />

formal ,actual,forwrd ,E!-xtrn:<br />

(pfpos:position:<br />

{l'i gives declaration level.<br />

labl~record<br />

nextlp:lp;<br />

seen:boolean;<br />

labval : integer;<br />

labname:integer;<br />

labdlb:integer<br />

end;<br />

sg gives instruction segment of this proc and<br />

ad 1s relevant for formal pf's and for<br />

functions (no oonfliot!!).<br />

for funotions: ad is the result address.<br />

for formal pf' s: ad is the address of the<br />

descriptor }<br />

pfRo :integer:<br />

parhead lip;<br />

headle: integer<br />

)<br />

{ohain of labels}<br />

(unique pi number)<br />

{head of par ameter list 1<br />

{le when heading scanned)<br />

{label number given by the progr.ammer}<br />

!label number given by the compiler}<br />

{zero means only locally used,<br />

otherwise dlbno of label information}<br />

{--------------------------------------------------------}<br />

v.... {the most frequent used externals are declared first}<br />

sy:symbol:<br />

!last symbol}<br />

a:attr;<br />

{type,access method,posil;ion,value of expr}<br />

[returned by insyml<br />

;,h:ohar;<br />

chsy:chartype;<br />

val :integer;<br />

1x :integer;<br />

eol :boolean;<br />

zerostr ing :boolean;<br />

Id:alpha;<br />

[some counters}<br />

lino: integer;<br />

dlbno: integer;<br />

lom8x!lnteger:<br />

level:i'nteger;<br />

!last character}<br />

{type of ch, used by insym}<br />

tit last symbol is an constant<br />

{string length}<br />

{true if current oh replaces a newline}<br />

{true for strings in tI tI}<br />

{if last symbol is an identif1er}<br />

{line number on code file (1 •• n)<br />

{number of last global nUlllber}<br />

{keeps track of maximl.lD of Ie)<br />

{current statio level}<br />

393<br />

394<br />

395<br />

396<br />

397<br />

398<br />

399<br />

liOO<br />

401<br />

Q02<br />

403<br />

404<br />

405<br />

406<br />

407<br />

408<br />

409<br />

410<br />

411<br />

412<br />

Q13<br />

41Q<br />

415<br />

416<br />

417<br />

418<br />

419<br />

420<br />

421<br />

422<br />

423<br />

424<br />

425<br />

426<br />

427<br />

428<br />

429<br />

430<br />

431<br />

432<br />

433<br />

434<br />

435<br />

436<br />

437<br />

438<br />

439<br />

440<br />

441<br />

442<br />

443<br />

444<br />

445<br />

446<br />

447<br />

448<br />

ptrsize :integer;<br />

realsize :integer;<br />

fhsize:integer;<br />

argc:integer:<br />

lastpfno:integer;<br />

copt:integer;<br />

dopt ; integer ;<br />

iopt:integer;<br />

(file header size)<br />

{index in argvl<br />

{unique pf number counter}<br />

Ie-type strings allowed if on}<br />

!longs allowed if on}<br />

{number of bits in sets with base integer}<br />

{standard option}<br />

sopt :integer;<br />

{pointers pointing to standard types}<br />

realptr ,intptr ,textptr ,emptyset,boolptr :sp;<br />

charptr ,nilptr ,stringptr,longptr:sp;<br />

{flags}<br />

giveline :boolean;<br />

including:boolean;<br />

eofexpected :boolean:<br />

main !boolean;<br />

intypedec :boolean;<br />

fltused :boolean;<br />

seconddot :boolean;<br />

{pointers}<br />

fwptr:ip;<br />

progp:ip;<br />

curr proc : ip;<br />

top:np;<br />

lastnp:np;<br />

{records)<br />

b:blookinfo;<br />

e :-errec;<br />

fa :attr;<br />

{arrays}<br />

{give source line number at next statement}<br />

{no LIN's for included code}<br />

{quit without error if true (nextch)<br />

{complete programme or a module}<br />

{true if nested in typedefinition}<br />

{true if floating point instructions are used}<br />

{ind~cates the second dot of t •• '}<br />

{head of chain of forward reference pointers}<br />

{program identifier}<br />

{current proc/func Ip (see case statement) }<br />

{pointer to the most recent name space}<br />

{pointer to nameinfo of last searched ident<br />

{all info to be stacked at pfdeolaration}<br />

{all info required for error messages}<br />

{attr for current file name}<br />

source:fntype; {name of pascal scurce file}<br />

strbu1':array[1. .smax] of char;<br />

iop:array[boolean] of ip;<br />

[false :standard input, true :standard output}<br />

rw:array[rwrange] of alpha;<br />

{reserved words}<br />

frw:array[O .. idmax] of integer;<br />

{indices in rw}<br />

rsy:array[rwrange] of symbol;<br />

{symbol for reserved words}<br />

cs :array[ char] of chartype;<br />

{chartype of a character}<br />

csy:array[rparentch •• equal] of symbol;<br />

{symbol for single character symbols}<br />

lmn:array[libmnem) of packed array[1 •• 4} of char;<br />

{mnemonics of pascal library routines}<br />

opt :array[ 1 a' .. t z.'] of integer;<br />

forceopt:array['a' ••'z'} of boolean:<br />

{26 different options}<br />

undefip:array[idclass] of ip;<br />

{used in searehid)<br />

argv:array[O •• maxargc] of<br />

record name:alpha; aa:integer end;<br />

{save here the external heading names}<br />

(riles)<br />

."<br />

»<br />

'"<br />

'"<br />

......

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

Saved successfully!

Ooh no, something went wrong!