/abnf

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

Primary LanguageGoMIT LicenseMIT

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.