2 <!DOCTYPE MODE SYSTEM "xmode.dtd">
5 <PROPERTY NAME='commentStart' VALUE="/'" />
6 <PROPERTY NAME='commentEnd' VALUE="'/" />
7 <PROPERTY NAME="lineComment" VALUE="'" />
8 <PROPERTY NAME='wordBreakChars' VALUE=',+-=<>/?^&*' />
9 <PROPERTY NAME="indentOpenBrackets" VALUE="{" />
10 <PROPERTY NAME="indentCloseBrackets" VALUE="}" />
11 <PROPERTY NAME="lineUpClosingBracket" VALUE="true" />
12 <PROPERTY NAME="indentNextLines"
13 VALUE="\s*(alt\b.*|opt\b.*|loop\b.*|par\b.*|break\b.*|critical\b.*|group\b.*|box\b.*|title$|((note\b|hnote\b|rnote\b)\s*(((left\b|right\b)\s*(of\b\s*[A-Za-z]+)?)|(over\b\s*([A-Za-z]+([,]\s*)?)+))(\s*[#][A-Za-z0-9]+)?$)|(ref\b\s*over\s*([A-Za-z]+([,]\s*)?)+$)|(legend\b\s*(left\b|right\b|center\b)?$))"
15 <PROPERTY NAME="unindentThisLine" VALUE="\s*(end\b|else\b)\s*.*" />
16 <PROPERTY NAME="unindentNextLines" VALUE="\s*(end\b)\s*.*" />
17 <PROPERTY NAME="electricKeys" VALUE="
" />
22 HIGHLIGHT_DIGITS="TRUE"
23 DIGIT_RE="[0-9][0-9a-zA-Z]*">
25 <IMPORT DELEGATE='PLANTUML_LEXER' />
26 <IMPORT DELEGATE='KEYWORDS' />
29 <RULES SET='PLANTUML_LEXER'
31 HIGHLIGHT_DIGITS='TRUE' DIGIT_RE='[0-9][0-9a-zA-Z]*'>
33 <!-- Rules for comments -->
34 <EOL_SPAN TYPE='COMMENT1'>'</EOL_SPAN>
35 <SPAN TYPE="COMMENT1">
40 <!-- Rule for Use Case -->
41 <SPAN TYPE="LITERAL3" AT_WORD_START="TRUE" NO_LINE_BREAK="TRUE">
45 <!-- Rule for User: :some text: -->
46 <SEQ_REGEXP HASH_CHAR=":" AT_WORD_START="TRUE" TYPE="LITERAL3">:[^:]*:</SEQ_REGEXP>
48 <!-- Rule for component -->
49 <SPAN TYPE="LITERAL3" AT_WORD_START="TRUE" NO_LINE_BREAK="TRUE">
55 <!-- Rule for Stereotype -->
56 <SEQ TYPE="OPERATOR"><<</SEQ>
57 <SEQ TYPE="OPERATOR">>></SEQ>
59 <!-- Rule for comment on line -->
60 <EOL_SPAN TYPE="MARKUP" MATCH_TYPE="OPERATOR" DELEGATE="ONELINER_MARKUP">:</EOL_SPAN>
62 <!-- Rule for title -->
63 <SPAN_REGEXP HASH_CHAR="title" AT_WHITESPACE_END="TRUE" TYPE="MARKUP" MATCH_TYPE="KEYWORD1">
65 <END AT_WHITESPACE_END="TRUE" REGEXP="TRUE">end\s*(title)?</END>
67 <EOL_SPAN_REGEXP HASH_CHAR="title" AT_WHITESPACE_END="TRUE" TYPE="MARKUP" MATCH_TYPE="KEYWORD1" DELEGATE="ONELINER_MARKUP">title\b</EOL_SPAN_REGEXP>
69 <!-- Rules for loops and dislikes -->
70 <EOL_SPAN_REGEXP HASH_CHAR="alt" AT_WHITESPACE_END="TRUE" TYPE="MARKUP" MATCH_TYPE="KEYWORD1" DELEGATE="ONELINER_MARKUP">alt\b</EOL_SPAN_REGEXP>
71 <EOL_SPAN_REGEXP HASH_CHAR="else" AT_WHITESPACE_END="TRUE" TYPE="MARKUP" MATCH_TYPE="KEYWORD1" DELEGATE="ONELINER_MARKUP">else\b</EOL_SPAN_REGEXP>
72 <EOL_SPAN_REGEXP HASH_CHAR="opt" AT_WHITESPACE_END="TRUE" TYPE="MARKUP" MATCH_TYPE="KEYWORD1" DELEGATE="ONELINER_MARKUP">opt\b</EOL_SPAN_REGEXP>
73 <EOL_SPAN_REGEXP HASH_CHAR="loop" AT_WHITESPACE_END="TRUE" TYPE="MARKUP" MATCH_TYPE="KEYWORD1" DELEGATE="ONELINER_MARKUP">loop\b</EOL_SPAN_REGEXP>
74 <EOL_SPAN_REGEXP HASH_CHAR="par" AT_WHITESPACE_END="TRUE" TYPE="MARKUP" MATCH_TYPE="KEYWORD1" DELEGATE="ONELINER_MARKUP">par\b</EOL_SPAN_REGEXP>
75 <EOL_SPAN_REGEXP HASH_CHAR="break" AT_WHITESPACE_END="TRUE" TYPE="MARKUP" MATCH_TYPE="KEYWORD1" DELEGATE="ONELINER_MARKUP">break\b</EOL_SPAN_REGEXP>
76 <EOL_SPAN_REGEXP HASH_CHAR="critical" AT_WHITESPACE_END="TRUE" TYPE="MARKUP" MATCH_TYPE="KEYWORD1" DELEGATE="ONELINER_MARKUP">critical\b</EOL_SPAN_REGEXP>
77 <EOL_SPAN_REGEXP HASH_CHAR="group" AT_WHITESPACE_END="TRUE" TYPE="MARKUP" MATCH_TYPE="KEYWORD1" DELEGATE="ONELINER_MARKUP">group\b</EOL_SPAN_REGEXP>
79 <!-- Rules for notes -->
80 <EOL_SPAN_REGEXP HASH_CHARS="nhr" AT_WHITESPACE_END="TRUE" TYPE="MARKUP" MATCH_TYPE="KEYWORD1" DELEGATE="ONELINER_MARKUP">(note\b|hnote\b|rnote\b)\s*(((left\b|right\b)\s*(of\b\s*[A-Za-z]+)?)|(over\b\s*([A-Za-z]+([,]\s*)?)+))(\s*[#][A-Za-z0-9]+)?\s*[:]</EOL_SPAN_REGEXP>
81 <SPAN_REGEXP HASH_CHARS="nhr" AT_WHITESPACE_END="TRUE" TYPE="MARKUP" MATCH_TYPE="KEYWORD1">
82 <BEGIN>(note\b|hnote\b|rnote\b)\s*(((left\b|right\b)\s*(of\b\s*[\D]+)?)|(over\b\s*([A-Za-z]+([,]\s*)?)+))(\s*[#][A-Za-z0-9]+)?$</BEGIN>
83 <END AT_WHITESPACE_END="TRUE" REGEXP="TRUE">end\b\s*(note\b|hnote\b|rnote\b)?</END>
86 <!-- Rules for ref's -->
87 <EOL_SPAN_REGEXP HASH_CHAR="ref" AT_WHITESPACE_END="TRUE" TYPE="MARKUP" MATCH_TYPE="KEYWORD1" DELEGATE="ONELINER_MARKUP">ref\b\s*over\s*([A-Za-z]+([,]\s*)?)+\s*[:]</EOL_SPAN_REGEXP>
88 <SPAN_REGEXP HASH_CHAR= "ref" AT_WHITESPACE_END="TRUE" TYPE="MARKUP" MATCH_TYPE="KEYWORD1">
89 <BEGIN>ref\b\s*over\s*([A-Za-z]+([,]\s*)?)+$</BEGIN>
90 <END AT_WHITESPACE_END="TRUE" REGEXP="TRUE">end\b\s*(ref\b)?</END>
93 <!-- Rule for legend -->
94 <SPAN_REGEXP HASH_CHAR="legend" AT_WHITESPACE_END="TRUE" TYPE="MARKUP" MATCH_TYPE="KEYWORD1">
95 <BEGIN>legend\b\s*(left\b|right\b|center\b)?$</BEGIN>
96 <END AT_WHITESPACE_END="TRUE" REGEXP="TRUE">end\b\s*(legend\b)?</END>
99 <!-- Rules for sequence arrows -->
100 <SEQ_REGEXP TYPE="OPERATOR">[\[]?[xo*]?(([\\]{1,2})|([/]{1,2})|([<][<\|]?))?[-.]([\[][#][A-Za-z0-9]+[\]])?[-.]?(([>\|]?[>])|([\\]{1,2})|([/]{1,2}))?[xo*]?[\]]?</SEQ_REGEXP>
101 <!-- Rules for colors: #00ffcc or #red -->
102 <SEQ_REGEXP HASH_CHAR="#" TYPE="OPERATOR">[#][A-Za-z0-9]+</SEQ_REGEXP>
103 <!-- Rules for divider: == (some text) == -->
104 <SEQ_REGEXP HASH_CHAR="==" AT_WHITESPACE_END="TRUE" TYPE="OPERATOR">==.*==</SEQ_REGEXP>
105 <!-- Rules for delay: ... (some text) ...-->
106 <SEQ_REGEXP HASH_CHAR="..." AT_WHITESPACE_END="TRUE" TYPE="OPERATOR">[\.]{3}(.*[\.]{3})?</SEQ_REGEXP>
107 <!-- Rules spacer: ||| or ||45||-->
108 <SEQ_REGEXP HASH_CHAR="||" AT_WHITESPACE_END="TRUE" TYPE="OPERATOR">([\|]{3})|([\|]{2}\d+[\|]{2})</SEQ_REGEXP>
110 <!-- Rules for Literals -->
111 <SPAN TYPE="LITERAL1" DELEGATE="LITERAL_USECASE">
117 <RULES SET="ONELINER_MARKUP" DEFAULT="MARKUP">
118 <SEQ_REGEXP HASH_CHAR="\" TYPE="OPERATOR">\\[a-z]</SEQ_REGEXP>
121 <RULES SET="ONELINER_DEFAULT" DEFAULT="NULL">
122 <SEQ_REGEXP HASH_CHAR="\" TYPE="OPERATOR">\\[a-z]</SEQ_REGEXP>
125 <RULES SET="LITERAL_USECASE" DEFAULT="LITERAL1">
126 <SEQ_REGEXP HASH_CHAR="==" AT_WHITESPACE_END="TRUE" TYPE="OPERATOR">==(.*==)?</SEQ_REGEXP>
127 <SEQ_REGEXP HASH_CHAR="--" AT_WHITESPACE_END="TRUE" TYPE="OPERATOR">--(.*==)?</SEQ_REGEXP>
128 <SEQ_REGEXP HASH_CHAR=".." AT_WHITESPACE_END="TRUE" TYPE="OPERATOR">..(.*..)?</SEQ_REGEXP>
131 <RULES SET='KEYWORDS' IGNORE_CASE='TRUE'>
134 <KEYWORD1>@startuml</KEYWORD1>
135 <KEYWORD1>@enduml</KEYWORD1>
136 <KEYWORD1>as</KEYWORD1>
137 <KEYWORD1>also</KEYWORD1>
138 <KEYWORD1>autonumber</KEYWORD1>
139 <KEYWORD1>title</KEYWORD1>
140 <KEYWORD1>newpage</KEYWORD1>
141 <KEYWORD1>box</KEYWORD1>
142 <KEYWORD1>alt</KEYWORD1>
143 <KEYWORD1>else</KEYWORD1>
144 <KEYWORD1>opt</KEYWORD1>
145 <KEYWORD1>loop</KEYWORD1>
146 <KEYWORD1>par</KEYWORD1>
147 <KEYWORD1>break</KEYWORD1>
148 <KEYWORD1>critical</KEYWORD1>
149 <KEYWORD1>note</KEYWORD1>
150 <KEYWORD1>group</KEYWORD1>
151 <KEYWORD1>left</KEYWORD1>
152 <KEYWORD1>right</KEYWORD1>
153 <KEYWORD1>of</KEYWORD1>
154 <KEYWORD1>on</KEYWORD1>
155 <KEYWORD1>link</KEYWORD1>
156 <KEYWORD1>over</KEYWORD1>
157 <KEYWORD1>end</KEYWORD1>
158 <KEYWORD1>activate</KEYWORD1>
159 <KEYWORD1>deactivate</KEYWORD1>
160 <KEYWORD1>destroy</KEYWORD1>
161 <KEYWORD1>create</KEYWORD1>
162 <KEYWORD1>footbox</KEYWORD1>
163 <KEYWORD1>hide</KEYWORD1>
164 <KEYWORD1>show</KEYWORD1>
165 <KEYWORD1>skinparam</KEYWORD1>
166 <KEYWORD1>skin</KEYWORD1>
167 <KEYWORD1>top</KEYWORD1>
168 <KEYWORD1>bottom</KEYWORD1>
169 <KEYWORD1>top to bottom direction</KEYWORD1>
170 <KEYWORD1>namespace</KEYWORD1>
171 <KEYWORD1>page</KEYWORD1>
172 <KEYWORD1>up</KEYWORD1>
173 <KEYWORD1>down</KEYWORD1>
174 <KEYWORD1>if</KEYWORD1>
175 <KEYWORD1>else</KEYWORD1>
176 <KEYWORD1>elseif</KEYWORD1>
177 <KEYWORD1>endif</KEYWORD1>
178 <KEYWORD1>partition</KEYWORD1>
179 <KEYWORD1>footer</KEYWORD1>
180 <KEYWORD1>header</KEYWORD1>
181 <KEYWORD1>center</KEYWORD1>
182 <KEYWORD1>rotate</KEYWORD1>
183 <KEYWORD1>ref</KEYWORD1>
184 <KEYWORD1>return</KEYWORD1>
185 <KEYWORD1>is</KEYWORD1>
186 <KEYWORD1>repeat</KEYWORD1>
187 <KEYWORD1>start</KEYWORD1>
188 <KEYWORD1>stop</KEYWORD1>
189 <KEYWORD1>while</KEYWORD1>
190 <KEYWORD1>endwhile</KEYWORD1>
191 <KEYWORD1>fork</KEYWORD1>
192 <KEYWORD1>again</KEYWORD1>
193 <KEYWORD1>kill</KEYWORD1>
195 <!-- Preprocessor -->
196 <KEYWORD2>!include</KEYWORD2>
197 <KEYWORD2>!define</KEYWORD2>
198 <KEYWORD2>!undef</KEYWORD2>
199 <KEYWORD2>!ifdef</KEYWORD2>
200 <KEYWORD2>!endif</KEYWORD2>
201 <KEYWORD2>!ifndef</KEYWORD2>
204 <KEYWORD3>actor</KEYWORD3>
205 <KEYWORD3>participant</KEYWORD3>
206 <KEYWORD3>usecase</KEYWORD3>
207 <KEYWORD3>class</KEYWORD3>
208 <KEYWORD3>interface</KEYWORD3>
209 <KEYWORD3>abstract</KEYWORD3>
210 <KEYWORD3>enum</KEYWORD3>
211 <KEYWORD3>component</KEYWORD3>
212 <KEYWORD3>state</KEYWORD3>
213 <KEYWORD3>object</KEYWORD3>
214 <KEYWORD3>artifact</KEYWORD3>
215 <KEYWORD3>folder</KEYWORD3>
216 <KEYWORD3>rect</KEYWORD3>
217 <KEYWORD3>node</KEYWORD3>
218 <KEYWORD3>frame</KEYWORD3>
219 <KEYWORD3>cloud</KEYWORD3>
220 <KEYWORD3>database</KEYWORD3>
221 <KEYWORD3>storage</KEYWORD3>
222 <KEYWORD3>agent</KEYWORD3>
223 <KEYWORD3>boundary</KEYWORD3>
224 <KEYWORD3>control</KEYWORD3>
225 <KEYWORD3>entity</KEYWORD3>
226 <KEYWORD3>card</KEYWORD3>
227 <KEYWORD3>package</KEYWORD3>
229 <!-- Skinparameter -->
230 <KEYWORD4>Monochrome</KEYWORD4>
231 <KEYWORD4>CircledCharacterRadius</KEYWORD4>
232 <KEYWORD4>ClassAttributeIconSize</KEYWORD4>
233 <KEYWORD4>DefaultFontName</KEYWORD4>
234 <KEYWORD4>DefaultFontStyle</KEYWORD4>
235 <KEYWORD4>DefaultFontSize</KEYWORD4>
236 <KEYWORD4>DefaultFontColor</KEYWORD4>
237 <KEYWORD4>FontStyle</KEYWORD4>
238 <KEYWORD4>FontName</KEYWORD4>
239 <KEYWORD4>FontSize</KEYWORD4>
240 <KEYWORD4>FontColor</KEYWORD4>
241 <KEYWORD4>Color</KEYWORD4>
242 <KEYWORD4>Thickness</KEYWORD4>
244 <KEYWORD4>scale</KEYWORD4>
245 <KEYWORD4>width</KEYWORD4>
246 <KEYWORD4>classAttributeIconSize</KEYWORD4>
248 <KEYWORD4>componentStyle</KEYWORD4>
249 <KEYWORD4>InterfaceBackgroundColor</KEYWORD4>
250 <KEYWORD4>InterfaceBorderColor</KEYWORD4>
251 <KEYWORD4>BackgroundColor</KEYWORD4>
252 <KEYWORD4>BorderColor</KEYWORD4>
253 <KEYWORD4>ArrowFontName</KEYWORD4>
254 <KEYWORD4>ArrowFontColor</KEYWORD4>
255 <KEYWORD4>databaseBackgroundColor</KEYWORD4>
257 <KEYWORD4>ArrowColor</KEYWORD4>
258 <KEYWORD4>ActorBorderColor</KEYWORD4>
259 <KEYWORD4>LifeLineBorderColor</KEYWORD4>
260 <KEYWORD4>LifeLineBackgroundColor</KEYWORD4>
261 <KEYWORD4>ParticipantBorderColor</KEYWORD4>
262 <KEYWORD4>ParticipantBackgroundColor</KEYWORD4>
263 <KEYWORD4>ParticipantFontName</KEYWORD4>
264 <KEYWORD4>ParticipantFontSize</KEYWORD4>
265 <KEYWORD4>ParticipantFontColor</KEYWORD4>
266 <KEYWORD4>ActorBackgroundColor</KEYWORD4>
267 <KEYWORD4>ActorFontColor</KEYWORD4>
268 <KEYWORD4>ActorFontSize</KEYWORD4>
269 <KEYWORD4>ActorFontName</KEYWORD4>
271 <LABEL>AliceBlue</LABEL>
272 <LABEL>AntiqueWhite</LABEL>
274 <LABEL>Aquamarine</LABEL>
277 <LABEL>Bisque</LABEL>
279 <LABEL>BlanchedAlmond</LABEL>
281 <LABEL>BlueViolet</LABEL>
283 <LABEL>BurlyWood</LABEL>
284 <LABEL>CadetBlue</LABEL>
285 <LABEL>Chartreuse</LABEL>
286 <LABEL>Chocolate</LABEL>
288 <LABEL>CornflowerBlue</LABEL>
289 <LABEL>Cornsilk</LABEL>
290 <LABEL>Crimson</LABEL>
292 <LABEL>DarkBlue</LABEL>
293 <LABEL>DarkCyan</LABEL>
294 <LABEL>DarkGoldenRod</LABEL>
295 <LABEL>DarkGray</LABEL>
296 <LABEL>DarkGrey</LABEL>
297 <LABEL>DarkGreen</LABEL>
298 <LABEL>DarkKhaki</LABEL>
299 <LABEL>DarkMagenta</LABEL>
300 <LABEL>DarkOliveGreen</LABEL>
301 <LABEL>Darkorange</LABEL>
302 <LABEL>DarkOrchid</LABEL>
303 <LABEL>DarkRed</LABEL>
304 <LABEL>DarkSalmon</LABEL>
305 <LABEL>DarkSeaGreen</LABEL>
306 <LABEL>DarkSlateBlue</LABEL>
307 <LABEL>DarkSlateGray</LABEL>
308 <LABEL>DarkSlateGrey</LABEL>
309 <LABEL>DarkTurquoise</LABEL>
310 <LABEL>DarkViolet</LABEL>
311 <LABEL>DeepPink</LABEL>
312 <LABEL>DeepSkyBlue</LABEL>
313 <LABEL>DimGray</LABEL>
314 <LABEL>DimGrey</LABEL>
315 <LABEL>DodgerBlue</LABEL>
316 <LABEL>FireBrick</LABEL>
317 <LABEL>FloralWhite</LABEL>
318 <LABEL>ForestGreen</LABEL>
319 <LABEL>Fuchsia</LABEL>
320 <LABEL>Gainsboro</LABEL>
321 <LABEL>GhostWhite</LABEL>
323 <LABEL>GoldenRod</LABEL>
327 <LABEL>GreenYellow</LABEL>
328 <LABEL>HoneyDew</LABEL>
329 <LABEL>HotPink</LABEL>
330 <LABEL>IndianRed</LABEL>
331 <LABEL>Indigo</LABEL>
334 <LABEL>Lavender</LABEL>
335 <LABEL>LavenderBlush</LABEL>
336 <LABEL>LawnGreen</LABEL>
337 <LABEL>LemonChiffon</LABEL>
338 <LABEL>LightBlue</LABEL>
339 <LABEL>LightCoral</LABEL>
340 <LABEL>LightCyan</LABEL>
341 <LABEL>LightGoldenRodYellow</LABEL>
342 <LABEL>LightGray</LABEL>
343 <LABEL>LightGrey</LABEL>
344 <LABEL>LightGreen</LABEL>
345 <LABEL>LightPink</LABEL>
346 <LABEL>LightSalmon</LABEL>
347 <LABEL>LightSeaGreen</LABEL>
348 <LABEL>LightSkyBlue</LABEL>
349 <LABEL>LightSlateGray</LABEL>
350 <LABEL>LightSlateGrey</LABEL>
351 <LABEL>LightSteelBlue</LABEL>
352 <LABEL>LightYellow</LABEL>
354 <LABEL>LimeGreen</LABEL>
356 <LABEL>Magenta</LABEL>
357 <LABEL>Maroon</LABEL>
358 <LABEL>MediumAquaMarine</LABEL>
359 <LABEL>MediumBlue</LABEL>
360 <LABEL>MediumOrchid</LABEL>
361 <LABEL>MediumPurple</LABEL>
362 <LABEL>MediumSeaGreen</LABEL>
363 <LABEL>MediumSlateBlue</LABEL>
364 <LABEL>MediumSpringGreen</LABEL>
365 <LABEL>MediumTurquoise</LABEL>
366 <LABEL>MediumVioletRed</LABEL>
367 <LABEL>MidnightBlue</LABEL>
368 <LABEL>MintCream</LABEL>
369 <LABEL>MistyRose</LABEL>
370 <LABEL>Moccasin</LABEL>
371 <LABEL>NavajoWhite</LABEL>
373 <LABEL>OldLace</LABEL>
375 <LABEL>OliveDrab</LABEL>
376 <LABEL>Orange</LABEL>
377 <LABEL>OrangeRed</LABEL>
378 <LABEL>Orchid</LABEL>
379 <LABEL>PaleGoldenRod</LABEL>
380 <LABEL>PaleGreen</LABEL>
381 <LABEL>PaleTurquoise</LABEL>
382 <LABEL>PaleVioletRed</LABEL>
383 <LABEL>PapayaWhip</LABEL>
384 <LABEL>PeachPuff</LABEL>
388 <LABEL>PowderBlue</LABEL>
389 <LABEL>Purple</LABEL>
391 <LABEL>RosyBrown</LABEL>
392 <LABEL>RoyalBlue</LABEL>
393 <LABEL>SaddleBrown</LABEL>
394 <LABEL>Salmon</LABEL>
395 <LABEL>SandyBrown</LABEL>
396 <LABEL>SeaGreen</LABEL>
397 <LABEL>SeaShell</LABEL>
398 <LABEL>Sienna</LABEL>
399 <LABEL>Silver</LABEL>
400 <LABEL>SkyBlue</LABEL>
401 <LABEL>SlateBlue</LABEL>
402 <LABEL>SlateGray</LABEL>
403 <LABEL>SlateGrey</LABEL>
405 <LABEL>SpringGreen</LABEL>
406 <LABEL>SteelBlue</LABEL>
409 <LABEL>Thistle</LABEL>
410 <LABEL>Tomato</LABEL>
411 <LABEL>Turquoise</LABEL>
412 <LABEL>Violet</LABEL>
415 <LABEL>WhiteSmoke</LABEL>
416 <LABEL>Yellow</LABEL>
417 <LABEL>YellowGreen</LABEL>