svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.utils / src / main / java / org / gvsig / utils / console / jedit / PerlTokenMarker.java @ 40561
History | View | Annotate | Download (21.2 KB)
1 |
/**
|
---|---|
2 |
* gvSIG. Desktop Geographic Information System.
|
3 |
*
|
4 |
* Copyright (C) 2007-2013 gvSIG Association.
|
5 |
*
|
6 |
* This program is free software; you can redistribute it and/or
|
7 |
* modify it under the terms of the GNU General Public License
|
8 |
* as published by the Free Software Foundation; either version 3
|
9 |
* of the License, or (at your option) any later version.
|
10 |
*
|
11 |
* This program is distributed in the hope that it will be useful,
|
12 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14 |
* GNU General Public License for more details.
|
15 |
*
|
16 |
* You should have received a copy of the GNU General Public License
|
17 |
* along with this program; if not, write to the Free Software
|
18 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
19 |
* MA 02110-1301, USA.
|
20 |
*
|
21 |
* For any additional information, do not hesitate to contact us
|
22 |
* at info AT gvsig.com, or visit our website www.gvsig.com.
|
23 |
*/
|
24 |
package org.gvsig.utils.console.jedit; |
25 |
/*
|
26 |
* PerlTokenMarker.java - Perl token marker
|
27 |
* Copyright (C) 1998, 1999 Slava Pestov
|
28 |
*
|
29 |
* You may use and modify this package for any purpose. Redistribution is
|
30 |
* permitted, in both source and binary form, provided that this notice
|
31 |
* remains intact in all source distributions of this package.
|
32 |
*/
|
33 |
|
34 |
import javax.swing.text.Segment; |
35 |
|
36 |
/**
|
37 |
* Perl token marker.
|
38 |
*
|
39 |
* @author Slava Pestov
|
40 |
* @version $Id$
|
41 |
*/
|
42 |
public class PerlTokenMarker extends TokenMarker |
43 |
{ |
44 |
// public members
|
45 |
public static final byte S_ONE = Token.INTERNAL_FIRST; |
46 |
public static final byte S_TWO = (byte)(Token.INTERNAL_FIRST + 1); |
47 |
public static final byte S_END = (byte)(Token.INTERNAL_FIRST + 2); |
48 |
|
49 |
public PerlTokenMarker()
|
50 |
{ |
51 |
this(getKeywords());
|
52 |
} |
53 |
|
54 |
public PerlTokenMarker(KeywordMap keywords)
|
55 |
{ |
56 |
this.keywords = keywords;
|
57 |
} |
58 |
|
59 |
public byte markTokensImpl(byte _token, Segment line, int lineIndex) |
60 |
{ |
61 |
char[] array = line.array; |
62 |
int offset = line.offset;
|
63 |
token = _token; |
64 |
lastOffset = offset; |
65 |
lastKeyword = offset; |
66 |
matchChar = '\0';
|
67 |
matchCharBracket = false;
|
68 |
matchSpacesAllowed = false;
|
69 |
int length = line.count + offset;
|
70 |
|
71 |
if(token == Token.LITERAL1 && lineIndex != 0 |
72 |
&& lineInfo[lineIndex - 1].obj != null) |
73 |
{ |
74 |
String str = (String)lineInfo[lineIndex - 1].obj; |
75 |
if(str != null && str.length() == line.count |
76 |
&& SyntaxUtilities.regionMatches(false,line,
|
77 |
offset,str)) |
78 |
{ |
79 |
addToken(line.count,token); |
80 |
return Token.NULL;
|
81 |
} |
82 |
else
|
83 |
{ |
84 |
addToken(line.count,token); |
85 |
lineInfo[lineIndex].obj = str; |
86 |
return token;
|
87 |
} |
88 |
} |
89 |
|
90 |
boolean backslash = false; |
91 |
loop: for(int i = offset; i < length; i++) |
92 |
{ |
93 |
int i1 = (i+1); |
94 |
|
95 |
char c = array[i];
|
96 |
if(c == '\\') |
97 |
{ |
98 |
backslash = !backslash; |
99 |
continue;
|
100 |
} |
101 |
|
102 |
switch(token)
|
103 |
{ |
104 |
case Token.NULL:
|
105 |
switch(c)
|
106 |
{ |
107 |
case '#': |
108 |
if(doKeyword(line,i,c))
|
109 |
break;
|
110 |
if(backslash)
|
111 |
backslash = false;
|
112 |
else
|
113 |
{ |
114 |
addToken(i - lastOffset,token); |
115 |
addToken(length - i,Token.COMMENT1); |
116 |
lastOffset = lastKeyword = length; |
117 |
break loop;
|
118 |
} |
119 |
break;
|
120 |
case '=': |
121 |
backslash = false;
|
122 |
if(i == offset)
|
123 |
{ |
124 |
token = Token.COMMENT2; |
125 |
addToken(length - i,token); |
126 |
lastOffset = lastKeyword = length; |
127 |
break loop;
|
128 |
} |
129 |
else
|
130 |
doKeyword(line,i,c); |
131 |
break;
|
132 |
case '$': case '&': case '%': case '@': |
133 |
backslash = false;
|
134 |
if(doKeyword(line,i,c))
|
135 |
break;
|
136 |
if(length - i > 1) |
137 |
{ |
138 |
if(c == '&' && (array[i1] == '&' |
139 |
|| Character.isWhitespace(
|
140 |
array[i1]))) |
141 |
i++; |
142 |
else
|
143 |
{ |
144 |
addToken(i - lastOffset,token); |
145 |
lastOffset = lastKeyword = i; |
146 |
token = Token.KEYWORD2; |
147 |
} |
148 |
} |
149 |
break;
|
150 |
case '"': |
151 |
if(doKeyword(line,i,c))
|
152 |
break;
|
153 |
if(backslash)
|
154 |
backslash = false;
|
155 |
else
|
156 |
{ |
157 |
addToken(i - lastOffset,token); |
158 |
token = Token.LITERAL1; |
159 |
lineInfo[lineIndex].obj = null;
|
160 |
lastOffset = lastKeyword = i; |
161 |
} |
162 |
break;
|
163 |
case '\'': |
164 |
if(backslash)
|
165 |
backslash = false;
|
166 |
else
|
167 |
{ |
168 |
int oldLastKeyword = lastKeyword;
|
169 |
if(doKeyword(line,i,c))
|
170 |
break;
|
171 |
if(i != oldLastKeyword)
|
172 |
break;
|
173 |
addToken(i - lastOffset,token); |
174 |
token = Token.LITERAL2; |
175 |
lastOffset = lastKeyword = i; |
176 |
} |
177 |
break;
|
178 |
case '`': |
179 |
if(doKeyword(line,i,c))
|
180 |
break;
|
181 |
if(backslash)
|
182 |
backslash = false;
|
183 |
else
|
184 |
{ |
185 |
addToken(i - lastOffset,token); |
186 |
token = Token.OPERATOR; |
187 |
lastOffset = lastKeyword = i; |
188 |
} |
189 |
break;
|
190 |
case '<': |
191 |
if(doKeyword(line,i,c))
|
192 |
break;
|
193 |
if(backslash)
|
194 |
backslash = false;
|
195 |
else
|
196 |
{ |
197 |
if(length - i > 2 && array[i1] == '<' |
198 |
&& !Character.isWhitespace(array[i+2])) |
199 |
{ |
200 |
addToken(i - lastOffset,token); |
201 |
lastOffset = lastKeyword = i; |
202 |
token = Token.LITERAL1; |
203 |
int len = length - (i+2); |
204 |
if(array[length - 1] == ';') |
205 |
len--; |
206 |
lineInfo[lineIndex].obj = |
207 |
createReadinString(array,i + 2,len);
|
208 |
} |
209 |
} |
210 |
break;
|
211 |
case ':': |
212 |
backslash = false;
|
213 |
if(doKeyword(line,i,c))
|
214 |
break;
|
215 |
// Doesn't pick up all labels,
|
216 |
// but at least doesn't mess up
|
217 |
// XXX::YYY
|
218 |
if(lastKeyword != 0) |
219 |
break;
|
220 |
addToken(i1 - lastOffset,Token.LABEL); |
221 |
lastOffset = lastKeyword = i1; |
222 |
break;
|
223 |
case '-': |
224 |
backslash = false;
|
225 |
if(doKeyword(line,i,c))
|
226 |
break;
|
227 |
if(i != lastKeyword || length - i <= 1) |
228 |
break;
|
229 |
switch(array[i1])
|
230 |
{ |
231 |
case 'r': case 'w': case 'x': |
232 |
case 'o': case 'R': case 'W': |
233 |
case 'X': case 'O': case 'e': |
234 |
case 'z': case 's': case 'f': |
235 |
case 'd': case 'l': case 'p': |
236 |
case 'S': case 'b': case 'c': |
237 |
case 't': case 'u': case 'g': |
238 |
case 'k': case 'T': case 'B': |
239 |
case 'M': case 'A': case 'C': |
240 |
addToken(i - lastOffset,token); |
241 |
addToken(2,Token.KEYWORD3);
|
242 |
lastOffset = lastKeyword = i+2;
|
243 |
i++; |
244 |
} |
245 |
break;
|
246 |
case '/': case '?': |
247 |
if(doKeyword(line,i,c))
|
248 |
break;
|
249 |
if(length - i > 1) |
250 |
{ |
251 |
backslash = false;
|
252 |
char ch = array[i1];
|
253 |
if(Character.isWhitespace(ch)) |
254 |
break;
|
255 |
matchChar = c; |
256 |
matchSpacesAllowed = false;
|
257 |
addToken(i - lastOffset,token); |
258 |
token = S_ONE; |
259 |
lastOffset = lastKeyword = i; |
260 |
} |
261 |
break;
|
262 |
default:
|
263 |
backslash = false;
|
264 |
if(!Character.isLetterOrDigit(c) |
265 |
&& c != '_')
|
266 |
doKeyword(line,i,c); |
267 |
break;
|
268 |
} |
269 |
break;
|
270 |
case Token.KEYWORD2:
|
271 |
backslash = false;
|
272 |
// This test checks for an end-of-variable
|
273 |
// condition
|
274 |
if(!Character.isLetterOrDigit(c) && c != '_' |
275 |
&& c != '#' && c != '\'' && c != ':' |
276 |
&& c != '&')
|
277 |
{ |
278 |
// If this is the first character
|
279 |
// of the variable name ($'aaa)
|
280 |
// ignore it
|
281 |
if(i != offset && array[i-1] == '$') |
282 |
{ |
283 |
addToken(i1 - lastOffset,token); |
284 |
lastOffset = lastKeyword = i1; |
285 |
} |
286 |
// Otherwise, end of variable...
|
287 |
else
|
288 |
{ |
289 |
addToken(i - lastOffset,token); |
290 |
lastOffset = lastKeyword = i; |
291 |
// Wind back so that stuff
|
292 |
// like $hello$fred is picked
|
293 |
// up
|
294 |
i--; |
295 |
token = Token.NULL; |
296 |
} |
297 |
} |
298 |
break;
|
299 |
case S_ONE: case S_TWO: |
300 |
if(backslash)
|
301 |
backslash = false;
|
302 |
else
|
303 |
{ |
304 |
if(matchChar == '\0') |
305 |
{ |
306 |
if(Character.isWhitespace(matchChar) |
307 |
&& !matchSpacesAllowed) |
308 |
break;
|
309 |
else
|
310 |
matchChar = c; |
311 |
} |
312 |
else
|
313 |
{ |
314 |
switch(matchChar)
|
315 |
{ |
316 |
case '(': |
317 |
matchChar = ')';
|
318 |
matchCharBracket = true;
|
319 |
break;
|
320 |
case '[': |
321 |
matchChar = ']';
|
322 |
matchCharBracket = true;
|
323 |
break;
|
324 |
case '{': |
325 |
matchChar = '}';
|
326 |
matchCharBracket = true;
|
327 |
break;
|
328 |
case '<': |
329 |
matchChar = '>';
|
330 |
matchCharBracket = true;
|
331 |
break;
|
332 |
default:
|
333 |
matchCharBracket = false;
|
334 |
break;
|
335 |
} |
336 |
if(c != matchChar)
|
337 |
break;
|
338 |
if(token == S_TWO)
|
339 |
{ |
340 |
token = S_ONE; |
341 |
if(matchCharBracket)
|
342 |
matchChar = '\0';
|
343 |
} |
344 |
else
|
345 |
{ |
346 |
token = S_END; |
347 |
addToken(i1 - lastOffset, |
348 |
Token.LITERAL2); |
349 |
lastOffset = lastKeyword = i1; |
350 |
} |
351 |
} |
352 |
} |
353 |
break;
|
354 |
case S_END:
|
355 |
backslash = false;
|
356 |
if(!Character.isLetterOrDigit(c) |
357 |
&& c != '_')
|
358 |
doKeyword(line,i,c); |
359 |
break;
|
360 |
case Token.COMMENT2:
|
361 |
backslash = false;
|
362 |
if(i == offset)
|
363 |
{ |
364 |
addToken(line.count,token); |
365 |
if(length - i > 3 && SyntaxUtilities |
366 |
.regionMatches(false,line,offset,"=cut")) |
367 |
token = Token.NULL; |
368 |
lastOffset = lastKeyword = length; |
369 |
break loop;
|
370 |
} |
371 |
break;
|
372 |
case Token.LITERAL1:
|
373 |
if(backslash)
|
374 |
backslash = false;
|
375 |
/* else if(c == '$')
|
376 |
backslash = true; */
|
377 |
else if(c == '"') |
378 |
{ |
379 |
addToken(i1 - lastOffset,token); |
380 |
token = Token.NULL; |
381 |
lastOffset = lastKeyword = i1; |
382 |
} |
383 |
break;
|
384 |
case Token.LITERAL2:
|
385 |
if(backslash)
|
386 |
backslash = false;
|
387 |
/* else if(c == '$')
|
388 |
backslash = true; */
|
389 |
else if(c == '\'') |
390 |
{ |
391 |
addToken(i1 - lastOffset,Token.LITERAL1); |
392 |
token = Token.NULL; |
393 |
lastOffset = lastKeyword = i1; |
394 |
} |
395 |
break;
|
396 |
case Token.OPERATOR:
|
397 |
if(backslash)
|
398 |
backslash = false;
|
399 |
else if(c == '`') |
400 |
{ |
401 |
addToken(i1 - lastOffset,token); |
402 |
token = Token.NULL; |
403 |
lastOffset = lastKeyword = i1; |
404 |
} |
405 |
break;
|
406 |
default:
|
407 |
throw new InternalError("Invalid state: " |
408 |
+ token); |
409 |
} |
410 |
} |
411 |
|
412 |
if(token == Token.NULL)
|
413 |
doKeyword(line,length,'\0');
|
414 |
|
415 |
switch(token)
|
416 |
{ |
417 |
case Token.KEYWORD2:
|
418 |
addToken(length - lastOffset,token); |
419 |
token = Token.NULL; |
420 |
break;
|
421 |
case Token.LITERAL2:
|
422 |
addToken(length - lastOffset,Token.LITERAL1); |
423 |
break;
|
424 |
case S_END:
|
425 |
addToken(length - lastOffset,Token.LITERAL2); |
426 |
token = Token.NULL; |
427 |
break;
|
428 |
case S_ONE: case S_TWO: |
429 |
addToken(length - lastOffset,Token.INVALID); // XXX
|
430 |
token = Token.NULL; |
431 |
break;
|
432 |
default:
|
433 |
addToken(length - lastOffset,token); |
434 |
break;
|
435 |
} |
436 |
return token;
|
437 |
} |
438 |
|
439 |
// private members
|
440 |
private KeywordMap keywords;
|
441 |
private byte token; |
442 |
private int lastOffset; |
443 |
private int lastKeyword; |
444 |
private char matchChar; |
445 |
private boolean matchCharBracket; |
446 |
private boolean matchSpacesAllowed; |
447 |
|
448 |
private boolean doKeyword(Segment line, int i, char c) |
449 |
{ |
450 |
int i1 = i+1; |
451 |
|
452 |
if(token == S_END)
|
453 |
{ |
454 |
addToken(i - lastOffset,Token.LITERAL2); |
455 |
token = Token.NULL; |
456 |
lastOffset = i; |
457 |
lastKeyword = i1; |
458 |
return false; |
459 |
} |
460 |
|
461 |
int len = i - lastKeyword;
|
462 |
byte id = keywords.lookup(line,lastKeyword,len);
|
463 |
if(id == S_ONE || id == S_TWO)
|
464 |
{ |
465 |
if(lastKeyword != lastOffset)
|
466 |
addToken(lastKeyword - lastOffset,Token.NULL); |
467 |
addToken(len,Token.LITERAL2); |
468 |
lastOffset = i; |
469 |
lastKeyword = i1; |
470 |
if(Character.isWhitespace(c)) |
471 |
matchChar = '\0';
|
472 |
else
|
473 |
matchChar = c; |
474 |
matchSpacesAllowed = true;
|
475 |
token = id; |
476 |
return true; |
477 |
} |
478 |
else if(id != Token.NULL) |
479 |
{ |
480 |
if(lastKeyword != lastOffset)
|
481 |
addToken(lastKeyword - lastOffset,Token.NULL); |
482 |
addToken(len,id); |
483 |
lastOffset = i; |
484 |
} |
485 |
lastKeyword = i1; |
486 |
return false; |
487 |
} |
488 |
|
489 |
// Converts < EOF >, < 'EOF' >, etc to <EOF>
|
490 |
private String createReadinString(char[] array, int start, int len) |
491 |
{ |
492 |
int idx1 = start;
|
493 |
int idx2 = start + len - 1; |
494 |
|
495 |
while((idx1 <= idx2) && (!Character.isLetterOrDigit(array[idx1]))) |
496 |
idx1++; |
497 |
|
498 |
while((idx1 <= idx2) && (!Character.isLetterOrDigit(array[idx2]))) |
499 |
idx2--; |
500 |
|
501 |
return new String(array, idx1, idx2 - idx1 + 1); |
502 |
} |
503 |
|
504 |
private static KeywordMap perlKeywords; |
505 |
|
506 |
private static KeywordMap getKeywords() |
507 |
{ |
508 |
if(perlKeywords == null) |
509 |
{ |
510 |
perlKeywords = new KeywordMap(false); |
511 |
perlKeywords.add("my",Token.KEYWORD1);
|
512 |
perlKeywords.add("local",Token.KEYWORD1);
|
513 |
perlKeywords.add("new",Token.KEYWORD1);
|
514 |
perlKeywords.add("if",Token.KEYWORD1);
|
515 |
perlKeywords.add("until",Token.KEYWORD1);
|
516 |
perlKeywords.add("while",Token.KEYWORD1);
|
517 |
perlKeywords.add("elsif",Token.KEYWORD1);
|
518 |
perlKeywords.add("else",Token.KEYWORD1);
|
519 |
perlKeywords.add("eval",Token.KEYWORD1);
|
520 |
perlKeywords.add("unless",Token.KEYWORD1);
|
521 |
perlKeywords.add("foreach",Token.KEYWORD1);
|
522 |
perlKeywords.add("continue",Token.KEYWORD1);
|
523 |
perlKeywords.add("exit",Token.KEYWORD1);
|
524 |
perlKeywords.add("die",Token.KEYWORD1);
|
525 |
perlKeywords.add("last",Token.KEYWORD1);
|
526 |
perlKeywords.add("goto",Token.KEYWORD1);
|
527 |
perlKeywords.add("next",Token.KEYWORD1);
|
528 |
perlKeywords.add("redo",Token.KEYWORD1);
|
529 |
perlKeywords.add("goto",Token.KEYWORD1);
|
530 |
perlKeywords.add("return",Token.KEYWORD1);
|
531 |
perlKeywords.add("do",Token.KEYWORD1);
|
532 |
perlKeywords.add("sub",Token.KEYWORD1);
|
533 |
perlKeywords.add("use",Token.KEYWORD1);
|
534 |
perlKeywords.add("require",Token.KEYWORD1);
|
535 |
perlKeywords.add("package",Token.KEYWORD1);
|
536 |
perlKeywords.add("BEGIN",Token.KEYWORD1);
|
537 |
perlKeywords.add("END",Token.KEYWORD1);
|
538 |
perlKeywords.add("eq",Token.OPERATOR);
|
539 |
perlKeywords.add("ne",Token.OPERATOR);
|
540 |
perlKeywords.add("not",Token.OPERATOR);
|
541 |
perlKeywords.add("and",Token.OPERATOR);
|
542 |
perlKeywords.add("or",Token.OPERATOR);
|
543 |
|
544 |
perlKeywords.add("abs",Token.KEYWORD3);
|
545 |
perlKeywords.add("accept",Token.KEYWORD3);
|
546 |
perlKeywords.add("alarm",Token.KEYWORD3);
|
547 |
perlKeywords.add("atan2",Token.KEYWORD3);
|
548 |
perlKeywords.add("bind",Token.KEYWORD3);
|
549 |
perlKeywords.add("binmode",Token.KEYWORD3);
|
550 |
perlKeywords.add("bless",Token.KEYWORD3);
|
551 |
perlKeywords.add("caller",Token.KEYWORD3);
|
552 |
perlKeywords.add("chdir",Token.KEYWORD3);
|
553 |
perlKeywords.add("chmod",Token.KEYWORD3);
|
554 |
perlKeywords.add("chomp",Token.KEYWORD3);
|
555 |
perlKeywords.add("chr",Token.KEYWORD3);
|
556 |
perlKeywords.add("chroot",Token.KEYWORD3);
|
557 |
perlKeywords.add("chown",Token.KEYWORD3);
|
558 |
perlKeywords.add("closedir",Token.KEYWORD3);
|
559 |
perlKeywords.add("close",Token.KEYWORD3);
|
560 |
perlKeywords.add("connect",Token.KEYWORD3);
|
561 |
perlKeywords.add("cos",Token.KEYWORD3);
|
562 |
perlKeywords.add("crypt",Token.KEYWORD3);
|
563 |
perlKeywords.add("dbmclose",Token.KEYWORD3);
|
564 |
perlKeywords.add("dbmopen",Token.KEYWORD3);
|
565 |
perlKeywords.add("defined",Token.KEYWORD3);
|
566 |
perlKeywords.add("delete",Token.KEYWORD3);
|
567 |
perlKeywords.add("die",Token.KEYWORD3);
|
568 |
perlKeywords.add("dump",Token.KEYWORD3);
|
569 |
perlKeywords.add("each",Token.KEYWORD3);
|
570 |
perlKeywords.add("endgrent",Token.KEYWORD3);
|
571 |
perlKeywords.add("endhostent",Token.KEYWORD3);
|
572 |
perlKeywords.add("endnetent",Token.KEYWORD3);
|
573 |
perlKeywords.add("endprotoent",Token.KEYWORD3);
|
574 |
perlKeywords.add("endpwent",Token.KEYWORD3);
|
575 |
perlKeywords.add("endservent",Token.KEYWORD3);
|
576 |
perlKeywords.add("eof",Token.KEYWORD3);
|
577 |
perlKeywords.add("exec",Token.KEYWORD3);
|
578 |
perlKeywords.add("exists",Token.KEYWORD3);
|
579 |
perlKeywords.add("exp",Token.KEYWORD3);
|
580 |
perlKeywords.add("fctnl",Token.KEYWORD3);
|
581 |
perlKeywords.add("fileno",Token.KEYWORD3);
|
582 |
perlKeywords.add("flock",Token.KEYWORD3);
|
583 |
perlKeywords.add("fork",Token.KEYWORD3);
|
584 |
perlKeywords.add("format",Token.KEYWORD3);
|
585 |
perlKeywords.add("formline",Token.KEYWORD3);
|
586 |
perlKeywords.add("getc",Token.KEYWORD3);
|
587 |
perlKeywords.add("getgrent",Token.KEYWORD3);
|
588 |
perlKeywords.add("getgrgid",Token.KEYWORD3);
|
589 |
perlKeywords.add("getgrnam",Token.KEYWORD3);
|
590 |
perlKeywords.add("gethostbyaddr",Token.KEYWORD3);
|
591 |
perlKeywords.add("gethostbyname",Token.KEYWORD3);
|
592 |
perlKeywords.add("gethostent",Token.KEYWORD3);
|
593 |
perlKeywords.add("getlogin",Token.KEYWORD3);
|
594 |
perlKeywords.add("getnetbyaddr",Token.KEYWORD3);
|
595 |
perlKeywords.add("getnetbyname",Token.KEYWORD3);
|
596 |
perlKeywords.add("getnetent",Token.KEYWORD3);
|
597 |
perlKeywords.add("getpeername",Token.KEYWORD3);
|
598 |
perlKeywords.add("getpgrp",Token.KEYWORD3);
|
599 |
perlKeywords.add("getppid",Token.KEYWORD3);
|
600 |
perlKeywords.add("getpriority",Token.KEYWORD3);
|
601 |
perlKeywords.add("getprotobyname",Token.KEYWORD3);
|
602 |
perlKeywords.add("getprotobynumber",Token.KEYWORD3);
|
603 |
perlKeywords.add("getprotoent",Token.KEYWORD3);
|
604 |
perlKeywords.add("getpwent",Token.KEYWORD3);
|
605 |
perlKeywords.add("getpwnam",Token.KEYWORD3);
|
606 |
perlKeywords.add("getpwuid",Token.KEYWORD3);
|
607 |
perlKeywords.add("getservbyname",Token.KEYWORD3);
|
608 |
perlKeywords.add("getservbyport",Token.KEYWORD3);
|
609 |
perlKeywords.add("getservent",Token.KEYWORD3);
|
610 |
perlKeywords.add("getsockname",Token.KEYWORD3);
|
611 |
perlKeywords.add("getsockopt",Token.KEYWORD3);
|
612 |
perlKeywords.add("glob",Token.KEYWORD3);
|
613 |
perlKeywords.add("gmtime",Token.KEYWORD3);
|
614 |
perlKeywords.add("grep",Token.KEYWORD3);
|
615 |
perlKeywords.add("hex",Token.KEYWORD3);
|
616 |
perlKeywords.add("import",Token.KEYWORD3);
|
617 |
perlKeywords.add("index",Token.KEYWORD3);
|
618 |
perlKeywords.add("int",Token.KEYWORD3);
|
619 |
perlKeywords.add("ioctl",Token.KEYWORD3);
|
620 |
perlKeywords.add("join",Token.KEYWORD3);
|
621 |
perlKeywords.add("keys",Token.KEYWORD3);
|
622 |
perlKeywords.add("kill",Token.KEYWORD3);
|
623 |
perlKeywords.add("lcfirst",Token.KEYWORD3);
|
624 |
perlKeywords.add("lc",Token.KEYWORD3);
|
625 |
perlKeywords.add("length",Token.KEYWORD3);
|
626 |
perlKeywords.add("link",Token.KEYWORD3);
|
627 |
perlKeywords.add("listen",Token.KEYWORD3);
|
628 |
perlKeywords.add("log",Token.KEYWORD3);
|
629 |
perlKeywords.add("localtime",Token.KEYWORD3);
|
630 |
perlKeywords.add("lstat",Token.KEYWORD3);
|
631 |
perlKeywords.add("map",Token.KEYWORD3);
|
632 |
perlKeywords.add("mkdir",Token.KEYWORD3);
|
633 |
perlKeywords.add("msgctl",Token.KEYWORD3);
|
634 |
perlKeywords.add("msgget",Token.KEYWORD3);
|
635 |
perlKeywords.add("msgrcv",Token.KEYWORD3);
|
636 |
perlKeywords.add("no",Token.KEYWORD3);
|
637 |
perlKeywords.add("oct",Token.KEYWORD3);
|
638 |
perlKeywords.add("opendir",Token.KEYWORD3);
|
639 |
perlKeywords.add("open",Token.KEYWORD3);
|
640 |
perlKeywords.add("ord",Token.KEYWORD3);
|
641 |
perlKeywords.add("pack",Token.KEYWORD3);
|
642 |
perlKeywords.add("pipe",Token.KEYWORD3);
|
643 |
perlKeywords.add("pop",Token.KEYWORD3);
|
644 |
perlKeywords.add("pos",Token.KEYWORD3);
|
645 |
perlKeywords.add("printf",Token.KEYWORD3);
|
646 |
perlKeywords.add("print",Token.KEYWORD3);
|
647 |
perlKeywords.add("push",Token.KEYWORD3);
|
648 |
perlKeywords.add("quotemeta",Token.KEYWORD3);
|
649 |
perlKeywords.add("rand",Token.KEYWORD3);
|
650 |
perlKeywords.add("readdir",Token.KEYWORD3);
|
651 |
perlKeywords.add("read",Token.KEYWORD3);
|
652 |
perlKeywords.add("readlink",Token.KEYWORD3);
|
653 |
perlKeywords.add("recv",Token.KEYWORD3);
|
654 |
perlKeywords.add("ref",Token.KEYWORD3);
|
655 |
perlKeywords.add("rename",Token.KEYWORD3);
|
656 |
perlKeywords.add("reset",Token.KEYWORD3);
|
657 |
perlKeywords.add("reverse",Token.KEYWORD3);
|
658 |
perlKeywords.add("rewinddir",Token.KEYWORD3);
|
659 |
perlKeywords.add("rindex",Token.KEYWORD3);
|
660 |
perlKeywords.add("rmdir",Token.KEYWORD3);
|
661 |
perlKeywords.add("scalar",Token.KEYWORD3);
|
662 |
perlKeywords.add("seekdir",Token.KEYWORD3);
|
663 |
perlKeywords.add("seek",Token.KEYWORD3);
|
664 |
perlKeywords.add("select",Token.KEYWORD3);
|
665 |
perlKeywords.add("semctl",Token.KEYWORD3);
|
666 |
perlKeywords.add("semget",Token.KEYWORD3);
|
667 |
perlKeywords.add("semop",Token.KEYWORD3);
|
668 |
perlKeywords.add("send",Token.KEYWORD3);
|
669 |
perlKeywords.add("setgrent",Token.KEYWORD3);
|
670 |
perlKeywords.add("sethostent",Token.KEYWORD3);
|
671 |
perlKeywords.add("setnetent",Token.KEYWORD3);
|
672 |
perlKeywords.add("setpgrp",Token.KEYWORD3);
|
673 |
perlKeywords.add("setpriority",Token.KEYWORD3);
|
674 |
perlKeywords.add("setprotoent",Token.KEYWORD3);
|
675 |
perlKeywords.add("setpwent",Token.KEYWORD3);
|
676 |
perlKeywords.add("setsockopt",Token.KEYWORD3);
|
677 |
perlKeywords.add("shift",Token.KEYWORD3);
|
678 |
perlKeywords.add("shmctl",Token.KEYWORD3);
|
679 |
perlKeywords.add("shmget",Token.KEYWORD3);
|
680 |
perlKeywords.add("shmread",Token.KEYWORD3);
|
681 |
perlKeywords.add("shmwrite",Token.KEYWORD3);
|
682 |
perlKeywords.add("shutdown",Token.KEYWORD3);
|
683 |
perlKeywords.add("sin",Token.KEYWORD3);
|
684 |
perlKeywords.add("sleep",Token.KEYWORD3);
|
685 |
perlKeywords.add("socket",Token.KEYWORD3);
|
686 |
perlKeywords.add("socketpair",Token.KEYWORD3);
|
687 |
perlKeywords.add("sort",Token.KEYWORD3);
|
688 |
perlKeywords.add("splice",Token.KEYWORD3);
|
689 |
perlKeywords.add("split",Token.KEYWORD3);
|
690 |
perlKeywords.add("sprintf",Token.KEYWORD3);
|
691 |
perlKeywords.add("sqrt",Token.KEYWORD3);
|
692 |
perlKeywords.add("srand",Token.KEYWORD3);
|
693 |
perlKeywords.add("stat",Token.KEYWORD3);
|
694 |
perlKeywords.add("study",Token.KEYWORD3);
|
695 |
perlKeywords.add("substr",Token.KEYWORD3);
|
696 |
perlKeywords.add("symlink",Token.KEYWORD3);
|
697 |
perlKeywords.add("syscall",Token.KEYWORD3);
|
698 |
perlKeywords.add("sysopen",Token.KEYWORD3);
|
699 |
perlKeywords.add("sysread",Token.KEYWORD3);
|
700 |
perlKeywords.add("syswrite",Token.KEYWORD3);
|
701 |
perlKeywords.add("telldir",Token.KEYWORD3);
|
702 |
perlKeywords.add("tell",Token.KEYWORD3);
|
703 |
perlKeywords.add("tie",Token.KEYWORD3);
|
704 |
perlKeywords.add("tied",Token.KEYWORD3);
|
705 |
perlKeywords.add("time",Token.KEYWORD3);
|
706 |
perlKeywords.add("times",Token.KEYWORD3);
|
707 |
perlKeywords.add("truncate",Token.KEYWORD3);
|
708 |
perlKeywords.add("uc",Token.KEYWORD3);
|
709 |
perlKeywords.add("ucfirst",Token.KEYWORD3);
|
710 |
perlKeywords.add("umask",Token.KEYWORD3);
|
711 |
perlKeywords.add("undef",Token.KEYWORD3);
|
712 |
perlKeywords.add("unlink",Token.KEYWORD3);
|
713 |
perlKeywords.add("unpack",Token.KEYWORD3);
|
714 |
perlKeywords.add("unshift",Token.KEYWORD3);
|
715 |
perlKeywords.add("untie",Token.KEYWORD3);
|
716 |
perlKeywords.add("utime",Token.KEYWORD3);
|
717 |
perlKeywords.add("values",Token.KEYWORD3);
|
718 |
perlKeywords.add("vec",Token.KEYWORD3);
|
719 |
perlKeywords.add("wait",Token.KEYWORD3);
|
720 |
perlKeywords.add("waitpid",Token.KEYWORD3);
|
721 |
perlKeywords.add("wantarray",Token.KEYWORD3);
|
722 |
perlKeywords.add("warn",Token.KEYWORD3);
|
723 |
perlKeywords.add("write",Token.KEYWORD3);
|
724 |
|
725 |
perlKeywords.add("m",S_ONE);
|
726 |
perlKeywords.add("q",S_ONE);
|
727 |
perlKeywords.add("qq",S_ONE);
|
728 |
perlKeywords.add("qw",S_ONE);
|
729 |
perlKeywords.add("qx",S_ONE);
|
730 |
perlKeywords.add("s",S_TWO);
|
731 |
perlKeywords.add("tr",S_TWO);
|
732 |
perlKeywords.add("y",S_TWO);
|
733 |
} |
734 |
return perlKeywords;
|
735 |
} |
736 |
} |