# 12 "htmllex.mll" open Lexing open Lexeme open Buff let txt_level = ref 0 and txt_stack = Stack.create "htmllex" exception Error of string ;; let error msg lb = raise (Error msg) let init table (s,t)= Hashtbl.add table s t ;; let block = Hashtbl.create 17 ;; List.iter (init block) ["CENTER", () ; "DIV", (); "BLOCKQUOTE", () ; "H1", () ; "H2", () ;"H3", () ;"H4", () ;"H5", () ;"H6", () ; "PRE", () ; "TABLE", () ; "TR",() ; "TD", () ; "TH",() ; "OL",() ; "UL",(); "P",() ; "LI",() ; "DL",() ; "DT", () ; "DD",() ; ] ;; let ptop () = if not (Stack.empty txt_stack) then begin let pos = Stack.top txt_stack in Location.print_this_fullpos pos ; prerr_endline "This opening tag is pending" end let warnings = ref true let check_nesting lb name = try Hashtbl.find block (String.uppercase name) ; if !txt_level <> 0 && !warnings then begin Location.print_fullpos () ; prerr_endline ("Warning, block level element: "^name^" nested inside text-level element") ; ptop () end with | Not_found -> () let text = Hashtbl.create 17 ;; List.iter (init text) ["TT",TT ; "I",I ; "B",B ; "BIG",BIG ; "SMALL",SMALL ; "STRIKE",STRIKE ; "S",S ; "U",U ; "FONT",FONT ; "EM",EM ; "STRONG",STRONG ; "DFN",DFN ; "CODE",CODE ; "SAMP",SAMP ; "KBD",KBD ; "VAR",VAR ; "CITE",CITE ; "ABBR",ABBR ; "ACRONYM",ACRONYM ; "Q",Q ; "SUB",SUB ; "SUP",SUP ; "A", A ; "SPAN", SPAN ; "SCRIPT", SCRIPT; "STYLE", STYLE; ] ;; let is_textlevel name = try let _ = Hashtbl.find text (String.uppercase name) in true with | Not_found -> false let is_br name = "BR" = (String.uppercase name) let is_basefont name = "BASEFONT" = (String.uppercase name) let set_basefont attrs lb = List.iter (fun (name,v,_) -> match String.uppercase name,v with | "SIZE",Some s -> begin try Emisc.basefont := int_of_string s with | _ -> error "BASEFONT syntax" lb end | _ -> ()) attrs let get_value lb = function | Some s -> s | _ -> error "Bad attribute syntax" lb let norm_attrs lb attrs = List.map (fun (name,value,txt) -> match String.uppercase name with | "SIZE" -> SIZE (get_value lb value),txt | "COLOR" -> COLOR (get_value lb value),txt | "FACE" -> FACE (get_value lb value),txt | _ -> OTHER, txt) attrs let print_attrs s attrs = print_string s ; print_string ":" ; List.iter (fun x -> match x with | name,Some value when name=s -> print_char ' ' ; print_string value | _ -> ()) attrs ; print_char '\n' let ouvre lb name attrs txt = let uname = String.uppercase name in try let tag = Hashtbl.find text uname in let attrs = norm_attrs lb attrs in incr txt_level ; Stack.push txt_stack (Location.get_pos ()) ; Open (tag, attrs,txt) with | Not_found -> assert false and ferme lb name txt = try let tag = Hashtbl.find text (String.uppercase name) in decr txt_level ; begin if not (Stack.empty txt_stack) then let _ = Stack.pop txt_stack in () end ; Close (tag,txt) with | Not_found -> Text txt let unquote s = let l = String.length s in String.sub s 1 (l-2) ;; let buff = Buff.create () and abuff = Buff.create () let put s = Buff.put buff s and putc c = Buff.put_char buff c let aput s = Buff.put abuff s and aputc c = Buff.put_char abuff c # 158 "htmllex.ml" let __ocaml_lex_tables = { Lexing.lex_base = "\000\000\249\255\250\255\000\000\035\000\002\000\036\000\026\000\ \027\000\011\000\015\000\000\000\010\000\002\000\082\000\160\000\ \000\000\001\000\254\255\235\000\113\000\255\255\093\001\253\255\ \171\001\007\000\095\001\009\000\029\002\028\002\108\002\188\002\ \107\000\135\000\255\255\114\000\130\000\017\000\001\000\004\000\ \046\003\128\000\048\003\051\003\129\000\252\255\053\003\006\001\ \056\003\253\255\117\000\251\255\118\000\133\003\009\004\019\000\ \047\000\064\001\048\000\032\000\157\000\231\000\098\004\178\004\ \002\005\110\000\184\000\091\005\171\005\029\006\107\006\102\001\ \221\006\043\007\034\002\157\007\252\255\033\000\015\008\129\008\ \036\002\043\002\058\003\243\008\101\009\215\009\073\010\063\003\ \089\003"; Lexing.lex_backtrk = "\255\255\255\255\255\255\006\000\006\000\000\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\003\000\ \002\000\255\255\255\255\004\000\001\000\255\255\003\000\255\255\ \001\000\000\000\001\000\000\000\255\255\002\000\001\000\255\255\ \255\255\255\255\255\255\255\255\255\255\001\000\255\255\000\000\ \255\255\255\255\255\255\000\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\003\000\255\255\002\000\001\000\ \255\255\255\255\001\000\255\255\255\255\255\255\001\000\000\000\ \255\255\255\255\255\255\003\000\000\000\003\000\001\000\000\000\ \003\000\001\000\000\000\004\000\255\255\255\255\000\000\000\000\ \000\000\002\000\255\255\000\000\000\000\000\000\000\000\001\000\ \255\255"; Lexing.lex_default = "\001\000\000\000\000\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\000\000\255\255\021\000\000\000\255\255\000\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \032\000\033\000\000\000\018\000\018\000\255\255\255\255\255\255\ \041\000\041\000\046\000\041\000\044\000\000\000\046\000\047\000\ \041\000\000\000\052\000\000\000\052\000\255\255\255\255\255\255\ \255\255\018\000\255\255\255\255\061\000\061\000\255\255\255\255\ \255\255\065\000\066\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\000\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255"; Lexing.lex_trans = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\005\000\005\000\005\000\005\000\005\000\021\000\005\000\ \025\000\025\000\027\000\027\000\025\000\000\000\027\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \005\000\016\000\005\000\000\000\000\000\000\000\004\000\025\000\ \006\000\027\000\000\000\000\000\000\000\017\000\018\000\014\000\ \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\013\000\005\000\003\000\005\000\038\000\039\000\ \056\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\012\000\021\000\059\000\021\000\076\000\ \000\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\007\000\007\000\009\000\010\000\011\000\ \000\000\000\000\019\000\019\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\000\000\034\000\000\000\000\000\ \021\000\008\000\008\000\019\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\255\255\034\000\037\000\ \021\000\053\000\255\255\019\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\000\000\000\000\000\000\ \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\000\000\021\000\000\000\000\000\000\000\021\000\ \000\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\044\000\000\000\000\000\045\000\000\000\ \002\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\019\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\021\000\000\000\000\000\ \000\000\000\000\000\000\000\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\019\000\000\000\000\000\ \000\000\000\000\000\000\000\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\019\000\025\000\025\000\ \028\000\028\000\025\000\255\255\028\000\058\000\255\255\071\000\ \071\000\255\255\023\000\071\000\000\000\051\000\255\255\000\000\ \000\000\000\000\000\000\000\000\000\000\025\000\000\000\028\000\ \255\255\255\255\023\000\049\000\000\000\000\000\071\000\255\255\ \000\000\000\000\024\000\000\000\000\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\000\000\ \000\000\000\000\000\000\023\000\027\000\018\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ \255\255\000\000\000\000\000\000\000\000\000\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ \024\000\000\000\000\000\024\000\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\000\000\000\000\255\255\ \000\000\000\000\000\000\000\000\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\255\255\000\000\ \000\000\000\000\000\000\000\000\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\028\000\028\000\ \000\000\000\000\028\000\074\000\074\000\080\000\080\000\074\000\ \000\000\080\000\000\000\000\000\081\000\081\000\000\000\000\000\ \081\000\000\000\000\000\000\000\000\000\028\000\032\000\031\000\ \023\000\000\000\074\000\033\000\080\000\000\000\000\000\030\000\ \000\000\030\000\030\000\081\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\000\000\ \000\000\000\000\027\000\000\000\000\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\000\000\ \000\000\000\000\000\000\030\000\000\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \000\000\030\000\030\000\000\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\000\000\ \000\000\000\000\000\000\000\000\000\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\000\000\ \000\000\000\000\000\000\030\000\000\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \000\000\030\000\030\000\000\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\000\000\ \000\000\000\000\000\000\000\000\000\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\000\000\ \000\000\000\000\000\000\030\000\000\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\043\000\ \043\000\041\000\041\000\043\000\043\000\043\000\048\000\048\000\ \043\000\048\000\048\000\082\000\082\000\048\000\000\000\082\000\ \087\000\087\000\000\000\000\000\087\000\000\000\043\000\000\000\ \041\000\000\000\000\000\043\000\000\000\048\000\000\000\000\000\ \048\000\000\000\082\000\000\000\042\000\000\000\000\000\087\000\ \000\000\042\000\088\000\088\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\081\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\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\055\000\000\000\ \000\000\255\255\000\000\044\000\000\000\000\000\044\000\000\000\ \047\000\000\000\000\000\047\000\018\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \000\000\000\000\000\000\000\000\000\000\000\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\000\ \255\255\000\000\000\000\255\255\000\000\255\255\000\000\000\000\ \255\255\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\000\000\000\000\000\000\000\000\ \000\000\000\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\065\000\064\000\000\000\000\000\ \000\000\066\000\000\000\000\000\000\000\063\000\000\000\063\000\ \063\000\000\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\000\000\000\000\000\000\ \000\000\000\000\000\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\000\000\000\000\000\000\ \000\000\063\000\000\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\000\000\063\000\ \063\000\000\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\000\000\000\000\000\000\ \000\000\000\000\000\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\000\000\000\000\000\000\ \000\000\063\000\000\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\000\000\063\000\ \063\000\000\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\000\000\000\000\000\000\ \000\000\000\000\000\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\000\000\000\000\000\000\ \000\000\063\000\000\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\023\000\000\000\000\000\ \000\000\000\000\018\000\000\000\000\000\000\000\068\000\000\000\ \068\000\068\000\000\000\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\000\000\000\000\ \000\000\000\000\000\000\000\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\000\000\000\000\ \000\000\000\000\068\000\000\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\000\000\ \068\000\068\000\000\000\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\000\000\000\000\ \000\000\000\000\000\000\000\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\000\000\000\000\ \000\000\000\000\068\000\000\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\071\000\071\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\ \000\000\000\000\000\000\000\000\000\000\071\000\000\000\000\000\ \000\000\000\000\000\000\000\000\023\000\000\000\000\000\000\000\ \000\000\000\000\070\000\000\000\000\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \000\000\000\000\000\000\000\000\000\000\000\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\000\000\000\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\000\000\000\000\ \000\000\000\000\000\000\000\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\074\000\074\000\ \000\000\000\000\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\074\000\000\000\023\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\073\000\000\000\000\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \000\000\000\000\000\000\000\000\000\000\000\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\000\000\000\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\000\000\000\000\ \000\000\000\000\000\000\000\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\080\000\080\000\ \000\000\000\000\080\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\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\078\000\000\000\077\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\000\000\ \000\000\000\000\000\000\076\000\000\000\000\000\078\000\078\000\ \079\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \000\000\000\000\000\000\000\000\000\000\000\000\078\000\078\000\ \079\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \082\000\082\000\000\000\000\000\082\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\082\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\078\000\000\000\000\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\000\000\000\000\000\000\081\000\000\000\000\000\000\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\000\000\000\000\000\000\000\000\000\000\000\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\082\000\082\000\000\000\000\000\082\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\082\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\078\000\000\000\ \000\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\000\000\000\000\000\000\081\000\000\000\ \000\000\000\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\083\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\000\000\000\000\000\000\000\000\ \000\000\000\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\083\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\082\000\082\000\000\000\000\000\ \082\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\082\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \078\000\000\000\000\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\000\000\000\000\000\000\ \081\000\000\000\000\000\000\000\084\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\000\000\000\000\ \000\000\000\000\000\000\000\000\084\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\082\000\082\000\ \000\000\000\000\082\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\082\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\078\000\000\000\000\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\000\000\ \000\000\000\000\081\000\000\000\000\000\000\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \085\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \000\000\000\000\000\000\000\000\000\000\000\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \085\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \082\000\082\000\000\000\000\000\082\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\082\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\078\000\000\000\000\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\000\000\000\000\000\000\081\000\000\000\000\000\000\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\086\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\000\000\000\000\000\000\000\000\000\000\000\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\086\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\088\000\088\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\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\078\000\000\000\ \000\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\000\000\000\000\000\000\087\000\000\000\ \000\000\000\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\000\000\000\000\000\000\000\000\ \000\000\000\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000"; Lexing.lex_check = "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\000\000\000\000\005\000\005\000\000\000\039\000\005\000\ \025\000\025\000\027\000\027\000\025\000\255\255\027\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \000\000\003\000\005\000\255\255\255\255\255\255\000\000\025\000\ \005\000\027\000\255\255\255\255\255\255\016\000\017\000\003\000\ \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ \003\000\003\000\012\000\011\000\000\000\013\000\037\000\038\000\ \055\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ \003\000\003\000\003\000\007\000\056\000\058\000\059\000\077\000\ \255\255\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ \003\000\003\000\003\000\004\000\006\000\008\000\009\000\010\000\ \255\255\255\255\014\000\014\000\014\000\014\000\014\000\014\000\ \014\000\014\000\014\000\014\000\255\255\032\000\255\255\255\255\ \065\000\004\000\006\000\014\000\014\000\014\000\014\000\014\000\ \014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\ \014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\ \014\000\014\000\014\000\014\000\014\000\020\000\033\000\036\000\ \035\000\050\000\052\000\014\000\014\000\014\000\014\000\014\000\ \014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\ \014\000\014\000\014\000\014\000\014\000\014\000\014\000\014\000\ \014\000\014\000\014\000\014\000\014\000\255\255\255\255\255\255\ \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\255\255\060\000\255\255\255\255\255\255\066\000\ \255\255\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\041\000\255\255\255\255\044\000\255\255\ \000\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\019\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\061\000\255\255\255\255\ \255\255\255\255\255\255\255\255\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\019\000\255\255\255\255\ \255\255\255\255\255\255\255\255\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\ \019\000\019\000\019\000\019\000\019\000\019\000\022\000\022\000\ \026\000\026\000\022\000\032\000\026\000\057\000\065\000\071\000\ \071\000\020\000\035\000\071\000\255\255\050\000\052\000\255\255\ \255\255\255\255\255\255\255\255\255\255\022\000\255\255\026\000\ \041\000\044\000\036\000\047\000\255\255\255\255\071\000\033\000\ \255\255\255\255\022\000\255\255\255\255\022\000\022\000\022\000\ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\255\255\ \255\255\255\255\255\255\022\000\026\000\060\000\022\000\022\000\ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ \066\000\255\255\255\255\255\255\255\255\255\255\022\000\022\000\ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ \024\000\255\255\255\255\024\000\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\255\255\255\255\061\000\ \255\255\255\255\255\255\255\255\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\047\000\255\255\ \255\255\255\255\255\255\255\255\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\024\000\024\000\ \024\000\024\000\024\000\024\000\024\000\024\000\028\000\028\000\ \255\255\255\255\028\000\074\000\074\000\080\000\080\000\074\000\ \255\255\080\000\255\255\255\255\081\000\081\000\255\255\255\255\ \081\000\255\255\255\255\255\255\255\255\028\000\029\000\029\000\ \057\000\255\255\074\000\029\000\080\000\255\255\255\255\029\000\ \255\255\029\000\029\000\081\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\255\255\ \255\255\255\255\028\000\255\255\255\255\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\255\255\ \255\255\255\255\255\255\029\000\255\255\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\030\000\ \255\255\030\000\030\000\255\255\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\255\255\ \255\255\255\255\255\255\255\255\255\255\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\255\255\ \255\255\255\255\255\255\030\000\255\255\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\031\000\ \255\255\031\000\031\000\255\255\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\255\255\ \255\255\255\255\255\255\255\255\255\255\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\255\255\ \255\255\255\255\255\255\031\000\255\255\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\040\000\ \040\000\042\000\042\000\040\000\043\000\043\000\046\000\046\000\ \043\000\048\000\048\000\082\000\082\000\048\000\255\255\082\000\ \087\000\087\000\255\255\255\255\087\000\255\255\040\000\255\255\ \042\000\255\255\255\255\043\000\255\255\046\000\255\255\255\255\ \048\000\255\255\082\000\255\255\040\000\255\255\255\255\087\000\ \255\255\043\000\088\000\088\000\255\255\255\255\088\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\082\000\ \255\255\088\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\088\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\053\000\255\255\ \255\255\040\000\255\255\042\000\255\255\255\255\043\000\255\255\ \046\000\255\255\255\255\048\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \255\255\255\255\255\255\255\255\255\255\255\255\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\040\000\255\255\ \042\000\255\255\255\255\043\000\255\255\046\000\255\255\255\255\ \048\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\255\255\255\255\255\255\255\255\ \255\255\255\255\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\062\000\062\000\255\255\255\255\ \255\255\062\000\255\255\255\255\255\255\062\000\255\255\062\000\ \062\000\255\255\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\255\255\255\255\255\255\ \255\255\255\255\255\255\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\255\255\255\255\255\255\ \255\255\062\000\255\255\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\063\000\255\255\063\000\ \063\000\255\255\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\255\255\255\255\255\255\ \255\255\255\255\255\255\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\255\255\255\255\255\255\ \255\255\063\000\255\255\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\064\000\255\255\064\000\ \064\000\255\255\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\255\255\255\255\255\255\ \255\255\255\255\255\255\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\255\255\255\255\255\255\ \255\255\064\000\255\255\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\067\000\255\255\255\255\ \255\255\255\255\067\000\255\255\255\255\255\255\067\000\255\255\ \067\000\067\000\255\255\067\000\067\000\067\000\067\000\067\000\ \067\000\067\000\067\000\067\000\067\000\067\000\255\255\255\255\ \255\255\255\255\255\255\255\255\067\000\067\000\067\000\067\000\ \067\000\067\000\067\000\067\000\067\000\067\000\067\000\067\000\ \067\000\067\000\067\000\067\000\067\000\067\000\067\000\067\000\ \067\000\067\000\067\000\067\000\067\000\067\000\255\255\255\255\ \255\255\255\255\067\000\255\255\067\000\067\000\067\000\067\000\ \067\000\067\000\067\000\067\000\067\000\067\000\067\000\067\000\ \067\000\067\000\067\000\067\000\067\000\067\000\067\000\067\000\ \067\000\067\000\067\000\067\000\067\000\067\000\068\000\255\255\ \068\000\068\000\255\255\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\255\255\255\255\ \255\255\255\255\255\255\255\255\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\255\255\255\255\ \255\255\255\255\068\000\255\255\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\068\000\068\000\ \068\000\068\000\068\000\068\000\068\000\068\000\069\000\069\000\ \255\255\255\255\069\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\069\000\255\255\255\255\ \255\255\255\255\255\255\255\255\069\000\255\255\255\255\255\255\ \255\255\255\255\069\000\255\255\255\255\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \255\255\255\255\255\255\255\255\255\255\255\255\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \069\000\069\000\069\000\069\000\069\000\069\000\069\000\069\000\ \070\000\255\255\255\255\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\255\255\255\255\ \255\255\255\255\255\255\255\255\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\072\000\072\000\ \255\255\255\255\072\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\072\000\255\255\072\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\072\000\255\255\255\255\072\000\072\000\072\000\ \072\000\072\000\072\000\072\000\072\000\072\000\072\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\072\000\072\000\ \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\ \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\ \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\ \255\255\255\255\255\255\255\255\255\255\255\255\072\000\072\000\ \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\ \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\ \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\ \073\000\255\255\255\255\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\255\255\255\255\ \255\255\255\255\255\255\255\255\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\075\000\075\000\ \255\255\255\255\075\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\075\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\075\000\255\255\075\000\075\000\075\000\075\000\ \075\000\075\000\075\000\075\000\075\000\075\000\075\000\255\255\ \255\255\255\255\255\255\075\000\255\255\255\255\075\000\075\000\ \075\000\075\000\075\000\075\000\075\000\075\000\075\000\075\000\ \075\000\075\000\075\000\075\000\075\000\075\000\075\000\075\000\ \075\000\075\000\075\000\075\000\075\000\075\000\075\000\075\000\ \255\255\255\255\255\255\255\255\255\255\255\255\075\000\075\000\ \075\000\075\000\075\000\075\000\075\000\075\000\075\000\075\000\ \075\000\075\000\075\000\075\000\075\000\075\000\075\000\075\000\ \075\000\075\000\075\000\075\000\075\000\075\000\075\000\075\000\ \078\000\078\000\255\255\255\255\078\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\078\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\078\000\255\255\255\255\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\255\255\255\255\255\255\078\000\255\255\255\255\255\255\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\255\255\255\255\255\255\255\255\255\255\255\255\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\079\000\079\000\255\255\255\255\079\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\079\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\079\000\255\255\ \255\255\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\255\255\255\255\255\255\079\000\255\255\ \255\255\255\255\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\255\255\255\255\255\255\255\255\ \255\255\255\255\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\083\000\083\000\255\255\255\255\ \083\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\083\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \083\000\255\255\255\255\083\000\083\000\083\000\083\000\083\000\ \083\000\083\000\083\000\083\000\083\000\255\255\255\255\255\255\ \083\000\255\255\255\255\255\255\083\000\083\000\083\000\083\000\ \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\ \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\ \083\000\083\000\083\000\083\000\083\000\083\000\255\255\255\255\ \255\255\255\255\255\255\255\255\083\000\083\000\083\000\083\000\ \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\ \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\ \083\000\083\000\083\000\083\000\083\000\083\000\084\000\084\000\ \255\255\255\255\084\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\084\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\084\000\255\255\255\255\084\000\084\000\084\000\ \084\000\084\000\084\000\084\000\084\000\084\000\084\000\255\255\ \255\255\255\255\084\000\255\255\255\255\255\255\084\000\084\000\ \084\000\084\000\084\000\084\000\084\000\084\000\084\000\084\000\ \084\000\084\000\084\000\084\000\084\000\084\000\084\000\084\000\ \084\000\084\000\084\000\084\000\084\000\084\000\084\000\084\000\ \255\255\255\255\255\255\255\255\255\255\255\255\084\000\084\000\ \084\000\084\000\084\000\084\000\084\000\084\000\084\000\084\000\ \084\000\084\000\084\000\084\000\084\000\084\000\084\000\084\000\ \084\000\084\000\084\000\084\000\084\000\084\000\084\000\084\000\ \085\000\085\000\255\255\255\255\085\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\085\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\085\000\255\255\255\255\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\255\255\255\255\255\255\085\000\255\255\255\255\255\255\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\255\255\255\255\255\255\255\255\255\255\255\255\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\086\000\086\000\255\255\255\255\086\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\086\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\086\000\255\255\ \255\255\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ \086\000\086\000\086\000\255\255\255\255\255\255\086\000\255\255\ \255\255\255\255\086\000\086\000\086\000\086\000\086\000\086\000\ \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ \086\000\086\000\086\000\086\000\255\255\255\255\255\255\255\255\ \255\255\255\255\086\000\086\000\086\000\086\000\086\000\086\000\ \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ \086\000\086\000\086\000\086\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255"; Lexing.lex_base_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \001\000\002\000\009\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\005\000\008\000\000\000\038\000\010\000\000\000\ \013\000\049\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000"; Lexing.lex_backtrk_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000"; Lexing.lex_default_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \006\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\020\000\025\000\000\000\000\000\041\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000"; Lexing.lex_trans_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\014\000\014\000\000\000\000\000\014\000\000\000\000\000\ \000\000\028\000\028\000\046\000\046\000\028\000\046\000\046\000\ \000\000\000\000\046\000\000\000\000\000\000\000\000\000\000\000\ \014\000\000\000\001\000\000\000\000\000\000\000\000\000\001\000\ \028\000\000\000\046\000\000\000\000\000\046\000\017\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\033\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000"; Lexing.lex_check_code = "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\040\000\040\000\255\255\255\255\040\000\042\000\042\000\ \255\255\043\000\043\000\046\000\046\000\043\000\048\000\048\000\ \255\255\255\255\048\000\255\255\255\255\255\255\255\255\255\255\ \040\000\255\255\029\000\032\000\255\255\042\000\255\255\029\000\ \043\000\033\000\046\000\255\255\255\255\048\000\040\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\043\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \042\000\255\255\255\255\043\000\255\255\046\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\032\000\033\000\255\255\255\255\042\000\255\255\255\255\ \043\000\255\255\046\000\255\255\255\255\255\255"; Lexing.lex_code = "\255\003\255\002\255\255\003\255\255\001\002\000\003\255\005\255\ \255\004\255\255\007\255\006\255\255\003\005\255\003\005\005\255\ \255\004\255\003\005\255\000\003\255\006\255\007\255\255\007\255\ \255\000\004\001\006\002\007\255"; } let rec main lexbuf = __ocaml_lex_main_rec lexbuf 0 and __ocaml_lex_main_rec lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> let lxm = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 173 "htmllex.mll" (Blanks lxm) # 1050 "htmllex.ml" | 1 -> # 175 "htmllex.mll" (put (lexeme lexbuf) ; in_comment lexbuf ; Text (Buff.to_string buff)) # 1057 "htmllex.ml" | 2 -> # 179 "htmllex.mll" (put (lexeme lexbuf) ; in_tag lexbuf ; Text (Buff.to_string buff)) # 1064 "htmllex.ml" | 3 -> let tag = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) lexbuf.Lexing.lex_curr_pos and lxm = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 183 "htmllex.mll" (put lxm ; if is_textlevel tag then begin let attrs = read_attrs lexbuf in ouvre lexbuf tag attrs (Buff.to_string buff) end else if is_basefont tag then begin let attrs = read_attrs lexbuf in set_basefont attrs lexbuf ; Text (Buff.to_string buff) end else begin check_nesting lexbuf tag ; in_tag lexbuf ; let txt = Buff.to_string buff in if is_br tag then Blanks txt else Text txt end) # 1088 "htmllex.ml" | 4 -> let tag = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 2) lexbuf.Lexing.lex_curr_pos and lxm = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 201 "htmllex.mll" (put lxm ; in_tag lexbuf ; ferme lexbuf tag (Buff.to_string buff)) # 1098 "htmllex.ml" | 5 -> # 204 "htmllex.mll" (Eof) # 1103 "htmllex.ml" | 6 -> let c = Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in # 206 "htmllex.mll" (putc c ; text lexbuf ; Text (Buff.to_string buff)) # 1112 "htmllex.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_main_rec lexbuf __ocaml_lex_state and text lexbuf = __ocaml_lex_text_rec lexbuf 20 and __ocaml_lex_text_rec lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> let c = Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in # 212 "htmllex.mll" (putc c ; text lexbuf) # 1125 "htmllex.ml" | 1 -> # 213 "htmllex.mll" (()) # 1130 "htmllex.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_text_rec lexbuf __ocaml_lex_state and read_attrs lexbuf = __ocaml_lex_read_attrs_rec lexbuf 22 and __ocaml_lex_read_attrs_rec lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> let lxm = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 217 "htmllex.mll" (aput lxm ; read_attrs lexbuf) # 1143 "htmllex.ml" | 1 -> let name = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 219 "htmllex.mll" (aput name ; let v = read_avalue lexbuf in let atxt = Buff.to_string abuff in put atxt ; (name,v,atxt)::read_attrs lexbuf) # 1154 "htmllex.ml" | 2 -> # 224 "htmllex.mll" (put_char buff '>' ; []) # 1159 "htmllex.ml" | 3 -> # 225 "htmllex.mll" (error "Attribute syntax" lexbuf) # 1164 "htmllex.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_read_attrs_rec lexbuf __ocaml_lex_state and read_avalue lexbuf = __ocaml_lex_read_avalue_rec lexbuf 26 and __ocaml_lex_read_avalue_rec lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 229 "htmllex.mll" (let lxm = lexeme lexbuf in aput lxm ; Some (read_aavalue lexbuf)) # 1177 "htmllex.ml" | 1 -> # 232 "htmllex.mll" (None) # 1182 "htmllex.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_read_avalue_rec lexbuf __ocaml_lex_state and read_aavalue lexbuf = lexbuf.Lexing.lex_mem <- Array.create 4 (-1) ; __ocaml_lex_read_aavalue_rec lexbuf 29 and __ocaml_lex_read_aavalue_rec lexbuf __ocaml_lex_state = match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> let x = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(1) lexbuf.Lexing.lex_mem.(0) and lxm = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 237 "htmllex.mll" (aput lxm ; x) # 1197 "htmllex.ml" | 1 -> let lxm = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 240 "htmllex.mll" (aput lxm ; lxm) # 1205 "htmllex.ml" | 2 -> # 242 "htmllex.mll" (error "Attribute syntax" lexbuf) # 1210 "htmllex.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_read_aavalue_rec lexbuf __ocaml_lex_state and in_tag lexbuf = __ocaml_lex_in_tag_rec lexbuf 35 and __ocaml_lex_in_tag_rec lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 245 "htmllex.mll" (putc '>') # 1221 "htmllex.ml" | 1 -> let c = Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in # 246 "htmllex.mll" (putc c ; in_tag lexbuf) # 1228 "htmllex.ml" | 2 -> # 247 "htmllex.mll" (error "End of file in tag" lexbuf) # 1233 "htmllex.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_in_tag_rec lexbuf __ocaml_lex_state and in_comment lexbuf = __ocaml_lex_in_comment_rec lexbuf 36 and __ocaml_lex_in_comment_rec lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 251 "htmllex.mll" (put (lexeme lexbuf)) # 1244 "htmllex.ml" | 1 -> let c = Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in # 253 "htmllex.mll" (putc c ; in_comment lexbuf) # 1251 "htmllex.ml" | 2 -> # 255 "htmllex.mll" (error "End of file in comment" lexbuf) # 1256 "htmllex.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_in_comment_rec lexbuf __ocaml_lex_state and styles lexbuf = lexbuf.Lexing.lex_mem <- Array.create 8 (-1) ; (* L=1 [3] <- p ; *) lexbuf.Lexing.lex_mem.(3) <- lexbuf.Lexing.lex_curr_pos ; __ocaml_lex_styles_rec lexbuf 40 and __ocaml_lex_styles_rec lexbuf __ocaml_lex_state = match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 258 "htmllex.mll" ( styles lexbuf ) # 1269 "htmllex.ml" | 1 -> # 259 "htmllex.mll" ( [] ) # 1274 "htmllex.ml" | 2 -> let name = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(0) lexbuf.Lexing.lex_mem.(1) and cl = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(2) lexbuf.Lexing.lex_curr_pos in # 262 "htmllex.mll" ( Css.Class (name, cl) :: styles lexbuf ) # 1282 "htmllex.ml" | 3 -> let lxm = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(0) lexbuf.Lexing.lex_curr_pos in # 264 "htmllex.mll" (Css.Other lxm :: styles lexbuf) # 1289 "htmllex.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_styles_rec lexbuf __ocaml_lex_state and extract_classes cls lexbuf = __ocaml_lex_extract_classes_rec cls lexbuf 50 and __ocaml_lex_extract_classes_rec cls lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 269 "htmllex.mll" ( skip_comment lexbuf ; extract_classes cls lexbuf) # 1300 "htmllex.ml" | 1 -> # 271 "htmllex.mll" ( skip_tag lexbuf ; extract_classes cls lexbuf ) # 1305 "htmllex.ml" | 2 -> # 273 "htmllex.mll" ( let cls = extract_attrs cls lexbuf in extract_classes cls lexbuf ) # 1311 "htmllex.ml" | 3 -> # 275 "htmllex.mll" ( extract_classes cls lexbuf ) # 1316 "htmllex.ml" | 4 -> # 276 "htmllex.mll" ( cls ) # 1321 "htmllex.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_extract_classes_rec cls lexbuf __ocaml_lex_state and skip_comment lexbuf = __ocaml_lex_skip_comment_rec lexbuf 57 and __ocaml_lex_skip_comment_rec lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 279 "htmllex.mll" ( () ) # 1332 "htmllex.ml" | 1 -> # 280 "htmllex.mll" ( skip_comment lexbuf ) # 1337 "htmllex.ml" | 2 -> # 281 "htmllex.mll" ( error "End of file in comment" lexbuf ) # 1342 "htmllex.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_skip_comment_rec lexbuf __ocaml_lex_state and skip_tag lexbuf = __ocaml_lex_skip_tag_rec lexbuf 60 and __ocaml_lex_skip_tag_rec lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 284 "htmllex.mll" ( () ) # 1353 "htmllex.ml" | 1 -> # 285 "htmllex.mll" ( error "End of file in tag" lexbuf ) # 1358 "htmllex.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_skip_tag_rec lexbuf __ocaml_lex_state and skip_value lexbuf = __ocaml_lex_skip_value_rec lexbuf 62 and __ocaml_lex_skip_value_rec lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 291 "htmllex.mll" ( () ) # 1369 "htmllex.ml" | 1 -> # 292 "htmllex.mll" ( error "Attribute syntax" lexbuf ) # 1374 "htmllex.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_skip_value_rec lexbuf __ocaml_lex_state and extract_value cls lexbuf = __ocaml_lex_extract_value_rec cls lexbuf 67 and __ocaml_lex_extract_value_rec cls lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> let name = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 296 "htmllex.mll" ( Emisc.Strings.add name cls ) # 1387 "htmllex.ml" | 1 -> # 298 "htmllex.mll" ( extract_values_q cls lexbuf ) # 1392 "htmllex.ml" | 2 -> # 300 "htmllex.mll" ( extract_values_qq cls lexbuf ) # 1397 "htmllex.ml" | 3 -> # 301 "htmllex.mll" ( error "Attribute syntax" lexbuf ) # 1402 "htmllex.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_extract_value_rec cls lexbuf __ocaml_lex_state and extract_values_q cls lexbuf = __ocaml_lex_extract_values_q_rec cls lexbuf 69 and __ocaml_lex_extract_values_q_rec cls lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 304 "htmllex.mll" ( extract_values_q cls lexbuf ) # 1413 "htmllex.ml" | 1 -> let cl = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 305 "htmllex.mll" ( extract_values_q (Emisc.Strings.add cl cls) lexbuf ) # 1420 "htmllex.ml" | 2 -> # 306 "htmllex.mll" ( cls ) # 1425 "htmllex.ml" | 3 -> # 307 "htmllex.mll" ( error "Class value syntax" lexbuf ) # 1430 "htmllex.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_extract_values_q_rec cls lexbuf __ocaml_lex_state and extract_values_qq cls lexbuf = __ocaml_lex_extract_values_qq_rec cls lexbuf 72 and __ocaml_lex_extract_values_qq_rec cls lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 310 "htmllex.mll" ( extract_values_qq cls lexbuf ) # 1441 "htmllex.ml" | 1 -> let cl = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 311 "htmllex.mll" ( extract_values_qq (Emisc.Strings.add cl cls) lexbuf ) # 1448 "htmllex.ml" | 2 -> # 312 "htmllex.mll" ( cls ) # 1453 "htmllex.ml" | 3 -> # 313 "htmllex.mll" ( error "Class value syntax" lexbuf ) # 1458 "htmllex.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_extract_values_qq_rec cls lexbuf __ocaml_lex_state and extract_attrs cls lexbuf = __ocaml_lex_extract_attrs_rec cls lexbuf 75 and __ocaml_lex_extract_attrs_rec cls lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 318 "htmllex.mll" ( extract_attrs cls lexbuf ) # 1469 "htmllex.ml" | 1 -> # 321 "htmllex.mll" ( let cls = extract_value cls lexbuf in extract_attrs cls lexbuf ) # 1475 "htmllex.ml" | 2 -> # 325 "htmllex.mll" ( skip_value lexbuf ; extract_attrs cls lexbuf ) # 1481 "htmllex.ml" | 3 -> # 328 "htmllex.mll" ( cls ) # 1486 "htmllex.ml" | 4 -> # 329 "htmllex.mll" ( error "Attribute syntax" lexbuf ) # 1491 "htmllex.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_extract_attrs_rec cls lexbuf __ocaml_lex_state ;; # 332 "htmllex.mll" let to_string = function | Open (_,_,txt) | Close (_,txt) | Text txt | Blanks txt -> txt | Eof -> "Eof" let rec cost = function | {tag=FONT ; attrs=attrs} -> (1,List.length attrs) | _ -> (1,0) let tok_buff = ref None ;; let txt_buff = Buff.create () ;; let rec read_tokens blanks lb = let t = main lb in match t with | Text txt -> Buff.put txt_buff txt ; read_tokens false lb | Blanks txt -> Buff.put txt_buff txt ; read_tokens blanks lb | _ -> let txt = Buff.to_string txt_buff in match txt with | "" -> t | _ -> tok_buff := Some t ; if blanks then Blanks txt else Text txt let reset () = txt_level := 0 ; Stack.reset txt_stack ; Buff.reset txt_buff ; Buff.reset buff ; Buff.reset abuff let next_token lb = try match !tok_buff with | Some t -> tok_buff := None ; t | None -> read_tokens true lb with | e -> reset () ; raise e let classes lexbuf = extract_classes Emisc.Strings.empty lexbuf # 1550 "htmllex.ml"