66
|
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> |