<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_impl</title> </head> <body> <code class="code"><span class="keyword">sig</span><br> <span class="keyword">module</span> <span class="constructor">Make</span> :<br> <span class="keyword">functor</span> (<span class="constructor">Spec_</span> : <span class="constructor">Cfg_intf</span>.<span class="constructor">SPEC</span>) <span class="keywordsign">-></span><br> <span class="keyword">sig</span><br> <span class="keyword">module</span> <span class="constructor">Spec</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> t = <span class="constructor">Spec_</span>.t<br> <span class="keyword">type</span> nt = <span class="constructor">Spec_</span>.nt<br> <span class="keyword">type</span> prod = <span class="constructor">Spec_</span>.prod<br> <span class="keyword">type</span> symbol = <span class="constructor">Spec_</span>.symbol = <span class="constructor">NT</span> <span class="keyword">of</span> nt <span class="keywordsign">|</span> <span class="constructor">T</span> <span class="keyword">of</span> t<br> <span class="keyword">val</span> compare_t : t <span class="keywordsign">-></span> t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> compare_nt : nt <span class="keywordsign">-></span> nt <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> compare_prod : prod <span class="keywordsign">-></span> prod <span class="keywordsign">-></span> int<br> <span class="keyword">end</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 : grammar<br> <span class="keyword">val</span> add_prod :<br> grammar <span class="keywordsign">-></span> <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> grammar<br> <span class="keyword">val</span> remove_nt : grammar <span class="keywordsign">-></span> <span class="constructor">Spec</span>.nt <span class="keywordsign">-></span> grammar<br> <span class="keyword">val</span> union : grammar <span class="keywordsign">-></span> grammar <span class="keywordsign">-></span> grammar<br> <span class="keyword">val</span> diff : grammar <span class="keywordsign">-></span> grammar <span class="keywordsign">-></span> grammar<br> <span class="keyword">val</span> inter : grammar <span class="keywordsign">-></span> grammar <span class="keywordsign">-></span> grammar<br> <span class="keyword">val</span> grammar_of_live : live_grammar <span class="keywordsign">-></span> grammar<br> <span class="keyword">val</span> prune_unproductive : grammar <span class="keywordsign">-></span> grammar<br> <span class="keyword">val</span> prune_nonlive : grammar <span class="keywordsign">-></span> live_grammar<br> <span class="keyword">val</span> prune_unreachable : grammar <span class="keywordsign">-></span> <span class="constructor">Spec</span>.nt <span class="keywordsign">-></span> grammar<br> <span class="keyword">val</span> prune_unreachable_live : live_grammar <span class="keywordsign">-></span> <span class="constructor">Spec</span>.nt <span class="keywordsign">-></span> live_grammar<br> <span class="keyword">val</span> make_sane : grammar <span class="keywordsign">-></span> <span class="constructor">Spec</span>.nt <span class="keywordsign">-></span> grammar<br> <span class="keyword">val</span> make_sane_live : grammar <span class="keywordsign">-></span> <span class="constructor">Spec</span>.nt <span class="keywordsign">-></span> live_grammar<br> <span class="keyword">val</span> grammar_contents : grammar <span class="keywordsign">-></span> <span class="constructor">ProdSet</span>.t <span class="constructor">NTMap</span>.t<br> <span class="keyword">val</span> deriv_depth_info : live_grammar <span class="keywordsign">-></span> (int * int <span class="constructor">ProdMap</span>.t) <span class="constructor">NTMap</span>.t<br> <span class="keyword">val</span> nts_in_grammar : grammar <span class="keywordsign">-></span> <span class="constructor">NTSet</span>.t<br> <span class="keyword">val</span> ts_in_grammar : grammar <span class="keywordsign">-></span> <span class="constructor">TSet</span>.t<br> <span class="keyword">val</span> prods_in_grammar : grammar <span class="keywordsign">-></span> <span class="constructor">ProdSet</span>.t<br> <span class="keyword">val</span> bounded_grammar :<br> grammar <span class="keywordsign">-></span> <span class="constructor">Spec</span>.nt <span class="keywordsign">-></span> int <span class="keywordsign">-></span> (<span class="constructor">TSet</span>.t * grammar) list<br> <span class="keyword">end</span><br> <span class="keyword">end</span></code></body></html>