...
1<lexer>
2 <config>
3 <name>Idris</name>
4 <alias>idris</alias>
5 <alias>idr</alias>
6 <filename>*.idr</filename>
7 <mime_type>text/x-idris</mime_type>
8 </config>
9 <rules>
10 <state name="escape">
11 <rule pattern="[abfnrtv"\'&\\]">
12 <token type="LiteralStringEscape"/>
13 <pop depth="1"/>
14 </rule>
15 <rule pattern="\^[][A-Z@^_]">
16 <token type="LiteralStringEscape"/>
17 <pop depth="1"/>
18 </rule>
19 <rule pattern="NUL|SOH|[SE]TX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|S[OI]|DLE|DC[1-4]|NAK|SYN|ETB|CAN|EM|SUB|ESC|[FGRU]S|SP|DEL">
20 <token type="LiteralStringEscape"/>
21 <pop depth="1"/>
22 </rule>
23 <rule pattern="o[0-7]+">
24 <token type="LiteralStringEscape"/>
25 <pop depth="1"/>
26 </rule>
27 <rule pattern="x[\da-fA-F]+">
28 <token type="LiteralStringEscape"/>
29 <pop depth="1"/>
30 </rule>
31 <rule pattern="\d+">
32 <token type="LiteralStringEscape"/>
33 <pop depth="1"/>
34 </rule>
35 <rule pattern="\s+\\">
36 <token type="LiteralStringEscape"/>
37 <pop depth="1"/>
38 </rule>
39 </state>
40 <state name="root">
41 <rule pattern="^(\s*)(%lib|link|flag|include|hide|freeze|access|default|logging|dynamic|name|error_handlers|language)">
42 <bygroups>
43 <token type="Text"/>
44 <token type="KeywordReserved"/>
45 </bygroups>
46 </rule>
47 <rule pattern="(\s*)(--(?![!#$%&*+./<=>?@^|_~:\\]).*?)$">
48 <bygroups>
49 <token type="Text"/>
50 <token type="CommentSingle"/>
51 </bygroups>
52 </rule>
53 <rule pattern="(\s*)(\|{3}.*?)$">
54 <bygroups>
55 <token type="Text"/>
56 <token type="CommentSingle"/>
57 </bygroups>
58 </rule>
59 <rule pattern="(\s*)(\{-)">
60 <bygroups>
61 <token type="Text"/>
62 <token type="CommentMultiline"/>
63 </bygroups>
64 <push state="comment"/>
65 </rule>
66 <rule pattern="^(\s*)([^\s(){}]+)(\s*)(:)(\s*)">
67 <bygroups>
68 <token type="Text"/>
69 <token type="NameFunction"/>
70 <token type="Text"/>
71 <token type="OperatorWord"/>
72 <token type="Text"/>
73 </bygroups>
74 </rule>
75 <rule pattern="\b(case|class|data|default|using|do|else|if|in|infix[lr]?|instance|rewrite|auto|namespace|codata|mutual|private|public|abstract|total|partial|let|proof|of|then|static|where|_|with|pattern|term|syntax|prefix|postulate|parameters|record|dsl|impossible|implicit|tactics|intros|intro|compute|refine|exact|trivial)(?!\')\b">
76 <token type="KeywordReserved"/>
77 </rule>
78 <rule pattern="(import|module)(\s+)">
79 <bygroups>
80 <token type="KeywordReserved"/>
81 <token type="Text"/>
82 </bygroups>
83 <push state="module"/>
84 </rule>
85 <rule pattern="('')?[A-Z][\w\']*">
86 <token type="KeywordType"/>
87 </rule>
88 <rule pattern="[a-z][\w\']*">
89 <token type="Text"/>
90 </rule>
91 <rule pattern="(<-|::|->|=>|=)">
92 <token type="OperatorWord"/>
93 </rule>
94 <rule pattern="([(){}\[\]:!#$%&*+.\\/<=>?@^|~-]+)">
95 <token type="OperatorWord"/>
96 </rule>
97 <rule pattern="\d+[eE][+-]?\d+">
98 <token type="LiteralNumberFloat"/>
99 </rule>
100 <rule pattern="\d+\.\d+([eE][+-]?\d+)?">
101 <token type="LiteralNumberFloat"/>
102 </rule>
103 <rule pattern="0[xX][\da-fA-F]+">
104 <token type="LiteralNumberHex"/>
105 </rule>
106 <rule pattern="\d+">
107 <token type="LiteralNumberInteger"/>
108 </rule>
109 <rule pattern="'">
110 <token type="LiteralStringChar"/>
111 <push state="character"/>
112 </rule>
113 <rule pattern=""">
114 <token type="LiteralString"/>
115 <push state="string"/>
116 </rule>
117 <rule pattern="[^\s(){}]+">
118 <token type="Text"/>
119 </rule>
120 <rule pattern="\s+?">
121 <token type="Text"/>
122 </rule>
123 </state>
124 <state name="module">
125 <rule pattern="\s+">
126 <token type="Text"/>
127 </rule>
128 <rule pattern="([A-Z][\w.]*)(\s+)(\()">
129 <bygroups>
130 <token type="NameNamespace"/>
131 <token type="Text"/>
132 <token type="Punctuation"/>
133 </bygroups>
134 <push state="funclist"/>
135 </rule>
136 <rule pattern="[A-Z][\w.]*">
137 <token type="NameNamespace"/>
138 <pop depth="1"/>
139 </rule>
140 </state>
141 <state name="funclist">
142 <rule pattern="\s+">
143 <token type="Text"/>
144 </rule>
145 <rule pattern="[A-Z]\w*">
146 <token type="KeywordType"/>
147 </rule>
148 <rule pattern="(_[\w\']+|[a-z][\w\']*)">
149 <token type="NameFunction"/>
150 </rule>
151 <rule pattern="--.*$">
152 <token type="CommentSingle"/>
153 </rule>
154 <rule pattern="\{-">
155 <token type="CommentMultiline"/>
156 <push state="comment"/>
157 </rule>
158 <rule pattern=",">
159 <token type="Punctuation"/>
160 </rule>
161 <rule pattern="[:!#$%&*+.\\/<=>?@^|~-]+">
162 <token type="Operator"/>
163 </rule>
164 <rule pattern="\(">
165 <token type="Punctuation"/>
166 <push state="funclist" state="funclist"/>
167 </rule>
168 <rule pattern="\)">
169 <token type="Punctuation"/>
170 <pop depth="2"/>
171 </rule>
172 </state>
173 <state name="comment">
174 <rule pattern="[^-{}]+">
175 <token type="CommentMultiline"/>
176 </rule>
177 <rule pattern="\{-">
178 <token type="CommentMultiline"/>
179 <push/>
180 </rule>
181 <rule pattern="-\}">
182 <token type="CommentMultiline"/>
183 <pop depth="1"/>
184 </rule>
185 <rule pattern="[-{}]">
186 <token type="CommentMultiline"/>
187 </rule>
188 </state>
189 <state name="character">
190 <rule pattern="[^\\']">
191 <token type="LiteralStringChar"/>
192 </rule>
193 <rule pattern="\\">
194 <token type="LiteralStringEscape"/>
195 <push state="escape"/>
196 </rule>
197 <rule pattern="'">
198 <token type="LiteralStringChar"/>
199 <pop depth="1"/>
200 </rule>
201 </state>
202 <state name="string">
203 <rule pattern="[^\\"]+">
204 <token type="LiteralString"/>
205 </rule>
206 <rule pattern="\\">
207 <token type="LiteralStringEscape"/>
208 <push state="escape"/>
209 </rule>
210 <rule pattern=""">
211 <token type="LiteralString"/>
212 <pop depth="1"/>
213 </rule>
214 </state>
215 </rules>
216</lexer>
View as plain text