38 include('user-variables'), |
38 include('user-variables'), |
39 include('operators'), |
39 include('operators'), |
40 include('numeric-literals'), |
40 include('numeric-literals'), |
41 include('string-literals'), |
41 include('string-literals'), |
42 include('all-whitespace'), |
42 include('all-whitespace'), |
43 (r'[^\s]', Text), |
43 (r'\S', Text), |
44 ], |
44 ], |
45 'comments': [ |
45 'comments': [ |
46 (r';[^\r\n]*', Comment.Single), |
46 (r';[^\r\n]*', Comment.Single), |
47 (r'/\*', Comment.Multiline, 'in-comment'), |
47 (r'/\*', Comment.Multiline, 'in-comment'), |
48 ], |
48 ], |
50 (r'\*/', Comment.Multiline, '#pop'), |
50 (r'\*/', Comment.Multiline, '#pop'), |
51 (r'[^*/]+', Comment.Multiline), |
51 (r'[^*/]+', Comment.Multiline), |
52 (r'[*/]', Comment.Multiline) |
52 (r'[*/]', Comment.Multiline) |
53 ], |
53 ], |
54 'labels': [ |
54 'labels': [ |
55 (r'(?i)^(\s*)(:[0-9a-z_]+)', bygroups(Text, Name.Label)), |
55 (r'(?i)^(\s*)(:[a-z0-9_]+)', bygroups(Text, Name.Label)), |
56 ], |
56 ], |
57 'commands': [ |
57 'commands': [ |
58 ( |
58 ( |
59 r'(?i)\b(' |
59 r'(?i)\b(' |
60 r'basename|beep|bplusrecv|bplussend|break|bringupbox|' |
60 r'basename|' |
61 r'callmenu|changedir|checksum16|checksum16file|' |
61 r'beep|' |
62 r'checksum32|checksum32file|checksum8|checksum8file|' |
62 r'bplusrecv|' |
63 r'clearscreen|clipb2var|closesbox|closett|code2str|' |
63 r'bplussend|' |
64 r'connect|continue|crc16|crc16file|crc32|crc32file|' |
64 r'break|' |
65 r'cygconnect|delpassword|dirname|dirnamebox|disconnect|' |
65 r'bringupbox|' |
66 r'dispstr|do|else|elseif|enablekeyb|end|endif|enduntil|' |
66 # 'call' is handled separately. |
67 r'endwhile|exec|execcmnd|exit|expandenv|fileclose|' |
67 r'callmenu|' |
68 r'fileconcat|filecopy|filecreate|filedelete|filelock|' |
68 r'changedir|' |
69 r'filemarkptr|filenamebox|fileopen|fileread|filereadln|' |
69 r'checksum16|' |
70 r'filerename|filesearch|fileseek|fileseekback|filestat|' |
70 r'checksum16file|' |
71 r'filestrseek|filestrseek2|filetruncate|fileunlock|' |
71 r'checksum32|' |
72 r'filewrite|filewriteln|findclose|findfirst|findnext|' |
72 r'checksum32file|' |
73 r'flushrecv|foldercreate|folderdelete|foldersearch|for|' |
73 r'checksum8|' |
74 r'getdate|getdir|getenv|getfileattr|gethostname|' |
74 r'checksum8file|' |
75 r'getipv4addr|getipv6addr|getmodemstatus|getpassword|' |
75 r'clearscreen|' |
76 r'getspecialfolder|gettime|gettitle|getttdir|getver|' |
76 r'clipb2var|' |
77 r'if|ifdefined|include|inputbox|int2str|intdim|' |
77 r'closesbox|' |
78 r'ispassword|kmtfinish|kmtget|kmtrecv|kmtsend|listbox|' |
78 r'closett|' |
79 r'loadkeymap|logautoclosemode|logclose|loginfo|logopen|' |
79 r'code2str|' |
80 r'logpause|logrotate|logstart|logwrite|loop|makepath|' |
80 r'connect|' |
81 r'messagebox|mpause|next|passwordbox|pause|quickvanrecv|' |
81 r'continue|' |
82 r'quickvansend|random|recvln|regexoption|restoresetup|' |
82 r'crc16|' |
83 r'return|rotateleft|rotateright|scprecv|scpsend|send|' |
83 r'crc16file|' |
84 r'sendbreak|sendbroadcast|sendfile|sendkcode|sendln|' |
84 r'crc32|' |
85 r'sendlnbroadcast|sendlnmulticast|sendmulticast|setbaud|' |
85 r'crc32file|' |
86 r'setdate|setdebug|setdir|setdlgpos|setdtr|setecho|' |
86 r'cygconnect|' |
87 r'setenv|setexitcode|setfileattr|setflowctrl|' |
87 r'delpassword|' |
88 r'setmulticastname|setpassword|setrts|setsync|settime|' |
88 r'dirname|' |
89 r'settitle|show|showtt|sprintf|sprintf2|statusbox|' |
89 r'dirnamebox|' |
90 r'str2code|str2int|strcompare|strconcat|strcopy|strdim|' |
90 r'disconnect|' |
91 r'strinsert|strjoin|strlen|strmatch|strremove|' |
91 r'dispstr|' |
92 r'strreplace|strscan|strspecial|strsplit|strtrim|' |
92 r'do|' |
93 r'testlink|then|tolower|toupper|unlink|until|uptime|' |
93 r'else|' |
94 r'var2clipb|wait|wait4all|waitevent|waitln|waitn|' |
94 r'elseif|' |
95 r'waitrecv|waitregex|while|xmodemrecv|xmodemsend|' |
95 r'enablekeyb|' |
96 r'yesnobox|ymodemrecv|ymodemsend|zmodemrecv|zmodemsend' |
96 r'end|' |
|
97 r'endif|' |
|
98 r'enduntil|' |
|
99 r'endwhile|' |
|
100 r'exec|' |
|
101 r'execcmnd|' |
|
102 r'exit|' |
|
103 r'expandenv|' |
|
104 r'fileclose|' |
|
105 r'fileconcat|' |
|
106 r'filecopy|' |
|
107 r'filecreate|' |
|
108 r'filedelete|' |
|
109 r'filelock|' |
|
110 r'filemarkptr|' |
|
111 r'filenamebox|' |
|
112 r'fileopen|' |
|
113 r'fileread|' |
|
114 r'filereadln|' |
|
115 r'filerename|' |
|
116 r'filesearch|' |
|
117 r'fileseek|' |
|
118 r'fileseekback|' |
|
119 r'filestat|' |
|
120 r'filestrseek|' |
|
121 r'filestrseek2|' |
|
122 r'filetruncate|' |
|
123 r'fileunlock|' |
|
124 r'filewrite|' |
|
125 r'filewriteln|' |
|
126 r'findclose|' |
|
127 r'findfirst|' |
|
128 r'findnext|' |
|
129 r'flushrecv|' |
|
130 r'foldercreate|' |
|
131 r'folderdelete|' |
|
132 r'foldersearch|' |
|
133 r'for|' |
|
134 r'getdate|' |
|
135 r'getdir|' |
|
136 r'getenv|' |
|
137 r'getfileattr|' |
|
138 r'gethostname|' |
|
139 r'getipv4addr|' |
|
140 r'getipv6addr|' |
|
141 r'getmodemstatus|' |
|
142 r'getpassword|' |
|
143 r'getspecialfolder|' |
|
144 r'gettime|' |
|
145 r'gettitle|' |
|
146 r'getttdir|' |
|
147 r'getver|' |
|
148 # 'goto' is handled separately. |
|
149 r'if|' |
|
150 r'ifdefined|' |
|
151 r'include|' |
|
152 r'inputbox|' |
|
153 r'int2str|' |
|
154 r'intdim|' |
|
155 r'ispassword|' |
|
156 r'kmtfinish|' |
|
157 r'kmtget|' |
|
158 r'kmtrecv|' |
|
159 r'kmtsend|' |
|
160 r'listbox|' |
|
161 r'loadkeymap|' |
|
162 r'logautoclosemode|' |
|
163 r'logclose|' |
|
164 r'loginfo|' |
|
165 r'logopen|' |
|
166 r'logpause|' |
|
167 r'logrotate|' |
|
168 r'logstart|' |
|
169 r'logwrite|' |
|
170 r'loop|' |
|
171 r'makepath|' |
|
172 r'messagebox|' |
|
173 r'mpause|' |
|
174 r'next|' |
|
175 r'passwordbox|' |
|
176 r'pause|' |
|
177 r'quickvanrecv|' |
|
178 r'quickvansend|' |
|
179 r'random|' |
|
180 r'recvln|' |
|
181 r'regexoption|' |
|
182 r'restoresetup|' |
|
183 r'return|' |
|
184 r'rotateleft|' |
|
185 r'rotateright|' |
|
186 r'scprecv|' |
|
187 r'scpsend|' |
|
188 r'send|' |
|
189 r'sendbreak|' |
|
190 r'sendbroadcast|' |
|
191 r'sendfile|' |
|
192 r'sendkcode|' |
|
193 r'sendln|' |
|
194 r'sendlnbroadcast|' |
|
195 r'sendlnmulticast|' |
|
196 r'sendmulticast|' |
|
197 r'setbaud|' |
|
198 r'setdate|' |
|
199 r'setdebug|' |
|
200 r'setdir|' |
|
201 r'setdlgpos|' |
|
202 r'setdtr|' |
|
203 r'setecho|' |
|
204 r'setenv|' |
|
205 r'setexitcode|' |
|
206 r'setfileattr|' |
|
207 r'setflowctrl|' |
|
208 r'setmulticastname|' |
|
209 r'setpassword|' |
|
210 r'setrts|' |
|
211 r'setspeed|' |
|
212 r'setsync|' |
|
213 r'settime|' |
|
214 r'settitle|' |
|
215 r'show|' |
|
216 r'showtt|' |
|
217 r'sprintf|' |
|
218 r'sprintf2|' |
|
219 r'statusbox|' |
|
220 r'str2code|' |
|
221 r'str2int|' |
|
222 r'strcompare|' |
|
223 r'strconcat|' |
|
224 r'strcopy|' |
|
225 r'strdim|' |
|
226 r'strinsert|' |
|
227 r'strjoin|' |
|
228 r'strlen|' |
|
229 r'strmatch|' |
|
230 r'strremove|' |
|
231 r'strreplace|' |
|
232 r'strscan|' |
|
233 r'strspecial|' |
|
234 r'strsplit|' |
|
235 r'strtrim|' |
|
236 r'testlink|' |
|
237 r'then|' |
|
238 r'tolower|' |
|
239 r'toupper|' |
|
240 r'unlink|' |
|
241 r'until|' |
|
242 r'uptime|' |
|
243 r'var2clipb|' |
|
244 r'wait|' |
|
245 r'wait4all|' |
|
246 r'waitevent|' |
|
247 r'waitln|' |
|
248 r'waitn|' |
|
249 r'waitrecv|' |
|
250 r'waitregex|' |
|
251 r'while|' |
|
252 r'xmodemrecv|' |
|
253 r'xmodemsend|' |
|
254 r'yesnobox|' |
|
255 r'ymodemrecv|' |
|
256 r'ymodemsend|' |
|
257 r'zmodemrecv|' |
|
258 r'zmodemsend' |
97 r')\b', |
259 r')\b', |
98 Keyword, |
260 Keyword, |
99 ), |
261 ), |
100 ( |
262 (r'(?i)(call|goto)([ \t]+)([a-z0-9_]+)', |
101 r'(?i)(call|goto)([ \t]+)([0-9a-z_]+)', |
263 bygroups(Keyword, Text, Name.Label)), |
102 bygroups(Keyword, Text, Name.Label), |
|
103 ) |
|
104 ], |
264 ], |
105 'builtin-variables': [ |
265 'builtin-variables': [ |
106 ( |
266 ( |
107 r'(?i)(' |
267 r'(?i)(' |
108 r'groupmatchstr1|groupmatchstr2|groupmatchstr3|' |
268 r'groupmatchstr1|' |
109 r'groupmatchstr4|groupmatchstr5|groupmatchstr6|' |
269 r'groupmatchstr2|' |
110 r'groupmatchstr7|groupmatchstr8|groupmatchstr9|' |
270 r'groupmatchstr3|' |
111 r'param1|param2|param3|param4|param5|param6|' |
271 r'groupmatchstr4|' |
112 r'param7|param8|param9|paramcnt|params|' |
272 r'groupmatchstr5|' |
113 r'inputstr|matchstr|mtimeout|result|timeout' |
273 r'groupmatchstr6|' |
|
274 r'groupmatchstr7|' |
|
275 r'groupmatchstr8|' |
|
276 r'groupmatchstr9|' |
|
277 r'inputstr|' |
|
278 r'matchstr|' |
|
279 r'mtimeout|' |
|
280 r'param1|' |
|
281 r'param2|' |
|
282 r'param3|' |
|
283 r'param4|' |
|
284 r'param5|' |
|
285 r'param6|' |
|
286 r'param7|' |
|
287 r'param8|' |
|
288 r'param9|' |
|
289 r'paramcnt|' |
|
290 r'params|' |
|
291 r'result|' |
|
292 r'timeout' |
114 r')\b', |
293 r')\b', |
115 Name.Builtin |
294 Name.Builtin |
116 ), |
295 ), |
117 ], |
296 ], |
118 'user-variables': [ |
297 'user-variables': [ |
119 (r'(?i)[A-Z_][A-Z0-9_]*', Name.Variable), |
298 (r'(?i)[a-z_][a-z0-9_]*', Name.Variable), |
120 ], |
299 ], |
121 'numeric-literals': [ |
300 'numeric-literals': [ |
122 (r'(-?)([0-9]+)', bygroups(Operator, Number.Integer)), |
301 (r'(-?)([0-9]+)', bygroups(Operator, Number.Integer)), |
123 (r'(?i)\$[0-9a-f]+', Number.Hex), |
302 (r'(?i)\$[0-9a-f]+', Number.Hex), |
124 ], |
303 ], |
126 (r'(?i)#(?:[0-9]+|\$[0-9a-f]+)', String.Char), |
305 (r'(?i)#(?:[0-9]+|\$[0-9a-f]+)', String.Char), |
127 (r"'", String.Single, 'in-single-string'), |
306 (r"'", String.Single, 'in-single-string'), |
128 (r'"', String.Double, 'in-double-string'), |
307 (r'"', String.Double, 'in-double-string'), |
129 ], |
308 ], |
130 'in-general-string': [ |
309 'in-general-string': [ |
131 (r'[\\][\\nt]', String.Escape), # Only three escapes are supported. |
310 (r'\\[\\nt]', String.Escape), # Only three escapes are supported. |
132 (r'.', String), |
311 (r'.', String), |
133 ], |
312 ], |
134 'in-single-string': [ |
313 'in-single-string': [ |
135 (r"'", String.Single, '#pop'), |
314 (r"'", String.Single, '#pop'), |
136 include('in-general-string'), |
315 include('in-general-string'), |
143 (r'and|not|or|xor', Operator.Word), |
322 (r'and|not|or|xor', Operator.Word), |
144 (r'[!%&*+<=>^~\|\/-]+', Operator), |
323 (r'[!%&*+<=>^~\|\/-]+', Operator), |
145 (r'[()]', String.Symbol), |
324 (r'[()]', String.Symbol), |
146 ], |
325 ], |
147 'all-whitespace': [ |
326 'all-whitespace': [ |
148 (r'[\s]+', Text), |
327 (r'\s+', Text), |
149 ], |
328 ], |
150 } |
329 } |
151 |
330 |
152 # Turtle and Tera Term macro files share the same file extension |
331 # Turtle and Tera Term macro files share the same file extension |
153 # but each has a recognizable and distinct syntax. |
332 # but each has a recognizable and distinct syntax. |
154 def analyse_text(text): |
333 def analyse_text(text): |
155 result = 0.0 |
|
156 if re.search(TeraTermLexer.tokens['commands'][0][0], text): |
334 if re.search(TeraTermLexer.tokens['commands'][0][0], text): |
157 result += 0.01 |
335 return 0.01 |
158 return result |
|