home *** CD-ROM | disk | FTP | other *** search
- { TUDECLS -- Declarations for extended grammar system }
-
- type
- SYMBOL = string[maxtoklen];
- SYMTYPE = (RESERVED, SYMERR, USER, VAR_TYPE, FUNC_TYPE);
- SYMTABP = ^symtabtype;
- SYMTABTYPE = record
- { structure for <identifier>s and keywords }
- NEXT: symtabp;
- LEVEL: int;
- SYM: symbol;
- case SYMT: symtype of
- reserved: (TOKVAL: tokrange);
- var_type: (VADDR: integer);
- {relative to BP}
- func_type:
- (FADDR: integer; {code location}
- PBYTES: integer; {bytes of parameters}
- IS_ACTUAL, {TRUE if an actual declaration
- has been seen}
- IS_SYSTEM {system procedure, demands special
- treatment}
- : boolean);
- end;
-
- SYMTABNAMES = array [symtype] of string9;
- const SYM_NAMES: symtabnames = (
- 'reserved ', 'symerr ', 'user ',
- 'var_type ', 'func_type'
- );
-
- type
- SEMTYPE = (OTHER, IDENT, FIXED, STRNG,
- ADDOP, SUBOP, MPYOP, DIVOP,
- ASSIGNOP, EXPR_LIST, WHILE_DO, STMTLIST,
- FUNCALL, IF_THEN_ELSE);
- SEMRECP = ^semrec;
- SEMREC = record
- case SEMT: semtype of { semantic stack structure }
- ident: (SYMP: symtabp);
- fixed: (NUMVAL: integer);
- strng: (STX, {index to string table}
- STRNGNUM: int); {unique string code number}
- addop, subop, mpyop, divop,
- assignop, {LEFT := RIGHT}
- expr_list, {LEFT=> first, RIGHT=> rest}
- while_do, {while LEFT do RIGHT }
- stmtlist, {LEFT=> first, RIGHT=> rest}
- {also used for global list of strings GSLIST}
- funcall: {LEFT ( RIGHT=> expr_list ) }
- (LEFT, RIGHT: semrecp);
- if_then_else: {if B1 then S1 else S2}
- (B1, S1, S2: semrecp);
- end;
-
- SEMTABNAMES = array [semtype] of string7;
- const SEM_NAMES : semtabnames = (
- 'Other ', 'Ident ', 'Fixed ',
- 'String ',
- '+ ', '- ', '* ',
- '/ ', ':= ',
- 'ExprLis', 'WhileDo',
- 'StmtLis', 'FunCall', 'IfThenE'
- );
-
- const
- VARSIZE= 2; {bytes in a word}
- OPCD_POSITION= 10; {tab position of opcode}
- OPND_POSITION= 16; {tab position of operand}
- DEFAULT_RFILE= 'CON:';
- DEFAULT_SFILE= 'CON:';
-
- var
- LABCOUNT: integer; {dummy label number}
- TRCOUNT: integer; {trace count}
- LLEN: integer; {line length}
- MAIN_SYMP: symtabp; {points to procedure MAIN}
- NEXT_SNUM, {next string label number}
- PLEVEL: integer; {nesting level}
- GSLIST: semrecp; {global list of literal strings}
- COMMENT: string80; {identifier comments in text}