MoonBit 解析器组合子库 — 与生态中其他 combinator 不同:(1)内置完整 JSON 解析器(JsonValue 枚举+双向序列化)和 TOML 解析器,开箱即用;(2)支持二进制解析(u8-u64/LEB128/计数字符串),覆盖 Protobuf 等场景;(3)11 种格式化输出(ANSI/Syslog RFC5424/GELF/JSON/XML);(4)行列号位置追踪+ErrorContext 累积错误上下文。零依赖
fn[T] alt(p1 : (ParseInput) -> (ParseInput, T)?, p2 : (ParseInput) -> (ParseInput, T)?, input : ParseInput) -> (ParseInput, T)?fn[T] cond(b : Bool, parser : (ParseInput) -> (ParseInput, T)?, input : ParseInput) -> (ParseInput, T)?fn[T, U, V] delimited(left : (ParseInput) -> (ParseInput, T)?, parser : (ParseInput) -> (ParseInput, U)?, right : (ParseInput) -> (ParseInput, V)?, input : ParseInput) -> (ParseInput, U)?fn[T] many0(parser : (ParseInput) -> (ParseInput, T)?, input : ParseInput) -> (ParseInput, Array[T])fn[T] many1(parser : (ParseInput) -> (ParseInput, T)?, input : ParseInput) -> (ParseInput, Array[T])?fn[T] many_n(parser : (ParseInput) -> (ParseInput, T)?, n : Int, input : ParseInput) -> (ParseInput, Array[T])?fn[T, U] many_till(parser : (ParseInput) -> (ParseInput, T)?, end : (ParseInput) -> (ParseInput, U)?, input : ParseInput) -> (ParseInput, (Array[T], U))?fn[T, U] map(parser : (ParseInput) -> (ParseInput, T)?, f : (T) -> U, input : ParseInput) -> (ParseInput, U)?fn[T] not_parser(parser : (ParseInput) -> (ParseInput, T)?, input : ParseInput) -> (ParseInput, String)?fn[T, U] preceded(prefix : (ParseInput) -> (ParseInput, T)?, parser : (ParseInput) -> (ParseInput, U)?, input : ParseInput) -> (ParseInput, U)?fn[T] recognize(parser : (ParseInput) -> (ParseInput, T)?, input : ParseInput) -> (ParseInput, String)?fn[T, S] separated_list(parser : (ParseInput) -> (ParseInput, T)?, sep : (ParseInput) -> (ParseInput, S)?, input : ParseInput) -> (ParseInput, Array[T])fn[T, S] separated_list1(parser : (ParseInput) -> (ParseInput, T)?, sep : (ParseInput) -> (ParseInput, S)?, input : ParseInput) -> (ParseInput, Array[T])?fn[T, U] terminated(parser : (ParseInput) -> (ParseInput, T)?, suffix : (ParseInput) -> (ParseInput, U)?, input : ParseInput) -> (ParseInput, T)?fn[T, U] tuple2(p1 : (ParseInput) -> (ParseInput, T)?, p2 : (ParseInput) -> (ParseInput, U)?, input : ParseInput) -> (ParseInput, (T, U))?fn[T, U, V] tuple3(p1 : (ParseInput) -> (ParseInput, T)?, p2 : (ParseInput) -> (ParseInput, U)?, p3 : (ParseInput) -> (ParseInput, V)?, input : ParseInput) -> (ParseInput, (T, U, V))?MoonBit 解析器组合子库 — 与生态中其他 combinator 不同:(1)内置完整 JSON 解析器(JsonValue 枚举+双向序列化)和 TOML 解析器,开箱即用;(2)支持二进制解析(u8-u64/LEB128/计数字符串),覆盖 Protobuf 等场景;(3)11 种格式化输出(ANSI/Syslog RFC5424/GELF/JSON/XML);(4)行列号位置追踪+ErrorContext 累积错误上下文。零依赖