PreviousUpNext

15.4.92  src/app/makelib/parse/libfile.lex.pkg

generic package makelib_lex_g (package tokens: Libfile_Tokens;){
   
# Compiled by:
#     src/app/makelib/makelib.sublib

    package user_declarations {
      
## libfile.lex
## (C) 1999 Lucent Technologies, Bell Laboratories
## Author: Matthias Blume (blume@kurims.kyoto-u.ac.jp)



# lexical analysis (Mythryl-Lex specification)
# for foo.lib (library definition) files.




###                     "Let's say the docs present a simplified view of reality...       :-)"
###
###                                      --Larry Wall in  <6940@jpl-devvax.JPL.NASA.GOV>



package lga =   libfile_grammar_actions;                # libfile_grammar_actions       is from   src/app/makelib/parse/libfile-grammar-actions.pkg

Semantic_Value = tokens::Semantic_Value;
Source_Position = Int;

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


Lex_Arg = {

    # Define the lexer's input argument record.  This
    # actually gets constructed and passed to the lexer in
    #
    #     src/app/makelib/parse/libfile-parser-g.pkg

    # We use these two to track comment-nesting depth:
    #   
    enter_comment: Void -> Void,                                        # We call this when entering a comment scope (/*... )
    leave_comment: Void -> Bool,                                        # We call this when leaving  a comment scope (... */)   

    enter_qquote: Source_Position -> Void,                              # We call this when entering a double-quoted string literal scope ("...)
    append_char_to_qquote: Char -> Void,                                # We call this to add a      char to  a double-quoted string literal.
    append_control_char_to_qquote: (String, Char) -> Void,              # We call this to add a ^A   char to a double-quoted string literal.
    append_escaped_char_to_qquote: (String, Source_Position) -> Void,   # We call this to add a \013 char to a double-quoted string literal.
    leave_qquote                                                        # We call this when leaving  a double-quoted string literal scope (...")
        :
        ( Source_Position,
          ((String, Source_Position, Source_Position) -> Lex_Result)
        )
        ->
        Lex_Result,
    #
    handle_eof_by_complaining_about_unclosed_comments_and_strings
        :
        Void -> Source_Position,                                        # We return final line number.

    newline:        Source_Position -> Void,                            # We call this each time we see a newline -- we use this to track current line number.
    #
    complain_about_obsolete_syntax
        :
        (Source_Position, Source_Position) -> Void,                     # We use this to flag an obsolete syntactic construct.
    #
    report_error: (Source_Position, Source_Position) -> String -> Void, # String is the error message.
    handle_line_directive: (Source_Position, String) -> Void,           # Handle #line directive resetting effective line number.
    in_section2: Ref( Bool )                                            # Initially FALSE, set TRUE once we've seen LIBRARY_COMPONENTS or SUBLIBRARY_COMNPONENTS token.
};

Arg = Lex_Arg;

fun eof (arg: Lex_Arg)
    =
    {   end_of_file_position
            =
            arg.handle_eof_by_complaining_about_unclosed_comments_and_strings ();

        tokens::eof
          ( end_of_file_position,
            end_of_file_position
          );
    };

fun error_tok (t, p)
    =
    {   fun find_graph i
            =
            if (char::is_graph (string::get (t, i)))   i;
            else                                       find_graph (i + 1);
            fi;

        fun find_error i
            =
            if (string::get (t, i) == 'e')   i;
            else                             find_error (i + 1);
            fi;

        start =   find_graph (5 + find_error 0);
        msg =   string::extract (t, start, NULL);

        tokens::errorx (msg, p + 1, p + size t);
    };

fun plain t (_: Ref( Bool ), arg)
    =
    t arg: Lex_Result;

fun library_components_token (in_section2, arg)
    =
    {   in_section2 := TRUE;                    # We've seen LIBRARY_COMPONENTS or SUBLIBRARY_COMPONENTS, so we are now in the second section of the .lib file.
        tokens::library_components arg;         # LIBRARY_COMPONENTS and SUBLIBRARY_COMPONENTS are the same token.
    }
    : Lex_Result;

makelib_ids = [ ("LIBRARY_EXPORTS",       plain tokens::library_exports),
                ("SUBLIBRARY_EXPORTS",    plain tokens::sublibrary_exports),
                ("API_OR_PKG_EXPORTS",    plain tokens::api_or_pkg_exports),
                ("SUBLIBRARY_COMPONENTS", library_components_token),
                ("LIBRARY_COMPONENTS",    library_components_token),
                ("*",                     plain tokens::star),
                ("-",                     plain tokens::dash)
        ];

ml_ids = [    ("pkg",           tokens::pkg_t           ),
              ("api",           tokens::api_t           ),
              ("generic",       tokens::generic_t       ),
              ("funsig",        tokens::generic_api_t   ),
              ("generic_api",   tokens::generic_api_t   )
        ];

pp_ids = [    ("defined",       plain tokens::defined   ),
              ("and",           plain tokens::and_t     ),
              ("or",            plain tokens::or_t      ),
              ("not",           plain tokens::not_t     )
        ];

fun id_token (t, p, idlist, default, chstate, in_section2)
    =
    case (list::find
             (fn (id, _) =  id == t)
             ml_ids
    )

         THE (_, tok)
            =>
            {   chstate ();
                tok (p, p + size t);
            };

        NULL
            =>
            case (list::find
                     (fn (id, _) =  id == t)
                     idlist
            )
                THE (_, tok) =>   tok (in_section2, (p, p + size t));   # We pass 'in_section2' only so that library_components_token() can set it TRUE.
                NULL         =>          default (t, p, p + size t);
            esac;  

    esac;

/* states:

     initial -> C
       |
       +------> P -> PC
       |        |
       |        +--> PM -> PMC
       |
       +------> M -> MC
       |
       +------> S -> SS

   "COMMENT" -- COMMENT
   "P"       -- PREPROC
   "M"       -- MLSYMBOL
   "S"       -- STRING
   "SS"      -- STRINGSKIP
*/

}; #  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,  
"\023\023\023\023\023\023\023\023\023\041\070\023\041\043\023\023\
\\023\023\023\023\023\023\023\023\023\023\023\023\023\023\023\023\
\\041\024\040\033\024\024\024\024\032\031\029\024\024\024\024\027\
\\024\024\024\024\024\024\024\024\024\024\026\024\024\024\024\024\
\\024\024\024\024\024\024\024\024\024\024\024\024\024\024\024\024\
\\024\024\024\024\024\024\024\024\024\024\024\023\023\023\024\024\
\\023\024\024\024\024\024\024\024\024\024\024\024\024\024\024\024\
\\024\024\024\024\024\024\024\024\024\024\024\023\024\023\024\023\
\\023"
),
 (3,  
"\071\071\071\071\071\071\071\071\071\071\079\071\071\076\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\074\071\071\071\071\072\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071"
),
 (5,  
"\080\080\080\080\080\080\080\080\080\080\082\080\080\081\080\080\
\\080\080\080\080\080\080\080\080\080\080\080\080\080\080\080\080\
\\080\080\080\080\080\080\080\080\080\080\080\080\080\080\080\080\
\\080\080\080\080\080\080\080\080\080\080\080\080\080\080\080\080\
\\080\080\080\080\080\080\080\080\080\080\080\080\080\080\080\080\
\\080\080\080\080\080\080\080\080\080\080\080\080\080\080\080\080\
\\080\080\080\080\080\080\080\080\080\080\080\080\080\080\080\080\
\\080\080\080\080\080\080\080\080\080\080\080\080\080\080\080\080\
\\080"
),
 (7,  
"\000\000\000\000\000\000\000\000\000\042\104\000\042\103\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\042\101\000\000\000\100\000\000\099\098\096\095\000\094\000\092\
\\091\091\091\091\091\091\091\091\091\091\000\000\089\087\085\000\
\\000\084\084\084\084\084\084\084\084\084\084\084\084\084\084\084\
\\084\084\084\084\084\084\084\084\084\084\084\000\000\000\000\000\
\\000\084\084\084\084\084\084\084\084\084\084\084\084\084\084\084\
\\084\084\084\084\084\084\084\084\084\084\084\000\000\000\083\000\
\\000"
),
 (9,  
"\071\071\071\071\071\071\071\071\071\071\079\071\071\076\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\105\071\071\071\071\072\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071"
),
 (11,  
"\107\107\107\107\107\107\107\107\107\116\118\107\116\117\107\107\
\\107\107\107\107\107\107\107\107\107\107\107\107\107\107\107\107\
\\116\108\107\108\108\108\108\107\107\107\114\108\107\108\107\112\
\\107\107\107\107\107\107\107\107\107\107\108\107\108\108\108\108\
\\108\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\107\108\107\108\107\
\\107\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\107\108\107\108\107\
\\107"
),
 (13,  
"\071\071\071\071\071\071\071\071\071\071\079\071\071\076\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\119\071\071\071\071\072\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071"
),
 (15,  
"\107\107\107\107\107\107\107\107\107\116\118\107\116\117\107\107\
\\107\107\107\107\107\107\107\107\107\107\107\107\107\107\107\107\
\\116\121\107\121\121\121\121\107\107\107\127\121\107\121\107\125\
\\107\107\107\107\107\107\107\107\107\107\121\107\121\121\121\121\
\\121\123\123\123\123\123\123\123\123\123\123\123\123\123\123\123\
\\123\123\123\123\123\123\123\123\123\123\123\107\121\107\121\107\
\\107\123\123\123\123\123\123\123\123\123\123\123\123\123\123\123\
\\123\123\123\123\123\123\123\123\123\123\123\107\121\107\121\107\
\\107"
),
 (17,  
"\071\071\071\071\071\071\071\071\071\071\079\071\071\076\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\129\071\071\071\071\072\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\
\\071"
),
 (19,  
"\131\131\131\131\131\131\131\131\131\131\161\131\131\160\131\131\
\\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\
\\131\131\159\131\131\131\131\131\131\131\131\131\131\131\131\131\
\\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\
\\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\
\\131\131\131\131\131\131\131\131\131\131\131\131\132\131\131\131\
\\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\
\\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\
\\131"
),
 (21,  
"\162\162\162\162\162\162\162\162\162\164\167\162\164\166\162\162\
\\162\162\162\162\162\162\162\162\162\162\162\162\162\162\162\162\
\\164\162\162\162\162\162\162\162\162\162\162\162\162\162\162\162\
\\162\162\162\162\162\162\162\162\162\162\162\162\162\162\162\162\
\\162\162\162\162\162\162\162\162\162\162\162\162\162\162\162\162\
\\162\162\162\162\162\162\162\162\162\162\162\162\163\162\162\162\
\\162\162\162\162\162\162\162\162\162\162\162\162\162\162\162\162\
\\162\162\162\162\162\162\162\162\162\162\162\162\162\162\162\162\
\\162"
),
 (24,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\025\000\025\025\025\025\025\000\000\025\025\025\025\025\025\
\\025\025\025\025\025\025\025\025\025\025\000\025\025\025\025\025\
\\025\025\025\025\025\025\025\025\025\025\025\025\025\025\025\025\
\\025\025\025\025\025\025\025\025\025\025\025\000\000\000\025\025\
\\000\025\025\025\025\025\025\025\025\025\025\025\025\025\025\025\
\\025\025\025\025\025\025\025\025\025\025\025\000\025\000\025\000\
\\000"
),
 (27,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\025\000\025\025\025\025\025\000\000\028\025\025\025\025\025\
\\025\025\025\025\025\025\025\025\025\025\000\025\025\025\025\025\
\\025\025\025\025\025\025\025\025\025\025\025\025\025\025\025\025\
\\025\025\025\025\025\025\025\025\025\025\025\000\000\000\025\025\
\\000\025\025\025\025\025\025\025\025\025\025\025\025\025\025\025\
\\025\025\025\025\025\025\025\025\025\025\025\000\025\000\025\000\
\\000"
),
 (28,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\025\000\028\025\025\025\025\000\000\028\025\025\028\025\025\
\\025\025\025\025\025\025\025\025\025\025\000\025\025\028\025\025\
\\025\025\025\025\025\025\025\025\025\025\025\025\025\025\025\025\
\\025\025\025\025\025\025\025\025\025\025\025\000\000\000\025\025\
\\000\025\025\025\025\025\025\025\025\025\025\025\025\025\025\025\
\\025\025\025\025\025\025\025\025\025\025\025\000\025\000\025\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\025\000\025\025\025\025\025\000\000\025\025\025\025\025\030\
\\025\025\025\025\025\025\025\025\025\025\000\025\025\025\025\025\
\\025\025\025\025\025\025\025\025\025\025\025\025\025\025\025\025\
\\025\025\025\025\025\025\025\025\025\025\025\000\000\000\025\025\
\\000\025\025\025\025\025\025\025\025\025\025\025\025\025\025\025\
\\025\025\025\025\025\025\025\025\025\025\025\000\025\000\025\000\
\\000"
),
 (33,  
"\000\000\000\000\000\000\000\000\000\039\038\000\000\037\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\036\035\000\034\025\025\025\025\000\000\025\025\025\025\025\025\
\\025\025\025\025\025\025\025\025\025\025\000\025\025\025\025\025\
\\025\025\025\025\025\025\025\025\025\025\025\025\025\025\025\025\
\\025\025\025\025\025\025\025\025\025\025\025\000\000\000\025\025\
\\000\025\025\025\025\025\025\025\025\025\025\025\025\025\025\025\
\\025\025\025\025\025\025\025\025\025\025\025\000\025\000\025\000\
\\000"
),
 (37,  
"\000\000\000\000\000\000\000\000\000\000\038\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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\042\000\000\042\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\000\000\000\000\000\000\000\000\000\
\\000"
),
 (43,  
"\000\000\000\000\000\000\000\000\000\069\070\000\069\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\069\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\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (44,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\053\000\000\000\051\000\000\045\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (45,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\046\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (46,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\047\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (47,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\048\000\000\000\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\049\000\000\049\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\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (49,  
"\050\050\050\050\050\050\050\050\050\049\000\050\049\000\050\050\
\\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\
\\049\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\
\\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\
\\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\
\\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\
\\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\
\\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\
\\050"
),
 (50,  
"\050\050\050\050\050\050\050\050\050\050\000\050\050\000\050\050\
\\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\
\\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\
\\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\
\\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\
\\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\
\\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\
\\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\050\
\\050"
),
 (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\000\
\\000\000\000\000\000\000\052\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\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\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\064\000\060\000\
\\000\000\054\000\000\000\000\000\000\000\000\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\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\055\000\000\000\000\000\000\000\000\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\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\056\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (56,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\057\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (57,  
"\000\000\000\000\000\000\000\000\000\058\000\000\058\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\058\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (58,  
"\059\059\059\059\059\059\059\059\059\058\000\059\058\000\059\059\
\\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\
\\058\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\
\\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\
\\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\
\\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\
\\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\
\\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\
\\059"
),
 (59,  
"\059\059\059\059\059\059\059\059\059\059\000\059\059\000\059\059\
\\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\
\\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\
\\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\
\\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\
\\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\
\\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\
\\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\059\
\\059"
),
 (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\000\
\\000\000\000\000\061\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\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\000\
\\000\000\000\000\000\000\000\000\000\062\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\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\000\
\\000\000\000\000\000\000\063\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (64,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\067\000\000\000\000\000\000\
\\000\000\000\065\000\000\000\000\000\000\000\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\000\
\\000\000\000\000\000\066\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\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\000\
\\000\000\000\000\000\000\068\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (69,  
"\000\000\000\000\000\000\000\000\000\069\000\000\069\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\069\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\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (72,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\073\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (73,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\073\000\000\000\000\000\000\073\000\000\073\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\073\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\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"
),
 (76,  
"\000\000\000\000\000\000\000\000\000\078\079\000\078\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\078\000\000\077\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\045\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (78,  
"\000\000\000\000\000\000\000\000\000\078\000\000\078\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\078\000\000\077\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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,  
"\000\000\000\000\000\000\000\000\000\078\082\000\078\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\078\000\000\077\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (84,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\084\000\000\000\000\000\000\000\000\
\\084\084\084\084\084\084\084\084\084\084\000\000\000\000\000\000\
\\000\084\084\084\084\084\084\084\084\084\084\084\084\084\084\084\
\\084\084\084\084\084\084\084\084\084\084\084\000\000\000\000\084\
\\000\084\084\084\084\084\084\084\084\084\084\084\084\084\084\084\
\\084\084\084\084\084\084\084\084\084\084\084\000\000\000\000\000\
\\000"
),
 (85,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\086\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (87,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\088\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (89,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\090\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (91,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\091\091\091\091\091\091\091\091\091\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"
),
 (92,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\093\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\093\000\000\000\000\000\000\093\000\000\093\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\093\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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"
),
 (101,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\102\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (103,  
"\000\000\000\000\000\000\000\000\000\069\104\000\069\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\069\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\000\000\000\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\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\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"
),
 (108,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\109\000\109\109\109\109\000\000\000\109\109\000\109\000\109\
\\000\000\000\000\000\000\000\000\000\000\109\000\109\109\109\109\
\\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\109\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\109\000\109\000\
\\000"
),
 (110,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\111\000\000\000\000\000\000\000\000\
\\111\111\111\111\111\111\111\111\111\111\000\000\000\000\000\000\
\\000\111\111\111\111\111\111\111\111\111\111\111\111\111\111\111\
\\111\111\111\111\111\111\111\111\111\111\111\000\000\000\000\111\
\\000\111\111\111\111\111\111\111\111\111\111\111\111\111\111\111\
\\111\111\111\111\111\111\111\111\111\111\111\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\109\000\109\109\109\109\000\000\000\113\109\000\109\000\109\
\\000\000\000\000\000\000\000\000\000\000\109\000\109\109\109\109\
\\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\109\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\109\000\109\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\109\000\113\109\109\109\000\000\000\113\109\000\113\000\109\
\\000\000\000\000\000\000\000\000\000\000\109\000\109\113\109\109\
\\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\109\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\109\000\109\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\109\000\109\109\109\109\000\000\000\109\109\000\109\000\115\
\\000\000\000\000\000\000\000\000\000\000\109\000\109\109\109\109\
\\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\109\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\109\000\109\000\
\\000"
),
 (117,  
"\000\000\000\000\000\000\000\000\000\078\118\000\078\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\078\000\000\077\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (119,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\120\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (121,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\122\000\122\122\122\122\000\000\000\122\122\000\122\000\122\
\\000\000\000\000\000\000\000\000\000\000\122\000\122\122\122\122\
\\122\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\122\000\122\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\122\000\122\000\
\\000"
),
 (123,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\124\000\000\000\000\000\000\000\000\
\\124\124\124\124\124\124\124\124\124\124\000\000\000\000\000\000\
\\000\124\124\124\124\124\124\124\124\124\124\124\124\124\124\124\
\\124\124\124\124\124\124\124\124\124\124\124\000\000\000\000\124\
\\000\124\124\124\124\124\124\124\124\124\124\124\124\124\124\124\
\\124\124\124\124\124\124\124\124\124\124\124\000\000\000\000\000\
\\000"
),
 (125,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\122\000\122\122\122\122\000\000\000\126\122\000\122\000\122\
\\000\000\000\000\000\000\000\000\000\000\122\000\122\122\122\122\
\\122\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\122\000\122\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\122\000\122\000\
\\000"
),
 (126,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\122\000\126\122\122\122\000\000\000\126\122\000\126\000\122\
\\000\000\000\000\000\000\000\000\000\000\122\000\122\126\122\122\
\\122\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\122\000\122\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\122\000\122\000\
\\000"
),
 (127,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\122\000\122\122\122\122\000\000\000\122\122\000\122\000\128\
\\000\000\000\000\000\000\000\000\000\000\122\000\122\122\122\122\
\\122\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\122\000\122\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\122\000\122\000\
\\000"
),
 (129,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\130\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (132,  
"\133\133\133\133\133\133\133\133\133\155\158\133\155\157\133\133\
\\133\133\133\133\133\133\133\133\133\133\133\133\133\133\133\133\
\\155\133\154\133\133\133\133\133\133\133\133\133\133\133\133\133\
\\151\151\151\151\151\151\151\151\151\151\133\133\133\133\133\133\
\\133\133\133\133\133\133\133\133\133\133\133\133\133\133\133\133\
\\133\133\133\133\133\133\133\133\133\133\133\133\150\133\141\133\
\\133\140\139\133\133\133\138\133\133\133\133\133\133\133\137\133\
\\133\133\136\133\135\133\134\133\133\133\133\133\133\133\133\133\
\\133"
),
 (141,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\149\148\148\148\148\148\148\148\148\148\148\148\148\148\148\148\
\\148\148\148\148\148\148\148\148\148\148\148\147\146\145\144\143\
\\000\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\
\\142\142\142\142\142\142\142\142\142\142\142\000\000\000\000\000\
\\000"
),
 (151,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\152\152\152\152\152\152\152\152\152\152\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (152,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\153\153\153\153\153\153\153\153\153\153\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (155,  
"\000\000\000\000\000\000\000\000\000\156\000\000\156\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (157,  
"\000\000\000\000\000\000\000\000\000\000\158\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (160,  
"\000\000\000\000\000\000\000\000\000\078\161\000\078\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\078\000\000\077\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (164,  
"\000\000\000\000\000\000\000\000\000\165\000\000\165\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\165\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (166,  
"\000\000\000\000\000\000\000\000\000\078\167\000\078\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\078\000\000\077\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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 => [], trans => 17},
{ fin => [], trans => 17},
{ fin => [], trans => 19},
{ fin => [], trans => 19},
{ fin => [], trans => 21},
{ fin => [], trans => 21},
{ fin => [(NN 325)], trans => 0},
{ fin => [(NN 323), (NN 325)], trans => 24},
{ fin => [(NN 323)], trans => 24},
{ fin => [(NN 176), (NN 325)], trans => 0},
{ fin => [(NN 323), (NN 325)], trans => 27},
{ fin => [(NN 21), (NN 323)], trans => 28},
{ fin => [(NN 323), (NN 325)], trans => 29},
{ fin => [(NN 66), (NN 323)], trans => 24},
{ fin => [(NN 174), (NN 325)], trans => 0},
{ fin => [(NN 172), (NN 325)], trans => 0},
{ fin => [(NN 323), (NN 325)], trans => 33},
{ fin => [(NN 17), (NN 323)], trans => 24},
{ fin => [(NN 14), (NN 323)], trans => 24},
{ fin => [(NN 8)], trans => 0},
{ fin => [(NN 5)], trans => 37},
{ fin => [(NN 5)], trans => 0},
{ fin => [(NN 11)], trans => 0},
{ fin => [(NN 68), (NN 325)], trans => 0},
{ fin => [(NN 312), (NN 325)], trans => 41},
{ fin => [(NN 312)], trans => 41},
{ fin => [(NN 302), (NN 325)], trans => 43},
{ fin => [], trans => 44},
{ fin => [], trans => 45},
{ fin => [], trans => 46},
{ fin => [], trans => 47},
{ fin => [], trans => 48},
{ fin => [(NN 342)], trans => 49},
{ fin => [(NN 342)], trans => 50},
{ fin => [], trans => 51},
{ fin => [(NN 242)], trans => 0},
{ fin => [], trans => 53},
{ fin => [], trans => 54},
{ fin => [], trans => 55},
{ fin => [], trans => 56},
{ fin => [], trans => 57},
{ fin => [(NN 297)], trans => 58},
{ fin => [(NN 297)], trans => 59},
{ fin => [], trans => 60},
{ fin => [], trans => 61},
{ fin => [], trans => 62},
{ fin => [(NN 279)], trans => 0},
{ fin => [], trans => 64},
{ fin => [], trans => 65},
{ fin => [(NN 266)], trans => 0},
{ fin => [], trans => 67},
{ fin => [(NN 254)], trans => 0},
{ fin => [], trans => 69},
{ fin => [(NN 302)], trans => 69},
{ fin => [(NN 63)], trans => 0},
{ fin => [(NN 63)], trans => 72},
{ fin => [(NN 44)], trans => 73},
{ fin => [(NN 63)], trans => 74},
{ fin => [(NN 47)], trans => 0},
{ fin => [(NN 61), (NN 63)], trans => 76},
{ fin => [], trans => 77},
{ fin => [], trans => 78},
{ fin => [(NN 61)], trans => 78},
{ fin => [(NN 28)], trans => 0},
{ fin => [(NN 26), (NN 28)], trans => 81},
{ fin => [(NN 26)], trans => 78},
{ fin => [(NN 200)], trans => 0},
{ fin => [(NN 206)], trans => 84},
{ fin => [(NN 198)], trans => 85},
{ fin => [(NN 196)], trans => 0},
{ fin => [], trans => 87},
{ fin => [(NN 188)], trans => 0},
{ fin => [(NN 193)], trans => 89},
{ fin => [(NN 191)], trans => 0},
{ fin => [(NN 203)], trans => 91},
{ fin => [(NN 208)], trans => 92},
{ fin => [(NN 32)], trans => 93},
{ fin => [(NN 180)], trans => 0},
{ fin => [(NN 178)], trans => 0},
{ fin => [(NN 182)], trans => 96},
{ fin => [(NN 66)], trans => 0},
{ fin => [(NN 174)], trans => 0},
{ fin => [(NN 172)], trans => 0},
{ fin => [(NN 210)], trans => 0},
{ fin => [], trans => 101},
{ fin => [(NN 185)], trans => 0},
{ fin => [(NN 307)], trans => 103},
{ fin => [(NN 307)], trans => 69},
{ fin => [(NN 63)], trans => 105},
{ fin => [(NN 50)], trans => 0},
{ fin => [(NN 314)], trans => 0},
{ fin => [(NN 232), (NN 314)], trans => 108},
{ fin => [(NN 232)], trans => 108},
{ fin => [(NN 232), (NN 314)], trans => 110},
{ fin => [(NN 232)], trans => 110},
{ fin => [(NN 232), (NN 314)], trans => 112},
{ fin => [(NN 36), (NN 232)], trans => 113},
{ fin => [(NN 232), (NN 314)], trans => 114},
{ fin => [(NN 66), (NN 232)], trans => 108},
{ fin => [(NN 312), (NN 314)], trans => 41},
{ fin => [(NN 302), (NN 314)], trans => 117},
{ fin => [(NN 302)], trans => 78},
{ fin => [(NN 63)], trans => 119},
{ fin => [(NN 53)], trans => 0},
{ fin => [(NN 221), (NN 314)], trans => 121},
{ fin => [(NN 221)], trans => 121},
{ fin => [(NN 221), (NN 314)], trans => 123},
{ fin => [(NN 221)], trans => 123},
{ fin => [(NN 221), (NN 314)], trans => 125},
{ fin => [(NN 40), (NN 221)], trans => 126},
{ fin => [(NN 221), (NN 314)], trans => 127},
{ fin => [(NN 66), (NN 221)], trans => 121},
{ fin => [(NN 63)], trans => 129},
{ fin => [(NN 56)], trans => 0},
{ fin => [(NN 156)], trans => 0},
{ fin => [(NN 156)], trans => 132},
{ fin => [(NN 147)], trans => 0},
{ fin => [(NN 89), (NN 147)], trans => 0},
{ fin => [(NN 86), (NN 147)], trans => 0},
{ fin => [(NN 83), (NN 147)], trans => 0},
{ fin => [(NN 80), (NN 147)], trans => 0},
{ fin => [(NN 77), (NN 147)], trans => 0},
{ fin => [(NN 74), (NN 147)], trans => 0},
{ fin => [(NN 71), (NN 147)], trans => 0},
{ fin => [(NN 147)], trans => 141},
{ fin => [(NN 97)], trans => 0},
{ fin => [(NN 121)], trans => 0},
{ fin => [(NN 117)], trans => 0},
{ fin => [(NN 113)], trans => 0},
{ fin => [(NN 109)], trans => 0},
{ fin => [(NN 105)], trans => 0},
{ fin => [(NN 101)], trans => 0},
{ fin => [(NN 93)], trans => 0},
{ fin => [(NN 132), (NN 147)], trans => 0},
{ fin => [(NN 147)], trans => 151},
{ fin => [], trans => 152},
{ fin => [(NN 126)], trans => 0},
{ fin => [(NN 129), (NN 147)], trans => 0},
{ fin => [(NN 144), (NN 147)], trans => 155},
{ fin => [(NN 144)], trans => 155},
{ fin => [(NN 138), (NN 147)], trans => 157},
{ fin => [(NN 138)], trans => 0},
{ fin => [(NN 149), (NN 156)], trans => 0},
{ fin => [(NN 154), (NN 156)], trans => 160},
{ fin => [(NN 154)], trans => 78},
{ fin => [(NN 170)], trans => 0},
{ fin => [(NN 168), (NN 170)], trans => 0},
{ fin => [(NN 166), (NN 170)], trans => 164},
{ fin => [(NN 166)], trans => 164},
{ fin => [(NN 161), (NN 170)], trans => 166},
{ fin => [(NN 161)], trans => 78}]);
};
package start_states {
         
         Yystartstate = STARTSTATE Int;

#  start state definitions 

my comment = STARTSTATE 3;
my initial = STARTSTATE 1;
my linecomment = STARTSTATE 5;
my mc = STARTSTATE 17;
my mmm = STARTSTATE 15;
my pc = STARTSTATE 9;
my pm = STARTSTATE 11;
my pmc = STARTSTATE 13;
my ppp = STARTSTATE 7;
my qquote = STARTSTATE 19;
my ss = STARTSTATE 21;

 };
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 ({ enter_comment,
        leave_comment,
        enter_qquote,
        append_char_to_qquote,
        append_control_char_to_qquote,
        append_escaped_char_to_qquote,
        leave_qquote,
        handle_eof_by_complaining_about_unclosed_comments_and_strings,
        newline,
        complain_about_obsolete_syntax,
        report_error,
        handle_line_directive,
        in_section2
      })) =
 { 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 

  101 => {   yytext=yymktext();
append_control_char_to_qquote (yytext, 'A'); continue (); };
  105 => { append_char_to_qquote (char::from_int 27); continue (); };
  109 => { append_char_to_qquote (char::from_int 28); continue (); };
  11 => { yybegin linecomment;  continue(); };
  113 => { append_char_to_qquote (char::from_int 29); continue (); };
  117 => { append_char_to_qquote (char::from_int 30); continue (); };
  121 => { append_char_to_qquote (char::from_int 31); continue (); };
  126 => {   yytext=yymktext();
append_escaped_char_to_qquote (yytext, yypos); continue (); };
  129 => { append_char_to_qquote (char::from_int 34); continue (); };
  132 => { append_char_to_qquote '\\'; continue (); };
  138 => { yybegin ss; newline (yypos + 1); continue (); };
  14 => { yybegin linecomment;  continue(); };
  144 => { yybegin ss; continue (); };
  147 => {   yytext=yymktext();
report_error (yypos, yypos+2) ("illegal escape character in string " + yytext);
                            continue (); };
  149 => { yybegin initial; leave_qquote (yypos, tokens::file_native); };
  154 => {   yytext=yymktext();
newline yypos;
                            report_error (yypos, yypos + size yytext) "illegal linebreak in string";
                            continue (); };
  156 => {   yytext=yymktext();
append_char_to_qquote (string::get (yytext, 0)); continue (); };
  161 => { newline yypos; continue (); };
  166 => { continue (); };
  168 => { yybegin qquote; continue (); };
  17 => { yybegin linecomment;  continue(); };
  170 => {   yytext=yymktext();
report_error (yypos, yypos+1) ("illegal character in stringskip " + yytext);
                            continue (); };
  172 => { tokens::lparen (yypos, yypos + 1); };
  174 => { tokens::rparen (yypos, yypos + 1); };
  176 => { tokens::colon (yypos, yypos + 1); };
  178 => { tokens::addsym (lga::PLUS, yypos, yypos + 1); };
  180 => { tokens::addsym (lga::MINUS, yypos, yypos + 1); };
  182 => { tokens::mulsym (lga::TIMES, yypos, yypos + 1); };
  185 => { tokens::eqsym   (lga::NE, yypos, yypos + 2); };
  188 => { tokens::eqsym   (lga::EQ, yypos, yypos + 2); };
  191 => { tokens::ineqsym (lga::LE, yypos, yypos + 2); };
  193 => { tokens::ineqsym (lga::LT, yypos, yypos + 1); };
  196 => { tokens::ineqsym (lga::GE, yypos, yypos + 2); };
  198 => { tokens::ineqsym (lga::GT, yypos, yypos + 1); };
  200 => { tokens::tilde (yypos, yypos + 1); };
  203 => {   yytext=yymktext();
tokens::number
                             (the (int::from_string yytext)
                              except _ =
                                  {   report_error (yypos, yypos + size yytext) "number too large";
                                      0;
                                  },
                              yypos, yypos + size yytext); };
  206 => {   yytext=yymktext();
id_token (yytext, yypos, pp_ids, tokens::makelib_id,
                                     fn () =  yybegin pm, in_section2); };
  208 => { tokens::mulsym (lga::DIV, yypos, yypos + 1); };
  21 => { enter_comment (); yybegin comment; continue (); };
  210 => { tokens::mulsym (lga::MOD, yypos, yypos + 1); };
  221 => {   yytext=yymktext();
yybegin initial;        tokens::ml_id (yytext, yypos, yypos + size yytext); };
  232 => {   yytext=yymktext();
yybegin ppp;    tokens::ml_id (yytext, yypos, yypos + size yytext); };
  242 => {   yytext=yymktext();
yybegin ppp;
                                     newline yypos;
                                     tokens::if_t (yypos, yypos + size yytext); };
  254 => {   yytext=yymktext();
yybegin ppp;
                                     newline yypos;
                                     tokens::elif_t (yypos, yypos + size yytext); };
  26 => { newline yypos; yybegin initial; continue(); };
  266 => {   yytext=yymktext();
yybegin ppp;
                                     newline yypos;
                                     tokens::else_t (yypos, yypos + size yytext); };
  279 => {   yytext=yymktext();
yybegin ppp;
                                      newline yypos;
                                      tokens::endif (yypos,
                                                    yypos + size yytext); };
  28 => { continue(); };
  297 => {   yytext=yymktext();
newline yypos;
                                                    error_tok (yytext, yypos); };
  302 => { newline yypos; continue (); };
  307 => { yybegin initial; newline yypos; continue (); };
  312 => { continue (); };
  314 => {   yytext=yymktext();
report_error (yypos, yypos+1) ("illegal character at start of ML symbol: " + yytext);
                            continue (); };
  32 => { enter_comment (); yybegin pc; continue (); };
  323 => {   yytext=yymktext();
id_token
                              ( yytext, yypos,
                                #
                                if *in_section2  [];            # We have seen LIBRARY_COMPONENTS/SUBLIBRARY_COMPONENTS so stop  recognizing  "LIBRARY_EXPORTS", "LIBRARY_COMPONENTS", "*", "-" ... as special tokens.
                                else             makelib_ids;   # Not yet seen LIBRARY_COMPONENTS/SUBLIBRARY_COMPONENTS so still recognizing  "LIBRARY_EXPORTS", "LIBRARY_COMPONENTS", "*", "-" ... as special tokens.
                                fi,
                                #
                                tokens::file_standard,
                                fn () =  yybegin mmm,
                                in_section2
                              )
                            ; };
  325 => {   yytext=yymktext();
report_error (yypos, yypos+1) ("illegal character: " + yytext);
                            continue (); };
  342 => {   yytext=yymktext();
newline yypos;
                                        handle_line_directive (yypos, yytext);
                                        continue (); };
  36 => { enter_comment (); yybegin pmc; continue (); };
  40 => { enter_comment (); yybegin mc; continue (); };
  44 => { enter_comment (); continue (); };
  47 => { if (leave_comment () ) yybegin initial;  fi;
                            continue (); };
  5 => { newline yypos; continue(); };
  50 => { if (leave_comment () ) yybegin ppp;  fi;
                            continue (); };
  53 => { if (leave_comment () ) yybegin pm;  fi;
                            continue (); };
  56 => { if (leave_comment () ) yybegin mmm;  fi;
                            continue (); };
  61 => { newline yypos; continue (); };
  63 => { continue (); };
  66 => { report_error (yypos, yypos+2) "unmatched comment delimiter";
                            continue (); };
  68 => { yybegin qquote; enter_qquote yypos; continue (); };
  71 => { append_char_to_qquote '\a'; continue (); };
  74 => { append_char_to_qquote '\b'; continue (); };
  77 => { append_char_to_qquote '\f'; continue (); };
  8 => { yybegin linecomment;  continue(); };
  80 => { append_char_to_qquote '\n'; continue (); };
  83 => { append_char_to_qquote '\r'; continue (); };
  86 => { append_char_to_qquote '\t'; continue (); };
  89 => { append_char_to_qquote '\v'; continue (); };
  93 => { append_char_to_qquote (char::from_int 0); continue (); };
  97 => {   yytext=yymktext();
append_control_char_to_qquote (yytext, 'a'); continue (); };
  _ => 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