let token_list (lexfun : Lexing.lexbuf -> token) (lexbuf : Lexing.lexbuf) =
    let rec list_tokens rtokens =
        match (lexfun lexbuf) with
            | EOF -> List.rev (EOF::rtokens)
            | tk -> list_tokens (tk::rtokens) in
    list_tokens []