<html><head> <link rel="stylesheet" href="style.css" type="text/css"> <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> <link rel="Start" href="index.html"> <link title="Index of types" rel=Appendix href="index_types.html"> <link title="Index of values" rel=Appendix href="index_values.html"> <link title="Index of modules" rel=Appendix href="index_modules.html"> <link title="Index of module types" rel=Appendix href="index_module_types.html"> <link title="Cfg_intf" rel="Chapter" href="Cfg_intf.html"> <link title="Cfg_impl" rel="Chapter" href="Cfg_impl.html"> <link title="Bnf_spec" rel="Chapter" href="Bnf_spec.html"> <link title="Bnf_pp" rel="Chapter" href="Bnf_pp.html"><title>Cfg_intf.CFG</title> </head> <body> <code class="code"><span class="keyword">sig</span><br> <span class="keyword">module</span> <span class="constructor">Spec</span> : <span class="constructor">SPEC</span><br> <span class="keyword">module</span> <span class="constructor">TSet</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> elt = <span class="constructor">Spec</span>.t<br> <span class="keyword">type</span> t<br> <span class="keyword">val</span> empty : t<br> <span class="keyword">val</span> is_empty : t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> mem : elt <span class="keywordsign">-></span> t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> add : elt <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> singleton : elt <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> remove : elt <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> union : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> inter : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> diff : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> compare : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> equal : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> subset : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> iter : (elt <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> t <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> fold : (elt <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a) <span class="keywordsign">-></span> t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a<br> <span class="keyword">val</span> for_all : (elt <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> exists : (elt <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> filter : (elt <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> partition : (elt <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t * t<br> <span class="keyword">val</span> cardinal : t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> elements : t <span class="keywordsign">-></span> elt list<br> <span class="keyword">val</span> min_elt : t <span class="keywordsign">-></span> elt<br> <span class="keyword">val</span> max_elt : t <span class="keywordsign">-></span> elt<br> <span class="keyword">val</span> choose : t <span class="keywordsign">-></span> elt<br> <span class="keyword">val</span> split : elt <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t * bool * t<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">TMap</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> key = <span class="constructor">Spec</span>.t<br> <span class="keyword">type</span> +<span class="keywordsign">'</span>a t<br> <span class="keyword">val</span> empty : <span class="keywordsign">'</span>a t<br> <span class="keyword">val</span> is_empty : <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> add : key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t<br> <span class="keyword">val</span> find : key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a<br> <span class="keyword">val</span> remove : key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t<br> <span class="keyword">val</span> mem : key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> iter : (key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> map : (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>b t<br> <span class="keyword">val</span> mapi : (key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>b t<br> <span class="keyword">val</span> fold : (key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="keywordsign">-></span> <span class="keywordsign">'</span>b) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="keywordsign">-></span> <span class="keywordsign">'</span>b<br> <span class="keyword">val</span> compare : (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> int) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> equal : (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> bool<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">NTSet</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> elt = <span class="constructor">Spec</span>.nt<br> <span class="keyword">type</span> t<br> <span class="keyword">val</span> empty : t<br> <span class="keyword">val</span> is_empty : t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> mem : elt <span class="keywordsign">-></span> t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> add : elt <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> singleton : elt <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> remove : elt <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> union : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> inter : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> diff : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> compare : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> equal : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> subset : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> iter : (elt <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> t <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> fold : (elt <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a) <span class="keywordsign">-></span> t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a<br> <span class="keyword">val</span> for_all : (elt <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> exists : (elt <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> filter : (elt <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> partition : (elt <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t * t<br> <span class="keyword">val</span> cardinal : t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> elements : t <span class="keywordsign">-></span> elt list<br> <span class="keyword">val</span> min_elt : t <span class="keywordsign">-></span> elt<br> <span class="keyword">val</span> max_elt : t <span class="keywordsign">-></span> elt<br> <span class="keyword">val</span> choose : t <span class="keywordsign">-></span> elt<br> <span class="keyword">val</span> split : elt <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t * bool * t<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">NTMap</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> key = <span class="constructor">Spec</span>.nt<br> <span class="keyword">type</span> +<span class="keywordsign">'</span>a t<br> <span class="keyword">val</span> empty : <span class="keywordsign">'</span>a t<br> <span class="keyword">val</span> is_empty : <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> add : key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t<br> <span class="keyword">val</span> find : key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a<br> <span class="keyword">val</span> remove : key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t<br> <span class="keyword">val</span> mem : key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> iter : (key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> map : (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>b t<br> <span class="keyword">val</span> mapi : (key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>b t<br> <span class="keyword">val</span> fold : (key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="keywordsign">-></span> <span class="keywordsign">'</span>b) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="keywordsign">-></span> <span class="keywordsign">'</span>b<br> <span class="keyword">val</span> compare : (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> int) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> equal : (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> bool<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">ProdSet</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> elt = <span class="constructor">Spec</span>.prod * <span class="constructor">Spec</span>.symbol list<br> <span class="keyword">type</span> t<br> <span class="keyword">val</span> empty : t<br> <span class="keyword">val</span> is_empty : t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> mem : elt <span class="keywordsign">-></span> t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> add : elt <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> singleton : elt <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> remove : elt <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> union : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> inter : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> diff : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> compare : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> equal : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> subset : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> iter : (elt <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> t <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> fold : (elt <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a) <span class="keywordsign">-></span> t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a<br> <span class="keyword">val</span> for_all : (elt <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> exists : (elt <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> filter : (elt <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> partition : (elt <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t * t<br> <span class="keyword">val</span> cardinal : t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> elements : t <span class="keywordsign">-></span> elt list<br> <span class="keyword">val</span> min_elt : t <span class="keywordsign">-></span> elt<br> <span class="keyword">val</span> max_elt : t <span class="keywordsign">-></span> elt<br> <span class="keyword">val</span> choose : t <span class="keywordsign">-></span> elt<br> <span class="keyword">val</span> split : elt <span class="keywordsign">-></span> t <span class="keywordsign">-></span> t * bool * t<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">ProdMap</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> key = <span class="constructor">Spec</span>.prod * <span class="constructor">Spec</span>.symbol list<br> <span class="keyword">type</span> +<span class="keywordsign">'</span>a t<br> <span class="keyword">val</span> empty : <span class="keywordsign">'</span>a t<br> <span class="keyword">val</span> is_empty : <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> add : key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t<br> <span class="keyword">val</span> find : key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a<br> <span class="keyword">val</span> remove : key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t<br> <span class="keyword">val</span> mem : key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> iter : (key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> map : (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>b t<br> <span class="keyword">val</span> mapi : (key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>b t<br> <span class="keyword">val</span> fold : (key <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="keywordsign">-></span> <span class="keywordsign">'</span>b) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="keywordsign">-></span> <span class="keywordsign">'</span>b<br> <span class="keyword">val</span> compare : (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> int) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> equal : (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a t <span class="keywordsign">-></span> bool<br> <span class="keyword">end</span><br> <span class="keyword">type</span> grammar<br> <span class="keyword">type</span> live_grammar<br> <span class="keyword">val</span> empty : <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar<br> <span class="keyword">val</span> add_prod :<br> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar <span class="keywordsign">-></span><br> <span class="constructor">Spec</span>.nt <span class="keywordsign">-></span> <span class="constructor">Spec</span>.prod <span class="keywordsign">-></span> <span class="constructor">Spec</span>.symbol list <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar<br> <span class="keyword">val</span> remove_nt : <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar <span class="keywordsign">-></span> <span class="constructor">Spec</span>.nt <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar<br> <span class="keyword">val</span> union :<br> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar<br> <span class="keyword">val</span> diff :<br> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar<br> <span class="keyword">val</span> inter :<br> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar<br> <span class="keyword">val</span> grammar_of_live : <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.live_grammar <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar<br> <span class="keyword">val</span> prune_unproductive : <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar<br> <span class="keyword">val</span> prune_nonlive : <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.live_grammar<br> <span class="keyword">val</span> prune_unreachable :<br> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar <span class="keywordsign">-></span> <span class="constructor">Spec</span>.nt <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar<br> <span class="keyword">val</span> prune_unreachable_live :<br> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.live_grammar <span class="keywordsign">-></span> <span class="constructor">Spec</span>.nt <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.live_grammar<br> <span class="keyword">val</span> make_sane : <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar <span class="keywordsign">-></span> <span class="constructor">Spec</span>.nt <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar<br> <span class="keyword">val</span> make_sane_live :<br> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar <span class="keywordsign">-></span> <span class="constructor">Spec</span>.nt <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.live_grammar<br> <span class="keyword">val</span> grammar_contents :<br> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.<span class="constructor">ProdSet</span>.t <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.<span class="constructor">NTMap</span>.t<br> <span class="keyword">val</span> deriv_depth_info :<br> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.live_grammar <span class="keywordsign">-></span><br> (int * int <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.<span class="constructor">ProdMap</span>.t) <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.<span class="constructor">NTMap</span>.t<br> <span class="keyword">val</span> nts_in_grammar : <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.<span class="constructor">NTSet</span>.t<br> <span class="keyword">val</span> ts_in_grammar : <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.<span class="constructor">TSet</span>.t<br> <span class="keyword">val</span> prods_in_grammar : <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar <span class="keywordsign">-></span> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.<span class="constructor">ProdSet</span>.t<br> <span class="keyword">val</span> bounded_grammar :<br> <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar <span class="keywordsign">-></span><br> <span class="constructor">Spec</span>.nt <span class="keywordsign">-></span> int <span class="keywordsign">-></span> (<span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.<span class="constructor">TSet</span>.t * <span class="constructor">Cfg_intf</span>.<span class="constructor">CFG</span>.grammar) list<br> <span class="keyword">end</span></code></body></html>