


generic package adl_lex_g(tokens : Adl_Tokens){
# Compiled by:
# src/lib/compiler/back/low/tools/architecture-parser.lib package user_declarations {
## architecture-description-language.lex -- derived from ~/src/sml/nj/smlnj-110.60/MLRISC/Tools/Parser/adl.lex
#
# Here we define the lexer for our Architecture Description Language,
# which contains a large subset of SML, including SML/NJ extensions.
#
# Architecture Description Language is the syntax used in our architecture description files
#
# src/lib/compiler/back/low/intel32/one_word_int.architecture-description
# src/lib/compiler/back/low/pwrpc32/pwrpc32.architecture-description
# src/lib/compiler/back/low/sparc32/sparc32.architecture-description
# src/lib/compiler/back/low/tools/basis.adl
#
# Our responsibility in this file is breaking up raw text from those files into
# a stream of typed tokens which get fed into the parser specified in
#
# src/lib/compiler/back/low/tools/parser/architecture-description-language.grammar
#
# to produce a parsetree in the format specified in
#
# src/lib/compiler/back/low/tools/adl-syntax/adl-raw-syntax-form.pkg#
# which then gets run through
#
# src/lib/compiler/back/low/tools/arch/architecture-description.pkg#
# to produce our Architecture_Description record.
# The information in this record drives the modules
#
# src/lib/compiler/back/low/tools/arch/make-sourcecode-for-machcode-xxx-package.pkg# src/lib/compiler/back/low/tools/arch/make-sourcecode-for-registerkinds-xxx-package.pkg# src/lib/compiler/back/low/tools/arch/make-sourcecode-for-translate-machcode-to-asmcode-xxx-g-package.pkg# src/lib/compiler/back/low/tools/arch/make-sourcecode-for-translate-machcode-to-execode-xxx-g-package.pkg# ...
#
# which generate corresponding compiler backend lowhalf packages such as
#
# src/lib/compiler/back/low/intel32/code/machcode-intel32.codemade.api# src/lib/compiler/back/low/intel32/code/machcode-intel32-g.codemade.pkg# src/lib/compiler/back/low/intel32/code/registerkinds-intel32.codemade.pkg# src/lib/compiler/back/low/intel32/emit/translate-machcode-to-asmcode-intel32-g.codemade.pkg# src/lib/compiler/back/low/intel32/emit/translate-machcode-to-execode-intel32-g.codemade.pkg.unused
# ...
# Compiled by:
# src/lib/compiler/back/low/tools/architecture-parser.libexception ERROR;
Source_Position = Int;
Semantic_Value = tokens::Semantic_Value;
#
# Semantic_Value is a datatype including one constructor
# for every grammar terminal listed in the %term declaration in
# src/lib/compiler/back/low/tools/parser/architecture-description-language.grammar
# src/lib/compiler/back/low/tools/parser/architecture-description-language.grammar.pkg # is the the mythryl-yacc generated file actually containing
# the 'package tokens' definition.
Token( X, Y ) = tokens::Token( X, Y );
Lex_Result = Token( Semantic_Value, Source_Position );
Lex_Arg = { line_number_db : line_number_database::Sourcemap,
err : (Source_Position, Source_Position, String) -> Void,
adl_mode : Bool
};
Arg = Lex_Arg;
include tokens; # tokens is from src/lib/compiler/back/low/tools/parser/architecture-description-language.grammar.pkg # (architecture-description-language.grammar.pkg is synthesized by mythryl-yacc during compilation.)
comment_level = REF 0;
meta_level = REF 0;
# These four never get set to any other value in existing code.
# They are probably intended as an end-user customization hook:
#
asm_lquote = REF "``";
asm_rquote = REF "''";
asm_lmeta = REF "<";
asm_rmeta = REF ">";
exception ERROR;
fun init ()
=
{ comment_level := 0;
meta_level := 0;
asm_lquote := "``";
asm_rquote := "''";
asm_lmeta := "<";
asm_rmeta := ">";
};
fun eof { line_number_db, err, adl_mode }
=
{ pos = line_number_database::curr_pos line_number_db;
eof_t(pos,pos);
};
fun debug _
=
();
fun check (err, _, _, THE w)
=>
w;
check (err, pos, s, NULL)
=>
{ err(pos,pos+size s,"bad literal " + s);
raise exception ERROR;
};
end;
fun strip k s
=
string::substring(s,k,string::length s - k);
fun scan err fmt (s,s') tok pos
=
tok(check(err,pos,s,number_string::scan_string fmt s'),
pos,pos + size s)
except
_ = id (s, pos, pos);
fun wdecimal (err,s,pos)
=
scan err (one_word_unt::scan number_string::DECIMAL) (s,strip 2 s) unt pos;
fun whex (err,s,pos)
=
scan err (one_word_unt::scan number_string::HEX) (s,strip 3 s) unt pos;
fun woctal (err,s,pos) = scan err (one_word_unt::scan number_string::OCTAL) (s,strip 3 s) unt pos;
fun wbinary (err,s,pos) = scan err (one_word_unt::scan number_string::BINARY) (s,strip 3 s) unt pos;
fun decimal (err,s,pos) = scan err (int::scan number_string::DECIMAL) (s,s) int pos;
fun real (err,s,pos)
=
scan err (eight_byte_float::scan) (s,s)
(fn (x,y,z) = real_t(eight_byte_float::to_string x, y, z)) pos;
fun hex (err,s,pos) = scan err (int::scan number_string::HEX) (s,strip 2 s) int pos;
fun octal (err,s,pos) = scan err (int::scan number_string::OCTAL) (s,strip 2 s) int pos;
fun binary (err,s,pos) = scan err (int::scan number_string::BINARY) (s,strip 2 s) int pos;
fun decimalinf (err,s,pos) = scan err (multiword_int::scan number_string::DECIMAL) (s,s) integer pos;
fun hexinf (err,s,pos) = scan err (multiword_int::scan number_string::HEX) (s,strip 2 s) integer pos;
fun octalinf (err,s,pos) = scan err (multiword_int::scan number_string::OCTAL) (s,strip 2 s) integer pos;
fun binaryinf (err,s,pos) = scan err (multiword_int::scan number_string::BINARY) (s,strip 2 s) integer pos;
fun string (err,s,pos)
=
string_t(
check(err,pos,s,string::from_string(string::substring(s,1,string::length s - 2))),
pos, pos + size s);
fun char (err,s,pos)
=
char_t(check(err,pos,s,char::from_string(string::substring(s,2,string::length s - 3))),
pos,pos + size s);
fun trans_asm s
=
string::implode(loop(string::explode s))
where
fun loop ('\\' ! '<' ! s) => '<' ! loop s;
loop('\\' ! '>' ! s) => '>' ! loop s;
loop(c ! s) => c ! loop s;
loop [] => [] ;
end;
end;
fun asmtext (err,s,pos)
=
asmtext_t (check (err, pos, s, string::from_string(trans_asm s)),pos,pos + size s);
infix my @@ ;
fun x @@ y = y ! x ;
exception NOT_FOUND;
keywords = hashtable::make_hashtable (hash_string::hash_string, (==)) { size_hint => 13, not_found_exception => NOT_FOUND }
: hashtable::Hashtable (String, (Int, Int) -> Token (Semantic_Value,Int));
adlkeywords = hashtable::make_hashtable (hash_string::hash_string, (==)) { size_hint => 13, not_found_exception => NOT_FOUND }
: hashtable::Hashtable (String, (Int, Int) -> Token (Semantic_Value, Int));
symbols = hashtable::make_hashtable (hash_string::hash_string, (==)) { size_hint => 13, not_found_exception => NOT_FOUND }
: hashtable::Hashtable (String, (Int, Int) -> Token (Semantic_Value, Int));
# Set up hashtable
#
# keywords
#
# mapping strings to corresponding token-creation functions.
#
# The token-creation functions (type_t, end_t, fun_t, ... )
# here are from package tokens in
# src/lib/compiler/back/low/tools/parser/architecture-description-language.grammar.pkg# with definitions like
# fun type_t (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 7, (parser_data::values::TM_VOID, p1, p2));
# fun end_t (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 1, (parser_data::values::TM_VOID, p1, p2));
# fun fun_t (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 76, (parser_data::values::TM_VOID, p1, p2));
#
my _ = apply (hashtable::set keywords)
( NIL @@
("_",wild) @@
("datatype", datatype) @@
("type", type_t) @@
("end", end_t) @@
("fun", fun_t) @@
("fn", fn_t) @@
("my", my_t) @@
("raise", raise_t) @@
("handle", except_t) @@
("let", let_t) @@
("local", local_t) @@
("exception", exception_t) @@
("structure", package_t) @@
("signature", api_t) @@
("functor", generic_t) @@
("sig", begin_api) @@
("struct", struct) @@
("sharing", sharing_t) @@
("where", where_t) @@
("withtype", withtype_t) @@
("if", if_t) @@
("then", then_t) @@
("else", else_t) @@
("in", in_t) @@
("true", true) @@
("false", false) @@
("and", and_t) @@
("at", at) @@
("of", of_t) @@
("case", case_t) @@
("as", as_t) @@
("open", open) @@
("op", op_t) @@
("include", include_t) @@
("infix", infix_t) @@
("infixr", infixr_t) @@
("nonfix", nonfix_t) @@
("not", not)
);
my _ = apply (hashtable::set adlkeywords)
( NIL @@
("architecture", architecture) @@
("assembly", assembly) @@
("storage", storage) @@
("locations", locations) @@
("at", at) @@
("field", field_t) @@
("fields", fields) @@
("signed", signed) @@
("unsigned", unsigned) @@
("bits", bits) @@
("ordering", ordering) @@
("little", little) @@
("big", big) @@
("endian", endian) @@
("register", register) @@
("as", as_t) @@
("cell", cell) @@
("cells", cells) @@
("registerset", registerset) @@
("pipeline", pipeline) @@
("cpu", cpu) @@
("resource", resource) @@
("latency", latency) @@
("base_op", base_op) @@
("instruction", instruction) @@
("formats", formats) @@
("uppercase", uppercase) @@
("lowercase", lowercase) @@
("verbatim", verbatim) @@
("span", span) @@
("dependent", dependent) @@
("always", always) @@
("never", never) @@
("delayslot", delayslot) @@
# ("equation", equation) @@
# ("reservation", reservation) @@
# ("table", table) @@
# ("predicated", predicated) @@
# ("branching", branching) @@
# ("candidate", candidate) @@
("rtl", rtl) @@
("debug", debug_t) @@
("aliasing", aliasing) @@
("aggregable",aggregable)
);
my _ = apply (hashtable::set symbols)
(
NIL @@
("=", eq) @@
("*", times) @@
(":", colon) @@
(":>",colongreater) @@
("|", bar) @@
("->", arrow) @@
("=>", darrow) @@
("#", hash) @@
("!", deref) @@
("^^", meld) # Called 'concat' in SML/NJ
);
fun look_up (adl_mode,s,yypos)
=
{ l = string::length s;
fun id_fn () = id(unique_symbol::to_string
(unique_symbol::from_string s), yypos, yypos + l);
hashtable::look_up keywords s (yypos,yypos + l)
except _ =
if adl_mode
(hashtable::look_up adlkeywords s (yypos,yypos + l) except _ = id_fn());
else
id_fn();
fi;
};
fun look_up_sym (s,yypos)
=
{ l = string::length s;
hashtable::look_up symbols s (yypos,yypos + l)
except _ = symbol (unique_symbol::to_string
(unique_symbol::from_string s), yypos, yypos + l);
};
}; # 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,
"\009\009\009\009\009\009\009\009\009\117\118\009\009\009\009\009\
\\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\
\\117\010\113\108\107\010\010\105\103\102\010\010\101\100\097\095\
\\078\070\070\070\070\070\070\070\070\070\010\069\010\010\010\010\
\\010\014\014\014\014\014\014\014\014\014\014\014\014\014\014\014\
\\014\014\014\014\014\014\014\014\014\014\014\068\009\067\010\014\
\\065\061\014\051\041\014\014\014\014\014\014\014\014\038\028\014\
\\020\014\016\014\014\014\014\014\014\014\014\013\010\012\010\009\
\\009"
),
(3,
"\119\119\119\119\119\119\119\119\119\127\118\119\119\119\119\119\
\\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
\\127\119\119\119\119\119\119\119\125\119\122\119\119\119\119\120\
\\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
\\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
\\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
\\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
\\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
\\119"
),
(5,
"\009\009\009\009\009\009\009\009\009\117\118\009\009\009\009\009\
\\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\
\\117\132\113\149\148\132\132\146\145\102\132\132\101\144\141\132\
\\078\070\070\070\070\070\070\070\070\070\132\069\139\138\136\132\
\\132\014\014\014\014\014\014\014\014\014\014\014\014\014\014\014\
\\014\014\014\014\014\014\014\014\014\014\014\068\135\067\132\014\
\\133\061\014\051\041\014\014\014\014\014\014\014\014\038\028\014\
\\020\014\016\014\014\014\014\014\014\014\014\013\132\012\128\009\
\\009"
),
(7,
"\150\150\150\150\150\150\150\150\150\009\168\150\150\150\150\150\
\\150\150\150\150\150\150\150\150\150\150\150\150\150\150\150\150\
\\150\156\150\156\156\156\156\166\150\150\156\156\150\156\156\156\
\\150\150\150\150\150\150\150\150\150\150\156\150\164\163\161\156\
\\156\150\150\150\150\150\150\150\150\150\150\150\150\150\150\150\
\\150\150\150\150\150\150\150\150\150\150\150\150\159\150\156\150\
\\157\150\150\150\150\150\150\150\150\150\150\150\150\150\150\150\
\\150\150\150\150\150\150\150\150\150\150\150\150\156\150\152\150\
\\150"
),
(10,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\011\000\011\011\011\011\000\000\000\011\011\000\011\000\011\
\\000\000\000\000\000\000\000\000\000\000\011\000\011\011\011\011\
\\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\011\000\011\000\
\\000"
),
(14,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(16,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\017\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(17,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\018\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(18,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\019\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(20,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\021\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(21,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\022\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(22,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\023\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(23,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\024\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(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\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\025\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(25,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\026\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(26,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\027\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\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\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\029\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(29,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\030\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(30,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\031\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(31,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\032\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(32,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\033\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(33,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\034\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(34,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\035\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(35,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\036\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(36,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\037\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(38,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\039\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(39,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\040\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(41,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\042\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(42,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\043\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(43,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\044\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\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\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\045\015\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\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\046\015\015\015\015\015\015\015\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\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\047\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\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\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\048\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(48,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\049\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(49,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\050\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(51,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\052\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(52,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\053\015\
\\015\015\015\015\015\015\015\015\015\015\015\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\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\054\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\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\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\055\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\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\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\056\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\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\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\057\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(57,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\058\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(58,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\059\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(59,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\060\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\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\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\062\015\015\015\015\015\015\015\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\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\063\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
(63,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\064\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\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\
\\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\000\000\000\000\
\\000"
),
(70,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\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\
\\072\072\072\072\072\072\072\072\072\072\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\071\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
(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\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\074\074\074\074\074\074\074\074\074\074\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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\000\
\\074\074\074\074\074\074\074\074\074\074\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\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"
),
(75,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\077\000\000\
\\076\076\076\076\076\076\076\076\076\076\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\076\076\076\076\076\076\076\076\076\076\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\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\
\\093\093\093\093\093\093\093\093\072\072\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\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\071\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\082\079\000\000\000\000\000\000\000\
\\000"
),
(79,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\080\080\080\080\080\080\080\080\080\080\000\000\000\000\000\000\
\\000\080\080\080\080\080\080\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\080\080\080\080\080\080\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
(80,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\080\080\080\080\080\080\080\080\080\080\000\000\000\000\000\000\
\\000\080\080\080\080\080\080\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\080\080\080\080\080\080\000\000\081\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
(82,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\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\087\087\087\087\087\087\087\087\087\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\085\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\083\000\000\000\000\000\000\000\
\\000"
),
(83,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\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\084\084\084\084\084\084\084\084\084\000\000\000\000\000\000\
\\000\084\084\084\084\084\084\000\000\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\084\084\084\084\084\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\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\
\\086\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\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\
\\087\087\087\087\087\087\087\087\087\087\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
(88,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\089\089\089\089\089\089\089\089\087\087\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
(90,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\092\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\000\000\000\000\000\000\000\000\000\000\000\073\000\
\\093\093\093\093\093\093\093\093\072\072\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\094\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
(95,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\011\000\011\011\011\011\000\000\000\096\011\000\011\000\011\
\\000\000\000\000\000\000\000\000\000\000\011\000\011\011\011\011\
\\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\011\000\011\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\011\000\011\011\011\011\000\000\000\096\011\000\096\000\011\
\\000\000\000\000\000\000\000\000\000\000\011\000\011\096\011\011\
\\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\011\000\011\000\
\\000"
),
(97,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\098\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
(98,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\099\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
(100,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\011\000\011\011\011\011\000\000\000\011\011\000\011\000\011\
\\072\072\072\072\072\072\072\072\072\072\011\000\011\011\011\011\
\\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\011\000\011\000\
\\000"
),
(103,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\104\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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\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\106\106\106\106\106\106\106\106\106\106\106\106\106\106\106\
\\106\106\106\106\106\106\106\106\106\106\106\000\000\000\000\106\
\\000\106\106\106\106\106\106\106\106\106\106\106\106\106\106\106\
\\106\106\106\106\106\106\106\106\106\106\106\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\106\000\000\000\000\000\000\000\000\
\\106\106\106\106\106\106\106\106\106\106\000\000\000\000\000\000\
\\000\106\106\106\106\106\106\106\106\106\106\106\106\106\106\106\
\\106\106\106\106\106\106\106\106\106\106\106\000\000\000\000\106\
\\000\106\106\106\106\106\106\106\106\106\106\106\106\106\106\106\
\\106\106\106\106\106\106\106\106\106\106\106\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\011\110\011\011\011\011\000\000\000\011\011\000\011\000\011\
\\000\000\000\000\000\000\000\000\000\000\011\000\011\011\011\011\
\\011\000\000\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\000\011\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\011\000\011\000\
\\000"
),
(110,
"\110\110\110\110\110\110\110\110\110\000\000\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\112\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\111\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110"
),
(111,
"\110\110\110\110\110\110\110\110\110\110\000\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110"
),
(113,
"\114\114\114\114\114\114\114\114\114\000\000\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\116\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\115\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114"
),
(115,
"\114\114\114\114\114\114\114\114\114\114\000\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114"
),
(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\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\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\121\000\000\121\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\000\
\\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\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\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\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\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\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
(128,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\129\000\129\129\129\129\000\000\000\129\129\000\129\129\129\
\\000\000\000\000\000\000\000\000\000\000\129\000\000\129\130\129\
\\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\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\129\000\129\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\129\000\129\129\129\129\000\000\000\129\129\000\129\129\129\
\\000\000\000\000\000\000\000\000\000\000\129\000\000\129\000\129\
\\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\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\129\000\129\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\131\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
(133,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
(135,
"\131\131\131\131\131\131\131\131\131\131\000\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\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\131\131\131\
\\131"
),
(136,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\137\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
(138,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\129\000\129\129\129\129\000\000\000\129\129\000\129\129\129\
\\000\000\000\000\000\000\000\000\000\000\129\000\000\129\131\129\
\\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\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\129\000\129\000\
\\000"
),
(139,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\140\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
(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\129\000\129\129\129\129\000\000\000\129\129\000\129\142\129\
\\000\000\000\000\000\000\000\000\000\000\129\000\000\129\000\129\
\\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\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\129\000\129\000\
\\000"
),
(142,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\129\000\129\129\129\129\000\000\000\129\129\000\129\143\129\
\\000\000\000\000\000\000\000\000\000\000\129\000\000\129\000\129\
\\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\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\129\000\129\000\
\\000"
),
(144,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\129\000\129\129\129\129\000\000\000\129\129\000\129\129\129\
\\072\072\072\072\072\072\072\072\072\072\129\000\000\129\000\129\
\\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\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\129\000\129\000\
\\000"
),
(146,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\147\000\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\106\106\106\106\106\106\106\106\106\106\106\106\106\106\
\\106\106\106\106\106\106\106\106\106\106\106\000\000\000\000\106\
\\000\106\106\106\106\106\106\106\106\106\106\106\106\106\106\106\
\\106\106\106\106\106\106\106\106\106\106\106\000\000\000\000\000\
\\000"
),
(147,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\147\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\129\110\129\129\129\129\000\000\000\129\129\000\129\129\129\
\\000\000\000\000\000\000\000\000\000\000\129\000\000\129\000\129\
\\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\109\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\129\000\129\000\
\\000"
),
(150,
"\151\151\151\151\151\151\151\151\151\000\000\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\000\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\000\151\000\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151"
),
(152,
"\151\151\151\151\151\151\151\151\151\000\000\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\153\151\153\153\153\153\000\151\151\153\153\151\153\153\153\
\\151\151\151\151\151\151\151\151\151\151\153\151\000\153\154\153\
\\153\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\153\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\153\151\153\151\
\\151"
),
(153,
"\151\151\151\151\151\151\151\151\151\000\000\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\153\151\153\153\153\153\000\151\151\153\153\151\153\153\153\
\\151\151\151\151\151\151\151\151\151\151\153\151\000\153\000\153\
\\153\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\153\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\153\151\153\151\
\\151"
),
(154,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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,
"\151\151\151\151\151\151\151\151\151\000\000\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\000\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\000\151\000\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\158\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151"
),
(159,
"\160\160\160\160\160\160\160\160\160\155\000\160\160\160\160\160\
\\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\
\\160\160\160\160\160\160\160\155\160\160\160\160\160\160\160\160\
\\160\160\160\160\160\160\160\160\160\160\160\160\155\160\155\160\
\\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\
\\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\
\\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\
\\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\
\\160"
),
(161,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\162\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
(163,
"\151\151\151\151\151\151\151\151\151\000\000\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\153\151\153\153\153\153\000\151\151\153\153\151\153\153\153\
\\151\151\151\151\151\151\151\151\151\151\153\151\000\153\155\153\
\\153\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\153\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\153\151\153\151\
\\151"
),
(164,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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"
),
(166,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\167\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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 => [(NN 262)], trans => 0},
{ fin => [(NN 201), (NN 262)], trans => 10},
{ fin => [(NN 201)], trans => 10},
{ fin => [(NN 179), (NN 262)], trans => 0},
{ fin => [(NN 177), (NN 262)], trans => 0},
{ fin => [(NN 160), (NN 262)], trans => 14},
{ fin => [(NN 160)], trans => 14},
{ fin => [(NN 160), (NN 262)], trans => 16},
{ fin => [(NN 160)], trans => 17},
{ fin => [(NN 160)], trans => 18},
{ fin => [(NN 115)], trans => 0},
{ fin => [(NN 160), (NN 262)], trans => 20},
{ fin => [(NN 160)], trans => 21},
{ fin => [(NN 160)], trans => 22},
{ fin => [(NN 160)], trans => 23},
{ fin => [(NN 160)], trans => 24},
{ fin => [(NN 160)], trans => 25},
{ fin => [(NN 160)], trans => 26},
{ fin => [(NN 135)], trans => 0},
{ fin => [(NN 160), (NN 262)], trans => 28},
{ fin => [(NN 160)], trans => 29},
{ fin => [(NN 160)], trans => 30},
{ fin => [(NN 160)], trans => 31},
{ fin => [(NN 160)], trans => 32},
{ fin => [(NN 160)], trans => 33},
{ fin => [(NN 160)], trans => 34},
{ fin => [(NN 160)], trans => 35},
{ fin => [(NN 160)], trans => 36},
{ fin => [(NN 146)], trans => 0},
{ fin => [(NN 160), (NN 262)], trans => 38},
{ fin => [(NN 160)], trans => 39},
{ fin => [(NN 110)], trans => 0},
{ fin => [(NN 160), (NN 262)], trans => 41},
{ fin => [(NN 160)], trans => 42},
{ fin => [(NN 160)], trans => 43},
{ fin => [(NN 160)], trans => 44},
{ fin => [(NN 160)], trans => 45},
{ fin => [(NN 160)], trans => 46},
{ fin => [(NN 160)], trans => 47},
{ fin => [(NN 160)], trans => 48},
{ fin => [(NN 160)], trans => 49},
{ fin => [(NN 126)], trans => 0},
{ fin => [(NN 160), (NN 262)], trans => 51},
{ fin => [(NN 160)], trans => 52},
{ fin => [(NN 160)], trans => 53},
{ fin => [(NN 160)], trans => 54},
{ fin => [(NN 160)], trans => 55},
{ fin => [(NN 160)], trans => 56},
{ fin => [(NN 160)], trans => 57},
{ fin => [(NN 160)], trans => 58},
{ fin => [(NN 160)], trans => 59},
{ fin => [(NN 157)], trans => 0},
{ fin => [(NN 160), (NN 262)], trans => 61},
{ fin => [(NN 160)], trans => 62},
{ fin => [(NN 160)], trans => 63},
{ fin => [(NN 106)], trans => 0},
{ fin => [(NN 262)], trans => 65},
{ fin => [(NN 201)], trans => 0},
{ fin => [(NN 175), (NN 262)], trans => 0},
{ fin => [(NN 170), (NN 262)], trans => 0},
{ fin => [(NN 183), (NN 262)], trans => 0},
{ fin => [(NN 16), (NN 262)], trans => 70},
{ fin => [(NN 35)], trans => 0},
{ fin => [(NN 16)], trans => 70},
{ fin => [], trans => 73},
{ fin => [(NN 99)], trans => 74},
{ fin => [], trans => 75},
{ fin => [(NN 99)], trans => 76},
{ fin => [], trans => 76},
{ fin => [(NN 16), (NN 262)], trans => 78},
{ fin => [], trans => 79},
{ fin => [(NN 21)], trans => 80},
{ fin => [(NN 41)], trans => 0},
{ fin => [], trans => 82},
{ fin => [], trans => 83},
{ fin => [(NN 63)], trans => 83},
{ fin => [], trans => 85},
{ fin => [(NN 75)], trans => 85},
{ fin => [(NN 57)], trans => 87},
{ fin => [(NN 57)], trans => 88},
{ fin => [(NN 57), (NN 69)], trans => 88},
{ fin => [], trans => 90},
{ fin => [(NN 30)], trans => 91},
{ fin => [(NN 52)], trans => 0},
{ fin => [(NN 16), (NN 25)], trans => 93},
{ fin => [(NN 35), (NN 46)], trans => 0},
{ fin => [(NN 201), (NN 262)], trans => 95},
{ fin => [(NN 12), (NN 201)], trans => 96},
{ fin => [(NN 185), (NN 262)], trans => 97},
{ fin => [(NN 188)], trans => 98},
{ fin => [(NN 192)], trans => 0},
{ fin => [(NN 201), (NN 262)], trans => 100},
{ fin => [(NN 181), (NN 262)], trans => 0},
{ fin => [(NN 168), (NN 262)], trans => 0},
{ fin => [(NN 166), (NN 262)], trans => 103},
{ fin => [(NN 8)], trans => 0},
{ fin => [(NN 262)], trans => 105},
{ fin => [(NN 164)], trans => 106},
{ fin => [(NN 101), (NN 201), (NN 262)], trans => 10},
{ fin => [(NN 201), (NN 262)], trans => 108},
{ fin => [(NN 173)], trans => 0},
{ fin => [], trans => 110},
{ fin => [], trans => 111},
{ fin => [(NN 88)], trans => 0},
{ fin => [(NN 262)], trans => 113},
{ fin => [], trans => 113},
{ fin => [], trans => 115},
{ fin => [(NN 81)], trans => 0},
{ fin => [(NN 3), (NN 262)], trans => 0},
{ fin => [(NN 1)], trans => 0},
{ fin => [(NN 260), (NN 262)], trans => 0},
{ fin => [(NN 260), (NN 262)], trans => 120},
{ fin => [(NN 258)], trans => 121},
{ fin => [(NN 260), (NN 262)], trans => 122},
{ fin => [(NN 251)], trans => 0},
{ fin => [(NN 248)], trans => 0},
{ fin => [(NN 260), (NN 262)], trans => 125},
{ fin => [(NN 254)], trans => 0},
{ fin => [(NN 3), (NN 260), (NN 262)], trans => 0},
{ fin => [(NN 241), (NN 262)], trans => 128},
{ fin => [(NN 241)], trans => 129},
{ fin => [], trans => 130},
{ fin => [(NN 241)], trans => 0},
{ fin => [(NN 241), (NN 262)], trans => 129},
{ fin => [(NN 241), (NN 262)], trans => 133},
{ fin => [(NN 241)], trans => 133},
{ fin => [(NN 262)], trans => 135},
{ fin => [(NN 241), (NN 262)], trans => 136},
{ fin => [(NN 241)], trans => 136},
{ fin => [(NN 241), (NN 262)], trans => 138},
{ fin => [(NN 241), (NN 262)], trans => 139},
{ fin => [(NN 241)], trans => 139},
{ fin => [(NN 185), (NN 241), (NN 262)], trans => 141},
{ fin => [(NN 188), (NN 241)], trans => 142},
{ fin => [(NN 192), (NN 241)], trans => 129},
{ fin => [(NN 241), (NN 262)], trans => 144},
{ fin => [(NN 166), (NN 262)], trans => 0},
{ fin => [(NN 241), (NN 262)], trans => 146},
{ fin => [(NN 241)], trans => 147},
{ fin => [(NN 101), (NN 241), (NN 262)], trans => 129},
{ fin => [(NN 241), (NN 262)], trans => 149},
{ fin => [(NN 245), (NN 262)], trans => 150},
{ fin => [(NN 245)], trans => 150},
{ fin => [(NN 221), (NN 245), (NN 262)], trans => 152},
{ fin => [(NN 221), (NN 245)], trans => 153},
{ fin => [], trans => 154},
{ fin => [(NN 221)], trans => 0},
{ fin => [(NN 221), (NN 245), (NN 262)], trans => 153},
{ fin => [(NN 221), (NN 245), (NN 262)], trans => 157},
{ fin => [(NN 221), (NN 245)], trans => 157},
{ fin => [(NN 245), (NN 262)], trans => 159},
{ fin => [(NN 221), (NN 245)], trans => 150},
{ fin => [(NN 221), (NN 262)], trans => 161},
{ fin => [(NN 221)], trans => 161},
{ fin => [(NN 221), (NN 245), (NN 262)], trans => 163},
{ fin => [(NN 221), (NN 262)], trans => 164},
{ fin => [(NN 221)], trans => 164},
{ fin => [(NN 221), (NN 245), (NN 262)], trans => 166},
{ fin => [(NN 221)], trans => 166},
{ fin => [(NN 5)], trans => 0}]);
};
package start_states {
Yystartstate = STARTSTATE Int;
# start state definitions
my asm = STARTSTATE 5;
my asmquote = STARTSTATE 7;
my comment = STARTSTATE 3;
my initial = STARTSTATE 1;
};
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 ( { line_number_db,err,adl_mode } )) =
{ 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;
fun REJECT() = action (i, acts ! l);
include user_declarations;
include internal::start_states;
{ yybufpos := i;
case yyk
# Application actions
1 => { line_number_database::newline line_number_db yypos; continue(); };
101 => { if adl_mode dollar(yypos,yypos+1);
else symbol("$",yypos,yypos+1);
fi; };
106 => { yytext=yymktext();
if adl_mode asm_colon(yypos,yypos+size yytext); else REJECT(); fi; };
110 => { yytext=yymktext();
if adl_mode mc_colon(yypos,yypos+size yytext); else REJECT(); fi; };
115 => { yytext=yymktext();
if adl_mode rtl_colon(yypos,yypos+size yytext); else REJECT(); fi; };
12 => { comment_level := 1; yybegin comment; continue(); };
126 => { yytext=yymktext();
if adl_mode delayslot_colon(yypos, size yytext); else REJECT(); fi; };
135 => { yytext=yymktext();
if adl_mode padding_colon(yypos, size yytext); else REJECT(); fi; };
146 => { yytext=yymktext();
if adl_mode nullified_colon(yypos, size yytext); else REJECT(); fi; };
157 => { yytext=yymktext();
if adl_mode candidate_colon(yypos, size yytext); else REJECT(); fi; };
16 => { yytext=yymktext();
decimal(err,yytext,yypos); };
160 => { yytext=yymktext();
look_up(adl_mode,yytext,yypos); };
164 => { yytext=yymktext();
tyvar(yytext,yypos,yypos + size yytext); };
166 => { lparen(yypos,yypos+1); };
168 => { rparen(yypos,yypos+1); };
170 => { lbracket(yypos,yypos+1); };
173 => { lhashbracket(yypos,yypos+1); };
175 => { rbracket(yypos,yypos+1); };
177 => { lbrace(yypos,yypos+1); };
179 => { rbrace(yypos,yypos+1); };
181 => { comma(yypos,yypos+1); };
183 => { semicolon(yypos,yypos+1); };
185 => { dot(yypos,yypos+1); };
188 => { dotdot(yypos,yypos+2); };
192 => { dotdot(yypos,yypos+3); };
201 => { yytext=yymktext();
if (yytext == *asm_lquote)
debug("lquote " + yytext + "\n");
yybegin asmquote;
ldquote(yypos,yypos+size yytext);
else
look_up_sym(yytext,yypos);
fi
; };
21 => { yytext=yymktext();
hex(err,yytext,yypos); };
221 => { yytext=yymktext();
if (yytext == *asm_rquote )
if (*meta_level != 0 )
err(yypos,yypos+size yytext,
"Mismatch between " + *asm_lmeta +
" and " + *asm_rmeta);
fi;
debug("rquote " + yytext + "\n");
yybegin initial;
rdquote(yypos,yypos+size yytext);
else if (yytext == *asm_lmeta )
meta_level := *meta_level + 1;
debug("lmeta " + yytext + "\n");
yybegin asm;
lmeta(yypos,yypos+size yytext);
else
asmtext(err,yytext,yypos);
fi;
fi; };
241 => { yytext=yymktext();
if (yytext == *asm_rmeta )
meta_level := *meta_level - 1;
debug("rmeta " + yytext + "(" + int::to_string *meta_level + ")\n");
if (*meta_level == 0 ) yybegin asmquote; fi;
rmeta(yypos,yypos+size yytext);
else
look_up_sym( yytext, yypos );
fi
; };
245 => { yytext=yymktext();
debug("text=" + yytext + "\n");
asmtext(err,yytext,yypos); };
248 => { comment_level := *comment_level - 1;
if (*comment_level == 0 ) yybegin initial; fi;
continue(); };
25 => { yytext=yymktext();
octal(err,yytext,yypos); };
251 => { comment_level := *comment_level - 1;
if (*comment_level == 0 ) yybegin initial; fi;
continue(); };
254 => { comment_level := *comment_level + 1; continue(); };
258 => { comment_level := *comment_level + 1; continue(); };
260 => { continue(); };
262 => { yytext=yymktext();
err(yypos,yypos+size yytext,
"unknown character " + string::to_string yytext);
continue(); };
3 => { continue(); };
30 => { yytext=yymktext();
binary(err,yytext,yypos); };
35 => { yytext=yymktext();
decimalinf(err,yytext,yypos); };
41 => { yytext=yymktext();
hexinf(err,yytext,yypos); };
46 => { yytext=yymktext();
octalinf(err,yytext,yypos); };
5 => { yytext=yymktext();
err(yypos,yypos+size yytext,
"newline in assembly text!"); continue(); };
52 => { yytext=yymktext();
binaryinf(err,yytext,yypos); };
57 => { yytext=yymktext();
wdecimal(err,yytext,yypos); };
63 => { yytext=yymktext();
whex(err,yytext,yypos); };
69 => { yytext=yymktext();
woctal(err,yytext,yypos); };
75 => { yytext=yymktext();
wbinary(err,yytext,yypos); };
8 => { comment_level := 1; yybegin comment; continue(); };
81 => { yytext=yymktext();
string(err,yytext,yypos); };
88 => { yytext=yymktext();
char(err,yytext,yypos); };
99 => { yytext=yymktext();
real(err,yytext,yypos); };
_ => 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
};


