1<lexer>
2 <config>
3 <name>ATL</name>
4 <alias>atl</alias>
5 <filename>*.atl</filename>
6 <mime_type>text/x-atl</mime_type>
7 <dot_all>true</dot_all>
8 </config>
9 <rules>
10 <state name="root">
11 <rule pattern="(--.*?)(\n)">
12 <bygroups>
13 <token type="CommentSingle" />
14 <token type="TextWhitespace" />
15 </bygroups>
16 </rule>
17 <rule pattern="(and|distinct|endif|else|for|foreach|if|implies|in|let|not|or|self|super|then|thisModule|xor)\b">
18 <token type="Keyword" />
19 </rule>
20 <rule pattern="(OclUndefined|true|false|#\w+)\b">
21 <token type="KeywordConstant" />
22 </rule>
23 <rule pattern="(module|query|library|create|from|to|uses)\b">
24 <token type="KeywordNamespace" />
25 </rule>
26 <rule pattern="(do)(\s*)({)">
27 <bygroups>
28 <token type="KeywordNamespace" />
29 <token type="TextWhitespace" />
30 <token type="Punctuation" />
31 </bygroups>
32 </rule>
33 <rule pattern="(abstract|endpoint|entrypoint|lazy|unique)(\s+)">
34 <bygroups>
35 <token type="KeywordDeclaration" />
36 <token type="TextWhitespace" />
37 </bygroups>
38 </rule>
39 <rule pattern="(rule)(\s+)">
40 <bygroups>
41 <token type="KeywordNamespace" />
42 <token type="TextWhitespace" />
43 </bygroups>
44 </rule>
45 <rule pattern="(helper)(\s+)">
46 <bygroups>
47 <token type="KeywordNamespace" />
48 <token type="TextWhitespace" />
49 </bygroups>
50 </rule>
51 <rule pattern="(context)(\s+)">
52 <bygroups>
53 <token type="KeywordNamespace" />
54 <token type="TextWhitespace" />
55 </bygroups>
56 </rule>
57 <rule pattern="(def)(\s*)(:)(\s*)">
58 <bygroups>
59 <token type="KeywordNamespace" />
60 <token type="TextWhitespace" />
61 <token type="Punctuation" />
62 <token type="TextWhitespace" />
63 </bygroups>
64 </rule>
65 <rule pattern="(Bag|Boolean|Integer|OrderedSet|Real|Sequence|Set|String|Tuple)">
66 <token type="KeywordType" />
67 </rule>
68 <rule pattern="(\w+)(\s*)(<-|<:=)">
69 <bygroups>
70 <token type="NameNamespace" />
71 <token type="TextWhitespace" />
72 <token type="Punctuation" />
73 </bygroups>
74 </rule>
75 <rule pattern="#"">
76 <token type="KeywordConstant" />
77 <push state="quotedenumliteral" />
78 </rule>
79 <rule pattern=""">
80 <token type="NameNamespace" />
81 <push state="quotedname" />
82 </rule>
83 <rule pattern="[^\S\n]+">
84 <token type="TextWhitespace" />
85 </rule>
86 <rule pattern="'">
87 <token type="LiteralString" />
88 <push state="string" />
89 </rule>
90 <rule
91 pattern="[0-9]*\.[0-9]+">
92 <token type="LiteralNumberFloat" />
93 </rule>
94 <rule pattern="0|[1-9][0-9]*">
95 <token type="LiteralNumberInteger" />
96 </rule>
97 <rule pattern="[*<>+=/-]">
98 <token type="Operator" />
99 </rule>
100 <rule pattern="([{}();:.,!|]|->)">
101 <token type="Punctuation" />
102 </rule>
103 <rule pattern="\n">
104 <token type="TextWhitespace" />
105 </rule>
106 <rule pattern="\w+">
107 <token type="NameNamespace" />
108 </rule>
109 </state>
110 <state name="string">
111 <rule pattern="[^\\']+">
112 <token type="LiteralString" />
113 </rule>
114 <rule pattern="\\\\">
115 <token type="LiteralString" />
116 </rule>
117 <rule pattern="\\'">
118 <token type="LiteralString" />
119 </rule>
120 <rule pattern="\\">
121 <token type="LiteralString" />
122 </rule>
123 <rule pattern="'">
124 <token type="LiteralString" />
125 <pop depth="1" />
126 </rule>
127 </state>
128 <state name="quotedname">
129 <rule pattern="[^\\"]+">
130 <token type="NameNamespace" />
131 </rule>
132 <rule pattern="\\\\">
133 <token type="NameNamespace" />
134 </rule>
135 <rule pattern="\\"">
136 <token type="NameNamespace" />
137 </rule>
138 <rule pattern="\\">
139 <token type="NameNamespace" />
140 </rule>
141 <rule pattern=""">
142 <token type="NameNamespace" />
143 <pop depth="1" />
144 </rule>
145 </state>
146 <state name="quotedenumliteral">
147 <rule pattern="[^\\"]+">
148 <token type="KeywordConstant" />
149 </rule>
150 <rule pattern="\\\\">
151 <token type="KeywordConstant" />
152 </rule>
153 <rule pattern="\\"">
154 <token type="KeywordConstant" />
155 </rule>
156 <rule pattern="\\">
157 <token type="KeywordConstant" />
158 </rule>
159 <rule pattern=""">
160 <token type="KeywordConstant" />
161 <pop depth="1" />
162 </rule>
163 </state>
164 </rules>
165</lexer>