...
1<lexer>
2 <config>
3 <name>CFEngine3</name>
4 <alias>cfengine3</alias>
5 <alias>cf3</alias>
6 <filename>*.cf</filename>
7 </config>
8 <rules>
9 <state name="interpol">
10 <rule pattern="\$[{(]">
11 <token type="LiteralStringInterpol"/>
12 <push/>
13 </rule>
14 <rule pattern="[})]">
15 <token type="LiteralStringInterpol"/>
16 <pop depth="1"/>
17 </rule>
18 <rule pattern="[^${()}]+">
19 <token type="LiteralStringInterpol"/>
20 </rule>
21 </state>
22 <state name="arglist">
23 <rule pattern="\)">
24 <token type="Punctuation"/>
25 <pop depth="1"/>
26 </rule>
27 <rule pattern=",">
28 <token type="Punctuation"/>
29 </rule>
30 <rule pattern="\w+">
31 <token type="NameVariable"/>
32 </rule>
33 <rule pattern="\s+">
34 <token type="Text"/>
35 </rule>
36 </state>
37 <state name="root">
38 <rule pattern="#.*?\n">
39 <token type="Comment"/>
40 </rule>
41 <rule pattern="^@.*?\n">
42 <token type="CommentPreproc"/>
43 </rule>
44 <rule pattern="(body)(\s+)(\S+)(\s+)(control)">
45 <bygroups>
46 <token type="Keyword"/>
47 <token type="Text"/>
48 <token type="Keyword"/>
49 <token type="Text"/>
50 <token type="Keyword"/>
51 </bygroups>
52 </rule>
53 <rule pattern="(body|bundle|promise)(\s+)(\S+)(\s+)(\w+)(\()">
54 <bygroups>
55 <token type="Keyword"/>
56 <token type="Text"/>
57 <token type="Keyword"/>
58 <token type="Text"/>
59 <token type="NameFunction"/>
60 <token type="Punctuation"/>
61 </bygroups>
62 <push state="arglist"/>
63 </rule>
64 <rule pattern="(body|bundle|promise)(\s+)(\S+)(\s+)(\w+)">
65 <bygroups>
66 <token type="Keyword"/>
67 <token type="Text"/>
68 <token type="Keyword"/>
69 <token type="Text"/>
70 <token type="NameFunction"/>
71 </bygroups>
72 </rule>
73 <rule pattern="(\S+)(\s*)(=>)(\s*)">
74 <bygroups>
75 <token type="KeywordReserved"/>
76 <token type="Text"/>
77 <token type="Operator"/>
78 <token type="Text"/>
79 </bygroups>
80 </rule>
81 <rule pattern="([\w.!&|()"$]+)(::)">
82 <bygroups>
83 <token type="NameClass"/>
84 <token type="Punctuation"/>
85 </bygroups>
86 </rule>
87 <rule pattern=""">
88 <token type="LiteralString"/>
89 <push state="doublequotestring"/>
90 </rule>
91 <rule pattern="'">
92 <token type="LiteralString"/>
93 <push state="singlequotestring"/>
94 </rule>
95 <rule pattern="`">
96 <token type="LiteralString"/>
97 <push state="backtickstring"/>
98 </rule>
99 <rule pattern="(\w+)(\()">
100 <bygroups>
101 <token type="NameFunction"/>
102 <token type="Punctuation"/>
103 </bygroups>
104 </rule>
105 <rule pattern="(\w+)(:)">
106 <bygroups>
107 <token type="KeywordDeclaration"/>
108 <token type="Punctuation"/>
109 </bygroups>
110 </rule>
111 <rule pattern="@[{(][^)}]+[})]">
112 <token type="NameVariable"/>
113 </rule>
114 <rule pattern="\$[(][^)]+[)]">
115 <token type="NameVariable"/>
116 </rule>
117 <rule pattern="[(){},;]">
118 <token type="Punctuation"/>
119 </rule>
120 <rule pattern="=>">
121 <token type="Operator"/>
122 </rule>
123 <rule pattern="->">
124 <token type="Operator"/>
125 </rule>
126 <rule pattern="\d+\.\d+">
127 <token type="LiteralNumberFloat"/>
128 </rule>
129 <rule pattern="\d+">
130 <token type="LiteralNumberInteger"/>
131 </rule>
132 <rule pattern="\w+">
133 <token type="NameFunction"/>
134 </rule>
135 <rule pattern="\s+">
136 <token type="Text"/>
137 </rule>
138 </state>
139 <state name="doublequotestring">
140 <rule pattern="\$[{(]">
141 <token type="LiteralStringInterpol"/>
142 <push state="interpol"/>
143 </rule>
144 <rule pattern="\\.">
145 <token type="LiteralStringEscape"/>
146 </rule>
147 <rule pattern=""">
148 <token type="LiteralString"/>
149 <pop depth="1"/>
150 </rule>
151 <rule pattern="\n">
152 <token type="LiteralString"/>
153 </rule>
154 <rule pattern=".">
155 <token type="LiteralString"/>
156 </rule>
157 </state>
158 <state name="singlequotestring">
159 <rule pattern="\$[{(]">
160 <token type="LiteralStringInterpol"/>
161 <push state="interpol"/>
162 </rule>
163 <rule pattern="\\.">
164 <token type="LiteralStringEscape"/>
165 </rule>
166 <rule pattern="'">
167 <token type="LiteralString"/>
168 <pop depth="1"/>
169 </rule>
170 <rule pattern="\n">
171 <token type="LiteralString"/>
172 </rule>
173 <rule pattern=".">
174 <token type="LiteralString"/>
175 </rule>
176 </state>
177 <state name="backtickstring">
178 <rule pattern="\$[{(]">
179 <token type="LiteralStringInterpol"/>
180 <push state="interpol"/>
181 </rule>
182 <rule pattern="\\.">
183 <token type="LiteralStringEscape"/>
184 </rule>
185 <rule pattern="`">
186 <token type="LiteralString"/>
187 <pop depth="1"/>
188 </rule>
189 <rule pattern="\n">
190 <token type="LiteralString"/>
191 </rule>
192 <rule pattern=".">
193 <token type="LiteralString"/>
194 </rule>
195 </state>
196 </rules>
197</lexer>
View as plain text