Pascal News
Pascal News
Pascal News
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
225<br />
226<br />
228<br />
229<br />
l!30<br />
231<br />
232<br />
233<br />
235<br />
236<br />
237<br />
238<br />
23'9<br />
240<br />
242<br />
243<br />
24lj<br />
246<br />
241<br />
248<br />
249<br />
250<br />
251<br />
252<br />
253<br />
254<br />
255<br />
256<br />
258<br />
259<br />
260<br />
261<br />
262<br />
263<br />
264<br />
266<br />
267<br />
268<br />
269<br />
270<br />
271<br />
272<br />
273<br />
274<br />
215<br />
276<br />
277<br />
278<br />
279<br />
280<br />
O •• rwlim;<br />
0 •• t8m1;<br />
{pointer typesl<br />
IIP= Alltruoture:<br />
11>= "identi fier :<br />
Ip= 'labl;<br />
bp. 'blockini'o:<br />
np= ""nameinfo;<br />
{set types}<br />
sOS'S<br />
setofids.<br />
f'ormset.<br />
sflagset.<br />
iflagset=<br />
set of symbol;<br />
set of idol ass :<br />
set Of strootfo"";<br />
set of struotflag;<br />
set of identflag;<br />
{array types I<br />
alpha .packed array[ idrangeJ afchar;<br />
fntype'paoked a .... ay[ fnrange] of char;<br />
{record typesl<br />
-errec=record<br />
erno:lnt-eger;<br />
mess: alph:a;<br />
me$i ~lnteger;<br />
chno:lntecger;<br />
lino:integer ;<br />
linr :integer;<br />
orig:integer :<br />
fnam:fntype;<br />
end;<br />
position'record<br />
ad :integer;<br />
Iv :integer;<br />
Uirder SEGMENTS<br />
·sg :sgrange<br />
Dendir<br />
end;<br />
{error numbed<br />
!identifier parameter if required}<br />
{numeric parameter if required}<br />
{column number}<br />
{lin en umber}<br />
{relative to start. of (included) file}<br />
{idem, but. before preproces!ling)<br />
{source· file neme}<br />
{the addr info of certain variable}<br />
{for locals it is the byte offsetl<br />
{the level of the beast)<br />
{only relevant for globals (lv"O) }<br />
{records of type attr are used to remember qualities of<br />
expression parts to delay the loading of them.<br />
Reasons to delay the loading of one word constants:<br />
- bound checking<br />
- set building.<br />
Reasons to delay the loading of direct accessible objects:<br />
- efficient handling of read/wri'te<br />
- efficient handling of the with statement.<br />
attr=record<br />
asp:sp;<br />
packbit :boolean;<br />
ak :attrkind;<br />
pos :po sition;<br />
{If ak=cst then the val ue is stored<br />
{type of expressionl<br />
{true for packed elementsl<br />
{access method}<br />
{sg. Iv and ad}<br />
in ad}<br />
281 end;<br />
283<br />
2M<br />
285<br />
286<br />
281<br />
288<br />
289<br />
290<br />
292<br />
293<br />
294<br />
295<br />
296<br />
297<br />
298<br />
300<br />
301<br />
302<br />
303<br />
3011<br />
305<br />
306<br />
307<br />
308<br />
309<br />
310<br />
311<br />
312<br />
313<br />
314<br />
315<br />
316<br />
317<br />
318<br />
319<br />
320<br />
321<br />
322<br />
323<br />
324<br />
325<br />
326<br />
327<br />
328<br />
329<br />
331<br />
332<br />
333<br />
334<br />
335<br />
336<br />
nameinfo=record<br />
nlin-k:np;<br />
fname:ip;<br />
case occur :where of<br />
blck:();<br />
reo: 0;<br />
wrec.:(wa:attr)<br />
end;<br />
blockinfo=reoord<br />
nextbp:bp;<br />
lc:integer;<br />
ilbno:integer:<br />
rorwcount :integer;<br />
lchain :lp;<br />
end;<br />
st.rueture~record<br />
s.1ze.:integer;<br />
sflag:sflagset;<br />
case form:structform of<br />
scalar : (scalno:integer;<br />
fconst:ip<br />
);<br />
subrange: (min .max :integer;<br />
rangetype :sp;<br />
subrno:lnteger<br />
);<br />
pointer : (eHype :sp);<br />
power : (elset:sp);<br />
files : (flltype:sp);<br />
arrays ,csrray:<br />
(aeltype:sp:<br />
inx type :sp ~<br />
arpos :posl tion<br />
);<br />
records:( fstfld :ip;<br />
tagsp:sp<br />
);<br />
variant ': (varval :integer;<br />
nxtvar':sp;<br />
subtsp:sp<br />
);<br />
tag :(fstvar:sp;<br />
tfldsp:sp<br />
)<br />
identifier. record<br />
idtype:sp;<br />
narile:alpha;<br />
llink.rl1nk:ip;<br />
next :ip;<br />
iflag:iflagset;<br />
{one for each separate name space J<br />
{one deeper}<br />
{first name:· root of treel<br />
{name space opened by with statement}<br />
{all info of the current procedurel<br />
{pointer to blockinfo Of surrounding proc}<br />
{data" location "ounter (from begin of proc)<br />
{number of last local label}<br />
{number of not yet spe"lfied forward procs}<br />
{first label: header of chain}<br />
{size of structure in bytes}<br />
{flag bits}<br />
{number of range descriptor}<br />
{names of constants}<br />
{lower and upper bound}<br />
{type of bounds}<br />
{number of subr descriptor}<br />
{type ofpolnted object}<br />
{type of set elementsl<br />
{type of file elements}<br />
{type of array elements}<br />
{type of array index}<br />
{position of array descriptor}<br />
{points to first fieldl<br />
{points to tag if present}<br />
{tag value for this variantl<br />
{next equilevel Variant}<br />
{points to tag for sub-case }<br />
{first variant of case}<br />
{type of tagl<br />
{type of identifier!<br />
{name of identified<br />
{see enterid,search1d}<br />
{used to make several chains)<br />
{several flag bitsl<br />
--<br />
'" m