abnf.go

 1package a
 2
 3import (
 4	. "github.com/alecthomas/chroma" // nolint
 5	"github.com/alecthomas/chroma/lexers/internal"
 6)
 7
 8// Abnf lexer.
 9var Abnf = internal.Register(MustNewLexer(
10	&Config{
11		Name:      "ABNF",
12		Aliases:   []string{"abnf"},
13		Filenames: []string{"*.abnf"},
14		MimeTypes: []string{"text/x-abnf"},
15	},
16	Rules{
17		"root": {
18			{`;.*$`, CommentSingle, nil},
19			{`(%[si])?"[^"]*"`, Literal, nil},
20			{`%b[01]+\-[01]+\b`, Literal, nil},
21			{`%b[01]+(\.[01]+)*\b`, Literal, nil},
22			{`%d[0-9]+\-[0-9]+\b`, Literal, nil},
23			{`%d[0-9]+(\.[0-9]+)*\b`, Literal, nil},
24			{`%x[0-9a-fA-F]+\-[0-9a-fA-F]+\b`, Literal, nil},
25			{`%x[0-9a-fA-F]+(\.[0-9a-fA-F]+)*\b`, Literal, nil},
26			{`\b[0-9]+\*[0-9]+`, Operator, nil},
27			{`\b[0-9]+\*`, Operator, nil},
28			{`\b[0-9]+`, Operator, nil},
29			{`\*`, Operator, nil},
30			{Words(``, `\b`, `ALPHA`, `BIT`, `CHAR`, `CR`, `CRLF`, `CTL`, `DIGIT`, `DQUOTE`, `HEXDIG`, `HTAB`, `LF`, `LWSP`, `OCTET`, `SP`, `VCHAR`, `WSP`), Keyword, nil},
31			{`[a-zA-Z][a-zA-Z0-9-]+\b`, NameClass, nil},
32			{`(=/|=|/)`, Operator, nil},
33			{`[\[\]()]`, Punctuation, nil},
34			{`\s+`, Text, nil},
35			{`.`, Text, nil},
36		},
37	},
38))