Skip to content

ghettovoice/abnf

Repository files navigation

abnf

Go Reference Tests Coverage Status CodeQL

Package abnf implements ABNF grammar as described in RFC 5234 and RFC 7405.

Inspired by:

Installation

Add abnf package and all subpackages to your project:

go get github.com/ghettovoice/abnf@latest

Usage

Build a rule from basic operators:

package main

import (
    "fmt"

    "github.com/ghettovoice/abnf"
)

var abc = abnf.Concat(
    `"a" "b" *"cd"`,
    abnf.Literal(`"a"`, []byte("a")),
    abnf.Literal(`"b"`, []byte("b")),
    abnf.Repeat0Inf(`*"cd"`, abnf.Literal(`"cd"`, []byte("cd"))),
)

func main() {
    var ns abnf.Nodes

    fmt.Println(abc([]byte("ab"), ns[:0]))
    fmt.Println(abc([]byte("abcd"), ns[:0]))
    fmt.Println(abc([]byte("abcdcd"), ns[:0]))
}

CLI

Checkout abnf CLI README.

License

MIT License - see LICENSE file for a full text.

About

Package abnf generates parsers from ABNF grammar (RFC 5234, RFC 7405).

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published