Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] View of /sml/trunk/src/compiler/Parse/lex/ml.lex.sml
ViewVC logotype

View of /sml/trunk/src/compiler/Parse/lex/ml.lex.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 205 - (download) (annotate)
Fri Jan 15 15:53:56 1999 UTC (21 years, 10 months ago) by monnier
File size: 62702 byte(s)
Initial revision
functor MLLexFun(structure Tokens : ML_TOKENS)=
   struct
    structure UserDeclarations =
      struct
(* ml.lex
 *
 * Copyright 1989 by AT&T Bell Laboratories
 *)


(*
 * $Log$
 *)

open ErrorMsg;

structure TokTable = TokenTable(Tokens);
type svalue = Tokens.svalue
type pos = int
type lexresult = (svalue,pos) Tokens.token
type lexarg = {
	comLevel : int ref, 
	sourceMap : SourceMap.sourcemap,
	charlist : string list ref,
	stringtype : bool ref,
	stringstart : int ref, (* start of current string or comment*)
	brack_stack : int ref list ref, (* for frags *)
	err : pos*pos -> ErrorMsg.complainer
      }
type arg = lexarg
type ('a,'b) token = ('a,'b) Tokens.token
fun eof ({comLevel,err,charlist,stringstart,sourceMap, ...} : lexarg) = let
      val pos = Int.max(!stringstart+2, SourceMap.lastChange sourceMap)
      in
	if !comLevel>0
	  then err (!stringstart,pos) COMPLAIN "unclosed comment" nullErrorBody
          else if !charlist <> []
            then err (!stringstart,pos) COMPLAIN
                  "unclosed string, character, or quotation" nullErrorBody

	    else ();
	Tokens.EOF(pos,pos)
      end	
fun addString (charlist,s:string) = charlist := s :: (!charlist)
fun addChar (charlist, c:char) = addString(charlist, String.str c)
fun makeString charlist = (concat(rev(!charlist)) before charlist := nil)

local
  fun cvt radix (s, i) =
	#1(valOf(IntInf.scan radix Substring.getc (Substring.triml i (Substring.all s))))
in
val atoi = cvt StringCvt.DEC
val xtoi = cvt StringCvt.HEX
end (* local *)

fun mysynch (src, pos, parts) =
  let fun digit d = Char.ord d - Char.ord #"0"
      fun cvt digits = foldl (fn(d, n) => 10*n + digit d) 0 (explode digits)
      val r = SourceMap.resynch src
  in  case parts 
        of [col, line] => 
              r (pos, {fileName=NONE,      line=cvt line, column=SOME(cvt col)})
         | [file, col, line] => 
              r (pos, {fileName=SOME file, line=cvt line, column=SOME(cvt col)})
         | _ => impossible "text in (*#line...*)"
  end

fun has_quote s = let
      fun loop i = ((String.sub(s,i) = #"`") orelse loop (i+1))
	    handle _ => false
      in
	loop 0
      end

fun inc (ri as ref i) = (ri := i+1)
fun dec (ri as ref i) = (ri := i-1)
end (* end of user routines *)
exception LexError (* raised if illegal leaf action tried *)
structure Internal =
	struct

datatype yyfinstate = N of int
type statedata = {fin : yyfinstate list, trans: string}
(* transition & final state table *)
val tab = let
val 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, 
"\022\022\022\022\022\022\022\022\022\082\085\022\082\084\022\022\
\\022\022\022\022\022\022\022\022\022\022\022\022\022\022\022\022\
\\082\039\081\078\039\039\039\073\065\064\062\039\061\039\058\039\
\\050\048\048\048\048\048\048\048\048\048\039\047\039\039\039\039\
\\039\041\041\041\041\041\041\041\041\041\041\041\041\041\041\041\
\\041\041\041\041\041\041\041\041\041\041\041\046\039\045\039\044\
\\043\041\041\041\041\041\041\041\041\041\041\041\041\041\041\041\
\\041\041\041\041\041\041\041\041\041\041\041\040\039\038\023\022\
\\021"
),
 (3, 
"\086\086\086\086\086\086\086\086\086\086\092\086\086\091\086\086\
\\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\
\\086\086\086\086\086\086\086\086\089\086\087\086\086\086\086\086\
\\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\
\\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\
\\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\
\\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\
\\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\
\\086"
),
 (5, 
"\115\115\115\115\115\115\115\115\115\115\118\115\115\116\115\115\
\\115\115\115\115\115\115\115\115\115\115\115\115\115\115\115\115\
\\093\094\114\094\094\094\094\094\094\094\094\094\094\094\094\094\
\\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\
\\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\
\\094\094\094\094\094\094\094\094\094\094\094\094\095\094\094\094\
\\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\
\\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\093\
\\093"
),
 (7, 
"\119\119\119\119\119\119\119\119\119\121\124\119\121\123\119\119\
\\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
\\121\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\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"
),
 (9, 
"\125\125\125\125\125\125\125\125\125\125\131\125\125\130\125\125\
\\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\
\\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\
\\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\
\\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\
\\125\125\125\125\125\125\125\125\125\125\125\125\125\125\127\125\
\\126\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\
\\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\
\\125"
),
 (11, 
"\132\132\132\132\132\132\132\132\132\138\141\132\138\140\132\132\
\\132\132\132\132\132\132\132\132\132\132\132\132\132\132\132\132\
\\138\133\132\133\133\133\133\132\137\132\133\133\132\133\132\133\
\\132\132\132\132\132\132\132\132\132\132\133\132\133\133\133\133\
\\133\135\135\135\135\135\135\135\135\135\135\135\135\135\135\135\
\\135\135\135\135\135\135\135\135\135\135\135\132\133\132\133\132\
\\132\135\135\135\135\135\135\135\135\135\135\135\135\135\135\135\
\\135\135\135\135\135\135\135\135\135\135\135\132\133\132\133\132\
\\132"
),
 (13, 
"\142\142\142\142\142\142\142\142\142\142\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\142\142\142\142\142\145\142\142\142\142\142\
\\143\143\143\143\143\143\143\143\143\143\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\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\142\142\
\\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\
\\142"
),
 (15, 
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\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\
\\148\147\147\147\147\147\147\147\147\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"
),
 (17, 
"\142\142\142\142\142\142\142\142\142\153\000\142\153\142\142\142\
\\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\
\\153\142\152\142\142\142\142\142\142\142\150\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\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\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\142\142\142\142\142\142\142\
\\142"
),
 (19, 
"\156\156\156\156\156\156\156\156\156\156\157\156\156\156\156\156\
\\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\
\\156\156\160\156\156\156\156\156\156\156\158\156\156\156\156\156\
\\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\
\\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\
\\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\
\\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\
\\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\
\\156"
),
 (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\024\000\024\024\024\024\000\000\000\024\024\000\024\000\024\
\\035\026\026\026\026\026\026\026\026\026\024\000\024\024\024\024\
\\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\024\000\024\000\
\\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\024\000\024\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\024\000\024\024\024\024\000\000\000\024\024\000\024\000\024\
\\000\000\000\000\000\000\000\000\000\000\024\000\024\024\024\024\
\\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\024\000\024\000\
\\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\024\000\024\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\025\000\025\025\025\025\000\000\000\025\025\000\025\000\025\
\\000\000\000\000\000\000\000\000\000\000\025\000\025\025\025\025\
\\025\000\000\000\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\000\
\\025\000\000\000\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\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\000\000\000\000\000\000\000\030\000\
\\026\026\026\026\026\026\026\026\026\026\000\000\000\000\000\000\
\\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\029\029\029\029\029\029\029\029\029\029\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\028\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\000\000\000\000\000\000\000\000\000\
\\029\029\029\029\029\029\029\029\029\029\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\
\\031\031\031\031\031\031\031\031\031\031\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (31, 
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\031\031\031\031\031\031\031\031\031\031\000\000\000\000\000\000\
\\000\000\000\000\000\032\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\032\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (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\000\000\000\000\000\000\000\000\000\
\\034\034\034\034\034\034\034\034\034\034\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\033\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\000\000\000\000\000\000\000\000\000\
\\034\034\034\034\034\034\034\034\034\034\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\030\000\
\\026\026\026\026\026\026\026\026\026\026\000\000\000\000\000\000\
\\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\036\000\000\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\000\000\000\000\000\000\000\000\000\
\\037\037\037\037\037\037\037\037\037\037\000\000\000\000\000\000\
\\000\037\037\037\037\037\037\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\037\037\037\037\037\037\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (41, 
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\042\000\000\000\000\000\000\000\000\
\\042\042\042\042\042\042\042\042\042\042\000\000\000\000\000\000\
\\000\042\042\042\042\042\042\042\042\042\042\042\042\042\042\042\
\\042\042\042\042\042\042\042\042\042\042\042\000\000\000\000\042\
\\000\042\042\042\042\042\042\042\042\042\042\042\042\042\042\042\
\\042\042\042\042\042\042\042\042\042\042\042\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\000\000\000\000\000\000\000\030\000\
\\049\049\049\049\049\049\049\049\049\049\000\000\000\000\000\000\
\\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (50, 
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\000\
\\057\057\057\057\057\057\057\057\057\057\000\000\000\000\000\000\
\\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\053\051\000\000\000\000\000\000\000\
\\000"
),
 (51, 
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\052\052\052\052\052\052\052\052\052\052\000\000\000\000\000\000\
\\000\052\052\052\052\052\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\052\052\052\052\052\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\
\\056\056\056\056\056\056\056\056\056\056\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\054\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\
\\055\055\055\055\055\055\055\055\055\055\000\000\000\000\000\000\
\\000\055\055\055\055\055\055\000\000\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\055\055\055\055\055\000\000\000\000\000\000\000\000\000\
\\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\
\\056\056\056\056\056\056\056\056\056\056\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (57, 
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\000\
\\057\057\057\057\057\057\057\057\057\057\000\000\000\000\000\000\
\\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\027\000\000\000\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, 
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\059\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (59, 
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\060\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\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\024\000\024\024\024\024\000\000\063\024\024\000\024\000\024\
\\000\000\000\000\000\000\000\000\000\000\024\000\024\024\024\024\
\\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\024\000\024\000\
\\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\024\000\024\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\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\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (66, 
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\067\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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\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"
),
 (68, 
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\069\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (69, 
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\070\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\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\
\\000"
),
 (71, 
"\000\000\000\000\000\000\000\000\000\072\000\000\072\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\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\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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\000\000\000\000\077\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\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
\\074\074\074\074\074\074\074\074\074\074\074\000\000\000\000\075\
\\000\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
\\074\074\074\074\074\074\074\074\074\074\074\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\074\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\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
\\074\074\074\074\074\074\074\074\074\074\074\000\000\000\000\074\
\\000\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
\\074\074\074\074\074\074\074\074\074\074\074\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\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\074\074\074\074\074\
\\074\074\074\074\074\074\074\074\074\074\074\000\000\000\000\000\
\\000\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
\\074\074\074\074\074\074\074\074\074\074\074\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\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
\\074\074\074\074\074\074\074\074\074\074\074\000\000\000\000\000\
\\000\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
\\074\074\074\074\074\074\074\074\074\074\074\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\
\\076\076\076\076\076\076\076\076\076\076\000\000\000\000\000\000\
\\000\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
\\074\074\074\074\074\074\074\074\074\074\074\000\000\000\000\075\
\\000\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
\\074\074\074\074\074\074\074\074\074\074\074\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\024\080\024\024\024\024\000\000\000\024\024\000\024\000\024\
\\000\000\000\000\000\000\000\000\000\000\024\000\024\024\024\024\
\\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\079\024\000\024\000\
\\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\024\000\024\000\
\\000"
),
 (82, 
"\000\000\000\000\000\000\000\000\000\083\000\000\083\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\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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\085\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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\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\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\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\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\092\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (94, 
"\000\000\000\000\000\000\000\000\000\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\094\094\094\094\094\094\094\094\094\094\094\094\094\
\\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\
\\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\
\\094\094\094\094\094\094\094\094\094\094\094\094\000\094\094\094\
\\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\
\\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\000\
\\000"
),
 (95, 
"\000\000\000\000\000\000\000\000\000\111\113\000\111\112\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\111\000\110\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\107\107\107\107\107\107\107\107\107\107\000\000\000\000\000\000\
\\000\000\000\000\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\103\000\
\\000\102\101\000\000\000\100\000\000\000\000\000\000\000\099\000\
\\000\000\098\000\097\000\096\000\000\000\000\000\000\000\000\000\
\\000"
),
 (103, 
"\104\104\104\104\104\104\104\104\104\104\000\104\104\104\104\104\
\\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\
\\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\
\\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\
\\105\105\105\105\105\105\105\105\105\105\105\105\105\105\105\105\
\\105\105\105\105\105\105\105\105\105\105\105\105\105\105\105\105\
\\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\
\\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\
\\104"
),
 (107, 
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\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\108\108\108\108\108\108\108\108\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\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\109\109\109\109\109\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\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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\000\111\000\000\111\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\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (112, 
"\000\000\000\000\000\000\000\000\000\000\113\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (116, 
"\000\000\000\000\000\000\000\000\000\000\117\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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\122\000\000\122\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\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (123, 
"\000\000\000\000\000\000\000\000\000\000\124\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\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\
\\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"
),
 (130, 
"\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\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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\134\000\134\134\134\134\000\000\000\134\134\000\134\000\134\
\\000\000\000\000\000\000\000\000\000\000\134\000\134\134\134\134\
\\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\134\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\134\000\134\000\
\\000"
),
 (135, 
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\136\000\000\000\000\000\000\000\000\
\\136\136\136\136\136\136\136\136\136\136\000\000\000\000\000\000\
\\000\136\136\136\136\136\136\136\136\136\136\136\136\136\136\136\
\\136\136\136\136\136\136\136\136\136\136\136\000\000\000\000\136\
\\000\136\136\136\136\136\136\136\136\136\136\136\136\136\136\136\
\\136\136\136\136\136\136\136\136\136\136\136\000\000\000\000\000\
\\000"
),
 (138, 
"\000\000\000\000\000\000\000\000\000\139\000\000\139\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\
\\000\000\000\000\000\000\000\000\000\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\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\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (143, 
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\144\144\144\144\144\144\144\144\144\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\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (145, 
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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\
\\147\147\147\147\147\147\147\147\147\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"
),
 (148, 
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\148\147\147\147\147\147\147\147\147\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"
),
 (150, 
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\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\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\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, 
"\000\000\000\000\000\000\000\000\000\155\000\000\155\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\155\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (156, 
"\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
\\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
\\157\157\000\157\157\157\157\157\157\157\157\157\157\157\157\157\
\\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
\\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
\\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
\\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
\\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
\\157"
),
 (158, 
"\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
\\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
\\157\157\000\157\157\157\157\157\157\159\157\157\157\157\157\157\
\\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
\\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
\\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
\\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
\\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
\\157"
),
 (160, 
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (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\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\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 
val s = map f (rev (tl (rev s))) 
exception LexHackingError 
fun look ((j,x)::r, i) = if i = j then x else look(r, i) 
  | look ([], i) = raise LexHackingError
fun g {fin=x, trans=i} = {fin=x, trans=look(s,i)} 
in Vector.fromList(map g 
[{fin = [], trans = 0},
{fin = [(N 2)], trans = 1},
{fin = [(N 2)], trans = 1},
{fin = [], trans = 3},
{fin = [], trans = 3},
{fin = [], trans = 5},
{fin = [], trans = 5},
{fin = [(N 278)], trans = 7},
{fin = [(N 278)], trans = 7},
{fin = [], trans = 9},
{fin = [], trans = 9},
{fin = [(N 307)], trans = 11},
{fin = [(N 307)], trans = 11},
{fin = [], trans = 13},
{fin = [], trans = 13},
{fin = [(N 156)], trans = 15},
{fin = [(N 156)], trans = 15},
{fin = [], trans = 17},
{fin = [], trans = 17},
{fin = [(N 165)], trans = 19},
{fin = [(N 165)], trans = 19},
{fin = [(N 144),(N 146)], trans = 0},
{fin = [(N 146)], trans = 0},
{fin = [(N 56),(N 65),(N 146)], trans = 23},
{fin = [(N 56),(N 65)], trans = 24},
{fin = [(N 56)], trans = 25},
{fin = [(N 97)], trans = 26},
{fin = [], trans = 27},
{fin = [], trans = 28},
{fin = [(N 87)], trans = 28},
{fin = [], trans = 30},
{fin = [(N 87)], trans = 31},
{fin = [], trans = 32},
{fin = [], trans = 33},
{fin = [(N 87)], trans = 33},
{fin = [(N 97)], trans = 35},
{fin = [], trans = 36},
{fin = [(N 108)], trans = 36},
{fin = [(N 15),(N 146)], trans = 0},
{fin = [(N 56),(N 65),(N 146)], trans = 24},
{fin = [(N 13),(N 146)], trans = 0},
{fin = [(N 45),(N 146)], trans = 41},
{fin = [(N 45)], trans = 41},
{fin = [(N 56),(N 67),(N 146)], trans = 25},
{fin = [(N 9),(N 146)], trans = 0},
{fin = [(N 22),(N 146)], trans = 0},
{fin = [(N 17),(N 146)], trans = 0},
{fin = [(N 24),(N 146)], trans = 0},
{fin = [(N 90),(N 93),(N 146)], trans = 48},
{fin = [(N 90),(N 93)], trans = 48},
{fin = [(N 93),(N 146)], trans = 50},
{fin = [], trans = 51},
{fin = [(N 102)], trans = 51},
{fin = [], trans = 53},
{fin = [], trans = 54},
{fin = [(N 119)], trans = 54},
{fin = [(N 113)], trans = 56},
{fin = [(N 93)], trans = 57},
{fin = [(N 30),(N 146)], trans = 58},
{fin = [], trans = 59},
{fin = [(N 34)], trans = 0},
{fin = [(N 11),(N 146)], trans = 0},
{fin = [(N 56),(N 65),(N 146)], trans = 62},
{fin = [(N 142)], trans = 0},
{fin = [(N 28),(N 146)], trans = 0},
{fin = [(N 26),(N 146)], trans = 65},
{fin = [(N 139)], trans = 66},
{fin = [], trans = 67},
{fin = [], trans = 68},
{fin = [], trans = 69},
{fin = [], trans = 70},
{fin = [], trans = 71},
{fin = [(N 136)], trans = 71},
{fin = [(N 146)], trans = 73},
{fin = [(N 42)], trans = 74},
{fin = [], trans = 75},
{fin = [], trans = 76},
{fin = [], trans = 77},
{fin = [(N 56),(N 65),(N 146)], trans = 78},
{fin = [(N 20)], trans = 0},
{fin = [(N 124)], trans = 0},
{fin = [(N 121),(N 146)], trans = 0},
{fin = [(N 2),(N 146)], trans = 82},
{fin = [(N 2)], trans = 82},
{fin = [(N 7),(N 146)], trans = 84},
{fin = [(N 7)], trans = 0},
{fin = [(N 187)], trans = 0},
{fin = [(N 187)], trans = 87},
{fin = [(N 185)], trans = 0},
{fin = [(N 187)], trans = 89},
{fin = [(N 177)], trans = 0},
{fin = [(N 182),(N 187)], trans = 91},
{fin = [(N 182)], trans = 0},
{fin = [(N 270)], trans = 0},
{fin = [(N 270)], trans = 94},
{fin = [(N 204),(N 246),(N 270)], trans = 95},
{fin = [(N 225)], trans = 0},
{fin = [(N 222)], trans = 0},
{fin = [(N 219)], trans = 0},
{fin = [(N 216)], trans = 0},
{fin = [(N 213)], trans = 0},
{fin = [(N 210)], trans = 0},
{fin = [(N 207)], trans = 0},
{fin = [], trans = 103},
{fin = [(N 239)], trans = 0},
{fin = [(N 235),(N 239)], trans = 0},
{fin = [(N 228)], trans = 0},
{fin = [], trans = 107},
{fin = [], trans = 108},
{fin = [(N 244)], trans = 0},
{fin = [(N 231)], trans = 0},
{fin = [(N 204)], trans = 111},
{fin = [(N 200)], trans = 112},
{fin = [(N 200)], trans = 0},
{fin = [(N 189),(N 270)], trans = 0},
{fin = [(N 248),(N 270)], trans = 0},
{fin = [(N 194),(N 248),(N 270)], trans = 116},
{fin = [(N 194)], trans = 0},
{fin = [(N 194),(N 248)], trans = 0},
{fin = [(N 282)], trans = 0},
{fin = [(N 280),(N 282)], trans = 0},
{fin = [(N 278),(N 282)], trans = 121},
{fin = [(N 278)], trans = 121},
{fin = [(N 275),(N 282)], trans = 123},
{fin = [(N 275)], trans = 0},
{fin = [(N 299)], trans = 0},
{fin = [(N 292),(N 299)], trans = 0},
{fin = [(N 290),(N 299)], trans = 127},
{fin = [(N 285)], trans = 0},
{fin = [(N 288)], trans = 0},
{fin = [(N 297),(N 299)], trans = 130},
{fin = [(N 297)], trans = 0},
{fin = [(N 323)], trans = 0},
{fin = [(N 319),(N 323)], trans = 133},
{fin = [(N 319)], trans = 133},
{fin = [(N 310),(N 323)], trans = 135},
{fin = [(N 310)], trans = 135},
{fin = [(N 321),(N 323)], trans = 0},
{fin = [(N 307),(N 323)], trans = 138},
{fin = [(N 307)], trans = 138},
{fin = [(N 304),(N 323)], trans = 140},
{fin = [(N 304)], trans = 0},
{fin = [(N 174)], trans = 0},
{fin = [(N 149),(N 174)], trans = 143},
{fin = [(N 149)], trans = 143},
{fin = [(N 174)], trans = 145},
{fin = [(N 172)], trans = 0},
{fin = [(N 154)], trans = 147},
{fin = [(N 154),(N 156)], trans = 148},
{fin = [(N 151)], trans = 0},
{fin = [(N 174)], trans = 150},
{fin = [(N 159),(N 172)], trans = 0},
{fin = [(N 163),(N 174)], trans = 0},
{fin = [(N 174)], trans = 153},
{fin = [(N 163)], trans = 0},
{fin = [], trans = 153},
{fin = [(N 165),(N 174)], trans = 156},
{fin = [(N 165)], trans = 156},
{fin = [(N 165),(N 174)], trans = 158},
{fin = [(N 165),(N 172)], trans = 156},
{fin = [(N 174)], trans = 160},
{fin = [], trans = 161},
{fin = [(N 169)], trans = 0}])
end
structure StartStates =
	struct
	datatype yystartstate = STARTSTATE of int

(* start state definitions *)

val A = STARTSTATE 3;
val AQ = STARTSTATE 11;
val F = STARTSTATE 7;
val INITIAL = STARTSTATE 1;
val L = STARTSTATE 13;
val LL = STARTSTATE 15;
val LLC = STARTSTATE 17;
val LLCQ = STARTSTATE 19;
val Q = STARTSTATE 9;
val S = STARTSTATE 5;

end
type result = UserDeclarations.lexresult
	exception LexerError (* raised if illegal leaf action tried *)
end

fun makeLexer yyinput =
let	val yygone0=1
	val yyb = ref "\n" 		(* buffer *)
	val yybl = ref 1		(*buffer length *)
	val yybufpos = ref 1		(* location of next character to use *)
	val yygone = ref yygone0	(* position in file of beginning of buffer *)
	val yydone = ref false		(* eof found yet? *)
	val yybegin = ref 1		(*Current 'start state' for lexer *)

	val YYBEGIN = fn (Internal.StartStates.STARTSTATE x) =>
		 yybegin := x

fun lex (yyarg as ({
  comLevel,
  sourceMap,
  err,
  charlist,
  stringstart,
  stringtype,
  brack_stack})) =
let fun continue() : Internal.result = 
  let fun scan (s,AcceptingLeaves : Internal.yyfinstate list list,l,i0) =
	let fun action (i,nil) = raise LexError
	| action (i,nil::l) = action (i-1,l)
	| action (i,(node::acts)::l) =
		case node of
		    Internal.N yyk => 
			(let fun yymktext() = substring(!yyb,i0,i-i0)
			     val yypos = i0+ !yygone
			fun REJECT() = action(i,acts::l)
			open UserDeclarations Internal.StartStates
 in (yybufpos := i; case yyk of 

			(* Application actions *)

  102 => let val yytext=yymktext() in Tokens.INT0(xtoi(yytext, 2),yypos,yypos+size yytext) end
| 108 => let val yytext=yymktext() in Tokens.INT0(IntInf.~(xtoi(yytext, 3)),yypos,yypos+size yytext) end
| 11 => (Tokens.COMMA(yypos,yypos+1))
| 113 => let val yytext=yymktext() in Tokens.WORD(atoi(yytext, 2),yypos,yypos+size yytext) end
| 119 => let val yytext=yymktext() in Tokens.WORD(xtoi(yytext, 3),yypos,yypos+size yytext) end
| 121 => (charlist := [""]; stringstart := yypos;
                    stringtype := true; YYBEGIN S; continue())
| 124 => (charlist := [""]; stringstart := yypos;
                    stringtype := false; YYBEGIN S; continue())
| 13 => (Tokens.LBRACE(yypos,yypos+1))
| 136 => (YYBEGIN L; stringstart := yypos; comLevel := 1; continue())
| 139 => (YYBEGIN A; stringstart := yypos; comLevel := 1; continue())
| 142 => (err (yypos,yypos+1) COMPLAIN "unmatched close comment"
		        nullErrorBody;
		    continue())
| 144 => (err (yypos,yypos) COMPLAIN "non-Ascii character"
		        nullErrorBody;
		    continue())
| 146 => (err (yypos,yypos) COMPLAIN "illegal token" nullErrorBody;
		    continue())
| 149 => let val yytext=yymktext() in YYBEGIN LL; charlist := [yytext]; continue() end
| 15 => (Tokens.RBRACE(yypos,yypos+1))
| 151 => ((* cheat: take n > 0 dots *) continue())
| 154 => let val yytext=yymktext() in YYBEGIN LLC; addString(charlist, yytext); continue() end
| 156 => (YYBEGIN LLC; addString(charlist, "1");    continue()
		(* note hack, since ml-lex chokes on the empty string for 0* *))
| 159 => (YYBEGIN INITIAL; mysynch(sourceMap, yypos+2, !charlist); 
		              comLevel := 0; charlist := []; continue())
| 163 => (YYBEGIN LLCQ; continue())
| 165 => let val yytext=yymktext() in addString(charlist, yytext); continue() end
| 169 => (YYBEGIN INITIAL; mysynch(sourceMap, yypos+3, !charlist); 
		              comLevel := 0; charlist := []; continue())
| 17 => (Tokens.LBRACKET(yypos,yypos+1))
| 172 => (err (!stringstart, yypos+1) WARN 
                       "ill-formed (*#line...*) taken as comment" nullErrorBody;
                     YYBEGIN INITIAL; comLevel := 0; charlist := []; continue())
| 174 => (err (!stringstart, yypos+1) WARN 
                       "ill-formed (*#line...*) taken as comment" nullErrorBody;
                     YYBEGIN A; continue())
| 177 => (inc comLevel; continue())
| 182 => (SourceMap.newline sourceMap yypos; continue())
| 185 => (dec comLevel; if !comLevel=0 then YYBEGIN INITIAL else (); continue())
| 187 => (continue())
| 189 => (let val s = makeString charlist
                        val s = if size s <> 1 andalso not(!stringtype)
                                 then (err(!stringstart,yypos) COMPLAIN
                                      "character constant not length 1"
                                       nullErrorBody;
                                       substring(s^"x",0,1))
                                 else s
                        val t = (s,!stringstart,yypos+1)
                    in YYBEGIN INITIAL;
                       if !stringtype then Tokens.STRING t else Tokens.CHAR t
                    end)
| 194 => (err (!stringstart,yypos) COMPLAIN "unclosed string"
		        nullErrorBody;
		    SourceMap.newline sourceMap yypos;
		    YYBEGIN INITIAL; Tokens.STRING(makeString charlist,!stringstart,yypos))
| 2 => (continue())
| 20 => (Tokens.VECTORSTART(yypos,yypos+1))
| 200 => (SourceMap.newline sourceMap (yypos+1);
		    YYBEGIN F; continue())
| 204 => (YYBEGIN F; continue())
| 207 => (addString(charlist, "\007"); continue())
| 210 => (addString(charlist, "\008"); continue())
| 213 => (addString(charlist, "\012"); continue())
| 216 => (addString(charlist, "\010"); continue())
| 219 => (addString(charlist, "\013"); continue())
| 22 => (Tokens.RBRACKET(yypos,yypos+1))
| 222 => (addString(charlist, "\009"); continue())
| 225 => (addString(charlist, "\011"); continue())
| 228 => (addString(charlist, "\\"); continue())
| 231 => (addString(charlist, "\""); continue())
| 235 => let val yytext=yymktext() in addChar(charlist,
			Char.chr(Char.ord(String.sub(yytext,2))-Char.ord #"@"));
		    continue() end
| 239 => (err(yypos,yypos+2) COMPLAIN "illegal control escape; must be one of \
	  \@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" nullErrorBody;
	 continue())
| 24 => (Tokens.SEMICOLON(yypos,yypos+1))
| 244 => let val yytext=yymktext() in let val x = Char.ord(String.sub(yytext,1))*100
	     +Char.ord(String.sub(yytext,2))*10
	     +Char.ord(String.sub(yytext,3))
	     -((Char.ord #"0")*111)
  in (if x>255
      then err (yypos,yypos+4) COMPLAIN "illegal ascii escape" nullErrorBody
      else addChar(charlist, Char.chr x);
      continue())
  end end
| 246 => (err (yypos,yypos+1) COMPLAIN "illegal string escape"
		        nullErrorBody; 
		    continue())
| 248 => (err (yypos,yypos+1) COMPLAIN "illegal non-printing character in string" nullErrorBody;
                    continue())
| 26 => (if (null(!brack_stack))
                    then ()
                    else inc (hd (!brack_stack));
                    Tokens.LPAREN(yypos,yypos+1))
| 270 => let val yytext=yymktext() in addString(charlist,yytext); continue() end
| 275 => (SourceMap.newline sourceMap yypos; continue())
| 278 => (continue())
| 28 => (if (null(!brack_stack))
                    then ()
                    else if (!(hd (!brack_stack)) = 1)
                         then ( brack_stack := tl (!brack_stack);
                                charlist := [];
                                YYBEGIN Q)
                         else dec (hd (!brack_stack));
                    Tokens.RPAREN(yypos,yypos+1))
| 280 => (YYBEGIN S; stringstart := yypos; continue())
| 282 => (err (!stringstart,yypos) COMPLAIN "unclosed string"
		        nullErrorBody; 
		    YYBEGIN INITIAL; Tokens.STRING(makeString charlist,!stringstart,yypos+1))
| 285 => (addString(charlist, "`"); continue())
| 288 => (addString(charlist, "^"); continue())
| 290 => (YYBEGIN AQ;
                    let val x = makeString charlist
                    in
                    Tokens.OBJL(x,yypos,yypos+(size x))
                    end)
| 292 => ((* a closing quote *)
                    YYBEGIN INITIAL;
                    let val x = makeString charlist
                    in
                    Tokens.ENDQ(x,yypos,yypos+(size x))
                    end)
| 297 => (SourceMap.newline sourceMap yypos; addString(charlist,"\n"); continue())
| 299 => let val yytext=yymktext() in addString(charlist,yytext); continue() end
| 30 => (Tokens.DOT(yypos,yypos+1))
| 304 => (SourceMap.newline sourceMap yypos; continue())
| 307 => (continue())
| 310 => let val yytext=yymktext() in YYBEGIN Q; 
                    let val hash = StrgHash.hashString yytext
                    in
                    Tokens.AQID(FastSymbol.rawSymbol(hash,yytext),
				yypos,yypos+(size yytext))
                    end end
| 319 => let val yytext=yymktext() in YYBEGIN Q; 
                    let val hash = StrgHash.hashString yytext
                    in
                    Tokens.AQID(FastSymbol.rawSymbol(hash,yytext),
				yypos,yypos+(size yytext))
                    end end
| 321 => (YYBEGIN INITIAL;
                    brack_stack := ((ref 1)::(!brack_stack));
                    Tokens.LPAREN(yypos,yypos+1))
| 323 => let val yytext=yymktext() in err (yypos,yypos+1) COMPLAIN
		       ("ml lexer: bad character after antiquote "^yytext)
		       nullErrorBody;
                    Tokens.AQID(FastSymbol.rawSymbol(0,""),yypos,yypos) end
| 34 => (Tokens.DOTDOTDOT(yypos,yypos+3))
| 42 => let val yytext=yymktext() in TokTable.checkTyvar(yytext,yypos) end
| 45 => let val yytext=yymktext() in TokTable.checkId(yytext, yypos) end
| 56 => let val yytext=yymktext() in if !Control.quotation
                            then if (has_quote yytext)
                                 then REJECT()
                                 else TokTable.checkSymId(yytext,yypos)
                            else TokTable.checkSymId(yytext,yypos) end
| 65 => let val yytext=yymktext() in TokTable.checkSymId(yytext,yypos) end
| 67 => (if !Control.quotation
                            then (YYBEGIN Q;
                                  charlist := [];
                                  Tokens.BEGINQ(yypos,yypos+1))
                            else (err(yypos, yypos+1)
                                     COMPLAIN "quotation implementation error"
				     nullErrorBody;
                                  Tokens.BEGINQ(yypos,yypos+1)))
| 7 => (SourceMap.newline sourceMap yypos; continue())
| 87 => let val yytext=yymktext() in Tokens.REAL(yytext,yypos,yypos+size yytext) end
| 9 => (Tokens.WILD(yypos,yypos+1))
| 90 => let val yytext=yymktext() in Tokens.INT(atoi(yytext, 0),yypos,yypos+size yytext) end
| 93 => let val yytext=yymktext() in Tokens.INT0(atoi(yytext, 0),yypos,yypos+size yytext) end
| 97 => let val yytext=yymktext() in Tokens.INT0(atoi(yytext, 0),yypos,yypos+size yytext) end
| _ => raise Internal.LexerError

		) end )

	val {fin,trans} = Unsafe.Vector.sub(Internal.tab, s)
	val NewAcceptingLeaves = fin::AcceptingLeaves
	in if l = !yybl then
	     if trans = #trans(Vector.sub(Internal.tab,0))
	       then action(l,NewAcceptingLeaves
) else	    let val newchars= if !yydone then "" else yyinput 1024
	    in if (size newchars)=0
		  then (yydone := true;
		        if (l=i0) then UserDeclarations.eof yyarg
		                  else action(l,NewAcceptingLeaves))
		  else (if i0=l then yyb := newchars
		     else yyb := substring(!yyb,i0,l-i0)^newchars;
		     yygone := !yygone+i0;
		     yybl := size (!yyb);
		     scan (s,AcceptingLeaves,l-i0,0))
	    end
	  else let val NewChar = Char.ord(Unsafe.CharVector.sub(!yyb,l))
		val NewChar = if NewChar<128 then NewChar else 128
		val NewState = Char.ord(Unsafe.CharVector.sub(trans,NewChar))
		in if NewState=0 then action(l,NewAcceptingLeaves)
		else scan(NewState,NewAcceptingLeaves,l+1,i0)
	end
	end
(*
	val start= if substring(!yyb,!yybufpos-1,1)="\n"
then !yybegin+1 else !yybegin
*)
	in scan(!yybegin (* start *),nil,!yybufpos,!yybufpos)
    end
in continue end
  in lex
  end
end

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0