type syntree = Term    of char list
            | NonTerm of char list
            | Param   of char list
            | Opt     of syntree
            | Rep     of syntree
            | TermRep of syntree * syntree
            | OptRep  of syntree
            | OrList  of syntree list
            | Con     of syntree * syntree

val analyse : char Stream.t -> syntree