1 30 31 package org.syntax.jedit.tokenmarker; 32 33 import org.syntax.jedit.*; 34 import javax.swing.text.Segment ; 35 36 42 public class PerlTokenMarker extends TokenMarker 43 { 44 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 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 if(!Character.isLetterOrDigit(c) && c != '_' 275 && c != '#' && c != '\'' && c != ':' 276 && c != '&') 277 { 278 if(i != offset && array[i-1] == '$') 282 { 283 addToken(i1 - lastOffset,token); 284 lastOffset = lastKeyword = i1; 285 } 286 else 288 { 289 addToken(i - lastOffset,token); 290 lastOffset = lastKeyword = i; 291 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 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 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); token = Token.NULL; 431 break; 432 default: 433 addToken(length - lastOffset,token); 434 break; 435 } 436 return token; 437 } 438 439 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 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 } 737 | Popular Tags |