 
 // 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)

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

}



extension ParserContext {
    init(string:String) {
        row = 1
        col = 1
        position = 0
        index = string.startIndex
        self.string = string
    }
}
