# 2 "odoc_ocamlhtml.mll" (***********************************************************************) (* OCamldoc *) (* *) (* Maxence Guesdon, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 2001 Institut National de Recherche en Informatique et *) (* en Automatique. All rights reserved. This file is distributed *) (* under the terms of the Q Public License version 1.0. *) (* *) (***********************************************************************) (* $Id: odoc_ocamlhtml.mll,v 1.9 2004/03/14 13:52:01 guesdon Exp $ *) (** Generation of html code to display OCaml code. *) open Lexing exception Fatal_error let fatal_error msg = prerr_string ">> Fatal error: "; prerr_endline msg; raise Fatal_error type error = | Illegal_character of char | Unterminated_comment | Unterminated_string | Unterminated_string_in_comment | Keyword_as_label of string ;; exception Error of error * int * int let base_escape_strings = [ ("&", "&") ; ("<", "<") ; (">", ">") ; ] let pre_escape_strings = [ (" ", " ") ; ("\n", "
\n") ; ("\t", "        ") ; ] let pre = ref false let fmt = ref Format.str_formatter (** Escape the strings which would clash with html syntax, and some other strings if we want to get a PRE style.*) let escape s = List.fold_left (fun acc -> fun (s, s2) -> Str.global_replace (Str.regexp s) s2 acc) s (if !pre then base_escape_strings @ pre_escape_strings else base_escape_strings) (** Escape the strings which would clash with html syntax. *) let escape_base s = List.fold_left (fun acc -> fun (s, s2) -> Str.global_replace (Str.regexp s) s2 acc) s base_escape_strings (** The output functions *) let print ?(esc=true) s = Format.pp_print_string !fmt (if esc then escape s else s) ;; let print_class ?(esc=true) cl s = print ~esc: false (""^ (if esc then escape s else s)^ "") ;; (** The table of keywords with colors *) let create_hashtable size init = let tbl = Hashtbl.create size in List.iter (fun (key, data) -> Hashtbl.add tbl key data) init; tbl (** The function used to return html code for the given comment body. *) let html_of_comment = ref (fun (s : string) -> "Odoc_ocamlhtml.html_of_comment not initialized") let keyword_table = create_hashtable 149 [ "and", "keyword" ; "as", "keyword" ; "assert", "keyword" ; "begin", "keyword" ; "class", "keyword" ; "constraint", "keyword" ; "do", "keyword" ; "done", "keyword" ; "downto", "keyword" ; "else", "keyword" ; "end", "keyword" ; "exception", "keyword" ; "external", "keyword" ; "false", "keyword" ; "for", "keyword" ; "fun", "keyword" ; "function", "keyword" ; "functor", "keyword" ; "if", "keyword" ; "in", "keyword" ; "include", "keyword" ; "inherit", "keyword" ; "initializer", "keyword" ; "lazy", "keyword" ; "let", "keyword" ; "match", "keyword" ; "method", "keyword" ; "module", "keyword" ; "mutable", "keyword" ; "new", "keyword" ; "object", "keyword" ; "of", "keyword" ; "open", "keyword" ; "or", "keyword" ; "parser", "keyword" ; "private", "keyword" ; "rec", "keyword" ; "sig", "keyword" ; "struct", "keyword" ; "then", "keyword" ; "to", "keyword" ; "true", "keyword" ; "try", "keyword" ; "type", "keyword" ; "val", "keyword" ; "virtual", "keyword" ; "when", "keyword" ; "while", "keyword" ; "with", "keyword" ; "mod", "keyword" ; "land", "keyword" ; "lor", "keyword" ; "lxor", "keyword" ; "lsl", "keyword" ; "lsr", "keyword" ; "asr", "keyword" ; ] let kwsign_class = "keywordsign" let constructor_class = "constructor" let comment_class = "comment" let string_class = "string" let code_class = "code" (** To buffer and print comments *) let margin = ref 0 let comment_buffer = Buffer.create 32 let reset_comment_buffer () = Buffer.reset comment_buffer let store_comment_char = Buffer.add_char comment_buffer let make_margin () = let rec iter n = if n <= 0 then "" else " "^(iter (n-1)) in iter !margin let print_comment () = let s = Buffer.contents comment_buffer in let len = String.length s in let code = if len < 1 then "(*"^(escape s)^"*)" else match s.[0] with '*' -> ( try let html = !html_of_comment (String.sub s 1 (len-1)) in "
"^(make_margin ())^""^ ""^ "(**"^html^"*)"^ "
" with e -> prerr_endline (Printexc.to_string e); "(*"^(escape s)^"*)" ) | _ -> "(*"^(escape s)^"*)" in print ~esc: false code (** To buffer string literals *) let string_buffer = Buffer.create 32 let reset_string_buffer () = Buffer.reset string_buffer let store_string_char = Buffer.add_char string_buffer let get_stored_string () = let s = Buffer.contents string_buffer in String.escaped s (** To translate escape sequences *) let char_for_backslash = function | 'n' -> '\010' | 'r' -> '\013' | 'b' -> '\008' | 't' -> '\009' | c -> c let char_for_decimal_code lexbuf i = let c = 100 * (Char.code(Lexing.lexeme_char lexbuf i) - 48) + 10 * (Char.code(Lexing.lexeme_char lexbuf (i+1)) - 48) + (Char.code(Lexing.lexeme_char lexbuf (i+2)) - 48) in Char.chr(c land 0xFF) (** To store the position of the beginning of a string and comment *) let string_start_pos = ref 0;; let comment_start_pos = ref [];; let in_comment () = !comment_start_pos <> [];; (** Error report *) open Format let report_error ppf = function | Illegal_character c -> fprintf ppf "Illegal character (%s)" (Char.escaped c) | Unterminated_comment -> fprintf ppf "Comment not terminated" | Unterminated_string -> fprintf ppf "String literal not terminated" | Unterminated_string_in_comment -> fprintf ppf "This comment contains an unterminated string literal" | Keyword_as_label kwd -> fprintf ppf "`%s' is a keyword, it cannot be used as label name" kwd ;; # 245 "odoc_ocamlhtml.ml" let __ocaml_lex_tables = { Lexing.lex_base = "\000\000\190\255\191\255\224\000\003\001\038\001\073\001\108\001\ \204\255\143\001\180\001\032\000\212\255\067\000\217\001\252\001\ \069\000\071\000\084\000\031\002\229\255\231\255\234\255\066\002\ \122\000\101\002\092\000\123\000\245\255\089\000\120\002\193\002\ \145\003\112\004\204\004\156\005\255\255\123\006\153\006\252\255\ \120\007\150\007\250\255\017\003\224\000\099\000\132\000\220\003\ \064\005\003\001\101\000\027\003\037\003\147\004\097\000\244\255\ \047\003\112\000\243\255\057\003\113\000\242\255\112\000\240\255\ \117\008\239\255\020\006\019\004\001\000\238\255\007\000\152\008\ \187\008\222\008\001\009\225\255\221\255\222\255\223\255\219\255\ \036\009\213\255\214\255\210\255\207\255\071\009\203\255\205\255\ \106\009\141\009\121\000\247\255\248\255\208\000\253\255\115\000\ \115\000\254\255\159\009\120\000\251\255\067\003\125\000\243\003\ \126\000\249\255\224\000\172\009\112\004\157\000\003\001\221\004\ "; Lexing.lex_backtrk = "\255\255\255\255\255\255\063\000\060\000\059\000\054\000\057\000\ \255\255\049\000\046\000\044\000\255\255\040\000\039\000\037\000\ \035\000\031\000\029\000\055\000\255\255\255\255\255\255\019\000\ \018\000\025\000\023\000\022\000\255\255\008\000\008\000\007\000\ \006\000\004\000\002\000\001\000\255\255\058\000\255\255\255\255\ \027\000\255\255\255\255\255\255\009\000\255\255\255\255\255\255\ \008\000\008\000\008\000\009\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\014\000\255\255\ \062\000\255\255\255\255\255\255\017\000\255\255\255\255\020\000\ \061\000\056\000\028\000\255\255\255\255\255\255\255\255\255\255\ \038\000\255\255\255\255\255\255\255\255\047\000\255\255\255\255\ \057\000\053\000\255\255\255\255\255\255\008\000\255\255\008\000\ \008\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\005\000\255\255\001\000\001\000\255\255\ "; Lexing.lex_default = "\001\000\000\000\000\000\255\255\255\255\255\255\255\255\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\000\000\000\000\000\000\255\255\ \255\255\255\255\255\255\054\000\000\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\000\000\255\255\255\255\000\000\ \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\000\000\ \255\255\255\255\000\000\255\255\255\255\000\000\255\255\000\000\ \255\255\000\000\070\000\255\255\255\255\000\000\070\000\255\255\ \255\255\255\255\255\255\000\000\000\000\000\000\000\000\000\000\ \255\255\000\000\000\000\000\000\000\000\255\255\000\000\000\000\ \255\255\255\255\091\000\000\000\000\000\099\000\000\000\255\255\ \255\255\000\000\255\255\255\255\000\000\255\255\255\255\255\255\ \255\255\000\000\042\000\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\036\000\036\000\069\000\036\000\036\000\000\000\000\000\ \000\000\069\000\000\000\000\000\068\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \036\000\007\000\028\000\024\000\005\000\003\000\023\000\027\000\ \026\000\021\000\025\000\006\000\020\000\019\000\018\000\003\000\ \030\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\017\000\016\000\015\000\014\000\009\000\033\000\ \004\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\031\000\013\000\083\000\012\000\004\000\035\000\ \022\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\011\000\010\000\008\000\034\000\081\000\ \079\000\078\000\075\000\067\000\077\000\076\000\062\000\044\000\ \055\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\050\000\050\000\050\000\050\000\058\000\ \061\000\063\000\067\000\094\000\097\000\036\000\043\000\100\000\ \093\000\096\000\255\255\095\000\042\000\105\000\110\000\110\000\ \000\000\000\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\049\000\000\000\110\000\043\000\082\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\053\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\039\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \002\000\003\000\036\000\000\000\003\000\003\000\003\000\255\255\ \000\000\000\000\003\000\003\000\110\000\003\000\003\000\003\000\ \044\000\044\000\044\000\044\000\044\000\044\000\044\000\044\000\ \044\000\044\000\003\000\000\000\003\000\003\000\003\000\003\000\ \003\000\000\000\000\000\110\000\004\000\043\000\000\000\004\000\ \004\000\004\000\000\000\000\000\098\000\004\000\004\000\000\000\ \004\000\004\000\004\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\000\000\107\000\004\000\003\000\004\000\ \004\000\004\000\004\000\004\000\000\000\043\000\000\000\005\000\ \000\000\000\000\005\000\005\000\005\000\000\000\000\000\000\000\ \005\000\005\000\000\000\005\000\005\000\005\000\000\000\000\000\ \000\000\000\000\000\000\000\000\003\000\000\000\003\000\000\000\ \005\000\004\000\005\000\005\000\005\000\005\000\005\000\000\000\ \000\000\000\000\072\000\000\000\000\000\072\000\072\000\072\000\ \000\000\000\000\000\000\072\000\072\000\000\000\072\000\072\000\ \072\000\092\000\000\000\255\255\000\000\000\000\000\000\004\000\ \000\000\004\000\000\000\072\000\005\000\072\000\072\000\072\000\ \072\000\072\000\000\000\000\000\000\000\088\000\000\000\000\000\ \088\000\088\000\088\000\000\000\000\000\000\000\088\000\088\000\ \000\000\088\000\088\000\088\000\000\000\000\000\000\000\000\000\ \000\000\000\000\005\000\000\000\005\000\000\000\088\000\072\000\ \088\000\089\000\088\000\088\000\088\000\000\000\000\000\000\000\ \005\000\000\000\000\000\005\000\005\000\005\000\000\000\000\000\ \000\000\005\000\005\000\000\000\005\000\005\000\005\000\000\000\ \000\000\000\000\000\000\000\000\000\000\072\000\000\000\072\000\ \000\000\005\000\088\000\005\000\005\000\005\000\005\000\005\000\ \255\255\000\000\000\000\000\000\000\000\005\000\000\000\000\000\ \005\000\005\000\005\000\000\000\000\000\000\000\005\000\005\000\ \100\000\005\000\005\000\005\000\000\000\000\000\000\000\000\000\ \088\000\000\000\088\000\000\000\087\000\005\000\005\000\000\000\ \005\000\005\000\005\000\005\000\005\000\000\000\000\000\000\000\ \000\000\000\000\005\000\000\000\000\000\005\000\005\000\005\000\ \000\000\000\000\000\000\005\000\005\000\000\000\005\000\005\000\ \005\000\000\000\000\000\005\000\086\000\005\000\000\000\000\000\ \000\000\084\000\005\000\005\000\000\000\005\000\005\000\005\000\ \005\000\005\000\000\000\000\000\000\000\005\000\000\000\000\000\ \005\000\005\000\005\000\000\000\000\000\000\000\005\000\005\000\ \000\000\080\000\005\000\005\000\000\000\000\000\000\000\000\000\ \085\000\000\000\005\000\000\000\000\000\000\000\005\000\005\000\ \005\000\005\000\005\000\005\000\005\000\000\000\000\000\000\000\ \072\000\000\000\000\000\072\000\072\000\072\000\000\000\000\000\ \000\000\072\000\072\000\000\000\072\000\073\000\072\000\000\000\ \000\000\000\000\000\000\000\000\000\000\005\000\000\000\005\000\ \000\000\072\000\005\000\072\000\072\000\074\000\072\000\072\000\ \000\000\000\000\000\000\005\000\000\000\000\000\005\000\005\000\ \071\000\000\000\000\000\000\000\005\000\005\000\000\000\005\000\ \005\000\005\000\000\000\000\000\000\000\000\000\000\000\000\000\ \005\000\000\000\005\000\000\000\005\000\072\000\005\000\005\000\ \005\000\005\000\005\000\000\000\000\000\000\000\003\000\000\000\ \000\000\003\000\003\000\003\000\000\000\000\000\065\000\064\000\ \003\000\000\000\003\000\003\000\003\000\000\000\000\000\000\000\ \000\000\000\000\000\000\072\000\000\000\072\000\000\000\003\000\ \005\000\003\000\003\000\003\000\003\000\003\000\044\000\000\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\045\000\000\000\000\000\043\000\005\000\000\000\ \005\000\000\000\000\000\003\000\000\000\000\000\000\000\046\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \047\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\045\000\000\000\000\000\043\000\000\000\000\000\ \000\000\003\000\000\000\003\000\000\000\000\000\000\000\046\000\ \031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \047\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\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\031\000\000\000\000\000\000\000\000\000\ \031\000\000\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\031\000\052\000\000\000\052\000\000\000\ \000\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\059\000\ \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\ \059\000\060\000\060\000\060\000\060\000\060\000\060\000\060\000\ \060\000\060\000\060\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\103\000\103\000\000\000\000\000\000\000\ \000\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\ \000\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\031\000\031\000\031\000\031\000\031\000\031\000\ \032\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\000\000\000\000\000\000\000\000\ \032\000\000\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\048\000\048\000\048\000\048\000\ \048\000\048\000\048\000\048\000\048\000\048\000\000\000\000\000\ \000\000\000\000\000\000\000\000\067\000\048\000\048\000\048\000\ \048\000\048\000\048\000\104\000\104\000\104\000\104\000\104\000\ \104\000\104\000\104\000\104\000\104\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\048\000\048\000\048\000\ \048\000\048\000\048\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\000\000\000\000\000\000\ \000\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \000\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \000\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\037\000\000\000\000\000\037\000\037\000\037\000\000\000\ \000\000\000\000\037\000\037\000\000\000\037\000\037\000\037\000\ \111\000\111\000\111\000\111\000\111\000\111\000\111\000\111\000\ \111\000\111\000\037\000\000\000\037\000\037\000\037\000\040\000\ \037\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\057\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\000\000\037\000\041\000\ \000\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\000\000\037\000\037\000\037\000\057\000\ \037\000\037\000\037\000\000\000\000\000\057\000\037\000\037\000\ \000\000\037\000\037\000\037\000\000\000\000\000\000\000\000\000\ \000\000\057\000\000\000\000\000\000\000\057\000\037\000\057\000\ \037\000\037\000\037\000\037\000\037\000\039\000\039\000\039\000\ \039\000\039\000\039\000\039\000\039\000\039\000\039\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\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\000\038\000\000\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\000\000\ \037\000\000\000\037\000\000\000\000\000\000\000\000\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\000\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \048\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\048\000\048\000\048\000\048\000\048\000\048\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\048\000\048\000\048\000\048\000\048\000\048\000\000\000\ \000\000\000\000\000\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\032\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\000\000\ \000\000\000\000\000\000\032\000\000\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\069\000\000\000\ \000\000\068\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \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\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\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\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\000\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\000\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\037\000\000\000\000\000\037\000\ \037\000\037\000\000\000\000\000\000\000\037\000\037\000\000\000\ \037\000\037\000\037\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\037\000\000\000\037\000\ \037\000\037\000\037\000\037\000\000\000\000\000\000\000\000\000\ \038\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\039\000\000\000\000\000\000\000\000\000\ \000\000\037\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\000\000\000\000\000\000\037\000\ \038\000\037\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\255\255\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \000\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \000\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\037\000\000\000\000\000\037\000\037\000\037\000\000\000\ \000\000\000\000\037\000\037\000\000\000\037\000\037\000\037\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\037\000\000\000\037\000\037\000\037\000\037\000\ \037\000\000\000\000\000\000\000\000\000\041\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \042\000\000\000\000\000\000\000\000\000\000\000\037\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\000\000\000\000\000\000\037\000\041\000\037\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\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\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\000\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\000\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\064\000\000\000\ \000\000\064\000\064\000\064\000\000\000\000\000\000\000\064\000\ \064\000\000\000\064\000\064\000\064\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\064\000\ \000\000\064\000\064\000\064\000\064\000\064\000\000\000\000\000\ \000\000\005\000\000\000\000\000\005\000\005\000\005\000\000\000\ \000\000\000\000\005\000\005\000\000\000\005\000\005\000\005\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\005\000\064\000\005\000\005\000\005\000\005\000\ \005\000\000\000\000\000\000\000\072\000\000\000\000\000\072\000\ \072\000\072\000\000\000\000\000\000\000\072\000\072\000\000\000\ \072\000\072\000\072\000\000\000\000\000\000\000\000\000\000\000\ \000\000\064\000\000\000\064\000\000\000\072\000\005\000\072\000\ \072\000\072\000\072\000\072\000\000\000\000\000\000\000\072\000\ \000\000\000\000\072\000\072\000\072\000\000\000\000\000\000\000\ \072\000\072\000\000\000\072\000\072\000\072\000\000\000\000\000\ \000\000\000\000\000\000\000\000\005\000\000\000\005\000\000\000\ \072\000\072\000\072\000\072\000\072\000\072\000\072\000\000\000\ \000\000\000\000\072\000\000\000\000\000\072\000\072\000\072\000\ \000\000\000\000\000\000\072\000\072\000\000\000\072\000\072\000\ \072\000\000\000\000\000\000\000\000\000\000\000\000\000\072\000\ \000\000\072\000\000\000\072\000\072\000\072\000\072\000\072\000\ \072\000\072\000\000\000\000\000\000\000\005\000\000\000\000\000\ \005\000\005\000\005\000\000\000\000\000\000\000\005\000\005\000\ \000\000\005\000\005\000\005\000\000\000\000\000\000\000\000\000\ \000\000\000\000\072\000\000\000\072\000\000\000\005\000\072\000\ \005\000\005\000\005\000\005\000\005\000\000\000\000\000\000\000\ \005\000\000\000\000\000\005\000\005\000\005\000\000\000\000\000\ \000\000\005\000\005\000\000\000\005\000\005\000\005\000\000\000\ \000\000\000\000\000\000\000\000\000\000\072\000\000\000\072\000\ \000\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\ \000\000\000\000\000\000\088\000\000\000\000\000\088\000\088\000\ \088\000\000\000\000\000\000\000\088\000\088\000\000\000\088\000\ \088\000\088\000\000\000\000\000\000\000\000\000\000\000\000\000\ \005\000\000\000\005\000\000\000\088\000\005\000\088\000\088\000\ \088\000\088\000\088\000\000\000\000\000\000\000\088\000\000\000\ \000\000\088\000\088\000\088\000\000\000\000\000\110\000\088\000\ \088\000\109\000\088\000\088\000\088\000\000\000\000\000\000\000\ \000\000\000\000\000\000\005\000\000\000\005\000\102\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\094\000\101\000\ \101\000\101\000\101\000\101\000\101\000\101\000\101\000\101\000\ \101\000\000\000\000\000\000\000\108\000\108\000\108\000\108\000\ \108\000\108\000\108\000\108\000\108\000\108\000\088\000\000\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\102\000\000\000\000\000\000\000\000\000\ \000\000\102\000\000\000\000\000\000\000\000\000\000\000\000\000\ \094\000\088\000\000\000\088\000\000\000\102\000\094\000\000\000\ \000\000\102\000\000\000\102\000\000\000\000\000\000\000\000\000\ \000\000\000\000\094\000\000\000\000\000\000\000\094\000\000\000\ \094\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\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\068\000\000\000\000\000\255\255\255\255\ \255\255\070\000\255\255\255\255\070\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\011\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\000\ \016\000\017\000\018\000\024\000\017\000\017\000\026\000\029\000\ \054\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\045\000\045\000\050\000\050\000\057\000\ \060\000\062\000\024\000\090\000\095\000\096\000\029\000\099\000\ \090\000\090\000\027\000\090\000\102\000\104\000\109\000\109\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\046\000\046\000\046\000\046\000\ \046\000\046\000\046\000\046\000\255\255\109\000\029\000\013\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\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\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\093\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\003\000\106\000\255\255\003\000\003\000\003\000\070\000\ \255\255\255\255\003\000\003\000\110\000\003\000\003\000\003\000\ \044\000\044\000\044\000\044\000\044\000\044\000\044\000\044\000\ \044\000\044\000\003\000\255\255\003\000\003\000\003\000\003\000\ \003\000\255\255\255\255\110\000\004\000\044\000\255\255\004\000\ \004\000\004\000\255\255\255\255\093\000\004\000\004\000\255\255\ \004\000\004\000\004\000\049\000\049\000\049\000\049\000\049\000\ \049\000\049\000\049\000\255\255\106\000\004\000\003\000\004\000\ \004\000\004\000\004\000\004\000\255\255\044\000\255\255\005\000\ \255\255\255\255\005\000\005\000\005\000\255\255\255\255\255\255\ \005\000\005\000\255\255\005\000\005\000\005\000\255\255\255\255\ \255\255\255\255\255\255\255\255\003\000\255\255\003\000\255\255\ \005\000\004\000\005\000\005\000\005\000\005\000\005\000\255\255\ \255\255\255\255\006\000\255\255\255\255\006\000\006\000\006\000\ \255\255\255\255\255\255\006\000\006\000\255\255\006\000\006\000\ \006\000\090\000\255\255\027\000\255\255\255\255\255\255\004\000\ \255\255\004\000\255\255\006\000\005\000\006\000\006\000\006\000\ \006\000\006\000\255\255\255\255\255\255\007\000\255\255\255\255\ \007\000\007\000\007\000\255\255\255\255\255\255\007\000\007\000\ \255\255\007\000\007\000\007\000\255\255\255\255\255\255\255\255\ \255\255\255\255\005\000\255\255\005\000\255\255\007\000\006\000\ \007\000\007\000\007\000\007\000\007\000\255\255\255\255\255\255\ \009\000\255\255\255\255\009\000\009\000\009\000\255\255\255\255\ \255\255\009\000\009\000\255\255\009\000\009\000\009\000\255\255\ \255\255\255\255\255\255\255\255\255\255\006\000\255\255\006\000\ \255\255\009\000\007\000\009\000\009\000\009\000\009\000\009\000\ \093\000\255\255\255\255\255\255\255\255\010\000\255\255\255\255\ \010\000\010\000\010\000\255\255\255\255\255\255\010\000\010\000\ \106\000\010\000\010\000\010\000\255\255\255\255\255\255\255\255\ \007\000\255\255\007\000\255\255\009\000\009\000\010\000\255\255\ \010\000\010\000\010\000\010\000\010\000\255\255\255\255\255\255\ \255\255\255\255\014\000\255\255\255\255\014\000\014\000\014\000\ \255\255\255\255\255\255\014\000\014\000\255\255\014\000\014\000\ \014\000\255\255\255\255\009\000\009\000\009\000\255\255\255\255\ \255\255\010\000\010\000\014\000\255\255\014\000\014\000\014\000\ \014\000\014\000\255\255\255\255\255\255\015\000\255\255\255\255\ \015\000\015\000\015\000\255\255\255\255\255\255\015\000\015\000\ \255\255\015\000\015\000\015\000\255\255\255\255\255\255\255\255\ \010\000\255\255\010\000\255\255\255\255\255\255\015\000\014\000\ \015\000\015\000\015\000\015\000\015\000\255\255\255\255\255\255\ \019\000\255\255\255\255\019\000\019\000\019\000\255\255\255\255\ \255\255\019\000\019\000\255\255\019\000\019\000\019\000\255\255\ \255\255\255\255\255\255\255\255\255\255\014\000\255\255\014\000\ \255\255\019\000\015\000\019\000\019\000\019\000\019\000\019\000\ \255\255\255\255\255\255\023\000\255\255\255\255\023\000\023\000\ \023\000\255\255\255\255\255\255\023\000\023\000\255\255\023\000\ \023\000\023\000\255\255\255\255\255\255\255\255\255\255\255\255\ \015\000\255\255\015\000\255\255\023\000\019\000\023\000\023\000\ \023\000\023\000\023\000\255\255\255\255\255\255\025\000\255\255\ \255\255\025\000\025\000\025\000\255\255\255\255\025\000\025\000\ \025\000\255\255\025\000\025\000\025\000\255\255\255\255\255\255\ \255\255\255\255\255\255\019\000\255\255\019\000\255\255\025\000\ \023\000\025\000\025\000\025\000\025\000\025\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\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\030\000\255\255\255\255\030\000\023\000\255\255\ \023\000\255\255\255\255\025\000\255\255\255\255\255\255\030\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \030\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\030\000\255\255\255\255\030\000\255\255\255\255\ \255\255\025\000\255\255\025\000\255\255\255\255\255\255\030\000\ \031\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \030\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\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\043\000\255\255\043\000\255\255\ \255\255\043\000\043\000\043\000\043\000\043\000\043\000\043\000\ \043\000\043\000\043\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\ \059\000\059\000\059\000\101\000\101\000\101\000\101\000\101\000\ \101\000\101\000\101\000\101\000\101\000\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\ \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\031\000\031\000\031\000\031\000\031\000\ \032\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\255\255\255\255\255\255\255\255\ \032\000\255\255\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\047\000\047\000\047\000\047\000\ \047\000\047\000\047\000\047\000\047\000\047\000\255\255\255\255\ \255\255\255\255\255\255\255\255\067\000\047\000\047\000\047\000\ \047\000\047\000\047\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\103\000\103\000\255\255\255\255\255\255\ \255\255\255\255\255\255\067\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\047\000\047\000\047\000\ \047\000\047\000\047\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\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \255\255\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \255\255\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\033\000\255\255\255\255\033\000\033\000\033\000\255\255\ \255\255\255\255\033\000\033\000\255\255\033\000\033\000\033\000\ \108\000\108\000\108\000\108\000\108\000\108\000\108\000\108\000\ \108\000\108\000\033\000\255\255\033\000\033\000\033\000\033\000\ \033\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\053\000\255\255\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\255\255\033\000\033\000\ \255\255\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\255\255\033\000\034\000\033\000\053\000\ \034\000\034\000\034\000\255\255\255\255\053\000\034\000\034\000\ \255\255\034\000\034\000\034\000\255\255\255\255\255\255\255\255\ \255\255\053\000\255\255\255\255\255\255\053\000\034\000\053\000\ \034\000\034\000\034\000\034\000\034\000\111\000\111\000\111\000\ \111\000\111\000\111\000\111\000\111\000\111\000\111\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\034\000\034\000\255\255\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\255\255\ \034\000\255\255\034\000\255\255\255\255\255\255\255\255\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\255\255\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \048\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\048\000\048\000\048\000\048\000\048\000\048\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\048\000\048\000\048\000\048\000\048\000\048\000\255\255\ \255\255\255\255\255\255\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\035\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\255\255\ \255\255\255\255\255\255\035\000\255\255\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\066\000\255\255\ \255\255\066\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\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\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\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\255\255\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\255\255\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\037\000\255\255\255\255\037\000\ \037\000\037\000\255\255\255\255\255\255\037\000\037\000\255\255\ \037\000\037\000\037\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\037\000\255\255\037\000\ \037\000\037\000\037\000\037\000\255\255\255\255\255\255\255\255\ \038\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\255\255\255\255\255\255\255\255\ \255\255\037\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\255\255\255\255\255\255\037\000\ \038\000\037\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\066\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\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \255\255\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \255\255\038\000\038\000\038\000\038\000\038\000\038\000\038\000\ \038\000\040\000\255\255\255\255\040\000\040\000\040\000\255\255\ \255\255\255\255\040\000\040\000\255\255\040\000\040\000\040\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\040\000\255\255\040\000\040\000\040\000\040\000\ \040\000\255\255\255\255\255\255\255\255\041\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\255\255\255\255\255\255\255\255\255\255\040\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\255\255\255\255\255\255\040\000\041\000\040\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\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\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\255\255\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\255\255\041\000\041\000\ \041\000\041\000\041\000\041\000\041\000\041\000\064\000\255\255\ \255\255\064\000\064\000\064\000\255\255\255\255\255\255\064\000\ \064\000\255\255\064\000\064\000\064\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\064\000\ \255\255\064\000\064\000\064\000\064\000\064\000\255\255\255\255\ \255\255\071\000\255\255\255\255\071\000\071\000\071\000\255\255\ \255\255\255\255\071\000\071\000\255\255\071\000\071\000\071\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\071\000\064\000\071\000\071\000\071\000\071\000\ \071\000\255\255\255\255\255\255\072\000\255\255\255\255\072\000\ \072\000\072\000\255\255\255\255\255\255\072\000\072\000\255\255\ \072\000\072\000\072\000\255\255\255\255\255\255\255\255\255\255\ \255\255\064\000\255\255\064\000\255\255\072\000\071\000\072\000\ \072\000\072\000\072\000\072\000\255\255\255\255\255\255\073\000\ \255\255\255\255\073\000\073\000\073\000\255\255\255\255\255\255\ \073\000\073\000\255\255\073\000\073\000\073\000\255\255\255\255\ \255\255\255\255\255\255\255\255\071\000\255\255\071\000\255\255\ \073\000\072\000\073\000\073\000\073\000\073\000\073\000\255\255\ \255\255\255\255\074\000\255\255\255\255\074\000\074\000\074\000\ \255\255\255\255\255\255\074\000\074\000\255\255\074\000\074\000\ \074\000\255\255\255\255\255\255\255\255\255\255\255\255\072\000\ \255\255\072\000\255\255\074\000\073\000\074\000\074\000\074\000\ \074\000\074\000\255\255\255\255\255\255\080\000\255\255\255\255\ \080\000\080\000\080\000\255\255\255\255\255\255\080\000\080\000\ \255\255\080\000\080\000\080\000\255\255\255\255\255\255\255\255\ \255\255\255\255\073\000\255\255\073\000\255\255\080\000\074\000\ \080\000\080\000\080\000\080\000\080\000\255\255\255\255\255\255\ \085\000\255\255\255\255\085\000\085\000\085\000\255\255\255\255\ \255\255\085\000\085\000\255\255\085\000\085\000\085\000\255\255\ \255\255\255\255\255\255\255\255\255\255\074\000\255\255\074\000\ \255\255\085\000\080\000\085\000\085\000\085\000\085\000\085\000\ \255\255\255\255\255\255\088\000\255\255\255\255\088\000\088\000\ \088\000\255\255\255\255\255\255\088\000\088\000\255\255\088\000\ \088\000\088\000\255\255\255\255\255\255\255\255\255\255\255\255\ \080\000\255\255\080\000\255\255\088\000\085\000\088\000\088\000\ \088\000\088\000\088\000\255\255\255\255\255\255\089\000\255\255\ \255\255\089\000\089\000\089\000\255\255\255\255\107\000\089\000\ \089\000\107\000\089\000\089\000\089\000\255\255\255\255\255\255\ \255\255\255\255\255\255\085\000\255\255\085\000\098\000\089\000\ \088\000\089\000\089\000\089\000\089\000\089\000\107\000\098\000\ \098\000\098\000\098\000\098\000\098\000\098\000\098\000\098\000\ \098\000\255\255\255\255\255\255\107\000\107\000\107\000\107\000\ \107\000\107\000\107\000\107\000\107\000\107\000\088\000\255\255\ \088\000\255\255\255\255\089\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\098\000\255\255\255\255\255\255\255\255\ \255\255\098\000\255\255\255\255\255\255\255\255\255\255\255\255\ \107\000\089\000\255\255\089\000\255\255\098\000\107\000\255\255\ \255\255\098\000\255\255\098\000\255\255\255\255\255\255\255\255\ \255\255\255\255\107\000\255\255\255\255\255\255\107\000\255\255\ \107\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\255\255\ \255\255\255\255\255\255\255\255\255\255"; Lexing.lex_base_code = ""; Lexing.lex_backtrk_code = ""; Lexing.lex_default_code = ""; Lexing.lex_trans_code = ""; Lexing.lex_check_code = ""; Lexing.lex_code = ""; } let rec token lexbuf = __ocaml_lex_token_rec lexbuf 0 and __ocaml_lex_token_rec lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 261 "odoc_ocamlhtml.mll" ( let s = Lexing.lexeme lexbuf in ( match s with " " -> incr margin | "\t" -> margin := !margin + 8 | "\n" -> margin := 0 | _ -> () ); print s; token lexbuf ) # 1013 "odoc_ocamlhtml.ml" | 1 -> # 274 "odoc_ocamlhtml.mll" ( print "_" ; token lexbuf ) # 1018 "odoc_ocamlhtml.ml" | 2 -> # 275 "odoc_ocamlhtml.mll" ( print "~" ; token lexbuf ) # 1023 "odoc_ocamlhtml.ml" | 3 -> # 277 "odoc_ocamlhtml.mll" ( let s = Lexing.lexeme lexbuf in let name = String.sub s 1 (String.length s - 2) in if Hashtbl.mem keyword_table name then raise (Error(Keyword_as_label name, Lexing.lexeme_start lexbuf, Lexing.lexeme_end lexbuf)); print s ; token lexbuf ) # 1033 "odoc_ocamlhtml.ml" | 4 -> # 283 "odoc_ocamlhtml.mll" ( print "?" ; token lexbuf ) # 1038 "odoc_ocamlhtml.ml" | 5 -> # 285 "odoc_ocamlhtml.mll" ( let s = Lexing.lexeme lexbuf in let name = String.sub s 1 (String.length s - 2) in if Hashtbl.mem keyword_table name then raise (Error(Keyword_as_label name, Lexing.lexeme_start lexbuf, Lexing.lexeme_end lexbuf)); print s ; token lexbuf ) # 1048 "odoc_ocamlhtml.ml" | 6 -> # 292 "odoc_ocamlhtml.mll" ( let s = Lexing.lexeme lexbuf in try let cl = Hashtbl.find keyword_table s in (print_class cl s ; token lexbuf ) with Not_found -> (print s ; token lexbuf )) # 1058 "odoc_ocamlhtml.ml" | 7 -> # 299 "odoc_ocamlhtml.mll" ( print_class constructor_class (Lexing.lexeme lexbuf) ; token lexbuf ) # 1063 "odoc_ocamlhtml.ml" | 8 -> # 301 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1068 "odoc_ocamlhtml.ml" | 9 -> # 303 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1073 "odoc_ocamlhtml.ml" | 10 -> # 305 "odoc_ocamlhtml.mll" ( reset_string_buffer(); let string_start = Lexing.lexeme_start lexbuf in string_start_pos := string_start; string lexbuf; lexbuf.Lexing.lex_start_pos <- string_start - lexbuf.Lexing.lex_abs_pos; print_class string_class ("\""^(get_stored_string())^"\"") ; token lexbuf ) # 1085 "odoc_ocamlhtml.ml" | 11 -> # 314 "odoc_ocamlhtml.mll" ( print_class string_class (Lexing.lexeme lexbuf) ; token lexbuf ) # 1091 "odoc_ocamlhtml.ml" | 12 -> # 317 "odoc_ocamlhtml.mll" ( print_class string_class (Lexing.lexeme lexbuf ) ; token lexbuf ) # 1097 "odoc_ocamlhtml.ml" | 13 -> # 320 "odoc_ocamlhtml.mll" ( print_class string_class (Lexing.lexeme lexbuf ) ; token lexbuf ) # 1103 "odoc_ocamlhtml.ml" | 14 -> # 323 "odoc_ocamlhtml.mll" ( reset_comment_buffer (); comment_start_pos := [Lexing.lexeme_start lexbuf]; comment lexbuf ; print_comment (); token lexbuf ) # 1113 "odoc_ocamlhtml.ml" | 15 -> # 330 "odoc_ocamlhtml.mll" ( reset_comment_buffer (); comment_start_pos := [Lexing.lexeme_start lexbuf]; comment lexbuf ; print_comment (); token lexbuf ) # 1123 "odoc_ocamlhtml.ml" | 16 -> # 337 "odoc_ocamlhtml.mll" ( lexbuf.Lexing.lex_curr_pos <- lexbuf.Lexing.lex_curr_pos - 1; lexbuf.Lexing.lex_curr_p <- { lexbuf.Lexing.lex_curr_p with pos_cnum = lexbuf.Lexing.lex_curr_p.pos_cnum - 1 } ; print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1135 "odoc_ocamlhtml.ml" | 17 -> # 347 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf); token lexbuf ) # 1143 "odoc_ocamlhtml.ml" | 18 -> # 351 "odoc_ocamlhtml.mll" ( print_class kwsign_class (Lexing.lexeme lexbuf) ; token lexbuf ) # 1148 "odoc_ocamlhtml.ml" | 19 -> # 352 "odoc_ocamlhtml.mll" ( print_class kwsign_class (Lexing.lexeme lexbuf) ; token lexbuf ) # 1153 "odoc_ocamlhtml.ml" | 20 -> # 353 "odoc_ocamlhtml.mll" ( print_class kwsign_class (Lexing.lexeme lexbuf) ; token lexbuf ) # 1158 "odoc_ocamlhtml.ml" | 21 -> # 354 "odoc_ocamlhtml.mll" ( print_class kwsign_class (Lexing.lexeme lexbuf) ; token lexbuf ) # 1163 "odoc_ocamlhtml.ml" | 22 -> # 355 "odoc_ocamlhtml.mll" ( print_class kwsign_class (Lexing.lexeme lexbuf) ; token lexbuf ) # 1168 "odoc_ocamlhtml.ml" | 23 -> # 356 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1173 "odoc_ocamlhtml.ml" | 24 -> # 357 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1178 "odoc_ocamlhtml.ml" | 25 -> # 358 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1183 "odoc_ocamlhtml.ml" | 26 -> # 359 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1188 "odoc_ocamlhtml.ml" | 27 -> # 360 "odoc_ocamlhtml.mll" ( print_class kwsign_class (Lexing.lexeme lexbuf) ; token lexbuf ) # 1193 "odoc_ocamlhtml.ml" | 28 -> # 361 "odoc_ocamlhtml.mll" ( print_class kwsign_class (Lexing.lexeme lexbuf) ; token lexbuf ) # 1198 "odoc_ocamlhtml.ml" | 29 -> # 362 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1203 "odoc_ocamlhtml.ml" | 30 -> # 363 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1208 "odoc_ocamlhtml.ml" | 31 -> # 364 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1213 "odoc_ocamlhtml.ml" | 32 -> # 365 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1218 "odoc_ocamlhtml.ml" | 33 -> # 366 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1223 "odoc_ocamlhtml.ml" | 34 -> # 367 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1228 "odoc_ocamlhtml.ml" | 35 -> # 368 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1233 "odoc_ocamlhtml.ml" | 36 -> # 369 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1238 "odoc_ocamlhtml.ml" | 37 -> # 370 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1243 "odoc_ocamlhtml.ml" | 38 -> # 371 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1248 "odoc_ocamlhtml.ml" | 39 -> # 372 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1253 "odoc_ocamlhtml.ml" | 40 -> # 373 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1258 "odoc_ocamlhtml.ml" | 41 -> # 374 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1263 "odoc_ocamlhtml.ml" | 42 -> # 375 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1268 "odoc_ocamlhtml.ml" | 43 -> # 376 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1273 "odoc_ocamlhtml.ml" | 44 -> # 377 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1278 "odoc_ocamlhtml.ml" | 45 -> # 378 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1283 "odoc_ocamlhtml.ml" | 46 -> # 379 "odoc_ocamlhtml.mll" ( print_class kwsign_class (Lexing.lexeme lexbuf) ; token lexbuf ) # 1288 "odoc_ocamlhtml.ml" | 47 -> # 380 "odoc_ocamlhtml.mll" ( print_class kwsign_class (Lexing.lexeme lexbuf) ; token lexbuf ) # 1293 "odoc_ocamlhtml.ml" | 48 -> # 381 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1298 "odoc_ocamlhtml.ml" | 49 -> # 382 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1303 "odoc_ocamlhtml.ml" | 50 -> # 383 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1308 "odoc_ocamlhtml.ml" | 51 -> # 384 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1313 "odoc_ocamlhtml.ml" | 52 -> # 385 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1318 "odoc_ocamlhtml.ml" | 53 -> # 387 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1323 "odoc_ocamlhtml.ml" | 54 -> # 388 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1328 "odoc_ocamlhtml.ml" | 55 -> # 389 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1333 "odoc_ocamlhtml.ml" | 56 -> # 390 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1338 "odoc_ocamlhtml.ml" | 57 -> # 393 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1343 "odoc_ocamlhtml.ml" | 58 -> # 395 "odoc_ocamlhtml.mll" ( print_class kwsign_class (Lexing.lexeme lexbuf) ; token lexbuf ) # 1348 "odoc_ocamlhtml.ml" | 59 -> # 397 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1353 "odoc_ocamlhtml.ml" | 60 -> # 399 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1358 "odoc_ocamlhtml.ml" | 61 -> # 401 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1363 "odoc_ocamlhtml.ml" | 62 -> # 403 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1368 "odoc_ocamlhtml.ml" | 63 -> # 405 "odoc_ocamlhtml.mll" ( print (Lexing.lexeme lexbuf) ; token lexbuf ) # 1373 "odoc_ocamlhtml.ml" | 64 -> # 406 "odoc_ocamlhtml.mll" ( () ) # 1378 "odoc_ocamlhtml.ml" | 65 -> # 408 "odoc_ocamlhtml.mll" ( raise (Error(Illegal_character ((Lexing.lexeme lexbuf).[0]), Lexing.lexeme_start lexbuf, Lexing.lexeme_end lexbuf)) ) # 1384 "odoc_ocamlhtml.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_token_rec lexbuf __ocaml_lex_state and comment lexbuf = __ocaml_lex_comment_rec lexbuf 90 and __ocaml_lex_comment_rec lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 413 "odoc_ocamlhtml.mll" ( comment_start_pos := Lexing.lexeme_start lexbuf :: !comment_start_pos; store_comment_char '('; store_comment_char '*'; comment lexbuf; ) # 1399 "odoc_ocamlhtml.ml" | 1 -> # 419 "odoc_ocamlhtml.mll" ( match !comment_start_pos with | [] -> assert false | [x] -> comment_start_pos := [] | _ :: l -> store_comment_char '*'; store_comment_char ')'; comment_start_pos := l; comment lexbuf; ) # 1412 "odoc_ocamlhtml.ml" | 2 -> # 429 "odoc_ocamlhtml.mll" ( reset_string_buffer(); string_start_pos := Lexing.lexeme_start lexbuf; store_comment_char '"'; begin try string lexbuf with Error (Unterminated_string, _, _) -> let st = List.hd !comment_start_pos in raise (Error (Unterminated_string_in_comment, st, st + 2)) end; comment lexbuf ) # 1425 "odoc_ocamlhtml.ml" | 3 -> # 439 "odoc_ocamlhtml.mll" ( store_comment_char '\''; store_comment_char '\''; comment lexbuf ) # 1433 "odoc_ocamlhtml.ml" | 4 -> # 444 "odoc_ocamlhtml.mll" ( store_comment_char '\''; store_comment_char (Lexing.lexeme_char lexbuf 1); store_comment_char '\''; comment lexbuf ) # 1442 "odoc_ocamlhtml.ml" | 5 -> # 450 "odoc_ocamlhtml.mll" ( store_comment_char '\''; store_comment_char '\\'; store_comment_char(char_for_backslash(Lexing.lexeme_char lexbuf 1)) ; store_comment_char '\''; comment lexbuf ) # 1452 "odoc_ocamlhtml.ml" | 6 -> # 457 "odoc_ocamlhtml.mll" ( store_comment_char '\''; store_comment_char '\\'; store_comment_char(char_for_decimal_code lexbuf 1); store_comment_char '\''; comment lexbuf ) # 1462 "odoc_ocamlhtml.ml" | 7 -> # 464 "odoc_ocamlhtml.mll" ( let st = List.hd !comment_start_pos in raise (Error (Unterminated_comment, st, st + 2)); ) # 1469 "odoc_ocamlhtml.ml" | 8 -> # 468 "odoc_ocamlhtml.mll" ( store_comment_char(Lexing.lexeme_char lexbuf 0); comment lexbuf ) # 1475 "odoc_ocamlhtml.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_comment_rec lexbuf __ocaml_lex_state and string lexbuf = __ocaml_lex_string_rec lexbuf 106 and __ocaml_lex_string_rec lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 473 "odoc_ocamlhtml.mll" ( () ) # 1486 "odoc_ocamlhtml.ml" | 1 -> # 475 "odoc_ocamlhtml.mll" ( string lexbuf ) # 1491 "odoc_ocamlhtml.ml" | 2 -> # 477 "odoc_ocamlhtml.mll" ( store_string_char(char_for_backslash(Lexing.lexeme_char lexbuf 1)); string lexbuf ) # 1497 "odoc_ocamlhtml.ml" | 3 -> # 480 "odoc_ocamlhtml.mll" ( store_string_char(char_for_decimal_code lexbuf 1); string lexbuf ) # 1503 "odoc_ocamlhtml.ml" | 4 -> # 483 "odoc_ocamlhtml.mll" ( raise (Error (Unterminated_string, !string_start_pos, !string_start_pos+1)) ) # 1509 "odoc_ocamlhtml.ml" | 5 -> # 486 "odoc_ocamlhtml.mll" ( store_string_char(Lexing.lexeme_char lexbuf 0); string lexbuf ) # 1515 "odoc_ocamlhtml.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_string_rec lexbuf __ocaml_lex_state ;; # 488 "odoc_ocamlhtml.mll" let html_of_code b ?(with_pre=true) code = let old_pre = !pre in let old_margin = !margin in let old_comment_buffer = Buffer.contents comment_buffer in let old_string_buffer = Buffer.contents string_buffer in let buf = Buffer.create 256 in let old_fmt = !fmt in fmt := Format.formatter_of_buffer buf ; pre := with_pre; margin := 0; let start = "" in let ending = "" in let html = ( try print ~esc: false start ; let lexbuf = Lexing.from_string code in let _ = token lexbuf in print ~esc: false ending ; Format.pp_print_flush !fmt () ; Buffer.contents buf with _ -> (* flush str_formatter because we already output something in it *) Format.pp_print_flush !fmt () ; start^code^ending ) in pre := old_pre; margin := old_margin ; Buffer.reset comment_buffer; Buffer.add_string comment_buffer old_comment_buffer ; Buffer.reset string_buffer; Buffer.add_string string_buffer old_string_buffer ; fmt := old_fmt ; Buffer.add_string b html # 1565 "odoc_ocamlhtml.ml"