PreviousUpNext

15.4.157  src/app/yacc/src/yacc.lex.pkg


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

generic package lex_mlyacc_g (package tokens : Mlyacc_Tokens;
                  package header : Header #  = header 
                  where Precedence == header::Precedence
                  also  Input_Source == header::Input_Source;) : (weak) Arg_Lexer
{
   
    package user_declarations {
      
# Mythryl-Yacc Parser Generator (c) 1989 Andrew W. Appel, David R. Tarditi
#
#   yacc.lex: Lexer specification



###           "This therefore, is mathematics:
###            she reminds you of the invisible forms of the soul;
###            she gives life to her own discoveries;
###            she awakens the mind and purifies the intellect;
###            she brings to light our intrinsic ideas;
###            she abolishes the oblivion and ignorance which are ours by birth..."
###
###                                                 -- Proclus



package tokens = tokens;

Semantic_Value = tokens::Semantic_Value;
Source_Position = Int;
Token( X, Y ) = tokens::Token( X, Y );
Lex_Result = Token( Semantic_Value, Source_Position );

Lex_Arg = header::Input_Source;
Arg = Lex_Arg;

include tokens;

error  = header::error;
lineno = header::lineno;
text   = header::text;

pcount        = REF 0;
comment_level = REF 0;
actionstart   = REF 0;

eof =   fn i =
             {   if  (*pcount > 0)

                     error i *actionstart
                         " eof encountered in action beginning here !";
                 fi;

                 eof_t (*lineno, *lineno);
             };

fun add s
    =
    text :=   s ! *text;


stipulate

    dictionary = [("%prec",prec_tag),("%term",term),
            ("%nonterm",nonterm), ("%eop",percent_eop),("%start",start),
            ("%prefer",prefer),("%subst",subst),("%change",change),
            ("%keyword",keyword),("%name",name),
            ("%verbose",verbose), ("%nodefault",nodefault),
            ("%value",value), ("%noshift",noshift),
            ("%header",percent_header),("%pure",percent_pure),
            ("%token_api_info",percent_token_api_info),
            ("%arg",percent_arg),
            ("%pos",percent_pos)];
herein
    fun lookup (s,left,right)
        =
        {  fun f ((a,d) ! b) =>   if (a==s)   d(left,right);   else f b; fi;
               f NIL         =>   unknown(s,left,right);
           end;

           f dictionary;
        };
end;

fun inc (ri as REF i) =   ri := i + 1;
fun dec (ri as REF i) =   ri := i - 1;

}; #  end of user routines 
exception LEX_ERROR; # Raised if illegal leaf action tried.
package internal {
         

Yyfinstate = NN Int;
Statedata = { fin:  List( Yyfinstate ), trans: String };
#  transition & final state table 
tab = {
    s = [ 
 (0,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (1,  
"\017\017\017\017\017\017\017\017\017\017\024\017\017\023\017\017\
\\017\017\017\017\017\017\017\017\017\017\017\017\017\017\017\017\
\\017\017\017\017\017\021\017\017\017\017\017\017\017\017\017\019\
\\017\017\017\017\017\017\017\017\017\017\017\017\017\017\017\017\
\\017\017\017\017\017\017\017\017\017\017\017\017\017\017\017\017\
\\017\017\017\017\017\017\017\017\017\017\017\017\017\017\017\017\
\\017\017\017\017\017\017\017\017\017\017\017\017\017\017\017\017\
\\017\017\017\017\017\017\017\017\017\017\017\017\017\017\017\017\
\\017"
),
 (3,  
"\025\025\025\025\025\025\025\025\025\077\080\025\025\079\025\025\
\\025\025\025\025\025\025\025\025\025\025\025\025\025\025\025\025\
\\077\025\025\070\025\050\025\048\047\025\046\025\045\043\025\041\
\\039\039\039\039\039\039\039\039\039\039\038\025\025\025\025\025\
\\025\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\
\\029\029\029\029\029\029\029\029\029\029\029\025\025\025\025\025\
\\025\029\029\029\029\029\035\029\029\029\029\029\029\029\029\033\
\\029\029\029\029\029\029\029\029\029\029\029\028\027\026\025\025\
\\025"
),
 (5,  
"\081\081\081\081\081\081\081\081\081\081\024\081\081\087\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\086\081\081\081\081\081\085\084\081\081\081\081\081\082\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081"
),
 (7,  
"\088\088\088\088\088\088\088\088\088\090\024\088\088\092\088\088\
\\088\088\088\088\088\088\088\088\088\088\088\088\088\088\088\088\
\\090\088\088\088\088\088\088\088\088\088\088\088\088\088\088\088\
\\088\088\088\088\088\088\088\088\088\088\088\088\088\088\088\088\
\\088\088\088\088\088\088\088\088\088\088\088\088\088\088\088\088\
\\088\088\088\088\088\088\088\088\088\088\088\088\089\088\088\088\
\\088\088\088\088\088\088\088\088\088\088\088\088\088\088\088\088\
\\088\088\088\088\088\088\088\088\088\088\088\088\088\088\088\088\
\\088"
),
 (9,  
"\093\093\093\093\093\093\093\093\093\093\024\093\093\087\093\093\
\\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\
\\093\093\093\093\093\093\093\093\000\000\096\093\093\093\093\094\
\\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\
\\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\
\\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\
\\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\
\\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\
\\093"
),
 (11,  
"\098\098\098\098\098\098\098\098\098\098\100\098\098\099\098\098\
\\098\098\098\098\098\098\098\098\098\098\098\098\098\098\098\098\
\\098\098\098\098\098\098\098\098\098\098\098\098\098\098\098\098\
\\098\098\098\098\098\098\098\098\098\098\098\098\098\098\098\098\
\\098\098\098\098\098\098\098\098\098\098\098\098\098\098\098\098\
\\098\098\098\098\098\098\098\098\098\098\098\098\098\098\098\098\
\\098\098\098\098\098\098\098\098\098\098\098\098\098\098\098\098\
\\098\098\098\098\098\098\098\098\098\098\098\098\098\098\098\098\
\\098"
),
 (13,  
"\101\101\101\101\101\101\101\101\101\101\109\101\101\108\101\101\
\\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\
\\101\101\107\101\101\101\101\101\101\101\101\101\101\101\101\101\
\\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\
\\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\
\\101\101\101\101\101\101\101\101\101\101\101\101\102\101\101\101\
\\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\
\\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\
\\101"
),
 (15,  
"\110\110\110\110\110\110\110\110\110\110\024\110\110\087\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\115\115\113\110\110\110\110\111\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110"
),
 (17,  
"\018\018\018\018\018\018\018\018\018\018\000\018\018\000\018\018\
\\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\
\\018\018\018\018\018\000\018\018\018\018\018\018\018\018\018\018\
\\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\
\\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\
\\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\
\\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\
\\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\
\\018"
),
 (19,  
"\018\018\018\018\018\018\018\018\018\018\000\018\018\000\018\018\
\\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\
\\018\018\018\018\018\000\018\018\018\018\020\018\018\018\018\018\
\\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\
\\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\
\\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\
\\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\
\\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\
\\018"
),
 (20,  
"\018\018\018\018\018\018\018\018\018\018\000\018\018\000\018\018\
\\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\
\\018\018\018\020\018\000\018\018\018\018\020\018\018\020\018\018\
\\018\018\018\018\018\018\018\018\018\018\018\018\018\020\018\018\
\\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\
\\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\
\\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\
\\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\
\\018"
),
 (21,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\022\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (23,  
"\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (29,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\030\000\000\000\000\000\000\000\000\
\\030\030\030\030\030\030\030\030\030\030\031\000\000\000\000\000\
\\000\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
\\030\030\030\030\030\030\030\030\030\030\030\000\000\000\000\030\
\\000\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
\\030\030\030\030\030\030\030\030\030\030\030\000\000\000\000\000\
\\000"
),
 (31,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\032\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (33,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\030\000\000\000\000\000\000\000\000\
\\030\030\030\030\030\030\030\030\030\030\031\000\000\000\000\000\
\\000\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
\\030\030\030\030\030\030\030\030\030\030\030\000\000\000\000\030\
\\000\030\030\030\030\030\034\030\030\030\030\030\030\030\030\030\
\\030\030\030\030\030\030\030\030\030\030\030\000\000\000\000\000\
\\000"
),
 (35,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\030\000\000\000\000\000\000\000\000\
\\030\030\030\030\030\030\030\030\030\030\031\000\000\000\000\000\
\\000\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
\\030\030\030\030\030\030\030\030\030\030\030\000\000\000\000\030\
\\000\030\030\030\030\030\030\030\030\030\030\030\030\030\030\036\
\\030\030\030\030\030\030\030\030\030\030\030\000\000\000\000\000\
\\000"
),
 (36,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\030\000\000\000\000\000\000\000\000\
\\030\030\030\030\030\030\030\030\030\030\031\000\000\000\000\000\
\\000\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
\\030\030\030\030\030\030\030\030\030\030\030\000\000\000\000\030\
\\000\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
\\030\030\037\030\030\030\030\030\030\030\030\000\000\000\000\000\
\\000"
),
 (39,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\040\040\040\040\040\040\040\040\040\040\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (41,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\042\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (42,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\042\000\000\000\000\000\000\042\000\000\042\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\042\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (43,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\044\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (48,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\049\000\000\000\000\000\000\000\000\
\\049\049\049\049\049\049\049\049\049\049\000\000\000\000\000\000\
\\000\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\
\\049\049\049\049\049\049\049\049\049\049\049\000\000\000\000\049\
\\000\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\
\\049\049\049\049\049\049\049\049\049\049\049\000\000\000\000\000\
\\000"
),
 (50,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\069\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\051\
\\000\051\051\051\051\051\051\051\051\051\051\051\065\051\057\051\
\\051\051\052\051\051\051\051\051\051\051\051\000\000\000\000\000\
\\000"
),
 (51,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\051\
\\000\051\051\051\051\051\051\051\051\051\051\051\051\051\051\051\
\\051\051\051\051\051\051\051\051\051\051\051\000\000\000\000\000\
\\000"
),
 (52,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\051\
\\000\051\051\051\051\051\051\051\051\053\051\051\051\051\051\051\
\\051\051\051\051\051\051\051\051\051\051\051\000\000\000\000\000\
\\000"
),
 (53,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\051\
\\000\051\051\051\051\051\051\054\051\051\051\051\051\051\051\051\
\\051\051\051\051\051\051\051\051\051\051\051\000\000\000\000\000\
\\000"
),
 (54,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\051\
\\000\051\051\051\051\051\051\051\055\051\051\051\051\051\051\051\
\\051\051\051\051\051\051\051\051\051\051\051\000\000\000\000\000\
\\000"
),
 (55,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\051\
\\000\051\051\051\051\051\051\051\051\051\051\051\051\051\051\051\
\\051\051\051\051\056\051\051\051\051\051\051\000\000\000\000\000\
\\000"
),
 (57,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\051\
\\000\051\051\051\051\051\051\051\051\051\051\051\051\051\051\058\
\\051\051\051\051\051\051\051\051\051\051\051\000\000\000\000\000\
\\000"
),
 (58,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\051\
\\000\051\051\051\051\051\051\051\051\051\051\051\051\051\059\051\
\\051\051\051\051\051\051\051\051\051\051\051\000\000\000\000\000\
\\000"
),
 (59,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\051\
\\000\060\051\051\051\051\051\051\051\051\051\051\051\051\051\051\
\\051\051\051\051\051\051\051\051\051\051\051\000\000\000\000\000\
\\000"
),
 (60,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\051\
\\000\051\051\051\051\051\051\051\051\051\051\051\051\051\051\051\
\\051\051\051\061\051\051\051\051\051\051\051\000\000\000\000\000\
\\000"
),
 (61,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\051\
\\000\051\051\051\051\051\051\051\051\051\051\051\051\051\051\051\
\\051\051\051\062\051\051\051\051\051\051\051\000\000\000\000\000\
\\000"
),
 (62,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\051\
\\000\051\051\051\051\051\051\051\051\051\051\051\051\051\051\063\
\\051\051\051\051\051\051\051\051\051\051\051\000\000\000\000\000\
\\000"
),
 (63,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\051\
\\000\051\051\064\051\051\051\051\051\051\051\051\051\051\051\051\
\\051\051\051\051\051\051\051\051\051\051\051\000\000\000\000\000\
\\000"
),
 (65,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\051\
\\000\051\051\051\051\066\051\051\051\051\051\051\051\051\051\051\
\\051\051\051\051\051\051\051\051\051\051\051\000\000\000\000\000\
\\000"
),
 (66,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\051\
\\000\051\051\051\051\051\067\051\051\051\051\051\051\051\051\051\
\\051\051\051\051\051\051\051\051\051\051\051\000\000\000\000\000\
\\000"
),
 (67,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\051\
\\000\051\051\051\051\051\051\051\051\051\051\051\051\051\051\051\
\\051\051\051\051\068\051\051\051\051\051\051\000\000\000\000\000\
\\000"
),
 (70,  
"\000\000\000\000\000\000\000\000\000\076\075\000\000\074\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\073\072\000\071\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (74,  
"\000\000\000\000\000\000\000\000\000\000\075\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (77,  
"\000\000\000\000\000\000\000\000\000\078\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\078\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (79,  
"\000\000\000\000\000\000\000\000\000\000\080\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (81,  
"\081\081\081\081\081\081\081\081\081\081\000\081\081\000\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\000\081\081\081\081\081\000\000\081\081\081\081\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081"
),
 (82,  
"\081\081\081\081\081\081\081\081\081\081\000\081\081\000\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\000\081\081\081\081\081\000\000\083\081\081\081\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081"
),
 (83,  
"\081\081\081\081\081\081\081\081\081\081\000\081\081\000\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\000\083\081\081\081\081\000\000\083\081\081\083\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\083\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
\\081"
),
 (90,  
"\000\000\000\000\000\000\000\000\000\091\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\091\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (93,  
"\093\093\093\093\093\093\093\093\093\093\000\093\093\000\093\093\
\\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\
\\093\093\093\093\093\093\093\093\000\000\000\093\093\093\093\093\
\\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\
\\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\
\\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\
\\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\
\\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\
\\093"
),
 (94,  
"\093\093\093\093\093\093\093\093\093\093\000\093\093\000\093\093\
\\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\
\\093\093\093\093\093\093\093\093\000\000\095\093\093\093\093\093\
\\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\
\\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\
\\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\
\\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\
\\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\093\
\\093"
),
 (95,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\095\000\000\000\000\000\000\095\000\000\095\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\095\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (96,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\097\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (99,  
"\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (101,  
"\101\101\101\101\101\101\101\101\101\101\000\101\101\000\101\101\
\\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\
\\101\101\000\101\101\101\101\101\101\101\101\101\101\101\101\101\
\\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\
\\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\
\\101\101\101\101\101\101\101\101\101\101\101\101\000\101\101\101\
\\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\
\\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\101\
\\101"
),
 (102,  
"\000\000\000\000\000\000\000\000\000\104\106\000\000\105\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\104\000\103\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (105,  
"\000\000\000\000\000\000\000\000\000\000\106\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (108,  
"\000\000\000\000\000\000\000\000\000\000\109\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (110,  
"\110\110\110\110\110\110\110\110\110\110\000\110\110\000\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\000\000\000\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110"
),
 (111,  
"\110\110\110\110\110\110\110\110\110\110\000\110\110\000\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\000\000\112\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110"
),
 (112,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\112\000\000\000\000\000\000\112\000\000\112\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\112\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (113,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\114\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
    (0, "")];
    fun f x = x;
    s = map f (reverse (tail (reverse s)));
    exception LEX_HACKING_ERROR;
    fun get ((j, x) ! r, i: Int)
            =>
            if (i == j)  x;   else get (r, i); fi;

        get ([], i)
            =>
            raise exception LEX_HACKING_ERROR;
    end;
fun g {   fin => x,   trans => i   }
    =
    {   fin => x,   trans => get (s, i)   };
 vector::from_list (map g 
[{ fin => [], trans => 0},
{ fin => [], trans => 1},
{ fin => [], trans => 1},
{ fin => [], trans => 3},
{ fin => [], trans => 3},
{ fin => [], trans => 5},
{ fin => [], trans => 5},
{ fin => [], trans => 7},
{ fin => [], trans => 7},
{ fin => [], trans => 9},
{ fin => [], trans => 9},
{ fin => [], trans => 11},
{ fin => [], trans => 11},
{ fin => [], trans => 13},
{ fin => [], trans => 13},
{ fin => [], trans => 15},
{ fin => [], trans => 15},
{ fin => [(NN 32), (NN 42)], trans => 17},
{ fin => [(NN 32)], trans => 17},
{ fin => [(NN 32), (NN 42)], trans => 19},
{ fin => [(NN 3), (NN 32)], trans => 20},
{ fin => [(NN 42)], trans => 21},
{ fin => [(NN 35)], trans => 0},
{ fin => [(NN 40), (NN 42)], trans => 23},
{ fin => [(NN 40)], trans => 0},
{ fin => [(NN 129)], trans => 0},
{ fin => [(NN 70), (NN 129)], trans => 0},
{ fin => [(NN 122), (NN 129)], trans => 0},
{ fin => [(NN 68), (NN 129)], trans => 0},
{ fin => [(NN 125), (NN 129)], trans => 29},
{ fin => [(NN 125)], trans => 29},
{ fin => [], trans => 31},
{ fin => [(NN 112)], trans => 0},
{ fin => [(NN 125), (NN 129)], trans => 33},
{ fin => [(NN 62), (NN 125)], trans => 29},
{ fin => [(NN 125), (NN 129)], trans => 35},
{ fin => [(NN 125)], trans => 36},
{ fin => [(NN 66), (NN 125)], trans => 29},
{ fin => [(NN 120), (NN 129)], trans => 0},
{ fin => [(NN 115), (NN 129)], trans => 39},
{ fin => [(NN 115)], trans => 39},
{ fin => [(NN 129)], trans => 41},
{ fin => [(NN 7)], trans => 42},
{ fin => [(NN 129)], trans => 43},
{ fin => [(NN 77)], trans => 0},
{ fin => [(NN 72), (NN 129)], trans => 0},
{ fin => [(NN 74), (NN 129)], trans => 0},
{ fin => [(NN 127), (NN 129)], trans => 0},
{ fin => [(NN 107), (NN 129)], trans => 48},
{ fin => [(NN 107)], trans => 48},
{ fin => [(NN 129)], trans => 50},
{ fin => [(NN 104)], trans => 51},
{ fin => [(NN 104)], trans => 52},
{ fin => [(NN 104)], trans => 53},
{ fin => [(NN 104)], trans => 54},
{ fin => [(NN 104)], trans => 55},
{ fin => [(NN 90), (NN 104)], trans => 51},
{ fin => [(NN 104)], trans => 57},
{ fin => [(NN 104)], trans => 58},
{ fin => [(NN 104)], trans => 59},
{ fin => [(NN 104)], trans => 60},
{ fin => [(NN 104)], trans => 61},
{ fin => [(NN 104)], trans => 62},
{ fin => [(NN 104)], trans => 63},
{ fin => [(NN 100), (NN 104)], trans => 51},
{ fin => [(NN 104)], trans => 65},
{ fin => [(NN 104)], trans => 66},
{ fin => [(NN 104)], trans => 67},
{ fin => [(NN 83), (NN 104)], trans => 51},
{ fin => [(NN 118)], trans => 0},
{ fin => [(NN 129)], trans => 70},
{ fin => [(NN 25)], trans => 0},
{ fin => [(NN 22)], trans => 0},
{ fin => [(NN 16)], trans => 0},
{ fin => [(NN 13)], trans => 74},
{ fin => [(NN 13)], trans => 0},
{ fin => [(NN 19)], trans => 0},
{ fin => [(NN 59), (NN 129)], trans => 77},
{ fin => [(NN 59)], trans => 77},
{ fin => [(NN 54), (NN 129)], trans => 79},
{ fin => [(NN 54)], trans => 0},
{ fin => [(NN 138)], trans => 81},
{ fin => [(NN 138)], trans => 82},
{ fin => [(NN 29), (NN 138)], trans => 83},
{ fin => [(NN 133)], trans => 0},
{ fin => [(NN 131)], trans => 0},
{ fin => [(NN 135)], trans => 0},
{ fin => [(NN 40)], trans => 23},
{ fin => [(NN 191)], trans => 0},
{ fin => [(NN 189), (NN 191)], trans => 0},
{ fin => [(NN 187), (NN 191)], trans => 90},
{ fin => [(NN 187)], trans => 90},
{ fin => [(NN 40), (NN 191)], trans => 23},
{ fin => [(NN 148)], trans => 93},
{ fin => [(NN 148)], trans => 94},
{ fin => [(NN 145)], trans => 95},
{ fin => [], trans => 96},
{ fin => [(NN 141)], trans => 0},
{ fin => [(NN 49)], trans => 0},
{ fin => [(NN 47), (NN 49)], trans => 99},
{ fin => [(NN 47)], trans => 0},
{ fin => [(NN 172)], trans => 101},
{ fin => [(NN 164)], trans => 102},
{ fin => [(NN 175)], trans => 0},
{ fin => [(NN 184)], trans => 0},
{ fin => [(NN 181)], trans => 105},
{ fin => [(NN 181)], trans => 0},
{ fin => [(NN 162)], trans => 0},
{ fin => [(NN 169)], trans => 108},
{ fin => [(NN 169)], trans => 0},
{ fin => [(NN 160)], trans => 110},
{ fin => [(NN 160)], trans => 111},
{ fin => [(NN 157)], trans => 112},
{ fin => [(NN 150)], trans => 113},
{ fin => [(NN 153)], trans => 0},
{ fin => [(NN 150)], trans => 0}]);
};
package start_states {
         
         Yystartstate = STARTSTATE Int;

#  start state definitions 

my aaa = STARTSTATE 3;
my code = STARTSTATE 5;
my comment = STARTSTATE 9;
my emptycomment = STARTSTATE 15;
my fff = STARTSTATE 7;
my initial = STARTSTATE 1;
my linecomment = STARTSTATE 11;
my string = STARTSTATE 13;

 };
Result = user_declarations::Lex_Result;
         exception LEXER_ERROR; # Raised if illegal leaf action tried */
};

fun make_lexer yyinput =
{        my yygone0=1;
         yyb = REF "\n";                #  Buffer 
         yybl = REF 1;          # Buffer length 
         yybufpos = REF 1;              #  location of next character to use 
         yygone = REF yygone0;  #  position in file of beginning of buffer 
         yydone = REF FALSE;            #  eof found yet? 
         yybegin_i = REF 1;             # Current 'start state' for lexer 

         yybegin = fn (internal::start_states::STARTSTATE x) =
                 yybegin_i := x;

fun lex (yyarg as (input_source)) =
 { fun continue () : internal::Result = 
  { fun scan (s, accepting_leaves:  List( List( internal::Yyfinstate ) ), l, i0) =
         { fun action (i, NIL) => raise exception LEX_ERROR;
         action (i, NIL ! l)     => action (i - 1, l);
         action (i, (node ! acts) ! l) => 
                 case node
                 
                    internal::NN yyk => 
                         ( { fun yymktext () = substring(*yyb, i0, i-i0);
                             yypos = i0 + *yygone;
                         include user_declarations;
                         include internal::start_states;
  {   yybufpos := i;
      case yyk
 

                        #  Application actions 

  100 => { prec(header::NONASSOC,*lineno,*lineno); };
  104 => {   yytext=yymktext();
lookup(yytext,*lineno,*lineno); };
  107 => {   yytext=yymktext();
tyvar(yytext,*lineno,*lineno); };
  112 => {   yytext=yymktext();
iddot(yytext,*lineno,*lineno); };
  115 => {   yytext=yymktext();
int (yytext,*lineno,*lineno); };
  118 => { delimiter(*lineno,*lineno); };
  120 => { colon(*lineno,*lineno); };
  122 => { bar(*lineno,*lineno); };
  125 => {   yytext=yymktext();
id ((yytext,*lineno),*lineno,*lineno); };
  127 => { pcount := 1; actionstart := *lineno;
                    text := NIL; yybegin code; continue() before yybegin aaa; };
  129 => {   yytext=yymktext();
unknown(yytext,*lineno,*lineno); };
  13 => { inc lineno; continue(); };
  131 => {   yytext=yymktext();
inc pcount; add yytext; continue(); };
  133 => {   yytext=yymktext();
dec pcount;
                    if (*pcount == 0)
                         prog (cat (reverse *text),*lineno,*lineno);
                    else
                         add yytext;
                         continue();
                    fi
                   ; };
  135 => {   yytext=yymktext();
add yytext; yybegin string; continue(); };
  138 => {   yytext=yymktext();
add yytext; continue(); };
  141 => {   yytext=yymktext();
add yytext; dec comment_level;
                    if (*comment_level==0)
                         bogus_value(*lineno,*lineno);
                    else
                        continue();
                    fi
                   ; };
  145 => {   yytext=yymktext();
add yytext; inc comment_level; continue(); };
  148 => {   yytext=yymktext();
add yytext; continue(); };
  150 => { continue(); };
  153 => { dec comment_level;
                          if (*comment_level==0)
                              yybegin aaa;
                          fi;
                          continue (); };
  157 => { inc comment_level; continue(); };
  16 => { yybegin linecomment;  continue(); };
  160 => { continue(); };
  162 => {   yytext=yymktext();
add yytext; yybegin code; continue(); };
  164 => {   yytext=yymktext();
add yytext; continue(); };
  169 => {   yytext=yymktext();
add yytext; error input_source *lineno "unclosed string";
                    inc lineno; yybegin code; continue(); };
  172 => {   yytext=yymktext();
add yytext; continue(); };
  175 => {   yytext=yymktext();
add yytext; continue(); };
  181 => {   yytext=yymktext();
add yytext; inc lineno; yybegin fff; continue(); };
  184 => {   yytext=yymktext();
add yytext; yybegin fff; continue(); };
  187 => {   yytext=yymktext();
add yytext; continue(); };
  189 => {   yytext=yymktext();
add yytext; yybegin string; continue(); };
  19 => { yybegin linecomment;  continue(); };
  191 => {   yytext=yymktext();
add yytext; error input_source *lineno "unclosed string";
                    yybegin code; continue(); };
  22 => { yybegin linecomment;  continue(); };
  25 => { yybegin linecomment;  continue(); };
  29 => {   yytext=yymktext();
add yytext; yybegin comment; comment_level := 1;
                    continue() before yybegin code; };
  3 => {   yytext=yymktext();
add yytext; yybegin comment; comment_level := 1;
                    continue() before yybegin initial; };
  32 => {   yytext=yymktext();
add yytext; continue(); };
  35 => { yybegin aaa; header (cat (reverse *text),*lineno,*lineno); };
  40 => {   yytext=yymktext();
add yytext; inc lineno; continue(); };
  42 => {   yytext=yymktext();
add yytext; continue(); };
  47 => { inc lineno; yybegin aaa; continue(); };
  49 => { continue(); };
  54 => { inc lineno; continue (); };
  59 => { continue(); };
  62 => { of_t(*lineno,*lineno); };
  66 => { for_t(*lineno,*lineno); };
  68 => { lbrace(*lineno,*lineno); };
  7 => { yybegin emptycomment; comment_level := 1; continue(); };
  70 => { rbrace(*lineno,*lineno); };
  72 => { comma(*lineno,*lineno); };
  74 => { asterisk(*lineno,*lineno); };
  77 => { arrow(*lineno,*lineno); };
  83 => { prec(header::LEFT,*lineno,*lineno); };
  90 => { prec(header::RIGHT,*lineno,*lineno); };
  _ => raise exception internal::LEXER_ERROR;

                 esac; }; } ); esac; end;    # fun action

         my { fin, trans } = unsafe::vector::get (internal::tab, s);
         new_accepting_leaves = fin ! accepting_leaves;
         if (l == *yybl)
             if (trans == .trans (vector::get (internal::tab, 0)))
               action (l, new_accepting_leaves);
         else        newchars= if *yydone ""; else yyinput 1024; fi;
             if ((size newchars) == 0)
                        yydone := TRUE;
                        if (l == i0)  user_declarations::eof yyarg;
                                  else action (l, new_accepting_leaves); fi;
                  else if (l == i0)  yyb := newchars;
                             else yyb := substring(*yyb, i0, l-i0) + newchars; fi;
                       yygone := *yygone+i0;
                       yybl := size *yyb;
                       scan (s, accepting_leaves, l-i0, 0);
             fi;   # (size newchars) == 0
             fi;   # trans == $trans ...
          else new_char = char::to_int (unsafe::vector_of_chars::get(*yyb, l));
                 new_char = if (new_char < 128) new_char; else 128; fi;
                 new_state = char::to_int (unsafe::vector_of_chars::get (trans, new_char));
                 if (new_state == 0) action (l, new_accepting_leaves);
                 else scan (new_state, new_accepting_leaves, l+1, i0); fi;
         fi;
  };    # fun scan

#        start= if (substring(*yyb,*yybufpos - 1, 1)=="\n") *yybegin_i+1; else *yybegin_i; fi;

         scan(*yybegin_i /* start */ , NIL, *yybufpos, *yybufpos);   # fun continue
    };   # fun continue
 continue; };    # fun lex
  lex; 
  };   # fun make_lexer
};


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext