ASPPerlscriptTokenMarker.java
| Index Score | ||
|---|---|---|
![]() |
![]() |
org.gjt.sp.jedit.syntax |
![]() |
![]() |
Jext |
View: Reasons, Metrics, Source Code
These are the metrics that contribute to the Enerjy Score for this file, ranked by impact. So the metrics listed at the top influence the score to a greater extent that the metrics listed at the bottom.
/*
* ASPPerlscriptTokenMarker.java - Perlscript token marker
* Copyright (C) 1999 Andr? Kaplan
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
package org.gjt.sp.jedit.syntax;
import javax.swing.text.Segment;
/**
* Original Perl token marker by Slava Pestov
* Perlscript Token Marker
*
* @author Andre Kaplan
* @version 0.6
*/
public class ASPPerlscriptTokenMarker
extends TokenMarker
implements TokenMarkerWithAddToken,
MultiModeTokenMarkerWithContext
{
// public members
public static final byte S_ONE = Token.INTERNAL_FIRST;
public static final byte S_TWO = (byte)(Token.INTERNAL_FIRST + 1);
public static final byte S_END = (byte)(Token.INTERNAL_FIRST + 2);
public ASPPerlscriptTokenMarker()
{
this(getKeywords(), true);
}
public ASPPerlscriptTokenMarker(boolean standalone)
{
this(getKeywords(), standalone);
}
public ASPPerlscriptTokenMarker(KeywordMap keywords)
{
this(keywords, true);
}
public ASPPerlscriptTokenMarker(KeywordMap keywords, boolean standalone)
{
this.keywords = keywords;
this.standalone = standalone;
}
public void addToken(int length, byte id)
{
super.addToken(length, id);
}
protected byte markTokensImpl(byte _token, Segment line, int lineIndex)
{
TokenMarkerContext tokenContext = new TokenMarkerContext(line, lineIndex, this, this.lineInfo);
MultiModeToken prevLineToken = MultiModeToken.NULL;
if ( tokenContext.prevLineInfo != null
&& tokenContext.prevLineInfo.obj != null
&& tokenContext.prevLineInfo.obj instanceof MultiModeToken
)
{
prevLineToken = (MultiModeToken)tokenContext.prevLineInfo.obj;
}
MultiModeToken res = this.markTokensImpl(prevLineToken, tokenContext);
tokenContext.currLineInfo.obj = res;
return res.token;
}
// **************
// markTokensImpl
// **************
public MultiModeToken markTokensImpl(final MultiModeToken token, TokenMarkerContext tokenContext)
{
MultiModeToken res = new MultiModeToken(token);
matchChar = '\0';
matchCharBracket = false;
matchSpacesAllowed = false;
int debugPos = -1;
int debugCount = 0;
if ( res.token == Token.LITERAL1
&& res.obj != null)
{
String str = (String)res.obj;
if ( str != null
&& str.length() == tokenContext.line.count
&& tokenContext.regionMatches(false, str))
{
tokenContext.addTokenToEnd(res.token);
res.token = Token.NULL;
res.obj = null;
return res;
} else {
tokenContext.addTokenToEnd(res.token);
return res;
}
}
boolean backslash = false;
loop: for(this.debug.reset(); tokenContext.hasMoreChars(); )
{
char c = tokenContext.getChar();
// Following is a way to detect whether tokenContext.pos is not
// correctly incremented. This is for debugging purposes
if (!this.debug.isOK(tokenContext)) {
// We got stuck here at some point
// Log this and increment tokenContext.pos to escape this
tokenContext.pos++;
}
if (c == '\\')
{
backslash = !backslash;
tokenContext.pos++;
continue;
}
switch (res.token)
{
case Token.NULL:
if (!this.standalone) {
if (res.mode == ASPMode.CSPS) {
if (tokenContext.regionMatches(true, "<%"))
{
this.doKeywordToPos(res,tokenContext,c);
// Just return, let parent mode decide what to do next
return res;
}
}
if (res.mode == ASPMode.ASP) {
if (tokenContext.regionMatches(true, "%>"))
{
this.doKeywordToPos(res,tokenContext,c);
// Just return, let parent mode decide what to do next
return res;
}
}
if (res.mode == ASPMode.CSPS || res.mode == ASPMode.SSPS) {
if (tokenContext.regionMatches(true, "</script>"))
{
this.doKeywordToPos(res,tokenContext,c);
// Just return, let parent mode decide what to do next
return res;
}
}
}
switch(c)
{
case '#':
if (this.doKeywordToPos(res,tokenContext,c))
break;
if (backslash) {
backslash = false;
} else {
tokenContext.addTokenToPos(res.token);
tokenContext.addTokenToEnd(Token.COMMENT1);
break loop;
}
break;
case '=':
backslash = false;
if (tokenContext.atFirst())
{
res.token = Token.COMMENT2;
tokenContext.addTokenToEnd(res.token);
break loop;
}
else
this.doKeywordToPos(res,tokenContext,c);
break;
case '$': case '&': case '%': case '@':
backslash = false;
if(this.doKeywordToPos(res,tokenContext,c))
break;
if (tokenContext.remainingChars() > 0)
{
char c1 = tokenContext.getChar(1);
if ( (c == '&')
&& ( (c1 == '&')
|| (Character.isWhitespace(c1))
)
)
{
tokenContext.pos++;
} else {
tokenContext.addTokenToPos(res.token);
res.token = Token.KEYWORD2;
}
}
break;
case '"':
if(this.doKeywordToPos(res,tokenContext,c))
break;
if(backslash) {
backslash = false;
} else {
tokenContext.addTokenToPos(res.token);
res.token = Token.LITERAL1;
res.obj = null;
}
break;
case '\'':
if(backslash) {
backslash = false;
} else {
int oldLastKeyword = tokenContext.lastKeyword;
if(this.doKeywordToPos(res,tokenContext,c))
break;
if (tokenContext.pos != oldLastKeyword)
break;
tokenContext.addTokenToPos(res.token);
res.token = Token.LITERAL2;
}
break;
case '`':
if(this.doKeywordToPos(res,tokenContext,c))
break;
if(backslash) {
backslash = false;
} else {
tokenContext.addTokenToPos(res.token);
res.token = Token.OPERATOR;
}
break;
case '<':
if(this.doKeywordToPos(res,tokenContext,c))
break;
if(backslash)
backslash = false;
else
{
if ( (tokenContext.remainingChars() > 1)
&& (tokenContext.getChar(1) == '<')
&& (!Character.isWhitespace(
tokenContext.getChar(2)))
)
{
tokenContext.addTokenToPos(res.token);
res.token = Token.LITERAL1;
int len = tokenContext.remainingChars() - 1;
if(tokenContext.lastChar() == ';')
len--;
String readin =
createReadinString(
tokenContext.array,
tokenContext.pos + 2,
len
);
// Log.log(Log.DEBUG, this, "Readin: [" + readin + "]");
res.obj = readin;
tokenContext.addTokenToEnd(res.token);
break loop;
}
}
break;
case ':':
backslash = false;
if(this.doKeywordToPos(res,tokenContext,c))
break;
// Doesn't pick up all labels,
// but at least doesn't mess up
// XXX::YYY
if(tokenContext.lastKeyword != 0)
break;
tokenContext.pos++;
tokenContext.addTokenToPos(Token.LABEL);
continue;
case '-':
backslash = false;
if(this.doKeywordToPos(res,tokenContext,c))
break;
if( (tokenContext.pos != tokenContext.lastKeyword)
|| (tokenContext.remainingChars() < 1)
)
break;
switch(tokenContext.getChar(1))
{
case 'r': case 'w': case 'x':
case 'o': case 'R': case 'W':
case 'X': case 'O': case 'e':
case 'z': case 's': case 'f':
case 'd': case 'l': case 'p':
case 'S': case 'b': case 'c':
case 't': case 'u': case 'g':
case 'k': case 'T': case 'B':
case 'M': case 'A': case 'C':
tokenContext.addTokenToPos(res.token);
tokenContext.pos++;
tokenContext.addTokenToPos(Token.KEYWORD3);
tokenContext.pos++;
continue;
}
break;
case '/': case '?':
if(this.doKeywordToPos(res,tokenContext,c))
break;
if(tokenContext.remainingChars() > 0)
{
backslash = false;
char ch = tokenContext.getChar(1);
if(Character.isWhitespace(ch))
break;
matchChar = c;
matchSpacesAllowed = false;
tokenContext.addTokenToPos(res.token);
res.token = S_ONE;
}
break;
default:
backslash = false;
if(!Character.isLetterOrDigit(c)
&& c != '_')
this.doKeywordToPos(res,tokenContext,c);
break;
}
break;
case Token.KEYWORD2:
backslash = false;
// This test checks for an end-of-variable
// condition
if(!Character.isLetterOrDigit(c) && c != '_'
&& c != '#' && c != '\'' && c != ':'
&& c != '&')
{
// If this is the first character
// of the variable name ($'aaa)
// ignore it
if (!tokenContext.atFirst() && tokenContext.getChar(-1) == '$')
{
tokenContext.pos++;
tokenContext.addTokenToPos(res.token);
continue;
}
// Otherwise, end of variable...
else
{
tokenContext.addTokenToPos(res.token);
// Wind back so that stuff
// like $hello$fred is picked
// up
// Change the token KEYWORD2 -> NULL
// And continue at the same position
res.token = Token.NULL;
continue;
}
}
break;
case S_ONE: case S_TWO:
if(backslash)
backslash = false;
else
{
if(matchChar == '\0')
{
if(Character.isWhitespace(matchChar)
&& !matchSpacesAllowed)
break;
else
matchChar = c;
}
else
{
switch(matchChar)
{
case '(':
matchChar = ')';
matchCharBracket = true;
break;
case '[':
matchChar = ']';
matchCharBracket = true;
break;
case '{':
matchChar = '}';
matchCharBracket = true;
break;
case '<':
matchChar = '>';
matchCharBracket = true;
break;
default:
matchCharBracket = false;
break;
}
if(c != matchChar)
break;
if (res.token == S_TWO)
{
res.token = S_ONE;
if(matchCharBracket)
matchChar = '\0';
}
else
{
res.token = S_END;
tokenContext.pos++;
tokenContext.addTokenToPos(Token.LITERAL2);
continue;
}
}
}
break;
case S_END:
backslash = false;
if(!Character.isLetterOrDigit(c)
&& c != '_')
this.doKeywordToPos(res,tokenContext,c);
break;
case Token.COMMENT2:
backslash = false;
if (tokenContext.atFirst())
{
if (tokenContext.regionMatches(false, "=cut"))
res.token = Token.NULL;
tokenContext.addTokenToEnd(Token.COMMENT2);
break loop;
}
break;
case Token.LITERAL1:
if(backslash)
backslash = false;
/* else if(c == '$')
backslash = true; */
else if (c == '"')
{
tokenContext.pos++;
tokenContext.addTokenToPos(res.token);
res.token = Token.NULL;
continue;
}
break;
case Token.LITERAL2:
if(backslash)
backslash = false;
/* else if(c == '$')
backslash = true; */
else if(c == '\'')
{
tokenContext.pos++;
tokenContext.addTokenToPos(Token.LITERAL1);
res.token = Token.NULL;
continue;
}
break;
case Token.OPERATOR:
if(backslash)
backslash = false;
else if (c == '`')
{
tokenContext.pos++;
tokenContext.addTokenToPos(res.token);
res.token = Token.NULL;
continue;
}
break;
default:
throw new InternalError("Invalid state: "
+ res.token);
}
tokenContext.pos++;
}
if(res.token == Token.NULL)
this.doKeywordToEnd(res, tokenContext, '\0');
switch (res.token)
{
case Token.KEYWORD2:
tokenContext.addTokenToEnd(res.token);
break;
case Token.LITERAL2:
tokenContext.addTokenToEnd(Token.LITERAL1);
break;
case S_END:
tokenContext.addTokenToEnd(Token.LITERAL2);
res.token = Token.NULL;
break;
case S_ONE: case S_TWO:
tokenContext.addTokenToEnd(Token.INVALID); // XXX
res.token = Token.NULL;
break;
default:
tokenContext.addTokenToEnd(res.token);
break;
}
return res;
}
// private members
private KeywordMap keywords;
private boolean standalone;
private char matchChar;
private boolean matchCharBracket;
private boolean matchSpacesAllowed;
private TokenMarkerDebugger debug = new TokenMarkerDebugger();
// **************
// doKeywordToEnd
// **************
private boolean doKeywordToEnd(MultiModeToken token,
TokenMarkerContext tokenContext,
char c)
{
return doKeyword(token, tokenContext, tokenContext.length, c);
}
// **************
// doKeywordToPos
// **************
private boolean doKeywordToPos(MultiModeToken token,
TokenMarkerContext tokenContext,
char c)
{
return doKeyword(token, tokenContext, tokenContext.pos, c);
}
// *********
// doKeyword
// *********
private boolean doKeyword(MultiModeToken token,
TokenMarkerContext tokenContext,
int i,
char c)
{
int i1 = i + 1;
if (token.token == S_END)
{
tokenContext.addTokenToPos(i, Token.LITERAL2);
token.token = Token.NULL;
tokenContext.lastKeyword = i1;
return false;
}
int len = i - tokenContext.lastKeyword;
byte id = keywords.lookup(tokenContext.line,tokenContext.lastKeyword,len);
if (id == S_ONE || id == S_TWO)
{
tokenContext.addTokenToPos(tokenContext.lastKeyword, Token.NULL);
tokenContext.addTokenToPos(i, Token.LITERAL2);
tokenContext.lastKeyword = i1;
if(Character.isWhitespace(c))
matchChar = '\0';
else
matchChar = c;
matchSpacesAllowed = true;
token.token = id;
return true;
}
else if (id != Token.NULL)
{
tokenContext.addTokenToPos(tokenContext.lastKeyword, Token.NULL);
tokenContext.addTokenToPos(i, id);
}
tokenContext.lastKeyword = i1;
return false;
}
// Converts < EOF >, < 'EOF' >, etc to <EOF>
private String createReadinString(char[] array, int start, int len)
{
int idx1 = start;
int idx2 = start + len - 1;
while ((idx1 <= idx2) && (!Character.isLetterOrDigit(array[idx1]))) {
idx1++;
}
while((idx1 <= idx2) && (!Character.isLetterOrDigit(array[idx2]))) {
idx2--;
}
return new String(array, idx1, idx2 - idx1 + 1);
}
private static KeywordMap perlKeywords;
private static KeywordMap getKeywords()
{
if(perlKeywords == null)
{
perlKeywords = new KeywordMap(false);
perlKeywords.add("my",Token.KEYWORD1);
perlKeywords.add("our",Token.KEYWORD1);
perlKeywords.add("local",Token.KEYWORD1);
perlKeywords.add("new",Token.KEYWORD1);
perlKeywords.add("if",Token.KEYWORD1);
perlKeywords.add("until",Token.KEYWORD1);
perlKeywords.add("while",Token.KEYWORD1);
perlKeywords.add("elsif",Token.KEYWORD1);
perlKeywords.add("else",Token.KEYWORD1);
perlKeywords.add("eval",Token.KEYWORD1);
perlKeywords.add("unless",Token.KEYWORD1);
perlKeywords.add("foreach",Token.KEYWORD1);
perlKeywords.add("continue",Token.KEYWORD1);
perlKeywords.add("exit",Token.KEYWORD1);
perlKeywords.add("die",Token.KEYWORD1);
perlKeywords.add("last",Token.KEYWORD1);
perlKeywords.add("goto",Token.KEYWORD1);
perlKeywords.add("next",Token.KEYWORD1);
perlKeywords.add("redo",Token.KEYWORD1);
perlKeywords.add("goto",Token.KEYWORD1);
perlKeywords.add("return",Token.KEYWORD1);
perlKeywords.add("do",Token.KEYWORD1);
perlKeywords.add("sub",Token.KEYWORD1);
perlKeywords.add("use",Token.KEYWORD1);
perlKeywords.add("require",Token.KEYWORD1);
perlKeywords.add("package",Token.KEYWORD1);
perlKeywords.add("BEGIN",Token.KEYWORD1);
perlKeywords.add("END",Token.KEYWORD1);
perlKeywords.add("eq",Token.OPERATOR);
perlKeywords.add("ne",Token.OPERATOR);
perlKeywords.add("gt",Token.OPERATOR);
perlKeywords.add("lt",Token.OPERATOR);
perlKeywords.add("le",Token.OPERATOR);
perlKeywords.add("ge",Token.OPERATOR);
perlKeywords.add("not",Token.OPERATOR);
perlKeywords.add("and",Token.OPERATOR);
perlKeywords.add("or",Token.OPERATOR);
perlKeywords.add("cmp",Token.OPERATOR);
perlKeywords.add("xor",Token.OPERATOR);
perlKeywords.add("abs",Token.KEYWORD3);
perlKeywords.add("accept",Token.KEYWORD3);
perlKeywords.add("alarm",Token.KEYWORD3);
perlKeywords.add("atan2",Token.KEYWORD3);
perlKeywords.add("bind",Token.KEYWORD3);
perlKeywords.add("binmode",Token.KEYWORD3);
perlKeywords.add("bless",Token.KEYWORD3);
perlKeywords.add("caller",Token.KEYWORD3);
perlKeywords.add("chdir",Token.KEYWORD3);
perlKeywords.add("chmod",Token.KEYWORD3);
perlKeywords.add("chomp",Token.KEYWORD3);
perlKeywords.add("chr",Token.KEYWORD3);
perlKeywords.add("chroot",Token.KEYWORD3);
perlKeywords.add("chown",Token.KEYWORD3);
perlKeywords.add("closedir",Token.KEYWORD3);
perlKeywords.add("close",Token.KEYWORD3);
perlKeywords.add("connect",Token.KEYWORD3);
perlKeywords.add("cos",Token.KEYWORD3);
perlKeywords.add("crypt",Token.KEYWORD3);
perlKeywords.add("dbmclose",Token.KEYWORD3);
perlKeywords.add("dbmopen",Token.KEYWORD3);
perlKeywords.add("defined",Token.KEYWORD3);
perlKeywords.add("delete",Token.KEYWORD3);
perlKeywords.add("die",Token.KEYWORD3);
perlKeywords.add("dump",Token.KEYWORD3);
perlKeywords.add("each",Token.KEYWORD3);
perlKeywords.add("endgrent",Token.KEYWORD3);
perlKeywords.add("endhostent",Token.KEYWORD3);
perlKeywords.add("endnetent",Token.KEYWORD3);
perlKeywords.add("endprotoent",Token.KEYWORD3);
perlKeywords.add("endpwent",Token.KEYWORD3);
perlKeywords.add("endservent",Token.KEYWORD3);
perlKeywords.add("eof",Token.KEYWORD3);
perlKeywords.add("exec",Token.KEYWORD3);
perlKeywords.add("exists",Token.KEYWORD3);
perlKeywords.add("exp",Token.KEYWORD3);
perlKeywords.add("fctnl",Token.KEYWORD3);
perlKeywords.add("fileno",Token.KEYWORD3);
perlKeywords.add("flock",Token.KEYWORD3);
perlKeywords.add("fork",Token.KEYWORD3);
perlKeywords.add("format",Token.KEYWORD3);
perlKeywords.add("formline",Token.KEYWORD3);
perlKeywords.add("getc",Token.KEYWORD3);
perlKeywords.add("getgrent",Token.KEYWORD3);
perlKeywords.add("getgrgid",Token.KEYWORD3);
perlKeywords.add("getgrnam",Token.KEYWORD3);
perlKeywords.add("gethostbyaddr",Token.KEYWORD3);
perlKeywords.add("gethostbyname",Token.KEYWORD3);
perlKeywords.add("gethostent",Token.KEYWORD3);
perlKeywords.add("getlogin",Token.KEYWORD3);
perlKeywords.add("getnetbyaddr",Token.KEYWORD3);
perlKeywords.add("getnetbyname",Token.KEYWORD3);
perlKeywords.add("getnetent",Token.KEYWORD3);
perlKeywords.add("getpeername",Token.KEYWORD3);
perlKeywords.add("getpgrp",Token.KEYWORD3);
perlKeywords.add("getppid",Token.KEYWORD3);
perlKeywords.add("getpriority",Token.KEYWORD3);
perlKeywords.add("getprotobyname",Token.KEYWORD3);
perlKeywords.add("getprotobynumber",Token.KEYWORD3);
perlKeywords.add("getprotoent",Token.KEYWORD3);
perlKeywords.add("getpwent",Token.KEYWORD3);
perlKeywords.add("getpwnam",Token.KEYWORD3);
perlKeywords.add("getpwuid",Token.KEYWORD3);
perlKeywords.add("getservbyname",Token.KEYWORD3);
perlKeywords.add("getservbyport",Token.KEYWORD3);
perlKeywords.add("getservent",Token.KEYWORD3);
perlKeywords.add("getsockname",Token.KEYWORD3);
perlKeywords.add("getsockopt",Token.KEYWORD3);
perlKeywords.add("glob",Token.KEYWORD3);
perlKeywords.add("gmtime",Token.KEYWORD3);
perlKeywords.add("grep",Token.KEYWORD3);
perlKeywords.add("hex",Token.KEYWORD3);
perlKeywords.add("import",Token.KEYWORD3);
perlKeywords.add("index",Token.KEYWORD3);
perlKeywords.add("int",Token.KEYWORD3);
perlKeywords.add("ioctl",Token.KEYWORD3);
perlKeywords.add("join",Token.KEYWORD3);
perlKeywords.add("keys",Token.KEYWORD3);
perlKeywords.add("kill",Token.KEYWORD3);
perlKeywords.add("lcfirst",Token.KEYWORD3);
perlKeywords.add("lc",Token.KEYWORD3);
perlKeywords.add("length",Token.KEYWORD3);
perlKeywords.add("link",Token.KEYWORD3);
perlKeywords.add("listen",Token.KEYWORD3);
perlKeywords.add("log",Token.KEYWORD3);
perlKeywords.add("localtime",Token.KEYWORD3);
perlKeywords.add("lstat",Token.KEYWORD3);
perlKeywords.add("map",Token.KEYWORD3);
perlKeywords.add("mkdir",Token.KEYWORD3);
perlKeywords.add("msgctl",Token.KEYWORD3);
perlKeywords.add("msgget",Token.KEYWORD3);
perlKeywords.add("msgrcv",Token.KEYWORD3);
perlKeywords.add("no",Token.KEYWORD3);
perlKeywords.add("oct",Token.KEYWORD3);
perlKeywords.add("opendir",Token.KEYWORD3);
perlKeywords.add("open",Token.KEYWORD3);
perlKeywords.add("ord",Token.KEYWORD3);
perlKeywords.add("pack",Token.KEYWORD3);
perlKeywords.add("pipe",Token.KEYWORD3);
perlKeywords.add("pop",Token.KEYWORD3);
perlKeywords.add("pos",Token.KEYWORD3);
perlKeywords.add("printf",Token.KEYWORD3);
perlKeywords.add("print",Token.KEYWORD3);
perlKeywords.add("push",Token.KEYWORD3);
perlKeywords.add("quotemeta",Token.KEYWORD3);
perlKeywords.add("rand",Token.KEYWORD3);
perlKeywords.add("readdir",Token.KEYWORD3);
perlKeywords.add("read",Token.KEYWORD3);
perlKeywords.add("readlink",Token.KEYWORD3);
perlKeywords.add("recv",Token.KEYWORD3);
perlKeywords.add("ref",Token.KEYWORD3);
perlKeywords.add("rename",Token.KEYWORD3);
perlKeywords.add("reset",Token.KEYWORD3);
perlKeywords.add("reverse",Token.KEYWORD3);
perlKeywords.add("rewinddir",Token.KEYWORD3);
perlKeywords.add("rindex",Token.KEYWORD3);
perlKeywords.add("rmdir",Token.KEYWORD3);
perlKeywords.add("scalar",Token.KEYWORD3);
perlKeywords.add("seekdir",Token.KEYWORD3);
perlKeywords.add("seek",Token.KEYWORD3);
perlKeywords.add("select",Token.KEYWORD3);
perlKeywords.add("semctl",Token.KEYWORD3);
perlKeywords.add("semget",Token.KEYWORD3);
perlKeywords.add("semop",Token.KEYWORD3);
perlKeywords.add("send",Token.KEYWORD3);
perlKeywords.add("setgrent",Token.KEYWORD3);
perlKeywords.add("sethostent",Token.KEYWORD3);
perlKeywords.add("setnetent",Token.KEYWORD3);
perlKeywords.add("setpgrp",Token.KEYWORD3);
perlKeywords.add("setpriority",Token.KEYWORD3);
perlKeywords.add("setprotoent",Token.KEYWORD3);
perlKeywords.add("setpwent",Token.KEYWORD3);
perlKeywords.add("setsockopt",Token.KEYWORD3);
perlKeywords.add("shift",Token.KEYWORD3);
perlKeywords.add("shmctl",Token.KEYWORD3);
perlKeywords.add("shmget",Token.KEYWORD3);
perlKeywords.add("shmread",Token.KEYWORD3);
perlKeywords.add("shmwrite",Token.KEYWORD3);
perlKeywords.add("shutdown",Token.KEYWORD3);
perlKeywords.add("sin",Token.KEYWORD3);
perlKeywords.add("sleep",Token.KEYWORD3);
perlKeywords.add("socket",Token.KEYWORD3);
perlKeywords.add("socketpair",Token.KEYWORD3);
perlKeywords.add("sort",Token.KEYWORD3);
perlKeywords.add("splice",Token.KEYWORD3);
perlKeywords.add("split",Token.KEYWORD3);
perlKeywords.add("sprintf",Token.KEYWORD3);
perlKeywords.add("sqrt",Token.KEYWORD3);
perlKeywords.add("srand",Token.KEYWORD3);
perlKeywords.add("stat",Token.KEYWORD3);
perlKeywords.add("study",Token.KEYWORD3);
perlKeywords.add("substr",Token.KEYWORD3);
perlKeywords.add("symlink",Token.KEYWORD3);
perlKeywords.add("syscall",Token.KEYWORD3);
perlKeywords.add("sysopen",Token.KEYWORD3);
perlKeywords.add("sysread",Token.KEYWORD3);
perlKeywords.add("syswrite",Token.KEYWORD3);
perlKeywords.add("telldir",Token.KEYWORD3);
perlKeywords.add("tell",Token.KEYWORD3);
perlKeywords.add("tie",Token.KEYWORD3);
perlKeywords.add("tied",Token.KEYWORD3);
perlKeywords.add("time",Token.KEYWORD3);
perlKeywords.add("times",Token.KEYWORD3);
perlKeywords.add("truncate",Token.KEYWORD3);
perlKeywords.add("uc",Token.KEYWORD3);
perlKeywords.add("ucfirst",Token.KEYWORD3);
perlKeywords.add("umask",Token.KEYWORD3);
perlKeywords.add("undef",Token.KEYWORD3);
perlKeywords.add("unlink",Token.KEYWORD3);
perlKeywords.add("unpack",Token.KEYWORD3);
perlKeywords.add("unshift",Token.KEYWORD3);
perlKeywords.add("untie",Token.KEYWORD3);
perlKeywords.add("utime",Token.KEYWORD3);
perlKeywords.add("values",Token.KEYWORD3);
perlKeywords.add("vec",Token.KEYWORD3);
perlKeywords.add("wait",Token.KEYWORD3);
perlKeywords.add("waitpid",Token.KEYWORD3);
perlKeywords.add("wantarray",Token.KEYWORD3);
perlKeywords.add("warn",Token.KEYWORD3);
perlKeywords.add("write",Token.KEYWORD3);
perlKeywords.add("m",S_ONE);
perlKeywords.add("q",S_ONE);
perlKeywords.add("qq",S_ONE);
perlKeywords.add("qw",S_ONE);
perlKeywords.add("qx",S_ONE);
perlKeywords.add("s",S_TWO);
perlKeywords.add("tr",S_TWO);
perlKeywords.add("y",S_TWO);
}
return perlKeywords;
}
}
/**
* ChangeLog:
* $Log: ASPPerlscriptTokenMarker.java,v $
* Revision 1.1.1.1 2004/10/19 16:16:18 gfx
* no message
*
* Revision 1.1.1.1 2001/08/20 22:31:53 gfx
* Jext 3.0pre5
*
* Revision 1.2 2001/06/03 09:45:04 gfx
* Various bug fixes
*
* Revision 1.1.1.1 2001/04/11 14:22:26 gfx
*
* Jext 2.11: GUI customization, bug fixes
*
* Revision 1.9 1999/09/30 12:21:05 sp
* No net access for a month... so here's one big jEdit 2.1pre1
*
* Revision 1.8 1999/06/28 09:17:20 sp
* Perl mode javac compile fix, text area hacking
*
* Revision 1.7 1999/06/09 05:22:11 sp
* Find next now supports multi-file searching, minor Perl mode tweak
*
* Revision 1.6 1999/06/07 06:36:32 sp
* Syntax `styling' (bold/italic tokens) added,
* plugin options dialog for plugin option panes
*
* Revision 1.5 1999/06/07 03:26:33 sp
* Major Perl token marker updates
*
* Revision 1.4 1999/06/06 05:05:25 sp
* Search and replace tweaks, Perl/Shell Script mode updates
*
* Revision 1.3 1999/06/05 00:22:58 sp
* LGPL'd syntax package
*
* Revision 1.2 1999/06/03 08:24:14 sp
* Fixing broken CVS
*
* Revision 1.3 1999/05/31 08:11:10 sp
* Syntax coloring updates, expand abbrev bug fix
*
* Revision 1.2 1999/05/31 04:38:51 sp
* Syntax optimizations, HyperSearch for Selection added (Mike Dillon)
*
* Revision 1.1 1999/05/30 04:57:15 sp
* Perl mode started
*
*/
The table below shows all metrics for ASPPerlscriptTokenMarker.java.




