ULXCOM.XPL COMPILED 26-JUL-1977 AT 20:16:29 BY VERSION 4.0 PAGE 1 LINE SOURCE STATEMENT PROCEDURE AND COMPILER INFORMATION 1 /* * 2 P D P - 1 0 X P L * 3 V E R S I O N 1 * 4 A COMPILER-COMPILER FOR PROGRAMMING LANGUAGE 1. * 5 RICHARD L. BISBEY II * 6 JULY 1971 * 7 * 8 VERSION 4.0 NOVEMBER 1975. * 9 * 10 VERION 4 OF THE COMPILER PROCESSES THE ENTIRE XPL GRAMMAR. * 11 * 12 VERSION 3.0 NOVEMBER, 1975. * 13 * 14 VERSION 3.0 CONTAINS THE FOLLOWING DIFFERENCES FROM VERSION 2.0: * 15 RELOCATABLE BINARY CODE OUTPUT, * 16 CALL INLINE FACILITY IMPLEMENTED, * 17 UUOS USED TO CALL THE RUN-TIME ROUTINES, * 18 SOME SWITCHES CAN BE SPECIFIED FROM THE TERMINAL, * 19 "COMPACTIFY" IS COMPILED FROM A SOURCE LIBRARY, * 20 REDUNDANT SAVES OF PROCEDURE RESULTS IN OTHER REGISTERS IS * 21 AVOIDED IN MOST INSTANCES. * 22 * 23 VERSION 2.0 * 24 HASH-CODED SYMBOL TABLE, * 25 LEFT-TO-RIGHT GENERATION OF STRINGS FROM NUMBERS, * 26 SPECIAL CASE CHECKS IN STRING CATENATION ROUTINE, * 27 FASTER, MORE EFFICIENT PROCEDURE CALLS, * 28 GENERAL INPUT/OUTPUT, FILE, FILENAME PROCEDURES, * 29 BETTER LISTING, SYMBOL DUMP FORMAT, ETC. * 30 * 31 R. W. HAY, * 32 COMPUTER GROUP, * 33 DEPT. OF ELECTRICAL ENG., * 34 UNIVERSITY OF TORONTO, * 35 TORONTO, ONTARIO, CANADA. * 36 * 37 * 38 THE MAIN STRUCTURE OF THE PROGRAM IS AS FOLLOWS: * 39 CONTENTS. * 40 RECOGNITION TABLES FOR THE SYNTAX ANALYZER. * 41 DECLARATION OF SCANNER/COMPILER VARIABLES. * 42 STORAGE COMPACTIFICATION PROCEDURE. * 43 SCANNER PROCEDURES. * 44 PARSER PROCEDURES. * 45 CODE/DATA EMITTER PROCEDURES. * 46 SYMBOL TABLE PROCEDURES. * 47 CODE GENERATION PROCEDURES. * 48 INITIALIZATION PROCEDURE. * 49 ANALYSIS ALGORITHM. * 50 PRODUCTION RULES. * 51 */ * 52 * 53 DECLARE VERSION LITERALLY '''4.0'''; * 54 * 55 /* THESE ARE LALR PARSING TABLES */ * ULXCOM.XPL COMPILED 26-JUL-1977 AT 20:16:29 BY VERSION 4.0 PAGE 2 LINE SOURCE STATEMENT PROCEDURE AND COMPILER INFORMATION 56 * 57 DECLARE MAXR# LITERALLY '99'; /* MAX READ # */ * 58 * 59 DECLARE MAXL# LITERALLY '125'; /* MAX LOOK # */ * 60 * 61 DECLARE MAXP# LITERALLY '125'; /* MAX PUSH # */ * 62 * 63 DECLARE MAXS# LITERALLY '234'; /* MAX STATE # */ * 64 * 65 DECLARE START_STATE LITERALLY '1'; * 66 * 67 DECLARE TERMINAL# LITERALLY '42'; /* # OF TERMINALS */ * 68 * 69 DECLARE VOCAB# LITERALLY '91'; * 70 * 71 DECLARE VOCAB(VOCAB#) CHARACTER INITIAL ('','<','(','+','^','&','*',')' * 72 ,';','\','-','/',',','>',':','=','^^','BY','DO','GO','IF','TO','BIT' * 73 ,'END','EOF','MOD','CALL','CASE','ELSE','GOTO','THEN','FIXED','LABEL' * 74 ,'WHILE','RETURN','DECLARE','INITIAL','','','CHARACTER' * 75 ,'LITERALLY','PROCEDURE','','','','' * 76 ,'','','','','','' * 77 ,'','','','','' * 78 ,'','','','' * 79 ,'','','','' * 80 ,'','','','' * 81 ,'','','' * 82 ,'','','' * 83 ,'','','' * 84 ,'','','' * 85 ,'