comphdr
1 ||KRC COMPILER HEADER FILE 2 3 ||---------------------------------------------------------------------- 4 ||The KRC system is Copyright (c) D. A. Turner 1981 5 ||All rights reserved. It is distributed as free software under the 6 ||terms in the file "COPYING", which is included in the distribution. 7 ||---------------------------------------------------------------------- 8 9 ||LEX ANALYSER MANIFESTS 10 MANIFEST $( ID=0; CONST=1; EOL='*N'; BADTOKEN=256 11 PLUSPLUS.SY=257; GE.SY=258; LE.SY=259; NE.SY=260 12 DOTDOT.SY=261; BACKARROW.SY=262; DASHDASH.SY=263 13 STARSTAR.SY=264 14 $) 15 16 ||LEX ANALYSER GLOBALS 17 GLOBAL $( TOKENS:150; THE.ID:151; THE.CONST:152 || BASES 18 EXPFLAG:153; ERRORFLAG:154; THE.NUM:155; THE.DECIMALS:156 19 EQNFLAG:157 20 CASECONV:158 21 UPPERCASE:159 ||A FLAG - IF SET UPPER AND LOWER CASE ARE TREATED AS EQUIVALENT 22 COMMENTFLAG:160; SUPPRESSPROMPTS:161 23 FILECOMMANDS:162 || BASE 24 WRITETOKEN:163 25 $) 26 27 || KRC EXPRESSION REPRESENTATIONS 28 || THE INTERNAL REPRESENTATIONS OF EXPRESSIONS IS AS FOLLOWS 29 || EXP::= ID|CONST|APPLN|OTHER 30 || ID::= ATOM 31 || CONST::= NUM|CONS(QUOTE,ATOM)|NIL 32 || APPLN::= CONS(EXP,EXP) 33 || OTHER::= CONS(OPERATOR,OPERANDS) 34 || NOTE THAT THE INTERNAL FORM OF ZF EXESSIONS IS CONS(ZF.OP,BODY) :- 35 || BODY::= CONS(EXP,NIL) | CONS(QUALIFIER,BODY) 36 || QUALIFIER::= EXP | CONS(GENERATOR,CONS(ID,EXP)) 37 38 || OPERATOR VALUES: 39 MANIFEST $( ALPHA=-2; INDIR=-1; QUOTE=0 || QUASI OPERATORS 40 COLON.OP=1; APPEND.OP=2; LISTDIFF.OP=3; OR.OP=4; AND.OP=5; GR.OP=6 41 GE.OP=7; NE.OP=8; EQ.OP=9; LE.OP=10; LS.OP=11; PLUS.OP=12 42 MINUS.OP=13;TIMES.OP=14;DIV.OP=15;REM.OP=16;EXP.OP=17;DOT.OP=18 43 DOTDOT.OP=19; COMMADOTDOT.OP=20; ZF.OP=21; GENERATOR=22 44 LENGTH.OP=23; NEG.OP=24; NOT.OP=25 45 QUOTE.OP=26 ||USED TO CONVERT AN INFIX INTO A FUNCTION 46 $) 47 48 ||INTERNAL REPRESENTATION OF KRC EQUATIONS 49 ||VAL FIELD OF ATOM ::= CONS(CONS(NARGS,COMMENT),LISTOF(EQN)) 50 || COMMENT ::= NIL | CONS(ATOM,COMMENT) 51 || EQN ::= CONS(LHS,CODE) 52 ||(IF NARGS=0 THERE IS ONLY ONE EQUATION IN THE LIST AND ITS LHS FIELD 53 || IS USED TO REMEMBER THE VALUE OF THE VARIABLE) 54 || LHS ::= ID | CONS(LHS,FORMAL) 55 || FORMAL ::= ID | CONST | CONS(COLON.OP,CONS(FORMAL,FORMAL)) 56 || CODE ::= INSTR* 57 || INSTR ::= LOAD.C <ID|CONST|MONOP> | 58 || LOADARG.C INT | 59 || APPLY.C | 60 || APPLYINFIX.C DIOP | 61 || IF.C | 62 || FORMLIST.C INT | 63 || MATCH.C INT CONST 64 || MATCHARG.C INT INT | 65 || MATCHPAIR.C INT | 66 || STOP.C | 67 || LINENO.C INT | 68 || CONTINUE.INFIX.C DIOP | 69 || CONT.GENERATOR.C INT| 70 || FORMZF.C INT| 71 || CALL.C BCPL_FN 72 73 ||INSTRUCTION CODES 74 MANIFEST $( LOAD.C=0; LOADARG.C=1; APPLY.C=2; APPLYINFIX.C=3 75 IF.C=4; FORMLIST.C=5; MATCH.C=6; MATCHARG.C=7 76 MATCHPAIR.C=8; STOP.C=9; LINENO.C=10; CALL.C=11 77 CONTINUE.INFIX.C=12; FORMZF.C=13; CONT.GENERATOR.C=14 78 ||THE LINENO COMMAND HAS NO EFFECT AT EXECUTION TIME, IT IS USED 79 ||TO GIVE AN EQUATION A NON STANDARD LINE NUMBER FOR INSERTION 80 ||PURPOSES 81 $) 82 83 ||EXTERNAL SYNTAX FOR KRC EXPRESSIONS AND EQUATIONS 84 || EQUATION ::= LHS=EXP | LHS=EXP,EXP 85 || LHS ::= ID FORMAL* 86 || FORMAL ::= ID | CONST | (PATTERN) | [PATTERN-LIST?] 87 || PATTERN ::= FORMAL:PATTERN | FORMAL 88 || EXP ::= PREFIX EXP | EXP INFIX EXP | SIMPLE SIMPLE* 89 || SIMPLE ::= ID | CONST | (EXP) | [EXP-LIST?] | [EXP..EXP] | [EXP..] | 90 || [EXP,EXP..EXP] | [EXP,EXP..] | {EXP;QUALIFIERS} 91 || QUALIFIERS ::= QUALIFIER | QUALIFIER;QUALIFIERS 92 || QUALIFIER ::= EXP | NAME-LIST<-EXP 93 || CONST ::= INT | "STRING" 94 95 || PREFIX AND INFIX OPERATORS, IN ORDER OF INCREASING BINDING POWER: 96 97 || (PREFIX) (INFIX) (REMARKS) 98 || : ++ -- right associative 99 || | 100 || & 101 || \ 102 || > >= = \= <= < continued relations allowed 103 || + - left associative 104 || + - 105 || * / % left associative 106 || ** . (** is right associative) 107 || # 108 ||Notes - "%" is remainder operator, "." is functional composition and "#" takes the length of lists 109 110 ||COMPILER GLOBALS 111 112 ||PROCEDURES 113 GLOBAL $( SETUP.INFIXES:170; READLINE:171; HAVE:172; HAVEID:173 114 SYNTAX:174; CHECK:175; HAVECONST:176;HAVENUM:177 115 EQUATION:178; PROFILE:179; PRINTEXP:180; DISPLAY:181 116 EXP:182; REMOVELINENO:183 117 PRINTATOM:184 ||DEFINED IN KRC_REDUCER 118 ISID:185 119 $) 120 121 ||OTHERS 122 GLOBAL $( CODEV:195; ENV:196 || BASES FOR GARBAGE COLLECTION 123 TRUEWRCH:197 124 TRUTH:198; FALSITY:199; INFINITY:200 ||BASES 125 ENVP:201; CODEP:202 126 LASTLHS:203 ||BASE 127 $) 128 129 130 131 132