sig
  type token =
      LEFT_PARENTHESIS
    | RIGHT_PARENTHESIS
    | DOT
    | COLON
    | IF
    | NOT
    | COMMA
    | AGGR_EQUAL
    | EOI
    | SINGLE_QUOTED of string
    | DOUBLE_QUOTED of string
    | LOWER_WORD of string
    | UPPER_WORD of string
    | INT of string
    | OPERATOR of string
  val parse_term :
    (Lexing.lexbuf -> TopDownParser.token) ->
    Lexing.lexbuf -> TopDownAst.term
  val parse_literal :
    (Lexing.lexbuf -> TopDownParser.token) ->
    Lexing.lexbuf -> TopDownAst.literal
  val parse_literals :
    (Lexing.lexbuf -> TopDownParser.token) ->
    Lexing.lexbuf -> TopDownAst.literal list
  val parse_query :
    (Lexing.lexbuf -> TopDownParser.token) ->
    Lexing.lexbuf -> TopDownAst.term list * TopDownAst.literal list
  val parse_clause :
    (Lexing.lexbuf -> TopDownParser.token) ->
    Lexing.lexbuf -> TopDownAst.clause
  val parse_file :
    (Lexing.lexbuf -> TopDownParser.token) ->
    Lexing.lexbuf -> TopDownAst.file
end