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 <token type="CommentSingle" />
11 </rule>
12 <rule pattern="((\b(0(b|B|o|O|x|X)[a-fA-F0-9]+)\b)|(\b(0|[1-9][0-9]*)\b))">
13 <token type="LiteralNumber" />
14 </rule>
15 <rule pattern="((\b(true|false)\b))">
16 <token type="NameBuiltin" />
17 </rule>
18 <rule pattern="(\bstring\b|\bint\b|\bbool\b|\bfs\b|\boption\b)">
19 <token type="KeywordType" />
20 </rule>
21 <rule pattern="(\b[a-zA-Z_][a-zA-Z0-9]*\b)(\()">
22 <bygroups>
23 <token type="NameFunction" />
24 <token type="Punctuation" />
25 </bygroups>
26 <push state="params" />
27 </rule>
28 <rule pattern="(\{)">
29 <token type="Punctuation" />
30 <push state="block" />
31 </rule>
32 <rule pattern="(\n|\r|\r\n)">
33 <token type="Text" />
34 </rule>
35 <rule pattern=".">
36 <token type="Text" />
37 </rule>
38 </state>
39 <state name="string">
40 <rule pattern=""">
41 <token type="LiteralString" />
42 <pop depth="1" />
43 </rule>
44 <rule pattern="\\"">
45 <token type="LiteralString" />
46 </rule>
47 <rule pattern="[^\\"]+">
48 <token type="LiteralString" />
49 </rule>
50 </state>
51 <state name="block">
52 <rule pattern="(\})">
53 <token type="Punctuation" />
54 <pop depth="1" />
55 </rule>
56 <rule pattern="(#.*)">
57 <token type="CommentSingle" />
58 </rule>
59 <rule pattern="((\b(0(b|B|o|O|x|X)[a-fA-F0-9]+)\b)|(\b(0|[1-9][0-9]*)\b))">
60 <token type="LiteralNumber" />
61 </rule>
62 <rule pattern="((\b(true|false)\b))">
63 <token type="KeywordConstant" />
64 </rule>
65 <rule pattern=""">
66 <token type="LiteralString" />
67 <push state="string" />
68 </rule>
69 <rule pattern="(with)">
70 <token type="KeywordReserved" />
71 </rule>
72 <rule pattern="(as)([\t ]+)(\b[a-zA-Z_][a-zA-Z0-9]*\b)">
73 <bygroups>
74 <token type="KeywordReserved" />
75 <token type="Text" />
76 <token type="NameFunction" />
77 </bygroups>
78 </rule>
79 <rule pattern="(\bstring\b|\bint\b|\bbool\b|\bfs\b|\boption\b)([\t ]+)(\{)">
80 <bygroups>
81 <token type="KeywordType" />
82 <token type="Text" />
83 <token type="Punctuation" />
84 </bygroups>
85 <push state="block" />
86 </rule>
87 <rule
88 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)"
89 >
90 <bygroups>
91 <token type="NameOther" />
92 </bygroups>
93 </rule>
94 <rule pattern="(\n|\r|\r\n)">
95 <token type="Text" />
96 </rule>
97 <rule pattern=".">
98 <token type="Text" />
99 </rule>
100 </state>
101 <state name="params">
102 <rule pattern="(\))">
103 <bygroups>
104 <token type="Punctuation" />
105 </bygroups>
106 <pop depth="1" />
107 </rule>
108 <rule pattern="(variadic)">
109 <bygroups>
110 <token type="Keyword" />
111 </bygroups>
112 </rule>
113 <rule pattern="(\bstring\b|\bint\b|\bbool\b|\bfs\b|\boption\b)">
114 <bygroups>
115 <token type="KeywordType" />
116 </bygroups>
117 </rule>
118 <rule pattern="(\b[a-zA-Z_][a-zA-Z0-9]*\b)">
119 <bygroups>
120 <token type="NameOther" />
121 </bygroups>
122 </rule>
123 <rule pattern="(\n|\r|\r\n)">
124 <token type="Text" />
125 </rule>
126 <rule pattern=".">
127 <token type="Text" />
128 </rule>
129 </state>
130 </rules>
131</lexer>