...
1<lexer>
2 <config>
3 <name>HLB</name>
4 <alias>hlb</alias>
5 <filename>*.hlb</filename>
6 </config>
7 <rules>
8 <state name="root">
9 <rule pattern="(#.*)">
10 <bygroups>
11 <token type="CommentSingle"/>
12 </bygroups>
13 </rule>
14 <rule pattern="((\b(0(b|B|o|O|x|X)[a-fA-F0-9]+)\b)|(\b(0|[1-9][0-9]*)\b))">
15 <bygroups>
16 <token type="LiteralNumber"/>
17 </bygroups>
18 </rule>
19 <rule pattern="((\b(true|false)\b))">
20 <bygroups>
21 <token type="NameBuiltin"/>
22 </bygroups>
23 </rule>
24 <rule pattern="(\bstring\b|\bint\b|\bbool\b|\bfs\b|\boption\b)">
25 <bygroups>
26 <token type="KeywordType"/>
27 </bygroups>
28 </rule>
29 <rule pattern="(\b[a-zA-Z_][a-zA-Z0-9]*\b)(\()">
30 <bygroups>
31 <token type="NameFunction"/>
32 <token type="Punctuation"/>
33 </bygroups>
34 <push state="params"/>
35 </rule>
36 <rule pattern="(\{)">
37 <bygroups>
38 <token type="Punctuation"/>
39 </bygroups>
40 <push state="block"/>
41 </rule>
42 <rule pattern="(\n|\r|\r\n)">
43 <token type="Text"/>
44 </rule>
45 <rule pattern=".">
46 <token type="Text"/>
47 </rule>
48 </state>
49 <state name="string">
50 <rule pattern=""">
51 <token type="LiteralString"/>
52 <pop depth="1"/>
53 </rule>
54 <rule pattern="\\"">
55 <token type="LiteralString"/>
56 </rule>
57 <rule pattern="[^\\"]+">
58 <token type="LiteralString"/>
59 </rule>
60 </state>
61 <state name="block">
62 <rule pattern="(\})">
63 <bygroups>
64 <token type="Punctuation"/>
65 </bygroups>
66 <pop depth="1"/>
67 </rule>
68 <rule pattern="(#.*)">
69 <bygroups>
70 <token type="CommentSingle"/>
71 </bygroups>
72 </rule>
73 <rule pattern="((\b(0(b|B|o|O|x|X)[a-fA-F0-9]+)\b)|(\b(0|[1-9][0-9]*)\b))">
74 <bygroups>
75 <token type="LiteralNumber"/>
76 </bygroups>
77 </rule>
78 <rule pattern="((\b(true|false)\b))">
79 <bygroups>
80 <token type="KeywordConstant"/>
81 </bygroups>
82 </rule>
83 <rule pattern=""">
84 <token type="LiteralString"/>
85 <push state="string"/>
86 </rule>
87 <rule pattern="(with)">
88 <bygroups>
89 <token type="KeywordReserved"/>
90 </bygroups>
91 </rule>
92 <rule pattern="(as)([\t ]+)(\b[a-zA-Z_][a-zA-Z0-9]*\b)">
93 <bygroups>
94 <token type="KeywordReserved"/>
95 <token type="Text"/>
96 <token type="NameFunction"/>
97 </bygroups>
98 </rule>
99 <rule pattern="(\bstring\b|\bint\b|\bbool\b|\bfs\b|\boption\b)([\t ]+)(\{)">
100 <bygroups>
101 <token type="KeywordType"/>
102 <token type="Text"/>
103 <token type="Punctuation"/>
104 </bygroups>
105 <push state="block"/>
106 </rule>
107 <rule pattern="(?!\b(?:scratch|image|resolve|http|checksum|chmod|filename|git|keepGitDir|local|includePatterns|excludePatterns|followPaths|generate|frontendInput|shell|run|readonlyRootfs|env|dir|user|network|security|host|ssh|secret|mount|target|localPath|uid|gid|mode|readonly|tmpfs|sourcePath|cache|mkdir|createParents|chown|createdTime|mkfile|rm|allowNotFound|allowWildcards|copy|followSymlinks|contentsOnly|unpack|createDestPath)\b)(\b[a-zA-Z_][a-zA-Z0-9]*\b)">
108 <bygroups>
109 <token type="NameOther"/>
110 </bygroups>
111 </rule>
112 <rule pattern="(\n|\r|\r\n)">
113 <token type="Text"/>
114 </rule>
115 <rule pattern=".">
116 <token type="Text"/>
117 </rule>
118 </state>
119 <state name="params">
120 <rule pattern="(\))">
121 <bygroups>
122 <token type="Punctuation"/>
123 </bygroups>
124 <pop depth="1"/>
125 </rule>
126 <rule pattern="(variadic)">
127 <bygroups>
128 <token type="Keyword"/>
129 </bygroups>
130 </rule>
131 <rule pattern="(\bstring\b|\bint\b|\bbool\b|\bfs\b|\boption\b)">
132 <bygroups>
133 <token type="KeywordType"/>
134 </bygroups>
135 </rule>
136 <rule pattern="(\b[a-zA-Z_][a-zA-Z0-9]*\b)">
137 <bygroups>
138 <token type="NameOther"/>
139 </bygroups>
140 </rule>
141 <rule pattern="(\n|\r|\r\n)">
142 <token type="Text"/>
143 </rule>
144 <rule pattern=".">
145 <token type="Text"/>
146 </rule>
147 </state>
148 </rules>
149</lexer>
View as plain text