@@ -6,69 +6,71 @@ import (
6
6
)
7
7
8
8
// Dylan lexer.
9
- var Dylan = internal .Register (MustNewLexer (
9
+ var Dylan = internal .Register (MustNewLazyLexer (
10
10
& Config {
11
11
Name : "Dylan" ,
12
12
Aliases : []string {"dylan" },
13
13
Filenames : []string {"*.dylan" , "*.dyl" , "*.intr" },
14
14
MimeTypes : []string {"text/x-dylan" },
15
15
CaseInsensitive : true ,
16
16
},
17
- Rules {
18
- "root" : {
19
- {`\s+` , Whitespace , nil },
20
- {`//.*?\n` , CommentSingle , nil },
21
- {`([a-z0-9-]+:)([ \t]*)(.*(?:\n[ \t].+)*)` , ByGroups (NameAttribute , Whitespace , LiteralString ), nil },
22
- Default (Push ("code" )),
23
- },
24
- "code" : {
25
- {`\s+` , Whitespace , nil },
26
- {`//.*?\n` , CommentSingle , nil },
27
- {`/\*` , CommentMultiline , Push ("comment" )},
28
- {`"` , LiteralString , Push ("string" )},
29
- {`'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\\'\n])'` , LiteralStringChar , nil },
30
- {`#b[01]+` , LiteralNumberBin , nil },
31
- {`#o[0-7]+` , LiteralNumberOct , nil },
32
- {`[-+]?(\d*\.\d+([ed][-+]?\d+)?|\d+(\.\d*)?e[-+]?\d+)` , LiteralNumberFloat , nil },
33
- {`[-+]?\d+` , LiteralNumberInteger , nil },
34
- {`#x[0-9a-f]+` , LiteralNumberHex , nil },
17
+ func () Rules {
18
+ return Rules {
19
+ "root" : {
20
+ {`\s+` , Whitespace , nil },
21
+ {`//.*?\n` , CommentSingle , nil },
22
+ {`([a-z0-9-]+:)([ \t]*)(.*(?:\n[ \t].+)*)` , ByGroups (NameAttribute , Whitespace , LiteralString ), nil },
23
+ Default (Push ("code" )),
24
+ },
25
+ "code" : {
26
+ {`\s+` , Whitespace , nil },
27
+ {`//.*?\n` , CommentSingle , nil },
28
+ {`/\*` , CommentMultiline , Push ("comment" )},
29
+ {`"` , LiteralString , Push ("string" )},
30
+ {`'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\\'\n])'` , LiteralStringChar , nil },
31
+ {`#b[01]+` , LiteralNumberBin , nil },
32
+ {`#o[0-7]+` , LiteralNumberOct , nil },
33
+ {`[-+]?(\d*\.\d+([ed][-+]?\d+)?|\d+(\.\d*)?e[-+]?\d+)` , LiteralNumberFloat , nil },
34
+ {`[-+]?\d+` , LiteralNumberInteger , nil },
35
+ {`#x[0-9a-f]+` , LiteralNumberHex , nil },
35
36
36
- {`(\?\\?)([\w!&*<>|^$%@+~?/=-]+)(:)(token|name|variable|expression|body|case-body|\*)` ,
37
- ByGroups (Operator , NameVariable , Operator , NameBuiltin ), nil },
38
- {`(\?)(:)(token|name|variable|expression|body|case-body|\*)` ,
39
- ByGroups (Operator , Operator , NameVariable ), nil },
40
- {`(\?\\?)([\w!&*<>|^$%@+~?/=-]+)` , ByGroups (Operator , NameVariable ), nil },
37
+ {`(\?\\?)([\w!&*<>|^$%@+~?/=-]+)(:)(token|name|variable|expression|body|case-body|\*)` ,
38
+ ByGroups (Operator , NameVariable , Operator , NameBuiltin ), nil },
39
+ {`(\?)(:)(token|name|variable|expression|body|case-body|\*)` ,
40
+ ByGroups (Operator , Operator , NameVariable ), nil },
41
+ {`(\?\\?)([\w!&*<>|^$%@+~?/=-]+)` , ByGroups (Operator , NameVariable ), nil },
41
42
42
- {`(=>|::|#\(|#\[|##|\?\?|\?=|\?|[(){}\[\],.;])` , Punctuation , nil },
43
- {`:=` , Operator , nil },
44
- {`#[tf]` , Literal , nil },
45
- {`#"` , LiteralStringSymbol , Push ("symbol" )},
46
- {`#[a-z0-9-]+` , Keyword , nil },
47
- {`#(all-keys|include|key|next|rest)` , Keyword , nil },
48
- {`[\w!&*<>|^$%@+~?/=-]+:` , KeywordConstant , nil },
49
- {`<[\w!&*<>|^$%@+~?/=-]+>` , NameClass , nil },
50
- {`\*[\w!&*<>|^$%@+~?/=-]+\*` , NameVariableGlobal , nil },
51
- {`\$[\w!&*<>|^$%@+~?/=-]+` , NameConstant , nil },
52
- {`(let|method|function)([ \t]+)([\w!&*<>|^$%@+~?/=-]+)` , ByGroups (NameBuiltin , Whitespace , NameVariable ), nil },
53
- {`(error|signal|return|break)` , NameException , nil },
54
- {`(\\?)([\w!&*<>|^$%@+~?/=-]+)` , ByGroups (Operator , Name ), nil },
55
- },
56
- "comment" : {
57
- {`[^*/]` , CommentMultiline , nil },
58
- {`/\*` , CommentMultiline , Push ()},
59
- {`\*/` , CommentMultiline , Pop (1 )},
60
- {`[*/]` , CommentMultiline , nil },
61
- },
62
- "symbol" : {
63
- {`"` , LiteralStringSymbol , Pop (1 )},
64
- {`[^\\"]+` , LiteralStringSymbol , nil },
65
- },
66
- "string" : {
67
- {`"` , LiteralString , Pop (1 )},
68
- {`\\([\\abfnrtv"\']|x[a-f0-9]{2,4}|[0-7]{1,3})` , LiteralStringEscape , nil },
69
- {`[^\\"\n]+` , LiteralString , nil },
70
- {`\\\n` , LiteralString , nil },
71
- {`\\` , LiteralString , nil },
72
- },
43
+ {`(=>|::|#\(|#\[|##|\?\?|\?=|\?|[(){}\[\],.;])` , Punctuation , nil },
44
+ {`:=` , Operator , nil },
45
+ {`#[tf]` , Literal , nil },
46
+ {`#"` , LiteralStringSymbol , Push ("symbol" )},
47
+ {`#[a-z0-9-]+` , Keyword , nil },
48
+ {`#(all-keys|include|key|next|rest)` , Keyword , nil },
49
+ {`[\w!&*<>|^$%@+~?/=-]+:` , KeywordConstant , nil },
50
+ {`<[\w!&*<>|^$%@+~?/=-]+>` , NameClass , nil },
51
+ {`\*[\w!&*<>|^$%@+~?/=-]+\*` , NameVariableGlobal , nil },
52
+ {`\$[\w!&*<>|^$%@+~?/=-]+` , NameConstant , nil },
53
+ {`(let|method|function)([ \t]+)([\w!&*<>|^$%@+~?/=-]+)` , ByGroups (NameBuiltin , Whitespace , NameVariable ), nil },
54
+ {`(error|signal|return|break)` , NameException , nil },
55
+ {`(\\?)([\w!&*<>|^$%@+~?/=-]+)` , ByGroups (Operator , Name ), nil },
56
+ },
57
+ "comment" : {
58
+ {`[^*/]` , CommentMultiline , nil },
59
+ {`/\*` , CommentMultiline , Push ()},
60
+ {`\*/` , CommentMultiline , Pop (1 )},
61
+ {`[*/]` , CommentMultiline , nil },
62
+ },
63
+ "symbol" : {
64
+ {`"` , LiteralStringSymbol , Pop (1 )},
65
+ {`[^\\"]+` , LiteralStringSymbol , nil },
66
+ },
67
+ "string" : {
68
+ {`"` , LiteralString , Pop (1 )},
69
+ {`\\([\\abfnrtv"\']|x[a-f0-9]{2,4}|[0-7]{1,3})` , LiteralStringEscape , nil },
70
+ {`[^\\"\n]+` , LiteralString , nil },
71
+ {`\\\n` , LiteralString , nil },
72
+ {`\\` , LiteralString , nil },
73
+ },
74
+ }
73
75
},
74
76
))
0 commit comments