-- file PPPass1T.Mesa rewritten by PGS,  4-Feb-81 15:37
-- file PPPass1T.Mesa
-- syntax last modified by Satterthwaite, February 4, 1981  3:23 PM
-- rules  last modified by Satterthwaite, February 4, 1981  3:23 PM
-- last edit by Russ Atkinson,  9-Jul-81 14:33:14
  BEGIN  -- parse tree building
 -- local data base (supplied by parser)
 -- initialization/termination
 -- error recovery (only)
 -- stack manipulation
 -- note that r and s may be overlaid in some parameterizations
 -- value manipulation
 -- shared processing routines
 -- the interpretation rules
 -- propagated attributes
       -- basic tree building
        0  => -- TABLE: MesaTab  TYPE: ParseTable  EXPORTS: CBinary
	      -- GOAL:  goal
	      --TERMINALS:
	      --  id    num    lnum    flnum    string    lstring    char    atom
	      --   ,    ;    :   ..    =>   ←
	      --  =   #   <  >   <=   >=   ~   
	      --  +   -   *   /   ↑   .   @   !   '|   
	      --  RECORD   POINTER   REF   LIST   ARRAY   SEQUENCE   DESCRIPTOR
	      --  PROCEDURE   PROC  PORT   SIGNAL   ERROR   PROCESS
	      --  PROGRAM   MONITOR   ZONE   RELATIVE   LONG
	      --  TYPE   FRAME   TO   ORDERED   UNCOUNTED
	      --  BASE   OF   PACKED   RETURNS   MONITORED
	      --  OVERLAID   COMPUTED   MACHINE   DEPENDENT   DIRECTORY
	      --  DEFINITIONS   IMPORTS   EXPORTS   SHARES   RESIDENT
	      --  LOCKS   USING   PUBLIC   PRIVATE   READONLY
	      --  ENTRY   INTERNAL   INLINE   CODE
	      --  ABS   ALL   AND   CONS   MAX   MIN   MOD
	      --  NOT   OR   PRED   LENGTH   NEW   START   SUCC
	      --  FORK   JOIN   LOOPHOLE   NARROW   ISTYPE   SIZE
	      --  FIRST   LAST   NIL   NULL   IF   THEN   ELSE
	      --  WITH   FROM   FOR   DECREASING  IN
	      --  THROUGH  UNTIL  WHILE  REPEAT  FINISHED
	      --  RETURN  EXIT  LOOP  GOTO  GO
	      --  FREE  WAIT  RESTART  NOTIFY  BROADCAST  STOP
	      --  RESUME  REJECT  CONTINUE  RETRY  TRANSFER  STATE
	      --  OPEN  ENABLE  ANY  EXITS  )
	      --  )  ]  }  END  ENDLOOP  ENDCASE
	      --  (  [  {  BEGIN  DO  SELECT
	      --ALIASES:
	      --  id       tokenID
	      --  num      tokenNUM
	      --  lnum     tokenLNUM
	      --  flnum    tokenFLNUM
	      --  string   tokenSTR
	      --  lstring  tokenLSTR
	      --  char     tokenCHAR
	      --  atom     tokenATOM
	      --  -        tokenMINUS
	      --  .        tokenDOT
	      --  ..       tokenDOTS
	      --  =        tokenEQUAL
	      --  =>       tokenARROW
	      --  <        tokenLESS
	      --  <=       tokenLE
	      --  >        tokenGREATER
	      --  >=       tokenGE
	      --  .        InitialSymbol
	      --PRODUCTIONS:
              -- goal           ::= . unit . 
	      -- goal           ::= . unit .. 
        1  => -- unit           ::= directory module 
        2  => -- directory      ::= DIRECTORY includelist ;
        3  => -- includeitem    ::= id : FROM string using
        4  => -- includeitem    ::= id : TYPE using
	      -- includeitem    ::= id using
        5  => -- includeitem    ::= id : TYPE id using
        6  => -- using          ::= USING [ ]
        7  => -- module         ::= identlist classhead block 
	      -- module         ::= identlist defhead defbody 
        8  => -- classhead      ::= resident class arguments locks interface = public 
        9  => -- resident       ::= RESIDENT 
       10  => -- resident       ::= 
       11  => -- class          ::= PROGRAM 
       12  => -- class          ::= MONITOR 
       13  => -- defhead        ::= definitions locks imports shares = public 
       14  => -- definitions    ::= DEFINITIONS 
       15  => -- defbody        ::= BEGIN open declist END 
              -- defbody        ::= { open declist } 
       16  => -- locks          ::= LOCKS primary lambda
       17  => -- lambda         ::= USING ident typeexp
       18  => -- moduleitem     ::= id 
       19  => -- moduleitem     ::= id : id 
       20  => -- declaration    ::= identlist public readonly entry typeexp initialization 
       21  => -- declaration    ::= identlist public TYPE = public typeexp default 
       22  => -- declaration    ::= identlist public TYPE optargs 
       23  => -- public         ::= PUBLIC
       24  => -- public         ::= PRIVATE
              -- procaccess     ::=
       25  => -- public         ::=
       26  => -- entry          ::= ENTRY
       27  => -- entry          ::= INTERNAL
       28  => -- entry          ::=
       29  => -- idlist'        ::= id 
	      -- identlist'     ::= id : 
       30  => -- identlist'     ::= id position : 
       31  => -- idlist'        ::= id , idlist' 
	      -- identlist'     ::= id , identlist' 
       32  => -- identlist'     ::= id position , identlist' 
       33  => -- position       ::= ( exp optbits ) 
       34  => -- optbits        ::= : bounds 
	      -- interval       ::= [ bounds ] 
       35  => -- interval       ::= [ bounds ) 
       36  => -- interval       ::= ( bounds ] 
       37  => -- interval       ::= ( bounds ) 
       38  => -- typeexp        ::= id 
	      -- range          ::= id
       39  => -- typeid         ::= id . id 
       40  => -- typeid         ::= id id 
       41  => -- typeid         ::= id typeid 
       42  => -- typecons       ::= interval 
       43  => -- typecons       ::= id interval 
	      -- range          ::= id interval
       44  => -- typecons       ::= typeid interval 
	      -- range          ::= typeid interval
       45  => -- typecons       ::= id length 
       46  => -- typecons       ::= typeid length 
       47  => -- typecons       ::= dependent { elementlist }
       48  => -- ident     	::= id position :
              -- element        ::= id ( exp ) 
       49  => -- element        ::= ( exp )
       50  => -- typecons       ::= dependent monitored RECORD reclist
       51  => -- typecons       ::= ordered base pointertype
       52  => -- typecons       ::= REF readonly typeexp
       53  => -- typecons       ::= REF readonly ANY
       54  => -- typecons       ::= REF
       55  => -- typecons       ::= LIST OF readonly typeexp
       56  => -- typecons       ::= packed ARRAY indextype OF typeexp
       57  => -- typecons       ::= DESCRIPTOR FOR readonly typeexp
       58  => -- typecons       ::= transfermode arguments
       59  => -- typecons       ::= id RELATIVE typeexp
       60  => -- typecons       ::= typeid RELATIVE typeexp
       61  => -- typecons       ::= heap ZONE
       62  => -- typecons       ::= LONG typeexp
       63  => -- typecons       ::= FRAME [ id ]
       64  => -- monitored      ::= MONITORED
       65  => -- dependent      ::= MACHINE DEPENDENT
       66  => -- dependent      ::=
       67  => -- reclist        ::= [ ]
              -- reclist        ::= NULL
       68  => -- reclist        ::= [ pairlist ]
	      -- reclist        ::= [ typelist ]
       69  => -- reclist        ::= [ pairlist , variantpair ]
       70  => -- reclist        ::= [ variantpart default ]
       71  => -- pairitem       ::= identlist public typeexp default
              -- variantpair    ::= identlist public variantpart default
       72  => -- defaultopt     ::=
       73  => -- defaultopt     ::= NULL
       74  => -- defaultopt     ::= exp '| NULL
       75  => -- variantpart    ::= SELECT vcasehead FROM variantlist ENDCASE
              -- variantpart    ::= SELECT vcasehead FROM variantlist , ENDCASE
       76  => -- variantpart    ::= packed SEQUENCE vcasehead OF typeexp
       77  => -- vcasehead      ::= ident public tagtype
       78  => -- vcasehead      ::= COMPUTED tagtype
       79  => -- vcasehead      ::= OVERLAID tagtype
       80  => -- tagtype        ::= *
       81  => -- variantitem    ::= idlist => reclist
       82  => -- typelist       ::= typecons default
	      -- typelist       ::= typeid default
       83  => -- typelist       ::= id
       84  => -- typelist       ::= id ← defaultopt
       85  => -- typelist       ::= typecons default , typelist
	      -- typelist       ::= typeid default , typelist
       86  => -- typelist       ::= id , typelist
       87  => -- typelist       ::= id ← defaultopt , typelist
       88  => -- pointertype    ::= pointerprefix
       89  => -- pointertype    ::= pointerprefix TO readonly typeexp
       90  => -- transfermode   ::= PROCEDURE
              -- transfermode   ::= PROC
       91  => -- transfermode   ::= PORT
       92  => -- transfermode   ::= SIGNAL
       93  => -- transfermode   ::= ERROR
       94  => -- transfermode   ::= PROCESS
       95  => -- transfermode   ::= PROGRAM
       96  => -- initialization ::=
       97  => -- initvalue      ::= procaccess inline block
       98  => -- initvalue      ::= CODE
       99  => -- initvalue      ::= MACHINE CODE BEGIN codelist END
              -- initvalue      ::= MACHINE CODE { codelist }
      100  => -- codelist       ::= orderlist
      101  => -- codelist       ::= codelist ; orderlist
      102  => -- statement      ::= lhs
      103  => -- statement      ::= lhs ← exp 
      104  => -- statement      ::= [ explist ] ← exp 
      105  => -- statement      ::= block 
      106  => -- statement      ::= IF exp THEN statement elsepart 
      107  => -- statement      ::= casehead casestmtlist ENDCASE otherpart
      108  => -- statement      ::= forclause dotest DO scope doexit ENDLOOP 
      109  => -- statement      ::= EXIT 
      110  => -- statement      ::= LOOP 
      111  => -- statement      ::= GOTO id 
      112  => -- statement      ::= GO TO id 
      113  => -- statement      ::= RETURN optargs
      114  => -- statement      ::= transfer lhs
      115  => -- statement      ::= free [ exp optcatch ]
      116  => -- statement      ::= WAIT lhs
      117  => -- statement      ::= ERROR
      118  => -- statement      ::= STOP
      119  => -- statement      ::= NULL
      120  => -- statement      ::= RESUME optargs
      121  => -- statement      ::= REJECT
      122  => -- statement      ::= CONTINUE
      123  => -- statement      ::= RETRY
      124  => -- statement      ::= lhs ← STATE
      125  => -- block          ::= BEGIN scope exits END
              -- block          ::= { scope exits }
      126  => -- scope          ::= open enables declist statementlist
      127  => -- binditem       ::= exp
      128  => -- binditem       ::= id : exp
      129  => -- exits          ::= EXITS exitlist
      130  => -- casestmtitem   ::= caselabel => statement
	      -- caseexpitem    ::= caselabel => exp
	      -- exititem       ::= idlist => statement
      131  => -- casetest       ::= optrelation 
      132  => -- casetest       ::= exp 
      133  => -- caselabel      ::= ident typeexp
	      -- controlid      ::= ident typeexp 
      134  => -- forclause      ::= FOR controlid ← exp , exp 
      135  => -- forclause      ::= FOR controlid direction IN range 
      136  => -- forclause      ::= THROUGH range
      137  => -- direction      ::= DECREASING 
      138  => -- direction      ::=  
      139  => -- dotest         ::= UNTIL exp 
      140  => -- doexit         ::=
      141  => -- doexit         ::= REPEAT exitlist
      142  => -- doexit         ::= REPEAT exitlist FINISHED => statement
	      -- doexit         ::= REPEAT exitlist FINISHED => statement ;
      143  => -- enables        ::= ENABLE catchcase ;
      144  => -- enables        ::= ENABLE catchany ;
      145  => -- enables        ::= ENABLE BEGIN catchlist END ;
              -- enables        ::= ENABLE { catchlist } ;
      146  => -- catchlist      ::= catchhead
      147  => -- catchlist      ::= catchhead catchcase
      148  => -- catchcase      ::= lhslist => statement
      149  => -- optargs        ::= [ explist ]
      150  => -- transfer       ::= SIGNAL
      151  => -- transfer       ::= ERROR
      152  => -- transfer       ::= RETURN WITH ERROR
      153  => -- transfer       ::= START
      154  => -- transfer       ::= RESTART
      155  => -- transfer       ::= JOIN
      156  => -- transfer       ::= NOTIFY
      157  => -- transfer       ::= BROADCAST
      158  => -- transfer       ::= TRANSFER WITH
      159  => -- transfer       ::= RETURN WITH
       -- expression processing
      160  => -- keyitem        ::= id : optexp
      161  => -- optexp         ::= NULL
              -- initvalue      ::= NULL
      162  => -- exp            ::= transferop lhs 
      163  => -- exp            ::= IF exp THEN exp ELSE exp 
      164  => -- exp            ::= casehead caseexplist ENDCASE => exp 
      165  => -- exp            ::= lhs ← exp 
      166  => -- exp            ::= [ explist ] ← exp 
      167  => -- exp            ::= ERROR 
      168  => -- disjunct       ::= disjunct OR conjunct 
      169  => -- conjunct       ::= conjunct AND negation 
      170  => -- negation       ::= not relation 
      171  => -- relation       ::= sum optrelation 
              -- sum            ::= sum addop product 
              -- product        ::= product multop factor 
      172  => -- optrelation    ::= not relationtail 
      173  => -- relationtail   ::= IN range 
      174  => -- relop          ::= = 
      175  => -- relop          ::= # 
      176  => -- relop          ::= < 
      177  => -- relop          ::= <= 
      178  => -- relop          ::= > 
      179  => -- relop          ::= >= 
      180  => -- addop          ::= + 
      181  => -- addop          ::= - 
      182  => -- multop         ::= * 
      183  => -- multop         ::= / 
      184  => -- multop         ::= MOD 
      185  => -- factor         ::= - primary 
      186  => -- primary        ::= num 
      187  => -- primary        ::= lnum 
      188  => -- primary        ::= flnum 
      189  => -- primary        ::= char 
      190  => -- primary        ::= string 
      191  => -- primary        ::= lstring 
      192  => -- primary        ::= atom 
      193  => -- primary        ::= NIL 
      194  => -- primary 	::= [ explist ]
      195  => -- primary        ::= prefixop [ orderlist ]
      196  => -- primary        ::= new [ typeexp initialization optcatch ]
      197  => -- primary        ::= cons [ explist optcatch ]
      198  => -- primary        ::= listcons [ explist ]
      199  => -- primary        ::= typeop [ typeexp ]
      200  => -- primary        ::= SIZE [ typeexp ]
      201  => -- primary        ::= SIZE [ typeexp , exp ]
      202  => -- primary        ::= ISTYPE [ exp , typeexp optcatch ] 
      203  => -- primary        ::= @ lhs
      204  => -- primary        ::= DESCRIPTOR [ desclist ]
      205  => -- lhs            ::= id 
              -- element        ::= id
	      -- ident          ::= id : 
              -- controlid      ::= id 
      206  => -- lhs            ::= NARROW [ exp opttype optcatch ]
      207  => -- lhs            ::= LOOPHOLE [ exp opttype ]
      208  => -- qualifier      ::= [ explist optcatch ]
      209  => -- qualifier      ::= . id
      210  => -- qualifier      ::= ↑
      211  => -- optcatch       ::= ! catchlist
      212  => -- transferop     ::= SIGNAL
      213  => -- transferop     ::= ERROR
      214  => -- transferop     ::= START
      215  => -- transferop     ::= JOIN
      216  => -- transferop     ::= NEW 
      217  => -- transferop     ::= FORK
      218  => -- prefixop       ::= LONG 
      219  => -- prefixop       ::= ABS 
      220  => -- prefixop       ::= PRED 
      221  => -- prefixop       ::= SUCC 
      222  => -- prefixop       ::= MIN 
      223  => -- prefixop       ::= MAX 
      224  => -- prefixop       ::= BASE
      225  => -- prefixop       ::= LENGTH
      226  => -- prefixop       ::= ALL
      227  => -- typeop         ::= CODE
      228  => -- typeop         ::= FIRST
      229  => -- typeop         ::= LAST
      230  => -- typeop         ::= NIL
      231  => -- desclist       ::= exp , exp opttype
      232  => -- directory      ::= DIRECTORY ;
	      -- fieldlist      ::= [ ]
	      -- new            ::= NEW
              -- free           ::= FREE
              -- cons           ::= CONS
              -- listcons       ::= LIST
              -- pointerprefix  ::= POINTER
      233  => -- declist        ::= 
              -- statementlist  ::= 
	      -- casestmtlist   ::=
              -- exitlist       ::= 
	      -- catchhead      ::=
	      -- caseexplist    ::=
      234  => -- includelist    ::= includeitem
	      -- modulelist     ::= moduleitem
	      -- pairlist       ::= pairitem
	      -- elementlist    ::= element
	      -- variantlist    ::= variantitem
	      -- bindlist       ::= binditem
	      -- statementlist' ::= statement 
	      -- casestmtlist'  ::= casestmtitem
	      -- caselabel'     ::= casetest 
	      -- exitlist'      ::= exititem
	      -- lhslist        ::= lhs
	      -- orderlist      ::= optexp 
	      -- keylist        ::= keyitem 
	      -- caseexplist'   ::= caseexpitem
      235  => -- includelist    ::= includelist , includeitem
	      -- modulelist     ::= modulelist , moduleitem
	      -- declist        ::= declist declaration ; 
	      -- pairlist       ::= pairlist , pairitem
	      -- elementlist    ::= elementlist , element
	      -- variantlist    ::= variantlist , variantitem
	      -- bindlist       ::= bindlist , binditem
	      -- statementlist' ::= statementlist' ;  statement 
	      -- casestmtlist'  ::= casestmtlist' ; casestmtitem
	      -- caselabel'     ::= caselabel' , casetest 
	      -- exitlist'      ::= exitlist' ; exititem
	      -- catchhead      ::= catchhead  catchcase ;
	      -- lhslist        ::= lhslist , lhs
	      -- orderlist      ::= orderlist , optexp 
	      -- keylist        ::= keylist , keyitem 
	      -- caseexplist'   ::= caseexplist' , caseexpitem
      236  => -- idlist         ::= idlist'
	      -- identlist      ::= identlist'
	      -- explist        ::= orderlist
	      -- explist        ::= keylist
	      -- caselabel     ::= caselabel' 
      237  => -- imports        ::= IMPORTS modulelist
	      -- exports        ::= EXPORTS modulelist 
              -- open           ::= OPEN bindlist ;
	      -- fieldlist      ::= [ pairlist ]
	      -- fieldlist      ::= [ typelist ]
      238  => -- initialization ::= ← initvalue
	      -- casehead       ::= SELECT exp FROM
      239  => -- readonly       ::= READONLY
	      -- reclist        ::= [ variantpair ]
	      -- ordered        ::= ORDERED
	      -- base           ::= BASE
	      -- heap           ::= UNCOUNTED
	      -- packed		::= PACKED
	      -- initialization ::= = initvalue
	      -- inline		::= INLINE
	      -- casehead       ::= WITH binditem SELECT optexp FROM
      240  => -- packed		::=
	      -- readonly       ::=
	      -- monitored      ::=
	      -- ordered        ::=
	      -- base           ::=
	      -- heap           ::=
	      -- inline		::=
	      -- enables        ::=
	      -- exits          ::=
	      -- optcatch       ::=
      241  => -- using          ::= USING [ idlist ]
	      -- interface      ::= imports exports shares
	      -- shares         ::= SHARES idlist 
	      -- typeexp        ::= typeid 
	      -- typeexp        ::= typecons 
	      -- length         ::= [ exp ] 
	      -- default        ::= ← defaultopt 
	      -- defaultopt     ::= exp 
	      -- tagtype        ::= typeexp 
	      -- pointerprefix  ::= POINTER interval 
	      -- indextype      ::= typeexp 
	      -- arguments      ::= arglist returnlist 
	      -- arglist        ::= fieldlist 
	      -- returnlist     ::= RETURNS fieldlist 
	      -- initvalue      ::= exp 
	      -- elsepart       ::= ELSE statement 
	      -- otherpart      ::= => statement 
	      -- dotest         ::= WHILE exp 
	      -- catchany       ::= ANY => statement
	      -- catchlist      ::= catchhead catchany 
	      -- catchlist      ::= catchhead catchany ; 
	      -- statementlist  ::= statementlist' 
	      -- statementlist  ::= statementlist' ; 
	      -- casestmtlist   ::= casestmtlist' 
	      -- casestmtlist   ::= casestmtlist' ; 
	      -- exitlist	::= exitlist'
	      -- exitlist       ::= exitlist' ;
	      -- caseexplist    ::= caseexplist' 
	      -- caseexplist    ::= caseexplist' , 
	      -- optexp         ::= exp 
	      -- exp            ::= disjunct 
	      -- disjunct       ::=C conjunct 
	      -- conjunct       ::=C negation 
	      -- negation       ::=C relation 
	      -- not            ::= ~ 
	      -- not            ::= NOT 
	      -- relation       ::= sum 
	      -- optrelation    ::= relationtail 
	      -- relationtail   ::= relop sum 
	      -- range          ::= interval 
	      -- range          ::= typeid 
	      -- bounds         ::= exp .. exp 
	      -- sum            ::=C product 
	      -- product        ::=C factor 
	      -- factor         ::=C primary 
	      -- primary        ::= lhs 
	      -- desclist       ::= exp 
	      -- lhs            ::= ( exp ) 
	      -- lhs            ::= lhs qualifier 
              -- new            ::= lhs . NEW
              -- free           ::= lhs . FREE
              -- cons           ::= lhs . CONS
              -- listcons       ::= lhs . LIST
              -- opttype        ::= , typeexp
      242  => -- directory      ::= 
	      -- using          ::= 
	      -- locks          ::= 
	      -- lambda         ::= 
	      -- imports        ::= 
	      -- exports        ::= 
	      -- shares         ::= 
	      -- optbits        ::= 
	      -- default        ::= 
	      -- open           ::=
	      -- arglist        ::= 
	      -- returnlist     ::=