go-parseParsec 解析库

联合创作 · 2023-09-28 17:16

go-parse 是一个 Go 语言的库实现类 Parsec 的解析。

示例代码:

func main() {
    in := new(StringVessel);
    in.SetInput(`< (>)(
<
)(  >)  < >
>

    >`);

    ltgt := Any(Symbol("<"), Symbol(">"));

    parser := Many(Any(ltgt, Parens(ltgt)));
    out, parsed := parser(in);

    fmt.Printf("Matched: %#v\n", parsed);
    fmt.Printf("Matches: %v\n", out);
    fmt.Printf("Vessel: %+v\n", in);
}

输出:

go-parse $ go parsec
Matched: true
Matches: [< > < > < > > >]
Vessel: &{state:<nil> input:< (>)(
<
)(  >)  < >
>

    > position:{Name: Line:0 Column:0 Offset:29}}
浏览 6
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报