     public static func lazy<TokenType, P:ParserType where P.TokenType==TokenType>(@autoclosure(escaping) getParser:() -> P) -> LazyParser<TokenType, P> {
         return LazyParser { getParser() }
     }
-
 }
 
 

    func void() -> Parser<()> {
        return (self) *> Parse.success(())
    }
}

public postfix func *<PT:ParserType, T where PT.TokenType==T>(p:PT) -> Parser<List<T>> {


// MARK: ParserType extension

func tuple3<T1,T2,T3>(t1:T1)(_ t2:T2)(_ t3:T3) -> (T1,T2,T3) {
    return (t1, t2, t3)
}

extension ParserType {
    func repeatMany() -> Parser<List<TokenType>> {
        return Parse.lazy(self.repeatOneOrMany()) <|> Parse.success(List<TokenType>.Nil)
