Commit c31e3760 authored by Pietro Abate's avatar Pietro Abate
Browse files

[r2003-03-24 22:41:38 by cvscast] Empty log message

Original author: cvscast
Date: 2003-03-24 22:42:11+00:00
parent d5b4d685
......@@ -4,7 +4,6 @@ open Ident
let quiet = ref false
let typing_env = State.ref "Cduce.typing_env" Typer.Env.empty
let eval_env = Eval.global_env
let print_norm ppf d =
Location.protect ppf
......@@ -14,9 +13,9 @@ let print_value ppf v =
Location.protect ppf (fun ppf -> Value.print ppf v)
let dump_env ppf =
(* Format.fprintf ppf "Global types:";
List.iter (fun x _ -> Format.fprintf ppf " %s" x) (Typer.global_types ());
Format.fprintf ppf ".@\n"; *)
Format.fprintf ppf "Global types:";
Typer.dump_global_types ppf;
Format.fprintf ppf ".@\n";
Eval.Env.iter
(fun x v ->
let t = Typer.Env.find x !typing_env in
......@@ -25,7 +24,7 @@ let dump_env ppf =
print_norm t
print_value v
)
!eval_env
!Eval.global_env
let rec print_exn ppf = function
......
val quiet: bool ref
val typing_env: Typer.env ref (* Types of toplevel bindings *)
val eval_env: Eval.env ref (* Values of toplevel bindings *)
val print_exn: Format.formatter -> exn -> unit
val run : Format.formatter -> Format.formatter -> char Stream.t -> bool
......
......@@ -85,74 +85,3 @@ and regexp =
| Star of regexp
| WeakStar of regexp
| SeqCapture of id * regexp
let rec equal_ppat p1 p2 =
let p1 = p1.descr and p2 = p2.descr in
(p1 == p2) ||
match (p1,p2) with
| PatVar x1, PatVar x2 -> x1 = x2
| Internal x1, Internal x2 -> Types.equal_descr x1 x2
| Or (x1,y1), Or (x2,y2)
| And (x1,y1), And (x2,y2)
| Diff (x1,y1), Diff (x2,y2)
| Prod (x1,y1), Prod (x2,y2)
| XmlT (x1,y1), XmlT (x2,y2)
| Arrow (x1,y1), Arrow (x2,y2)
-> (equal_ppat x1 x2) && (equal_ppat y1 y2)
| Optional x1, Optional x2 -> equal_ppat x1 x2
| Record (o1,r1), Record (o2,r2) ->
(o1 == o2) && (LabelMap.equal equal_ppat r1 r2)
| Capture x1, Capture x2 -> x1 == x2
| Constant (x1,y1), Constant (x2,y2) ->
(x1 == x2) && (Types.equal_const y1 y2)
| Regexp (x1,y1), Regexp (x2,y2) ->
(equal_regexp x1 x2) && (equal_ppat y1 y2)
(* todo: Recurs *)
| _ -> false
and equal_regexp r1 r2 =
(r1 == r2) ||
match (r1,r2) with
| Elem x1, Elem x2 -> equal_ppat x1 x2
| Seq (x1,y1), Seq (x2,y2)
| Alt (x1,y1), Alt (x2,y2) -> (equal_regexp x1 x2) && (equal_regexp y1 y2)
| Star x1, Star x2
| WeakStar x1, WeakStar x2 -> equal_regexp x1 x2
| SeqCapture (x1,y1), SeqCapture (x2,y2) ->
(x1 == x2) && (equal_regexp y1 y2)
| _ -> false
let rec hash_ppat p =
match p.descr with
| PatVar x -> 1 + 17 * (Hashtbl.hash x)
| Internal x -> 2 + 17 * (Types.hash_descr x)
| Or (x,y) -> 3 + 17 * (hash_ppat x) + 257 * (hash_ppat y)
| And (x,y) -> 4 + 17 * (hash_ppat x) + 257 * (hash_ppat y)
| Diff (x,y) -> 5 + 17 * (hash_ppat x) + 257 * (hash_ppat y)
| Prod (x,y) -> 6 + 17 * (hash_ppat x) + 257 * (hash_ppat y)
| XmlT (x,y) -> 7 + 17 * (hash_ppat x) + 257 * (hash_ppat y)
| Arrow (x,y) -> 8 + 17 * (hash_ppat x) + 257 * (hash_ppat y)
| Optional x -> 9 + 17 * (hash_ppat x)
| Record (o,r) ->
(if o then 10 else 11) + (LabelMap.hash hash_ppat r)
| Capture x -> 12 + 17 * (Id.hash x)
| Constant (x,y) -> 13 + 17 * (Id.hash x) + 257 * (Types.hash_const y)
| Regexp (x,y) ->
14 + 17 * (hash_regexp x) + 16637 * (hash_ppat y)
| Recurs (x,l) ->
15 + 17 * (hash_ppat x) (* todo: hash l *)
and hash_regexp = function
| Epsilon -> 1
| Elem x -> 2 + 17 * (hash_ppat x)
| Seq (x,y) -> 3 + 17 * (hash_regexp x) + 257 * (hash_regexp y)
| Alt (x,y) -> 4 + 17 * (hash_regexp x) + 257 * (hash_regexp y)
| Star x -> 5 + 17 * (hash_regexp x)
| WeakStar x -> 6 + 17 * (hash_regexp x)
| SeqCapture (x,y) -> 7 + 17 * (Id.hash x) + 257 * (hash_regexp y)
module PpatTable = Hashtbl.Make
(struct
type t = ppat
let equal = equal_ppat
let hash = hash_ppat
end)
(* This type has been automatically generated from xhtml-trans.xml by dtd2cduce *)
type X_td =
<td height=?String; width=?String; bgcolor=?String; nowrap=?("nowrap"); valign=?("top" | "middle" | "bottom" | "baseline"); charoff=?String; char=?String; align=?("left" | "center" | "right" | "justify" | "char"); colspan=?String; rowspan=?String; scope=?("row" | "col" | "rowgroup" | "colgroup"); headers=?String; axis=?String; abbr=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul | X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes | X_isindex | X_fieldset | X_table | X_form | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_th =
<th height=?String; width=?String; bgcolor=?String; nowrap=?("nowrap"); valign=?("top" | "middle" | "bottom" | "baseline"); charoff=?String; char=?String; align=?("left" | "center" | "right" | "justify" | "char"); colspan=?String; rowspan=?String; scope=?("row" | "col" | "rowgroup" | "colgroup"); headers=?String; axis=?String; abbr=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul | X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes | X_isindex | X_fieldset | X_table | X_form | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_tr =
<tr bgcolor=?String; valign=?("top" | "middle" | "bottom" | "baseline"); charoff=?String; char=?String; align=?("left" | "center" | "right" | "justify" | "char"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
(X_th | X_td)+ ];;
type X_col =
<col valign=?("top" | "middle" | "bottom" | "baseline"); charoff=?String; char=?String; align=?("left" | "center" | "right" | "justify" | "char"); width=?String; span=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
];;
type X_colgroup =
<colgroup valign=?("top" | "middle" | "bottom" | "baseline"); charoff=?String; char=?String; align=?("left" | "center" | "right" | "justify" | "char"); width=?String; span=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
X_col* ];;
type X_tbody =
<tbody valign=?("top" | "middle" | "bottom" | "baseline"); charoff=?String; char=?String; align=?("left" | "center" | "right" | "justify" | "char"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
X_tr+ ];;
type X_tfoot =
<tfoot valign=?("top" | "middle" | "bottom" | "baseline"); charoff=?String; char=?String; align=?("left" | "center" | "right" | "justify" | "char"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
X_tr+ ];;
type X_thead =
<thead valign=?("top" | "middle" | "bottom" | "baseline"); charoff=?String; char=?String; align=?("left" | "center" | "right" | "justify" | "char"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
X_tr+ ];;
type X_caption =
<caption align=?("top" | "bottom" | "left" | "right"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_table =
<table bgcolor=?String; align=?("left" | "center" | "right"); cellpadding=?String; cellspacing=?String; rules=?("none" | "groups" | "rows" | "cols" | "all"); frame=?("void" | "above" | "below" | "hsides" | "lhs" | "rhs" | "vsides" | "box" | "border"); border=?String; width=?String; summary=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
(X_caption? (X_col* | X_colgroup*) X_thead? X_tfoot?
(X_tbody+ | X_tr+))
];;
type X_isindex =
<isindex prompt=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
];;
type X_button =
<button onblur=?String; onfocus=?String; accesskey=?String; tabindex=?String; disabled=?("disabled"); type=?("button" | "submit" | "reset"); value=?String; name=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul | X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes | X_table | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_ins | X_del | X_script | X_noscript )*
];;
type X_legend =
<legend align=?("top" | "bottom" | "left" | "right"); accesskey=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_fieldset =
<fieldset onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_legend | X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul | X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes | X_isindex | X_fieldset | X_table | X_form | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_textarea =
<textarea onchange=?String; onselect=?String; onblur=?String; onfocus=?String; accesskey=?String; tabindex=?String; readonly=?("readonly"); disabled=?("disabled"); cols=String; rows=String; name=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char )* ];;
type X_option =
<option value=?String; label=?String; disabled=?("disabled"); selected=?("selected"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char )* ];;
type X_optgroup =
<optgroup label=String; disabled=?("disabled"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
X_option+ ];;
type X_select =
<select onchange=?String; onblur=?String; onfocus=?String; tabindex=?String; disabled=?("disabled"); multiple=?("multiple"); size=?String; name=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
(X_optgroup | X_option)+ ];;
type X_input =
<input align=?("top" | "middle" | "bottom" | "left" | "right"); accept=?String; onchange=?String; onselect=?String; onblur=?String; onfocus=?String; accesskey=?String; tabindex=?String; usemap=?String; alt=?String; src=?String; maxlength=?String; size=?String; readonly=?("readonly"); disabled=?("disabled"); checked=?("checked"); value=?String; name=?String; type=?("text" | "password" | "checkbox" | "radio" | "submit" | "reset" | "file" | "hidden" | "image" | "button"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
];;
type X_label =
<label onblur=?String; onfocus=?String; accesskey=?String; for=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_form =
<form target=?String; accept-charset=?String; accept=?String; onreset=?String; onsubmit=?String; enctype=?String; name=?String; method=?("get" | "post"); action=String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul | X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes | X_isindex | X_fieldset | X_table | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_area =
<area target=?String; onblur=?String; onfocus=?String; accesskey=?String; tabindex=?String; alt=String; nohref=?("nohref"); href=?String; coords=?String; shape=?("rect" | "circle" | "poly" | "default"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
];;
type X_map =
<map name=?String; title=?String; style=?String; class=?String; id=String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String>[
((X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul
| X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote
| X_address | X_center | X_noframes | X_isindex | X_fieldset
| X_table | X_form | X_ins | X_del | X_script | X_noscript)+
| X_area+)
];;
type X_img =
<img vspace=?String; hspace=?String; border=?String; align=?("top" | "middle" | "bottom" | "left" | "right"); ismap=?("ismap"); usemap=?String; width=?String; height=?String; longdesc=?String; name=?String; alt=String; src=String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
];;
type X_applet =
<applet vspace=?String; hspace=?String; align=?("top" | "middle" | "bottom" | "left" | "right"); height=String; width=String; name=?String; alt=?String; object=?String; code=?String; archive=?String; codebase=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_param | X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul | X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes | X_isindex | X_fieldset | X_table | X_form | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_param =
<param type=?String; valuetype=?("data" | "ref" | "object"); value=?String; name=String; id=?String>[
];;
type X_object =
<object vspace=?String; hspace=?String; border=?String; align=?("top" | "middle" | "bottom" | "left" | "right"); tabindex=?String; name=?String; usemap=?String; width=?String; height=?String; standby=?String; archive=?String; codetype=?String; type=?String; data=?String; codebase=?String; classid=?String; declare=?("declare"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_param | X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul | X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes | X_isindex | X_fieldset | X_table | X_form | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_font =
<font face=?String; color=?String; size=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_basefont =
<basefont face=?String; color=?String; size=String; id=?String>[ ];;
type X_strike =
<strike onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_s =
<s onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_u =
<u onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_small =
<small onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_big =
<big onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_b =
<b onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_i =
<i onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_tt =
<tt onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_sup =
<sup onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_sub =
<sub onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_q =
<q cite=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_acronym =
<acronym onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_abbr =
<abbr onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_cite =
<cite onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_var =
<var onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_kbd =
<kbd onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_samp =
<samp onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_code =
<code onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_dfn =
<dfn onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_strong =
<strong onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_em =
<em onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_br =
<br clear=?("left" | "all" | "right" | "none"); title=?String; style=?String; class=?String; id=?String>[
];;
type X_bdo =
<bdo dir=("ltr" | "rtl"); xml:lang=?String; lang=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_span =
<span onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_a =
<a target=?String; onblur=?String; onfocus=?String; tabindex=?String; coords=?String; shape=?("rect" | "circle" | "poly" | "default"); accesskey=?String; rev=?String; rel=?String; hreflang=?String; href=?String; name=?String; type=?String; charset=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_del =
<del datetime=?String; cite=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul | X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes | X_isindex | X_fieldset | X_table | X_form | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_ins =
<ins datetime=?String; cite=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul | X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes | X_isindex | X_fieldset | X_table | X_form | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_center =
<center onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul | X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes | X_isindex | X_fieldset | X_table | X_form | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_blockquote =
<blockquote cite=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul | X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes | X_isindex | X_fieldset | X_table | X_form | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_pre =
<pre width=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_map | X_tt | X_i | X_b | X_u | X_s | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button )*
];;
type X_hr =
<hr width=?String; size=?String; noshade=?("noshade"); align=?("left" | "center" | "right"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
];;
type X_address =
<address onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_dd =
<dd onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul | X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes | X_isindex | X_fieldset | X_table | X_form | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_dt =
<dt onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_dl =
<dl compact=?("compact"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
(X_dt | X_dd)+ ];;
type X_li =
<li value=?String; type=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul | X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes | X_isindex | X_fieldset | X_table | X_form | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_dir =
<dir compact=?("compact"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
X_li+ ];;
type X_menu =
<menu compact=?("compact"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
X_li+ ];;
type X_ol =
<ol start=?String; compact=?("compact"); type=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
X_li+ ];;
type X_ul =
<ul compact=?("compact"); type=?("disc" | "square" | "circle"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
X_li+ ];;
type X_h6 =
<h6 align=?("left" | "center" | "right"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_h5 =
<h5 align=?("left" | "center" | "right"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_h4 =
<h4 align=?("left" | "center" | "right"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_h3 =
<h3 align=?("left" | "center" | "right"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_h2 =
<h2 align=?("left" | "center" | "right"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_h1 =
<h1 align=?("left" | "center" | "right"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_p =
<p align=?("left" | "center" | "right"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_div =
<div align=?("left" | "center" | "right"); onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul | X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes | X_isindex | X_fieldset | X_table | X_form | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_body =
<body alink=?String; vlink=?String; link=?String; text=?String; bgcolor=?String; background=?String; onunload=?String; onload=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul | X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes | X_isindex | X_fieldset | X_table | X_form | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_noframes =
<noframes onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul | X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes | X_isindex | X_fieldset | X_table | X_form | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_iframe =
<iframe width=?String; height=?String; align=?("top" | "middle" | "bottom" | "left" | "right"); scrolling=?("yes" | "no" | "auto"); marginheight=?String; marginwidth=?String; frameborder=?("1" | "0"); src=?String; name=?String; longdesc=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul | X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes | X_isindex | X_fieldset | X_table | X_form | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_noscript =
<noscript onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
( Char | X_p | X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6 | X_div | X_ul | X_ol | X_dl | X_menu | X_dir | X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes | X_isindex | X_fieldset | X_table | X_form | X_a | X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map | X_iframe | X_tt | X_i | X_b | X_big | X_small | X_u | X_s | X_strike | X_font | X_basefont | X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup | X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym | X_input | X_select | X_textarea | X_label | X_button | X_ins | X_del | X_script | X_noscript )*
];;
type X_script =
<script defer=?("defer"); src=?String; language=?String; type=String; charset=?String>[
( Char )* ];;
type X_style =
<style title=?String; media=?String; type=String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String>[
( Char )* ];;
type X_link =
<link target=?String; media=?String; rev=?String; rel=?String; type=?String; hreflang=?String; href=?String; charset=?String; onkeyup=?String; onkeydown=?String; onkeypress=?String; onmouseout=?String; onmousemove=?String; onmouseover=?String; onmouseup=?String; onmousedown=?String; ondblclick=?String; onclick=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String; title=?String; style=?String; class=?String; id=?String>[
];;
type X_meta =
<meta scheme=?String; content=String; name=?String; http-equiv=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String>[
];;
type X_base = <base target=?String; href=?String>[ ];;
type X_title =
<title dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String>[
( Char )* ];;
type X_head =
<head profile=?String; dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String>[
((X_script | X_style | X_meta | X_link | X_object | X_isindex)*
((X_title
(X_script | X_style | X_meta | X_link | X_object | X_isindex)*
(X_base
(X_script | X_style | X_meta | X_link | X_object | X_isindex)*)?)
| (X_base
(X_script | X_style | X_meta | X_link | X_object | X_isindex)*
(X_title
(X_script | X_style | X_meta | X_link | X_object | X_isindex)*))))
];;
type X_html =
<html dir=?("ltr" | "rtl"); xml:lang=?String; lang=?String>[
(X_head X_body) ];;
include "xhtml-trans.cd";; (* XHTML 1 Transitional DTD *)
type Heading = X_h1 | X_h2 | X_h3 | X_h4 | X_h5 | X_h6;;
type Blocktext = X_pre | X_hr | X_blockquote | X_address | X_center | X_noframes;;
type Lists = X_ul | X_ol | X_dl | X_menu | X_dir;;
type Block = X_p | Heading | X_div | Lists | Blocktext | X_isindex | X_fieldset | X_table;;
type Misc = X_ins | X_del | X_script | X_noscript;;
type Inline = X_a | Special | Fontstyle | Phrase | Inline_forms;;
type Special = X_br | X_span | X_bdo | X_object | X_applet | X_img | X_map |X_iframe;;
type Fontstyle = X_tt | X_i | X_b | X_big | X_small | X_u | X_s |
X_strike | X_font | X_basefont;;
type Phrase = X_em | X_strong | X_dfn | X_code | X_q | X_sub | X_sup |
X_samp | X_kbd | X_var | X_cite | X_abbr | X_acronym;;
type Inline_forms = X_input | X_select | X_textarea | X_label | X_button;;
type Special = Xbr | Xspan | Xbdo | Xmap | Xobject | Ximg | Xapplet | Xiframe;;
type Fontstyle = Xtt | Xi | Xb | Xbig | Xsmall | Xu | Xs | Xstrike | Xfont | Xbasefont;;
type Phrase = Xem | Xstrong | Xdfn | Xcode | Xq |
Xsamp | Xkbd | Xvar | Xcite | Xabbr | Xacronym | Xsub | Xsup;;
type Flow = Char | Block | X_form | Inline | Misc;;
type InlineForms = Xinput | Xselect | Xtextarea | Xlabel | Xbutton;;
type MiscInline = Xins | Xdel | Xscript;;
type Misc = Xnoscript | MiscInline;;
type Inline = Xa | Special | Fontstyle | Phrase | InlineForms;;
type Inlines = [ (Char | Inline | MiscInline)* ];;
type Flows = [ (Char | Block | X_form | Inline | Misc)* ];;
type Heading = Xh1 | Xh2 | Xh3 | Xh4 | Xh5 | Xh6;;
type Lists = Xul | Xol | Xdl | Xmenu | Xdir;;
type Blocktext = Xpre | Xhr | Xblockquote | Xaddress | Xcenter | Xnoframes;;
type Block = Xp | Heading | Xdiv | Lists | Blocktext | Xfieldset | Xtable | Xisindex;;
type Blocks = [ (Block | Xform | Misc)* ];;
let fun do_body (X_body -> String)
type Flow = [ (Char | Block | Xform | Inline | Misc)* ];;
let fun do_body (Xbody -> String)
<body>l -> do_flows l;;
let fun do_head (X_head -> String)
let fun do_head (Xhead -> String)
<head>[_* <title>t ; _] ->
[ '\\title{' !t '}\n\\author{}\n\\date{Auto-generated by html2latex}\n' ];;
let fun do_flows (Flows -> String)
let fun do_flows (Flow -> String)
s -> transform s with
| c & Char -> [ c ]
| x & Block -> do_block x
......@@ -376,7 +45,7 @@ let fun do_inline (Inline -> String)
| <a>l ->
(transform l with
| c & Char -> [c]
| x & (Special | Fontstyle | Phrase | Inline_forms) -> do_inline x)
| x & (Special | Fontstyle | Phrase | InlineForms) -> do_inline x)
| fs & Fontstyle -> do_fontstyle fs
| p & Phrase -> do_phrase p
| <img alt=s>_ -> s
......@@ -399,7 +68,7 @@ let fun do_phrase(Phrase -> String)
| <sup>i -> [ '\\(^{\\mbox{' !(do_inlines i) '}}\\)' ]
| <var>i -> [ '\\(' !(do_inlines i) '\\)' ];;
let fun do_heading (Heading \ X_h1 -> String)
let fun do_heading (Heading \ Xh1 -> String)
| <h1>i -> [ '\\section{ ' !(do_inlines i) '}\n' ]
| <h2>i -> [ '\\subsection{ ' !(do_inlines i) '}\n' ]
| <h3>i -> [ '\\subsubsection{ ' !(do_inlines i) '}\n' ]
......@@ -407,26 +76,26 @@ let fun do_heading (Heading \ X_h1 -> String)
| <h5>i -> [ '\\subsubsubsubsection{ ' !(do_inlines i) '}\n' ]
| <h6>i -> [ '\\subsubsubsubsubsection{ ' !(do_inlines i) '}\n' ];;
let fun do_lis ([ X_li+ ] -> String)
let fun do_lis ([ Xli+ ] -> String)
l -> transform l with <li>f -> [ '\\item ' !(do_flows f) '\n' ];;
let fun do_ul_content (arg : [ X_li+ ]) : String =
let fun do_ul_content (arg : [ Xli+ ]) : String =
[ '\\begin{itemize}\n' !(do_lis arg) '\\end{itemize}\n' ];;