Skip to content

Commit f0d460e

Browse files
authored
Update Odin lexer for new build tag feature (#1038)
1 parent 0bd7c68 commit f0d460e

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

lexers/embedded/odin.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,20 @@
5151
<rule pattern = "\#[a-zA-Z_]+\b">
5252
<token type = "NameDecorator"/>
5353
</rule>
54+
<rule pattern = "^\#\+\w+\s*$">
55+
<token type = "NameAttribute"/>
56+
</rule>
57+
<rule pattern = "^(\#\+\w+)(\s+)(\!)?([A-Za-z0-9-_!]+)(?:(,)(\!)?([A-Za-z0-9-_!]+))*\s*$">
58+
<bygroups>
59+
<token type = "NameAttribute"/>
60+
<token type = "TextWhitespace"/>
61+
<token type = "Operator"/>
62+
<token type = "Name"/>
63+
<token type = "Punctuation"/>
64+
<token type = "Operator"/>
65+
<token type = "Name"/>
66+
</bygroups>
67+
</rule>
5468
<rule pattern = "\@(\([a-zA-Z_]+\b\s*.*\)|\(?[a-zA-Z_]+\)?)">
5569
<token type = "NameAttribute"/>
5670
</rule>

lexers/testdata/odin.actual

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
#+feature dynamic-literals
2+
#+build windows,!linux
3+
#+ignore
14
package main
25

36
import "core:fmt"

lexers/testdata/odin.expected

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,17 @@
11
[
2+
{"type":"NameAttribute","value":"#+feature"},
3+
{"type":"TextWhitespace","value":" "},
4+
{"type":"Name","value":"dynamic-literals"},
5+
{"type":"TextWhitespace","value":"\n"},
6+
{"type":"NameAttribute","value":"#+build"},
7+
{"type":"TextWhitespace","value":" "},
8+
{"type":"Name","value":"windows"},
9+
{"type":"Punctuation","value":","},
10+
{"type":"Operator","value":"!"},
11+
{"type":"Name","value":"linux"},
12+
{"type":"TextWhitespace","value":"\n"},
13+
{"type":"NameAttribute","value":"#+ignore"},
14+
{"type":"TextWhitespace","value":"\n"},
215
{"type":"KeywordNamespace","value":"package"},
316
{"type":"TextWhitespace","value":" "},
417
{"type":"Name","value":"main"},

0 commit comments

Comments
 (0)