


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.pkgSemantic_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
};


