chore: update README.mbt.md, rename to Ljh684
纯 MoonBit 解析器组合子库,通过组合小解析器构建复杂解析逻辑。
moon add a678b789/MoonParse
let input = ParseInput::new("hello 42") // 解析标签 match tag("hello", input) { Some((rest, _)) => { // 跳过空格,解析数字 let rest2 = space0(rest) match parse_int(rest2) { Some((_, n)) => println("Got number: " + n.to_string()) None => println("Expected number") } } None => println("Expected hello") }
ParseInput::new(source)
.current()
.advance()
.advance_by(n)
.is_eof()
.remaining()
.position()
tag(str, input)
tag_ci(str, input)
any_char(input)
digit(input)
hex_digit(input)
alpha(input)
alphanumeric(input)
space(input)
space0(input)
space1(input)
multispace0(input)
eof(input)
one_of(chars, input)
none_of(chars, input)
take_while(pred, input)
take_while1(pred, input)
take_until(pat, input)
many0(parser, input)
many1(parser, input)
many_n(parser, n, input)
many_till(parser, end, input)
alt(p1, p2, input)
opt(parser, input)
separated_list(parser, sep, input)
separated_list1(parser, sep, input)
tuple2(p1, p2, input)
tuple3(p1, p2, p3, input)
preceded(prefix, parser, input)
terminated(parser, suffix, input)
delimited(left, parser, right, input)
map(parser, f, input)
recognize(parser, input)
success(val, input)
fail(input)
parse_int(input)
parse_u64(input)
parse_float(input)
parse_hex_int(input)
parse_scientific(input)
parse_bool(input)
quoted_string(input)
triple_quoted_string(input)
identifier(input)
keyword(kw, input)
u8/u16_le/u32_le/u64_le(input)
leb128_u/leb128_s(input)
counted_string(input)
match json_parse(ParseInput::new("{\"name\": \"MoonBit\", \"year\": 2026}")) { Some((_, JsonValue::Object(pairs))) => { for i = 0; i < pairs.length(); i = i + 1 { let (k, v) = pairs[i] println(k + " = " + json_value_to_string(v)) } } _ => println("Invalid JSON") }
let input = ParseInput::new("a,b,c\n1,2,3\n4,5,6") let (_, rows) = many0(csv_row, input) println("Parsed " + rows.length().to_string() + " rows")
match toml_table_header(ParseInput::new("[database]")) { Some((_, name)) => println("Table: " + name) None => println("Not a table header") }
Apache-2.0
纯 MoonBit解析器组合子库,提供基本解析原语、组合子、数字/字符串/二进制解析器,以及完整的JSON/TOML 解析示例,零依赖
MoonParse
纯 MoonBit 解析器组合子库,通过组合小解析器构建复杂解析逻辑。
功能
安装
快速开始
API 参考
ParseInput
ParseInput::new(source).current().advance().advance_by(n).is_eof().remaining().position()基础原语
tag(str, input)tag_ci(str, input)any_char(input)digit(input)hex_digit(input)alpha(input)alphanumeric(input)space(input)space0(input)space1(input)multispace0(input)eof(input)one_of(chars, input)none_of(chars, input)take_while(pred, input)take_while1(pred, input)take_until(pat, input)组合子
many0(parser, input)many1(parser, input)many_n(parser, n, input)many_till(parser, end, input)alt(p1, p2, input)opt(parser, input)separated_list(parser, sep, input)separated_list1(parser, sep, input)tuple2(p1, p2, input)tuple3(p1, p2, p3, input)preceded(prefix, parser, input)terminated(parser, suffix, input)delimited(left, parser, right, input)map(parser, f, input)recognize(parser, input)success(val, input)fail(input)数字解析
parse_int(input)— 整数(含负数)parse_u64(input)— 无符号整数parse_float(input)— 浮点数parse_hex_int(input)— 16进制(0x前缀)parse_scientific(input)— 科学计数法parse_bool(input)— true/false字符串解析
quoted_string(input)— 双引号或单引号字符串triple_quoted_string(input)— 三引号字符串identifier(input)— 标识符keyword(kw, input)— 关键字(确保不是标识符前缀)二进制解析
u8/u16_le/u32_le/u64_le(input)— 整数leb128_u/leb128_s(input)— LEB128 变长编码counted_string(input)— 计数字符串完整示例
JSON 解析
CSV 解析
TOML 解析
许可证
Apache-2.0