     }
 }
 
-postfix operator >? { }
-postfix func >? <T, S:State>(x: Parsec<T, S>.Parser)  -> Parsec<T?, S>.Parser {
-    return zeroOrOnce(x)
-}
-
+// 以指定算子分隔的 many 匹配
 func sepBy<T, SepType, S:State>(p: Parsec<T, S>.Parser,
         sep:Parsec<SepType, S>.Parser)->Parsec<[T], S>.Parser {
         return {( state: S) throws -> [T] in

        }
}

func sepBy1<T, SepType, S:State>(p: Parsec<T, S>.Parser,
        sep:Parsec<SepType, S>.Parser)->Parsec<[T], S>.Parser {
    return {(state: S) throws ->[T] in

    }
}

// 跳过给定算子0到多次
func skip<T, S:State >(p:Parsec<T, S>.Parser) -> Parsec<T?, S>.Parser {
    return {( state: S) throws -> T? in
        let psc = attempt(p)
        do {
            while true {
                let re = try? psc(state)
                if re == nil {
                    break
                }
            }
        }
        return nil
    }
}

// 跳过给定算子 1 到多次
func skip1<T, S:State>(p: Parsec<T, S>.Parser)->Parsec<T?, S>.Parser {
    return {( state: S) throws -> T? in
        try p(state)
        let psc = attempt(p)
        do {
            while true {
                let re = try? psc(state)
                if re == nil {
                    break
                }
            }
        }
        return nil
    }
}


