4,19c4,24
<   0 PREFIX  EXTERNAL(128), OWN(32), BYTE(8), SHORT(0)
<   1 T       ;
<   2 COLON   :
<   3 COMMENT COMMENT
<   4 EQ      =
<   5 CLB     (
<   6 LB      (
<   7 COMMA   ,
<   8 RB      )
<   9 JUMP    ->
<  10 BAR     !
<  12 FOR     FOR, CYCLE
<  13 START   START, CYCLE, :
<  14 THEN    THEN
<  15 PTEXT   PRINTTEXT
< 
---
>   0 Z       EXTERNAL(128), BYTE(3), SHORT(0), C$(0)
>   1 SWITCH  SWITCH(72)
>   2 VTYPE   INTEGER(1), INTEGERNAME(33), INTEGERARRAYNAME(41)
>   3 OWN     OWN(64), EXTRINSIC(128), CONST(192)
>   4 ATYPE   INTEGERARRAY(9)
>   5 RTYPE   INTEGERMAP(77), INTEGERFN(69), PREDICATE(68), ROUTINE(76),
>             SPEC(36), INTEGERMAPSPEC(13), INTEGERFNSPEC(5),
>             PREDICATESPEC(4), ROUTINESPEC(12)
>   6 TYPE    STRING(7), INTEGER(1), INTEGERNAME(33), INTEGERARRAYNAME(41),
>             INTEGERMAP(77), INTEGERFN(69), PREDICATE(68), ROUTINE(76)
>   9 T       ;
>  10 COLON   :
>  11 COMMENT COMMENT
>  12 EQ      =
>  14 LB      (
>  15 COMMA   ,
>  16 RB      )
>  17 JUMP    ->
>  18 BAR     !
>  20 FOR     FOR
>  22 THEN    THEN
21,32c26,39
<  16 SIGN    +(0), -(1)
<  17 UOP     \(2)
<  18 OP1     <<(3), <>(3), >>(4), **(15)
<  19 OP2     &(6), *(12), //(13), /(14)
<  20 OP3     +(0), -(1), !!(10), !(11)
<  21 REFOP   ++(7), --(8)
<  22 REFASS  ==(9)
<  26 SIMP    RETURN(16), TRUE(17), FALSE(18), STOP(27), EXIT(20), CONTINUE(21)
<  27 RESULT  RESULT(19)
<  28 FAULT   FAULT(28)
<  29 MONITOR MONITOR(29)
<  30 MCODE   DAC(65), JMS(66), DZM(67), LAC(68), XOR(69), ADD(70), TAD(71),
---
>  24 SIGN    +(1), -(2)
>  25 UOP     \(3)
>  26 OP1     <<(4), <>(4), >>(5), **(15)
>  27 OP2     &(6), *(12), //(13), /(14)
>  28 OP3     +(1), -(2), !!(10), !(11)
>  29 REFOP   ++(7), --(8)
>  30 REFASS  ==(9)
>  31 SIMP    RETURN(16),TRUE(17),FALSE(18),STOP(19),EXIT(20)
>  34 MRESULT RESULT==
>  35 FRESULT RESULT=
>  36 FAULT   FAULT
>  37 MONITOR MONITOR
>  38 PTEXT   PRINTTEXT
>  40 MCODE   DAC(65), JMS(66), DZM(67), LAC(68), XOR(69), ADD(70), TAD(71),
37c44
<  31 LMCODE  LIT(35), LAC#(36), XOR#(37), ADD#(38), TAD#(39),
---
>  41 LMCODE  LIT(35), LAC#(36), XOR#(37), ADD#(38), TAD#(39),
39,71c46,78
<  32 SWITCH  SWITCH(33)
<  33 VTYPE   INTEGER(2), INTEGERNAME(18), INTEGERARRAYNAME(19)
<  34 OWNVTYPE [33+1]
<  35 ATYPE   INTEGERARRAY(3)
<  36 OWNATYPE [35+1]
<  37 RTYPE   INTEGERMAP(100), INTEGERFN(101), PREDICATE(102), ROUTINE(103),
<             SPEC(14), INTEGERMAPSPEC(36), INTEGERFNSPEC(37),
<             PREDICATESPEC(38), ROUTINESPEC(39)
<  38 TYPE    INTEGER(2), INTEGERNAME(18), INTEGERARRAYNAME(19),
<             INTEGERMAP(100), INTEGERFN(101), PREDICATE(102), ROUTINE(103)
<  39 BEGEND  ENDOFPRIM(1), ENDOFPERM(2), BEGIN(111),
<             END(260), ENDOFPROGRAM(261), ENDOFFILE(261)
<  40 L       [LABEL IDENTIFIER]
<  41 S       [SWITCH IDENTIFIER]
<  42 V       [VARIABLE IDENTIFIER]
<  43 A       [ARRAY IDENTIFIER]
<  44 M       [MAP IDENTIFIER]
<  45 F       [FUNCTION IDENTIFIER]
<  46 P       [PREDICATE IDENTIFIER]
<  47 R       [ROUTINE IDENTIFIER]
<  48 IDENT   [BUILT IN]
<  49 STRING  [BUILT IN]
<  50 SCONST  [BUILT IN]
< 
<  51 CWORD   IF(12), UNLESS(14)
<  52 AND     AND
<  53 OR      OR
<  54 NOT     NOT
<  55 COP     <(64), =(128), <=(192), >=(576), #(640), \=(640), >(704)
<  56 LWORD   WHILE(20), UNTIL(23)
<  57 REPEAT  REPEAT
<  58 FINISH  FINISH
<  59 ELSE    ELSE
---
>  42 AND     AND
>  43 OR      OR
>  44 NOT     NOT
>  45 COP     <(64), =(128), <=(192), >=(576), #(640), \=(640), >(704)
>  46 FINISH  FINISH
>  47 FELSE   FINISHELSE, ELSE
>  48 ELSE    ELSE
>  49 START   START
>  50 CYCLE   CYCLE
>  51 REPEAT  REPEAT
>  52 CWORD   IF(12), UNLESS(14)
>  53 LWORD   WHILE(20), UNTIL(23)
>  55 BEGIN   BEGIN
>  56 END     END
>  57 ENDPRIM ENDOFPRIM
>  58 ENDPERM ENDOFPERM
>  59 ENDPROG ENDOFPROGRAM, ENDOFFILE
> 
> [BUILT-IN]
>  64 L       [LABEL IDENTIFIER]
>  65 V       [VARIABLE IDENTIFIER]
>  66 BV      [BYTE VARIABLE IDENTIFIER]
>  67 STRING  [STRING]
>  68 P       [PREDICATE IDENTIFIER]
>  69 F       [FUNCTION IDENTIFIER]
>  70 IDENT   [IDENTIFIER]
>  71 SCONST  [NUMERIC CONSTANT]
>  72 S       [SWITCH IDENTIFIER]
>  73 A       [ARRAY IDENTIFIER]
>  74 BA      [BYTE ARRAY IDENTIFIER]
>  76 R       [ROUTINE IDENTIFIER]
>  77 M       [MAP IDENTIFIER]
>  78 BM      [BYTE MAP IDENTIFIER]
74,101c81,112
<  64 SLAB    /S
<  65 JLAB    /IDENT
<  66 LAB     /IDENT
<  67 AREF    /A
<  68 MREF    /M
<  69 DEST    /V
<  70 ADEST   /A
<  71 MDEST   /M
<  72 APAR    /A
<  73 MPAR    /M
<  74 FPAR    /F
<  75 PPAR    /P
<  76 RPAR    /R
<  77 VREF    /V
<  78 BAREF   /A
<  79 BMREF   /M
<  80 BAPAR   /A
<  81 BMPAR   /M
<  82 BVREF   /V
<  83 BSEP    /COLON
<  84 OSEP    /COMMA
<  85 SEP     /AND
<  87 ASSA    /EQ
<  88 MOD     /BAR
<  89 CSEP1   /COMMA
<  90 CSEP2   /COMMA
<  92 STARTT  /T
<  94 OWNT    /T
---
>  80 LAB     =L
>  81 PIDENT  =IDENT
>  82 SLAB    =S
>  83 MDEST   =M
>  84 PPAR    =P
>  85 FPAR    =F
>  86 ADEST   =A
>  87 STPAR   =STRING
>  88 AREF    =A
>  89 APAR    =A
>  90 BAPAR   =BA
>  91 MREF    =M
>  92 RPAR    =R
>  93 MPAR    =M
>  94 BMPAR   =BM
>  95 BMREF   =BM
>  96 VDEST   =V
>  97 VREF    =V
>  98 BVREF   =BV
>  99 BVDEST  =BV
> 100 BADEST  =BA
> 101 BMDEST  =BM
> 102 BAREF   =BA
> 103 ASSA    =EQ
> 104 MOD     =BAR
> 105 CSEP1   =COMMA
> 106 CSEP2   =COMMA
> 107 CONTROL =V
> 108 BSEP    =COLON
> 109 OSEP    =COMMA
> 110 OWNT    =T
> 111 SEP     =AND
104,126c115,129
<  97 IDENTS
<  98 EXPB
<  99 CONSTB
< 100 IMP     /SIMP
< 101 COND
< 102 SCOND
< 103 REF
< 104 BREF
< 105 CONST   /SCONST
< 106 EXP
< 107 EXP2
< 108 EXP1
< 109 SEXP    /V
< 110 SEQ
< 111 APP
< 
< 
< 
< 
< 
< 
< 
< 
---
> 112 APP
> 113 IDENTS
> 114 EXPB
> 115 CONSTB
> 116 IMP
> 117 COND
> 118 SCOND
> 119 REF
> 120 BREF
> 121 CONST
> 122 EXP
> 123 EXP2
> 124 EXP1
> 125 SEXP
> 126 SEQ
129,134c132,136
< SS0 -> LAB COLON,
<        SLAB LB CONST< RB COLON
< SS1 -> VTYPE IDENTS T,
<        OWNVTYPE IDENTS (EQ CONST< OSEP IDENTS)* (EQ CONST<)? OWNT,
<        BEGEND T,
<        RTYPE IDENT,
---
> SS ->  LAB< COLON,
>        SLAB< LB CONST< RB COLON,
>        VTYPE< IDENTS T,
>        OWN< VTYPE IDENTS (EQ CONST< OSEP IDENTS)* (EQ CONST<)? OWNT,
>        RTYPE<< PIDENT Z (LB TYPE IDENT ((COMMA,TYPE,COMMA TYPE) IDENT)* RB)? T,
136,147c138,151
<        OWNATYPE IDENT CONSTB< (EQ (CONST OSEP)* (T, CONST OWNT), OWNT),
<        SWITCH IDENTS CONSTB< (COMMA IDENTS CONSTB<)* T,
<        CONST (OSEP CONST)* (OSEP T, OWNT)
< SS2 -> (LB TYPE IDENT ((COMMA,TYPE,COMMA TYPE) IDENT)* RB)? T
< SS3 -> (FINISH? ELSE)? CWORD COND THEN? START? STARTT,
<        (FINISH? ELSE)? CWORD COND THEN IMP ELSE START? STARTT,
<        (FINISH? ELSE)? CWORD COND THEN IMP (ELSE IMP)? T,
<        FINISH? ELSE START? STARTT,
<        FINISH? ELSE IMP T,
<        FINISH T,
<        FOR SEQ (THEN IMP T, THEN? START? STARTT), FOR STARTT,
<        LWORD COND (THEN IMP T, THEN? START? STARTT),
---
>        OWN< ATYPE IDENT CONSTB< (EQ ((CONST OSEP)* (T Z)?)* CONST OWNT, OWNT),
>        SWITCH< IDENTS CONSTB< (COMMA IDENTS CONSTB<)* T,
>        BEGIN<< T,
>        END<<< T,
>        ENDPRIM< T,
>        ENDPERM< T,
>        ENDPROG<<<,
>        FELSE<? CWORD COND THEN? START T,
>        FELSE<? CWORD COND THEN IMP (ELSE (START,IMP))? T,
>        FELSE< (START,IMP) T,
>        FINISH< T,
>        (FOR SEQ)? CYCLE T,
>        CYCLE SEQ< T,
>        LWORD COND CYCLE T,
149,150c153,154
<        FAULT SCONST< JUMP (L,JLAB) T,
<        MCODE (L,S,V,A,M,F,P,R,SCONST,IDENT) T,
---
>        FAULT SCONST< JUMP L T,
>        MCODE (SCONST,IDENT) T,
152a157
> 
156,159c161,163
< IMP    -> (DEST,RESULT) EQ EXP< (SEP IMP)?,
<           DEST REFASS REF< (SEP IMP)?,
<           RESULT REFASS REF<<,
<           JUMP (L, JLAB, S APP<),
---
> IMP    -> VDEST EQ EXP< (SEP IMP)?,
>           VDEST REFASS< REF<< (SEP IMP)?,
>           JUMP (L, S< APP<<),
161,163c165,172
<           ADEST APP< ASSA<< EXP<<< (SEP IMP)?,
<           MDEST APP< EQ EXP<< (SEP IMP)?,
<           PTEXT STRING (SEP IMP)?,
---
>           (ADEST,MDEST) APP< ASSA<< EXP<<< (SEP IMP)?,
>           SIMP,
>           FRESULT EXP<,
>           MRESULT REF<,
>           BVDEST EQ EXP< (SEP IMP)?,
>           BVDEST REFASS< BREF<< (SEP IMP)?,
>           (BADEST,BMDEST) APP< ASSA<< EXP<<< (SEP IMP)?,
>           PTEXT STRING< (SEP IMP)?,
165,166c174,175
< COND   -> SCOND ((AND< SCOND)*, (OR< SCOND)*)
< SCOND  -> CLB COND RB,
---
> COND   -> SCOND ((AND< SCOND)*, (OR< SCOND)*), EXP +
> SCOND  -> LB COND RB,
169c178,179
<           EXP COP EXP< (COP EXP<)?
---
>           (LB EXP RB (OP1 SEXP<)* (OP2 EXP1<)* (OP3 EXP2<)*, EXP) (+,
>              COP EXP< (COP EXP<)?)
176c186
< CONST  -> (SIGN,UOP) SCONST<
---
> CONST  -> (SIGN,UOP)? SCONST<
178c188
<           SIGN EXP2< (OP3 EXP2<)*
---
>           SIGN EXP2< (OP3 EXP2)*
181,182c191,194
< SEXP   -> SCONST,
<           (A,F,M) APP<,
---
> SEXP   -> V,
>           SCONST,
>           BV,
>           (A,F,M,BA,BM) APP<,
185c197
< SEQ    -> V EQ EXP< CSEP1 EXP< CSEP2 EXP<
---
> SEQ    -> CONTROL EQ EXP< CSEP1 EXP< CSEP2 EXP<
