     }
 }
 
-
+// 给出在指定起止算子之间的给定算子的计算结果
 func between<B, E, T, S:State>(open:Parsec<B, S>.Parser, _ close:Parsec<E, S>.Parser,
         _ p:Parsec<T, 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
    }
}


