PreviousUpNext

15.4.156  src/app/yacc/src/yacc.grammar.pkg


# Compiled by:
#     src/app/yacc/src/mythryl-yacc.lib

generic package mlyacc_lr_vals_g (package header : Header
                          where Precedence == header::Precedence;
                        package token : Token;)
 { 
package parser_data{
package header { 
#  Mythryl-Yacc Parser Generator (c) 1989 Andrew W. Appel, David R. Tarditi 

#  parser for the ML parser generator 


###             "To change the rules, change the tools."
###                             -- Lee Felsenstein


###             "If work is to become play, then tools must become toys."
###                             -- Lee Felsenstein


###             "If we don't change direction soon,
###              we'll end up where we're going."
###
###                         -- Professor Irwin Corey



include package   header;

};
package lr_table = token::lr_table;
package token = token;
stipulate include package   lr_table; herein 
my table={   action_rows =
"\
\\x01\x00\x01\x00\x4c\x00\x00\x00\
\\x01\x00\x05\x00\x19\x00\x08\x00\x18\x00\x0e\x00\x17\x00\x10\x00\x16\x00\
\\x13\x00\x15\x00\x14\x00\x14\x00\x15\x00\x13\x00\x16\x00\x12\x00\
\\x18\x00\x11\x00\x19\x00\x10\x00\x1a\x00\x0f\x00\x1b\x00\x0e\x00\
\\x1c\x00\x0d\x00\x1d\x00\x0c\x00\x1f\x00\x0b\x00\x23\x00\x0a\x00\
\\x24\x00\x09\x00\x25\x00\x08\x00\x27\x00\x07\x00\x28\x00\x06\x00\x00\x00\
\\x01\x00\x06\x00\x3f\x00\x00\x00\
\\x01\x00\x06\x00\x4a\x00\x00\x00\
\\x01\x00\x06\x00\x56\x00\x00\x00\
\\x01\x00\x06\x00\x62\x00\x00\x00\
\\x01\x00\x07\x00\x55\x00\x21\x00\x54\x00\x00\x00\
\\x01\x00\x09\x00\x00\x00\x00\x00\
\\x01\x00\x0a\x00\x3d\x00\x00\x00\
\\x01\x00\x0b\x00\x03\x00\x00\x00\
\\x01\x00\x0c\x00\x1a\x00\x00\x00\
\\x01\x00\x0c\x00\x1c\x00\x00\x00\
\\x01\x00\x0c\x00\x1d\x00\x00\x00\
\\x01\x00\x0c\x00\x20\x00\x00\x00\
\\x01\x00\x0c\x00\x2c\x00\x0d\x00\x2b\x00\x00\x00\
\\x01\x00\x0c\x00\x2c\x00\x0d\x00\x2b\x00\x11\x00\x2a\x00\x20\x00\x29\x00\
\\x26\x00\x28\x00\x00\x00\
\\x01\x00\x0c\x00\x30\x00\x00\x00\
\\x01\x00\x0c\x00\x35\x00\x00\x00\
\\x01\x00\x0c\x00\x47\x00\x0f\x00\x46\x00\x00\x00\
\\x01\x00\x0c\x00\x47\x00\x0f\x00\x46\x00\x21\x00\x45\x00\x00\x00\
\\x01\x00\x0c\x00\x4d\x00\x00\x00\
\\x01\x00\x0c\x00\x50\x00\x00\x00\
\\x01\x00\x0c\x00\x65\x00\x00\x00\
\\x01\x00\x20\x00\x24\x00\x00\x00\
\\x01\x00\x20\x00\x25\x00\x00\x00\
\\x01\x00\x20\x00\x32\x00\x00\x00\
\\x01\x00\x20\x00\x39\x00\x00\x00\
\\x01\x00\x20\x00\x64\x00\x00\x00\
\\x01\x00\x20\x00\x68\x00\x00\x00\
\\x6a\x00\x0c\x00\x35\x00\x00\x00\
\\x6b\x00\x00\x00\
\\x6c\x00\x00\x00\
\\x6d\x00\x04\x00\x3a\x00\x00\x00\
\\x6e\x00\x04\x00\x3a\x00\x00\x00\
\\x6f\x00\x00\x00\
\\x70\x00\x00\x00\
\\x71\x00\x00\x00\
\\x72\x00\x00\x00\
\\x73\x00\x00\x00\
\\x74\x00\x00\x00\
\\x75\x00\x00\x00\
\\x76\x00\x00\x00\
\\x77\x00\x00\x00\
\\x78\x00\x00\x00\
\\x79\x00\x00\x00\
\\x7a\x00\x01\x00\x41\x00\x02\x00\x40\x00\x00\x00\
\\x7b\x00\x00\x00\
\\x7c\x00\x00\x00\
\\x7d\x00\x00\x00\
\\x7e\x00\x01\x00\x41\x00\x02\x00\x40\x00\x00\x00\
\\x7f\x00\x00\x00\
\\x80\x00\x00\x00\
\\x81\x00\x04\x00\x4b\x00\x00\x00\
\\x82\x00\x00\x00\
\\x83\x00\x00\x00\
\\x84\x00\x04\x00\x3c\x00\x00\x00\
\\x85\x00\x00\x00\
\\x86\x00\x01\x00\x41\x00\x02\x00\x40\x00\x00\x00\
\\x87\x00\x17\x00\x5b\x00\x00\x00\
\\x88\x00\x01\x00\x41\x00\x02\x00\x40\x00\x00\x00\
\\x89\x00\x17\x00\x3b\x00\x00\x00\
\\x8a\x00\x04\x00\x5e\x00\x00\x00\
\\x8b\x00\x00\x00\
\\x8c\x00\x00\x00\
\\x8d\x00\x00\x00\
\\x8e\x00\x0c\x00\x22\x00\x00\x00\
\\x8f\x00\x00\x00\
\\x90\x00\x00\x00\
\\x91\x00\x00\x00\
\\x92\x00\x00\x00\
\\x93\x00\x00\x00\
\\x94\x00\x00\x00\
\\x95\x00\x01\x00\x41\x00\x02\x00\x40\x00\x00\x00\
\\x96\x00\x0c\x00\x2c\x00\x0d\x00\x2b\x00\x11\x00\x2a\x00\x20\x00\x29\x00\
\\x26\x00\x28\x00\x00\x00\
\\x97\x00\x00\x00\
\\x98\x00\x01\x00\x41\x00\x02\x00\x40\x00\x00\x00\
\\x99\x00\x01\x00\x41\x00\x02\x00\x40\x00\x00\x00\
\\x9a\x00\x01\x00\x41\x00\x02\x00\x40\x00\x00\x00\
\\x9b\x00\x00\x00\
\\x9c\x00\x00\x00\
\\x9d\x00\x00\x00\
\\x9e\x00\x00\x00\
\\x9f\x00\x00\x00\
\\xa0\x00\x1e\x00\x60\x00\x00\x00\
\";
    action_row_numbers =
"\x09\x00\x1f\x00\x01\x00\x1e\x00\
\\x0a\x00\x2e\x00\x0b\x00\x0c\x00\
\\x0d\x00\x41\x00\x41\x00\x17\x00\
\\x18\x00\x0f\x00\x30\x00\x41\x00\
\\x41\x00\x0b\x00\x2f\x00\x10\x00\
\\x41\x00\x19\x00\x11\x00\x41\x00\
\\x1a\x00\x20\x00\x3c\x00\x23\x00\
\\x37\x00\x28\x00\x08\x00\x26\x00\
\\x41\x00\x22\x00\x2b\x00\x02\x00\
\\x31\x00\x49\x00\x44\x00\x47\x00\
\\x13\x00\x0e\x00\x4e\x00\x24\x00\
\\x29\x00\x21\x00\x2c\x00\x25\x00\
\\x2a\x00\x1d\x00\x3f\x00\x03\x00\
\\x34\x00\x27\x00\x00\x00\x32\x00\
\\x14\x00\x0f\x00\x0d\x00\x15\x00\
\\x40\x00\x0f\x00\x0f\x00\x0f\x00\
\\x48\x00\x06\x00\x04\x00\x46\x00\
\\x51\x00\x50\x00\x4f\x00\x3e\x00\
\\x41\x00\x41\x00\x41\x00\x3a\x00\
\\x3b\x00\x36\x00\x38\x00\x2d\x00\
\\x4a\x00\x4b\x00\x45\x00\x12\x00\
\\x0f\x00\x3d\x00\x53\x00\x33\x00\
\\x35\x00\x0f\x00\x05\x00\x4d\x00\
\\x41\x00\x1b\x00\x16\x00\x39\x00\
\\x0f\x00\x53\x00\x42\x00\x52\x00\
\\x4c\x00\x1c\x00\x43\x00\x07\x00";
   goto_table =
"\
\\x01\x00\x67\x00\x00\x00\
\\x06\x00\x02\x00\x00\x00\
\\x05\x00\x03\x00\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x02\x00\x19\x00\x00\x00\
\\x00\x00\
\\x0d\x00\x1d\x00\x0e\x00\x1c\x00\x00\x00\
\\x03\x00\x1f\x00\x00\x00\
\\x03\x00\x21\x00\x00\x00\
\\x00\x00\
\\x00\x00\
\\x07\x00\x25\x00\x11\x00\x24\x00\x00\x00\
\\x00\x00\
\\x03\x00\x2b\x00\x00\x00\
\\x03\x00\x2c\x00\x00\x00\
\\x02\x00\x2d\x00\x00\x00\
\\x00\x00\
\\x00\x00\
\\x03\x00\x2f\x00\x00\x00\
\\x00\x00\
\\x0a\x00\x32\x00\x0b\x00\x31\x00\x00\x00\
\\x03\x00\x36\x00\x0f\x00\x35\x00\x10\x00\x34\x00\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x03\x00\x3c\x00\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x07\x00\x25\x00\x11\x00\x40\x00\x00\x00\
\\x00\x00\
\\x00\x00\
\\x04\x00\x42\x00\x08\x00\x41\x00\x00\x00\
\\x07\x00\x46\x00\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x0a\x00\x47\x00\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x07\x00\x25\x00\x11\x00\x4c\x00\x00\x00\
\\x0d\x00\x4d\x00\x0e\x00\x1c\x00\x00\x00\
\\x00\x00\
\\x00\x00\
\\x07\x00\x25\x00\x11\x00\x4f\x00\x00\x00\
\\x07\x00\x25\x00\x11\x00\x50\x00\x00\x00\
\\x07\x00\x25\x00\x11\x00\x51\x00\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x03\x00\x56\x00\x09\x00\x55\x00\x00\x00\
\\x03\x00\x36\x00\x0f\x00\x57\x00\x10\x00\x34\x00\x00\x00\
\\x03\x00\x58\x00\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x04\x00\x5a\x00\x00\x00\
\\x07\x00\x25\x00\x11\x00\x5b\x00\x00\x00\
\\x00\x00\
\\x0c\x00\x5d\x00\x00\x00\
\\x00\x00\
\\x00\x00\
\\x07\x00\x25\x00\x11\x00\x5f\x00\x00\x00\
\\x00\x00\
\\x00\x00\
\\x03\x00\x61\x00\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x07\x00\x25\x00\x11\x00\x64\x00\x00\x00\
\\x0c\x00\x65\x00\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\\x00\x00\
\";
   numstates = 104;
   numrules = 55;
 s = REF "";  index = REF 0;
    string_to_int = \\ () = 
    {    i = *index;
         index := i+2;
         string::get_byte(*s, i) + string::get_byte(*s, i+1) * 256;
    };

    string_to_list = \\ s' =
    {   len = string::length_in_bytes s';
        fun f () =
           if (*index < len)
           string_to_int() ! f();
           else NIL; fi;
        index := 0;
        s := s';
        f ();
   };

   string_to_pairlist =   \\ (conv_key, conv_entry) =   f
   where 
         fun f ()
             =
             case (string_to_int ())
                 0 => EMPTY;
                 n => PAIR (conv_key (n - 1), conv_entry (string_to_int()), f());
             esac;
   end;

   string_to_pairlist_default =   \\ (conv_key, conv_entry) =
    {   conv_row = string_to_pairlist (conv_key, conv_entry);
       \\ () =
       {   default = conv_entry (string_to_int());
           row = conv_row();
          (row, default);
       };
   };

    string_to_table = \\ (convert_row, s') =
    {   len = string::length_in_bytes s';
        fun f ()
            =
           if (*index < len)
              convert_row() ! f();
           else NIL; fi;
        s := s';
        index := 0;
        f ();
     };

stipulate
  memo = rw_vector::make_rw_vector (numstates+numrules, ERROR);
  my _ ={   fun g i
                =
                {   rw_vector::set (memo, i, REDUCE (i-numstates));
                    g (i+1);
                };

            fun f i
                =
                if   (i == numstates)
                     g i;
                else    rw_vector::set (memo, i, SHIFT (STATE i));
                         f (i+1);
                fi;

            f 0
            except
                INDEX_OUT_OF_BOUNDS =  ();
        };
herein
    entry_to_action
        =
        \\ 0 =>  ACCEPT;
           1 =>  ERROR;
           j =>  rw_vector::get (memo, (j - 2));
        end;
end;

   goto_table = rw_vector::from_list (string_to_table (string_to_pairlist (NONTERM, STATE), goto_table));
   action_rows = string_to_table (string_to_pairlist_default (TERM, entry_to_action), action_rows);
   action_row_numbers = string_to_list action_row_numbers;
   action_table
    =
    {   action_row_lookup
            =
            {   a=rw_vector::from_list (action_rows);

                \\ i =   rw_vector::get (a, i);
            };

        rw_vector::from_list (map action_row_lookup action_row_numbers);
    };

    lr_table::make_lr_table {
        actions => action_table,
        gotos   => goto_table,
        rule_count   => numrules,
        state_count  => numstates,
        initial_state => STATE 0   };
};
end;
stipulate include package   header; herein
Source_Position = Int;
Arg = header::Input_Source;
package values { 
Semantic_Value = TM_VOID | NT_VOID  Void -> Void | UNKNOWN Void ->  (String) | TYVAR Void ->  (String) | PROG Void ->  (String) | PREC Void ->  (header::Precedence) | INT Void ->  (String)
 | IDDOT Void ->  (String) | ID Void ->  ((String, Int)) | HEADER Void ->  (String) | TY Void ->  (String) | CHANGE_DEC Void ->  ((( List header::Symbol, List header::Symbol)))
 | CHANGE_DECL Void ->  (List (( List header::Symbol, List header::Symbol)) ) | SUBST_DEC Void ->  ((( List header::Symbol, List header::Symbol)))
 | SUBST_DECL Void ->  (List (( List header::Symbol, List header::Symbol)) ) | G_RULE_PREC Void ->  (Null_Or header::Symbol ) | G_RULE_LIST Void ->  (List header::Rule )
 | G_RULE Void ->  (List header::Rule ) | RHS_LIST Void ->  (List { rhs: List header::Symbol , code: String, prec: Null_Or header::Symbol  } ) | RECORD_LIST Void ->  (String)
 | QUAL_ID Void ->  (String) | MPC_DECLS Void ->  (header::Decl_Data) | MPC_DECL Void ->  (header::Decl_Data) | LABEL Void ->  (String) | ID_LIST Void ->  (List header::Symbol )
 | CONSTR_LIST Void ->  (List ((header::Symbol, Null_Or header::Type)) ) | BEGIN Void ->  ((String, header::Decl_Data, (List header::Rule)));
};
Semantic_Value = values::Semantic_Value;
Result = (String, header::Decl_Data, (List header::Rule));
end;
package error_recovery{
include package lr_table;
infix my 60 @@;
fun x @@ y = y ! x;
is_keyword =
\\ _ => FALSE; end;
my preferred_change:   List( (List( Terminal ), List( Terminal )) ) = 
NIL;
no_shift = 
\\ (TERM 8) => TRUE; _ => FALSE; end;
show_terminal =
\\ (TERM 0) => "ARROW"
; (TERM 1) => "ASTERISK"
; (TERM 2) => "BLOCK"
; (TERM 3) => "BAR"
; (TERM 4) => "CHANGE"
; (TERM 5) => "COLON"
; (TERM 6) => "COMMA"
; (TERM 7) => "DELIMITER"
; (TERM 8) => "EOF_T"
; (TERM 9) => "FOR_T"
; (TERM 10) => "HEADER"
; (TERM 11) => "ID"
; (TERM 12) => "IDDOT"
; (TERM 13) => "PERCENT_HEADER"
; (TERM 14) => "INT"
; (TERM 15) => "KEYWORD"
; (TERM 16) => "LBRACE"
; (TERM 17) => "LPAREN"
; (TERM 18) => "NAME"
; (TERM 19) => "NODEFAULT"
; (TERM 20) => "NONTERM"
; (TERM 21) => "NOSHIFT"
; (TERM 22) => "OF_T"
; (TERM 23) => "PERCENT_EOP"
; (TERM 24) => "PERCENT_PURE"
; (TERM 25) => "PERCENT_POS"
; (TERM 26) => "PERCENT_ARG"
; (TERM 27) => "PERCENT_TOKEN_API_INFO"
; (TERM 28) => "PREC"
; (TERM 29) => "PREC_TAG"
; (TERM 30) => "PREFER"
; (TERM 31) => "PROG"
; (TERM 32) => "RBRACE"
; (TERM 33) => "RPAREN"
; (TERM 34) => "SUBST"
; (TERM 35) => "START"
; (TERM 36) => "TERM"
; (TERM 37) => "TYVAR"
; (TERM 38) => "VERBOSE"
; (TERM 39) => "VALUE"
; (TERM 40) => "UNKNOWN"
; (TERM 41) => "BOGUS_VALUE"
; _ => "bogus-term"; end;
stipulate include package   header; herein
errtermvalue=
\\ _ => values::TM_VOID;
 end; end;
my terms:  List( Terminal ) = NIL
 @@ (TERM 41) @@ (TERM 39) @@ (TERM 38) @@ (TERM 36) @@ (TERM 35) @@ (TERM 34) @@ (TERM 33) @@ (TERM 32) @@ (TERM 30) @@ (TERM 29) @@ (TERM 27) @@ (TERM 26) @@ (TERM 25) @@ (TERM 24) @@ (TERM 23) @@ 
(TERM 22) @@ (TERM 21) @@ (TERM 20) @@ (TERM 19) @@ (TERM 18) @@ (TERM 17) @@ (TERM 16) @@ (TERM 15) @@ (TERM 13) @@ (TERM 9) @@ (TERM 8) @@ (TERM 7) @@ (TERM 6) @@ (TERM 5) @@ (TERM 4) @@ (TERM 3)
 @@ (TERM 2) @@ (TERM 1) @@ (TERM 0);
};
package actions {
exception MLY_ACTION Int;
stipulate include package   header; herein
actions = 
\\ (i392, default_position, stack, 
    (input_source): Arg) = 
case (i392, stack)
  ( 0,  ( ( _,  ( values::G_RULE_LIST g_rule_list1,  _,  g_rule_list1right)) !  _ !  ( _,  ( values::MPC_DECLS mpc_decls1,  _,  _)) !  ( _,  ( values::HEADER header1,  header1left,  _)) !  rest671))
 => {  my  result = values::BEGIN (\\  _ =  {  my  (header as header1) = header1 ();
 my  (mpc_decls as mpc_decls1) = mpc_decls1 ();
 my  (g_rule_list as g_rule_list1) = g_rule_list1 ();
 (
header, mpc_decls, reverse g_rule_list);
 } );
 ( lr_table::NONTERM 0,  ( result,  header1left,  g_rule_list1right),  rest671);
 } 
;  ( 1,  ( ( _,  ( values::MPC_DECL mpc_decl1,  mpc_declleft,  mpc_decl1right)) !  ( _,  ( values::MPC_DECLS mpc_decls1,  mpc_decls1left,  _)) !  rest671)) => {  my  result = values::MPC_DECLS (\\  _
 =  {  my  (mpc_decls as mpc_decls1) = mpc_decls1 ();
 my  (mpc_decl as mpc_decl1) = mpc_decl1 ();
 (join_decls (mpc_decls, mpc_decl, input_source, mpc_declleft));
 } );
 ( lr_table::NONTERM 5,  ( 
result,  mpc_decls1left,  mpc_decl1right),  rest671);
 } 
;  ( 2,  ( rest671)) => {  my  result = values::MPC_DECLS (\\  _ =  (DECL { prec=>NIL, nonterm=>NULL, term=>NULL, eop=>NIL, control=>NIL,
                   keyword=>NIL, change=>NIL,
                   value=>NIL } ));
 ( 
lr_table::NONTERM 5,  ( result,  default_position,  default_position),  rest671);
 } 
;  ( 3,  ( ( _,  ( values::CONSTR_LIST constr_list1,  _,  constr_list1right)) !  ( _,  ( _,  term1left,  _)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  {  my  (constr_list as 
constr_list1) = constr_list1 ();
 (DECL { prec=>NIL, nonterm=>NULL,
               term => THE constr_list, eop =>NIL, control=>NIL,
                change=>NIL, keyword=>NIL,
                value=>NIL } );
 } );
 ( lr_table::NONTERM 
4,  ( result,  term1left,  constr_list1right),  rest671);
 } 
;  ( 4,  ( ( _,  ( values::CONSTR_LIST constr_list1,  _,  constr_list1right)) !  ( _,  ( _,  nonterm1left,  _)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  {  my  (constr_list as 
constr_list1) = constr_list1 ();
 (DECL { prec=>NIL, control=>NIL, nonterm=> THE constr_list,
               term => NULL, eop=>NIL, change=>NIL, keyword=>NIL,
               value=>NIL } );
 } );
 ( 
lr_table::NONTERM 4,  ( result,  nonterm1left,  constr_list1right),  rest671);
 } 
;  ( 5,  ( ( _,  ( values::ID_LIST id_list1,  _,  id_list1right)) !  ( _,  ( values::PREC prec1,  prec1left,  _)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  {  my  (prec as prec1) = 
prec1 ();
 my  (id_list as id_list1) = id_list1 ();
 (DECL { prec=> [(prec, id_list)], control=>NIL,
              nonterm=>NULL, term=>NULL, eop=>NIL, change=>NIL,
              keyword=>NIL, value=>NIL } );
 } )
;
 ( lr_table::NONTERM 4,  ( result,  prec1left,  id_list1right),  rest671);
 } 
;  ( 6,  ( ( _,  ( values::ID id1,  _,  id1right)) !  ( _,  ( _,  start1left,  _)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  {  my  (id as id1) = id1 ();
 (
DECL { prec=>NIL, control => [START_SYM (symbol_make id)], nonterm=>NULL,
               term => NULL, eop => NIL, change=>NIL, keyword=>NIL,
               value=>NIL } );
 } );
 ( lr_table::NONTERM 4,  ( result, 
 start1left,  id1right),  rest671);
 } 
;  ( 7,  ( ( _,  ( values::ID_LIST id_list1,  _,  id_list1right)) !  ( _,  ( _,  percent_eop1left,  _)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  {  my  (id_list as id_list1) = 
id_list1 ();
 (DECL { prec=>NIL, control=>NIL, nonterm=>NULL, term=>NULL,
                eop=>id_list, change=>NIL, keyword=>NIL,
                value=>NIL } );
 } );
 ( lr_table::NONTERM 4,  ( result,  percent_eop1left,  
id_list1right),  rest671);
 } 
;  ( 8,  ( ( _,  ( values::ID_LIST id_list1,  _,  id_list1right)) !  ( _,  ( _,  keyword1left,  _)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  {  my  (id_list as id_list1) = id_list1
 ();
 (DECL { prec=>NIL, control=>NIL, nonterm=>NULL, term=>NULL, eop=>NIL,
                change=>NIL, keyword=>id_list,
                value=>NIL } );
 } );
 ( lr_table::NONTERM 4,  ( result,  keyword1left,  id_list1right)
,  rest671);
 } 
;  ( 9,  ( ( _,  ( values::ID_LIST id_list1,  _,  id_list1right)) !  ( _,  ( _,  prefer1left,  _)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  {  my  (id_list as id_list1) = id_list1 ()
;
 (DECL { prec=>NIL, control=>NIL, nonterm=>NULL, term=>NULL, eop=>NIL,
                    change=>map (\\ i = ([], [i])) id_list, keyword=>NIL,
                    value=>NIL } );
 } );
 ( lr_table::NONTERM 4,  ( result,  
prefer1left,  id_list1right),  rest671);
 } 
;  ( 10,  ( ( _,  ( values::CHANGE_DECL change_decl1,  _,  change_decl1right)) !  ( _,  ( _,  change1left,  _)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  {  my  (change_decl as 
change_decl1) = change_decl1 ();
 (DECL { prec=>NIL, control=>NIL, nonterm=>NULL, term=>NULL, eop=>NIL,
                change=>change_decl, keyword=>NIL,
                value=>NIL } );
 } );
 ( lr_table::NONTERM 4,  ( result, 
 change1left,  change_decl1right),  rest671);
 } 
;  ( 11,  ( ( _,  ( values::SUBST_DECL subst_decl1,  _,  subst_decl1right)) !  ( _,  ( _,  subst1left,  _)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  {  my  (subst_decl as subst_decl1
) = subst_decl1 ();
 (DECL { prec=>NIL, control=>NIL, nonterm=>NULL, term=>NULL, eop=>NIL,
                change=>subst_decl, keyword=>NIL,
                value=>NIL } );
 } );
 ( lr_table::NONTERM 4,  ( result,  subst1left,  
subst_decl1right),  rest671);
 } 
;  ( 12,  ( ( _,  ( values::ID_LIST id_list1,  _,  id_list1right)) !  ( _,  ( _,  noshift1left,  _)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  {  my  (id_list as id_list1) = id_list1
 ();
 (DECL { prec=>NIL, control => [NSHIFT id_list], nonterm=>NULL, term=>NULL,
                    eop=>NIL, change=>NIL, keyword=>NIL,
                    value=>NIL } );
 } );
 ( lr_table::NONTERM 4,  ( result,  
noshift1left,  id_list1right),  rest671);
 } 
;  ( 13,  ( ( _,  ( values::PROG prog1,  _,  prog1right)) !  ( _,  ( _,  percent_header1left,  _)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  {  my  (prog as prog1) = prog1 ();
 (
DECL { prec=>NIL, control => [GENERIC prog], nonterm=>NULL, term=>NULL,
                    eop=>NIL, change=>NIL, keyword=>NIL,
                    value=>NIL } );
 } );
 ( lr_table::NONTERM 4,  ( result,  
percent_header1left,  prog1right),  rest671);
 } 
;  ( 14,  ( ( _,  ( values::PROG prog1,  _,  prog1right)) !  ( _,  ( _,  percent_token_api_info1left,  _)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  {  my  (prog as prog1) = prog1 ()
;
 (DECL { prec=>NIL, control => [TOKEN_API_INFO prog],
                    nonterm=>NULL, term=>NULL,
                    eop=>NIL, change=>NIL, keyword=>NIL,
                    value=>NIL } );
 } );
 ( 
lr_table::NONTERM 4,  ( result,  percent_token_api_info1left,  prog1right),  rest671);
 } 
;  ( 15,  ( ( _,  ( values::ID id1,  _,  id1right)) !  ( _,  ( _,  name1left,  _)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  {  my  (id as id1) = id1 ();
 (
DECL { prec=>NIL, control => [PARSER_NAME (symbol_make id)],
                    nonterm=>NULL, term=>NULL,
                    eop=>NIL, change=>NIL, keyword=>NIL, value=>NIL } );
 } );
 ( lr_table::NONTERM 4,  ( result
,  name1left,  id1right),  rest671);
 } 
;  ( 16,  ( ( _,  ( values::TY ty1,  _,  ty1right)) !  _ !  ( _,  ( values::PROG prog1,  _,  _)) !  ( _,  ( _,  percent_arg1left,  _)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  {  my 
 (prog as prog1) = prog1 ();
 my  (ty as ty1) = ty1 ();
 (
DECL { prec=>NIL, control => [PARSE_ARG (prog, ty)], nonterm=>NULL,
                    term=>NULL, eop=>NIL, change=>NIL, keyword=>NIL,
                     value=>NIL } );
 } );
 ( lr_table::NONTERM 4,  ( result,  
percent_arg1left,  ty1right),  rest671);
 } 
;  ( 17,  ( ( _,  ( _,  verbose1left,  verbose1right)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  (
DECL { prec=>NIL, control => [header::VERBOSE],
                nonterm=>NULL, term=>NULL, eop=>NIL,
                change=>NIL, keyword=>NIL,
                value=>NIL } ));
 ( lr_table::NONTERM 4,  ( result,  verbose1left,  
verbose1right),  rest671);
 } 
;  ( 18,  ( ( _,  ( _,  nodefault1left,  nodefault1right)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  (
DECL { prec=>NIL, control => [header::NODEFAULT],
                nonterm=>NULL, term=>NULL, eop=>NIL,
                change=>NIL, keyword=>NIL,
                value=>NIL } ));
 ( lr_table::NONTERM 4,  ( result,  
nodefault1left,  nodefault1right),  rest671);
 } 
;  ( 19,  ( ( _,  ( _,  percent_pure1left,  percent_pure1right)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  (
DECL { prec=>NIL, control => [header::PURE],
                nonterm=>NULL, term=>NULL, eop=>NIL,
                change=>NIL, keyword=>NIL,
                value=>NIL } ));
 ( lr_table::NONTERM 4,  ( result,  percent_pure1left
,  percent_pure1right),  rest671);
 } 
;  ( 20,  ( ( _,  ( values::TY ty1,  _,  ty1right)) !  ( _,  ( _,  percent_pos1left,  _)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  {  my  (ty as ty1) = ty1 ();
 (
DECL { prec=>NIL, control => [header::POS ty],
                nonterm=>NULL, term=>NULL, eop=>NIL,
                change=>NIL, keyword=>NIL,
                value=>NIL } );
 } );
 ( lr_table::NONTERM 4,  ( result,  
percent_pos1left,  ty1right),  rest671);
 } 
;  ( 21,  ( ( _,  ( values::PROG prog1,  _,  prog1right)) !  ( _,  ( values::ID id1,  _,  _)) !  ( _,  ( _,  value1left,  _)) !  rest671)) => {  my  result = values::MPC_DECL (\\  _ =  {  my  (id as 
id1) = id1 ();
 my  (prog as prog1) = prog1 ();
 (
DECL { prec=>NIL, control=>NIL,
                nonterm=>NULL, term=>NULL, eop=>NIL,
                change=>NIL, keyword=>NIL,
                value => [(symbol_make id, prog ) ] } );
 } );
 ( lr_table::NONTERM 4,  ( result,  
value1left,  prog1right),  rest671);
 } 
;  ( 22,  ( ( _,  ( values::CHANGE_DECL change_decl1,  _,  change_decl1right)) !  _ !  ( _,  ( values::CHANGE_DEC change_dec1,  change_dec1left,  _)) !  rest671)) => {  my  result = 
values::CHANGE_DECL (\\  _ =  {  my  (change_dec as change_dec1) = change_dec1 ();
 my  (change_decl as change_decl1) = change_decl1 ();
 (change_dec ! change_decl);
 } );
 ( lr_table::NONTERM 14,  ( 
result,  change_dec1left,  change_decl1right),  rest671);
 } 
;  ( 23,  ( ( _,  ( values::CHANGE_DEC change_dec1,  change_dec1left,  change_dec1right)) !  rest671)) => {  my  result = values::CHANGE_DECL (\\  _ =  {  my  (change_dec as change_dec1) = change_dec1
 ();
 ([change_dec]);
 } );
 ( lr_table::NONTERM 14,  ( result,  change_dec1left,  change_dec1right),  rest671);
 } 
;  ( 24,  ( ( _,  ( values::ID_LIST id_list2,  _,  id_list2right)) !  _ !  ( _,  ( values::ID_LIST id_list1,  id_list1left,  _)) !  rest671)) => {  my  result = values::CHANGE_DEC (\\  _ =  {  my  
id_list1 = id_list1 ();
 my  id_list2 = id_list2 ();
 (id_list1, id_list2);
 } );
 ( lr_table::NONTERM 15,  ( result,  id_list1left,  id_list2right),  rest671);
 } 
;  ( 25,  ( ( _,  ( values::SUBST_DECL subst_decl1,  _,  subst_decl1right)) !  _ !  ( _,  ( values::SUBST_DEC subst_dec1,  subst_dec1left,  _)) !  rest671)) => {  my  result = values::SUBST_DECL (\\ 
 _ =  {  my  (subst_dec as subst_dec1) = subst_dec1 ();
 my  (subst_decl as subst_decl1) = subst_decl1 ();
 (subst_dec ! subst_decl);
 } );
 ( lr_table::NONTERM 12,  ( result,  subst_dec1left,  
subst_decl1right),  rest671);
 } 
;  ( 26,  ( ( _,  ( values::SUBST_DEC subst_dec1,  subst_dec1left,  subst_dec1right)) !  rest671)) => {  my  result = values::SUBST_DECL (\\  _ =  {  my  (subst_dec as subst_dec1) = subst_dec1 ();
 (
[subst_dec]);
 } );
 ( lr_table::NONTERM 12,  ( result,  subst_dec1left,  subst_dec1right),  rest671);
 } 
;  ( 27,  ( ( _,  ( values::ID id2,  _,  id2right)) !  _ !  ( _,  ( values::ID id1,  id1left,  _)) !  rest671)) => {  my  result = values::SUBST_DEC (\\  _ =  {  my  id1 = id1 ();
 my  id2 = id2 ();

 ([symbol_make id2],[symbol_make id1]);
 } );
 ( lr_table::NONTERM 13,  ( result,  id1left,  id2right),  rest671);
 } 
;  ( 28,  ( ( _,  ( values::TY ty1,  _,  ty1right)) !  _ !  ( _,  ( values::ID id1,  _,  _)) !  _ !  ( _,  ( values::CONSTR_LIST constr_list1,  constr_list1left,  _)) !  rest671)) => {  my  result = 
values::CONSTR_LIST (\\  _ =  {  my  (constr_list as constr_list1) = constr_list1 ();
 my  (id as id1) = id1 ();
 my  (ty as ty1) = ty1 ();
 ((symbol_make id, THE (type_make ty)) ! constr_list);
 } )
;
 ( lr_table::NONTERM 1,  ( result,  constr_list1left,  ty1right),  rest671);
 } 
;  ( 29,  ( ( _,  ( values::ID id1,  _,  id1right)) !  _ !  ( _,  ( values::CONSTR_LIST constr_list1,  constr_list1left,  _)) !  rest671)) => {  my  result = values::CONSTR_LIST (\\  _ =  {  my  (
constr_list as constr_list1) = constr_list1 ();
 my  (id as id1) = id1 ();
 ((symbol_make id, NULL) ! constr_list);
 } );
 ( lr_table::NONTERM 1,  ( result,  constr_list1left,  id1right),  rest671)
;
 } 
;  ( 30,  ( ( _,  ( values::TY ty1,  _,  ty1right)) !  _ !  ( _,  ( values::ID id1,  id1left,  _)) !  rest671)) => {  my  result = values::CONSTR_LIST (\\  _ =  {  my  (id as id1) = id1 ();
 my  (ty
 as ty1) = ty1 ();
 ([(symbol_make id, THE (type_make ty))]);
 } );
 ( lr_table::NONTERM 1,  ( result,  id1left,  ty1right),  rest671);
 } 
;  ( 31,  ( ( _,  ( values::ID id1,  id1left,  id1right)) !  rest671)) => {  my  result = values::CONSTR_LIST (\\  _ =  {  my  (id as id1) = id1 ();
 ([(symbol_make id, NULL)]);
 } );
 ( 
lr_table::NONTERM 1,  ( result,  id1left,  id1right),  rest671);
 } 
;  ( 32,  ( ( _,  ( values::RHS_LIST rhs_list1,  _,  rhs_list1right)) !  _ !  ( _,  ( values::ID id1,  id1left,  _)) !  rest671)) => {  my  result = values::G_RULE (\\  _ =  {  my  (id as id1) = id1
 ();
 my  (rhs_list as rhs_list1) = rhs_list1 ();
 (map (\\ { rhs, code, prec } =
                  header::RULE { lhs=>symbol_make id, rhs,
                               code, prec } )
         rhs_list);
 } );
 ( 
lr_table::NONTERM 9,  ( result,  id1left,  rhs_list1right),  rest671);
 } 
;  ( 33,  ( ( _,  ( values::G_RULE g_rule1,  _,  g_rule1right)) !  ( _,  ( values::G_RULE_LIST g_rule_list1,  g_rule_list1left,  _)) !  rest671)) => {  my  result = values::G_RULE_LIST (\\  _ =  { 
 my  (g_rule_list as g_rule_list1) = g_rule_list1 ();
 my  (g_rule as g_rule1) = g_rule1 ();
 (g_rule @ g_rule_list);
 } );
 ( lr_table::NONTERM 10,  ( result,  g_rule_list1left,  g_rule1right),  
rest671);
 } 
;  ( 34,  ( ( _,  ( values::G_RULE g_rule1,  g_rule1left,  g_rule1right)) !  rest671)) => {  my  result = values::G_RULE_LIST (\\  _ =  {  my  (g_rule as g_rule1) = g_rule1 ();
 (g_rule);
 } );
 ( 
lr_table::NONTERM 10,  ( result,  g_rule1left,  g_rule1right),  rest671);
 } 
;  ( 35,  ( ( _,  ( values::ID_LIST id_list1,  _,  id_list1right)) !  ( _,  ( values::ID id1,  id1left,  _)) !  rest671)) => {  my  result = values::ID_LIST (\\  _ =  {  my  (id as id1) = id1 ();
 my 
 (id_list as id_list1) = id_list1 ();
 (symbol_make id ! id_list);
 } );
 ( lr_table::NONTERM 2,  ( result,  id1left,  id_list1right),  rest671);
 } 
;  ( 36,  ( rest671)) => {  my  result = values::ID_LIST (\\  _ =  (NIL));
 ( lr_table::NONTERM 2,  ( result,  default_position,  default_position),  rest671);
 } 
;  ( 37,  ( ( _,  ( values::PROG prog1,  _,  prog1right)) !  ( _,  ( values::G_RULE_PREC g_rule_prec1,  _,  _)) !  ( _,  ( values::ID_LIST id_list1,  id_list1left,  _)) !  rest671)) => {  my  result =
 values::RHS_LIST (\\  _ =  {  my  (id_list as id_list1) = id_list1 ();
 my  (g_rule_prec as g_rule_prec1) = g_rule_prec1 ();
 my  (prog as prog1) = prog1 ();
 (
 [ { rhs=>id_list, code=>prog, prec=>g_rule_prec } ] );
 } );
 ( lr_table::NONTERM 8,  ( result,  id_list1left,  prog1right),  rest671);
 } 
;  ( 38,  ( ( _,  ( values::PROG prog1,  _,  prog1right)) !  ( _,  ( values::G_RULE_PREC g_rule_prec1,  _,  _)) !  ( _,  ( values::ID_LIST id_list1,  _,  _)) !  _ !  ( _,  ( values::RHS_LIST rhs_list1
,  rhs_list1left,  _)) !  rest671)) => {  my  result = values::RHS_LIST (\\  _ =  {  my  (rhs_list as rhs_list1) = rhs_list1 ();
 my  (id_list as id_list1) = id_list1 ();
 my  (g_rule_prec as 
g_rule_prec1) = g_rule_prec1 ();
 my  (prog as prog1) = prog1 ();
 ( { rhs=>id_list, code=>prog, prec=>g_rule_prec } ! rhs_list);
 } );
 ( lr_table::NONTERM 8,  ( result,  rhs_list1left,  prog1right)
,  rest671);
 } 
;  ( 39,  ( ( _,  ( values::TYVAR tyvar1,  tyvar1left,  tyvar1right)) !  rest671)) => {  my  result = values::TY (\\  _ =  {  my  (tyvar as tyvar1) = tyvar1 ();
 (tyvar);
 } );
 ( lr_table::NONTERM 16
,  ( result,  tyvar1left,  tyvar1right),  rest671);
 } 
;  ( 40,  ( ( _,  ( _,  _,  rbrace1right)) !  ( _,  ( values::RECORD_LIST record_list1,  _,  _)) !  ( _,  ( _,  lbrace1left,  _)) !  rest671)) => {  my  result = values::TY (\\  _ =  {  my  (
record_list as record_list1) = record_list1 ();
 ("{ " + record_list + " }");
 } );
 ( lr_table::NONTERM 16,  ( result,  lbrace1left,  rbrace1right),  rest671);
 } 
;  ( 41,  ( ( _,  ( _,  _,  rbrace1right)) !  ( _,  ( _,  lbrace1left,  _)) !  rest671)) => {  my  result = values::TY (\\  _ =  ("{ }"));
 ( lr_table::NONTERM 16,  ( result,  lbrace1left,  
rbrace1right),  rest671);
 } 
;  ( 42,  ( ( _,  ( values::PROG prog1,  prog1left,  prog1right)) !  rest671)) => {  my  result = values::TY (\\  _ =  {  my  (prog as prog1) = prog1 ();
 ("(" + prog + ")");
 } );
 ( 
lr_table::NONTERM 16,  ( result,  prog1left,  prog1right),  rest671);
 } 
;  ( 43,  ( ( _,  ( values::TY ty1,  _,  ty1right)) !  ( _,  ( values::QUAL_ID qual_id1,  qual_id1left,  _)) !  rest671)) => {  my  result = values::TY (\\  _ =  {  my  (qual_id as qual_id1) = 
qual_id1 ();
 my  (ty as ty1) = ty1 ();
 (qual_id + " " + ty + " ");
 } );
 ( lr_table::NONTERM 16,  ( result,  qual_id1left,  ty1right),  rest671);
 } 
;  ( 44,  ( ( _,  ( values::QUAL_ID qual_id1,  qual_id1left,  qual_id1right)) !  rest671)) => {  my  result = values::TY (\\  _ =  {  my  (qual_id as qual_id1) = qual_id1 ();
 (qual_id);
 } );
 ( 
lr_table::NONTERM 16,  ( result,  qual_id1left,  qual_id1right),  rest671);
 } 
;  ( 45,  ( ( _,  ( values::TY ty2,  _,  ty2right)) !  _ !  ( _,  ( values::TY ty1,  ty1left,  _)) !  rest671)) => {  my  result = values::TY (\\  _ =  {  my  ty1 = ty1 ();
 my  ty2 = ty2 ();
 (
ty1 + "*" + ty2);
 } );
 ( lr_table::NONTERM 16,  ( result,  ty1left,  ty2right),  rest671);
 } 
;  ( 46,  ( ( _,  ( values::TY ty2,  _,  ty2right)) !  _ !  ( _,  ( values::TY ty1,  ty1left,  _)) !  rest671)) => {  my  result = values::TY (\\  _ =  {  my  ty1 = ty1 ();
 my  ty2 = ty2 ();
 (
ty1 + " -> " + ty2);
 } );
 ( lr_table::NONTERM 16,  ( result,  ty1left,  ty2right),  rest671);
 } 
;  ( 47,  ( ( _,  ( values::TY ty1,  _,  ty1right)) !  _ !  ( _,  ( values::LABEL label1,  _,  _)) !  _ !  ( _,  ( values::RECORD_LIST record_list1,  record_list1left,  _)) !  rest671)) => {  my  
result = values::RECORD_LIST (\\  _ =  {  my  (record_list as record_list1) = record_list1 ();
 my  (label as label1) = label1 ();
 my  (ty as ty1) = ty1 ();
 (record_list + ", " + label + ": " + ty)
;
 } );
 ( lr_table::NONTERM 7,  ( result,  record_list1left,  ty1right),  rest671);
 } 
;  ( 48,  ( ( _,  ( values::TY ty1,  _,  ty1right)) !  _ !  ( _,  ( values::LABEL label1,  label1left,  _)) !  rest671)) => {  my  result = values::RECORD_LIST (\\  _ =  {  my  (label as label1) = 
label1 ();
 my  (ty as ty1) = ty1 ();
 (label + ": " + ty);
 } );
 ( lr_table::NONTERM 7,  ( result,  label1left,  ty1right),  rest671);
 } 
;  ( 49,  ( ( _,  ( values::ID id1,  id1left,  id1right)) !  rest671)) => {  my  result = values::QUAL_ID (\\  _ =  {  my  (id as id1) = id1 ();
 ((\\ (a, _) = a) id);
 } );
 ( lr_table::NONTERM 6,  (
 result,  id1left,  id1right),  rest671);
 } 
;  ( 50,  ( ( _,  ( values::QUAL_ID qual_id1,  _,  qual_id1right)) !  ( _,  ( values::IDDOT iddot1,  iddot1left,  _)) !  rest671)) => {  my  result = values::QUAL_ID (\\  _ =  {  my  (iddot as iddot1)
 = iddot1 ();
 my  (qual_id as qual_id1) = qual_id1 ();
 (iddot + qual_id);
 } );
 ( lr_table::NONTERM 6,  ( result,  iddot1left,  qual_id1right),  rest671);
 } 
;  ( 51,  ( ( _,  ( values::ID id1,  id1left,  id1right)) !  rest671)) => {  my  result = values::LABEL (\\  _ =  {  my  (id as id1) = id1 ();
 ((\\ (a, _) = a) id);
 } );
 ( lr_table::NONTERM 3,  ( 
result,  id1left,  id1right),  rest671);
 } 
;  ( 52,  ( ( _,  ( values::INT int1,  int1left,  int1right)) !  rest671)) => {  my  result = values::LABEL (\\  _ =  {  my  (int as int1) = int1 ();
 (int);
 } );
 ( lr_table::NONTERM 3,  ( result,  
int1left,  int1right),  rest671);
 } 
;  ( 53,  ( ( _,  ( values::ID id1,  _,  id1right)) !  ( _,  ( _,  prec_tag1left,  _)) !  rest671)) => {  my  result = values::G_RULE_PREC (\\  _ =  {  my  (id as id1) = id1 ();
 (THE (symbol_make id)
);
 } );
 ( lr_table::NONTERM 11,  ( result,  prec_tag1left,  id1right),  rest671);
 } 
;  ( 54,  ( rest671)) => {  my  result = values::G_RULE_PREC (\\  _ =  (NULL));
 ( lr_table::NONTERM 11,  ( result,  default_position,  default_position),  rest671);
 } 
; _ => raise exception (MLY_ACTION i392);
esac;
end;
void = values::TM_VOID;
extract = \\ a = (\\ values::BEGIN x => x;
 _ => { exception PARSE_INTERNAL;
         raise exception PARSE_INTERNAL; }; end ) a ();
};
};
package tokens : (weak) Mlyacc_Tokens {
Semantic_Value = parser_data::Semantic_Value;
Token (X,Y) = token::Token(X,Y);
fun arrow (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 0, (parser_data::values::TM_VOID, p1, p2));
fun asterisk (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 1, (parser_data::values::TM_VOID, p1, p2));
fun block (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 2, (parser_data::values::TM_VOID, p1, p2));
fun bar (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 3, (parser_data::values::TM_VOID, p1, p2));
fun change (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 4, (parser_data::values::TM_VOID, p1, p2));
fun colon (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 5, (parser_data::values::TM_VOID, p1, p2));
fun comma (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 6, (parser_data::values::TM_VOID, p1, p2));
fun delimiter (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 7, (parser_data::values::TM_VOID, p1, p2));
fun eof_t (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 8, (parser_data::values::TM_VOID, p1, p2));
fun for_t (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 9, (parser_data::values::TM_VOID, p1, p2));
fun header (i, p1, p2) = token::TOKEN (parser_data::lr_table::TERM 10, (parser_data::values::HEADER (\\ () = i), p1, p2));
fun id (i, p1, p2) = token::TOKEN (parser_data::lr_table::TERM 11, (parser_data::values::ID (\\ () = i), p1, p2));
fun iddot (i, p1, p2) = token::TOKEN (parser_data::lr_table::TERM 12, (parser_data::values::IDDOT (\\ () = i), p1, p2));
fun percent_header (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 13, (parser_data::values::TM_VOID, p1, p2));
fun int (i, p1, p2) = token::TOKEN (parser_data::lr_table::TERM 14, (parser_data::values::INT (\\ () = i), p1, p2));
fun keyword (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 15, (parser_data::values::TM_VOID, p1, p2));
fun lbrace (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 16, (parser_data::values::TM_VOID, p1, p2));
fun lparen (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 17, (parser_data::values::TM_VOID, p1, p2));
fun name (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 18, (parser_data::values::TM_VOID, p1, p2));
fun nodefault (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 19, (parser_data::values::TM_VOID, p1, p2));
fun nonterm (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 20, (parser_data::values::TM_VOID, p1, p2));
fun noshift (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 21, (parser_data::values::TM_VOID, p1, p2));
fun of_t (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 22, (parser_data::values::TM_VOID, p1, p2));
fun percent_eop (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 23, (parser_data::values::TM_VOID, p1, p2));
fun percent_pure (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 24, (parser_data::values::TM_VOID, p1, p2));
fun percent_pos (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 25, (parser_data::values::TM_VOID, p1, p2));
fun percent_arg (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 26, (parser_data::values::TM_VOID, p1, p2));
fun percent_token_api_info (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 27, (parser_data::values::TM_VOID, p1, p2));
fun prec (i, p1, p2) = token::TOKEN (parser_data::lr_table::TERM 28, (parser_data::values::PREC (\\ () = i), p1, p2));
fun prec_tag (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 29, (parser_data::values::TM_VOID, p1, p2));
fun prefer (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 30, (parser_data::values::TM_VOID, p1, p2));
fun prog (i, p1, p2) = token::TOKEN (parser_data::lr_table::TERM 31, (parser_data::values::PROG (\\ () = i), p1, p2));
fun rbrace (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 32, (parser_data::values::TM_VOID, p1, p2));
fun rparen (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 33, (parser_data::values::TM_VOID, p1, p2));
fun subst (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 34, (parser_data::values::TM_VOID, p1, p2));
fun start (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 35, (parser_data::values::TM_VOID, p1, p2));
fun term (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 36, (parser_data::values::TM_VOID, p1, p2));
fun tyvar (i, p1, p2) = token::TOKEN (parser_data::lr_table::TERM 37, (parser_data::values::TYVAR (\\ () = i), p1, p2));
fun verbose (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 38, (parser_data::values::TM_VOID, p1, p2));
fun value (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 39, (parser_data::values::TM_VOID, p1, p2));
fun unknown (i, p1, p2) = token::TOKEN (parser_data::lr_table::TERM 40, (parser_data::values::UNKNOWN (\\ () = i), p1, p2));
fun bogus_value (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 41, (parser_data::values::TM_VOID, p1, p2));
};
};


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext