sig
  type syntax_elem = Str of string | Tp of Term.term
  type syntax_def =
      SDterm of SyntaxDef.syntax_elem list * Term.term list
    | SDvar of SyntaxDef.syntax_elem list * Term.term
    | SDtvar of string * Term.term option
  type sdef_result =
      SD_Term of Term.term array
    | SD_SVar of Term.term
    | SD_TVar of Term.term option
  val syntax_elems_of_sd : SyntaxDef.syntax_def -> SyntaxDef.syntax_elem list
  val result_of_sd : SyntaxDef.syntax_def -> SyntaxDef.sdef_result
  val name_of_sd : SyntaxDef.syntax_def -> string
  val unique_name_of_sd : SyntaxDef.syntax_def -> string list -> string
  val term_of_sd :
    ?used_names:string list ->
    ?name:string -> SyntaxDef.syntax_def -> Term.term
  val type_with_level_of_sd : SyntaxDef.syntax_def -> Term.term
  val split_sd_name : string -> string option list
  val put_space : string -> string -> string
  val display_sd : string option list -> string list -> string
  val display_sd_bracketed : string option list -> string list -> string
  exception NONLEXICAL
  val flat_grammar_of_sd_list :
    SyntaxDef.syntax_def list -> (string * string list list) list
  val print_grammar : (string * string list list) list -> string
  val make_xml_compatible : string -> string
  val print_xslt : string -> (string * SyntaxDef.syntax_def) list -> string
end