Package abnf
implements ABNF grammar as described in RFC 5234
and RFC 7405.
Inspired by:
Add abnf
package and all subpackages to your project:
go get github.com/ghettovoice/abnf@latest
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]))
}
Checkout abnf
CLI README.
MIT License - see LICENSE file for a full text.