1package r
2
3import (
4 . "github.com/alecthomas/chroma" // nolint
5 "github.com/alecthomas/chroma/lexers/internal"
6)
7
8// Reg lexer.
9var Reg = internal.Register(MustNewLexer(
10 &Config{
11 Name: "reg",
12 Aliases: []string{"registry"},
13 Filenames: []string{"*.reg"},
14 MimeTypes: []string{"text/x-windows-registry"},
15 },
16 Rules{
17 "root": {
18 {`Windows Registry Editor.*`, Text, nil},
19 {`\s+`, Text, nil},
20 {`[;#].*`, CommentSingle, nil},
21 {`(\[)(-?)(HKEY_[A-Z_]+)(.*?\])$`, ByGroups(Keyword, Operator, NameBuiltin, Keyword), nil},
22 {`("(?:\\"|\\\\|[^"])+")([ \t]*)(=)([ \t]*)`, ByGroups(NameAttribute, Text, Operator, Text), Push("value")},
23 {`(.*?)([ \t]*)(=)([ \t]*)`, ByGroups(NameAttribute, Text, Operator, Text), Push("value")},
24 },
25 "value": {
26 {`-`, Operator, Pop(1)},
27 {`(dword|hex(?:\([0-9a-fA-F]\))?)(:)([0-9a-fA-F,]+)`, ByGroups(NameVariable, Punctuation, LiteralNumber), Pop(1)},
28 {`.+`, LiteralString, Pop(1)},
29 Default(Pop(1)),
30 },
31 },
32))