Filewatcher File Search
FTP Search
  
Directory (beta)
  
Content Search (beta)
   
pkg://jext-3.2-0.pre4.1jpp.src.rpm:1008008/jext-sources-3.2pre4.tar.gz  info  downloads

jextSrc-3.2pre4/ 40755      0      0           0  7763374400  10617 5ustar     0      0 jextSrc-3.2pre4/src/ 40755      0      0           0  7764671252  11414 5ustar     0      0 jextSrc-3.2pre4/src/lib/ 40755      0      0           0  7763374343  12162 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/ 40755      0      0           0  7763374343  12751 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/gjt/ 40755      0      0           0  7763374351  13534 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/gjt/sp/ 40755      0      0           0  7763374353  14160 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/gjt/sp/jedit/ 40755      0      0           0  7763374375  15263 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/gjt/sp/jedit/syntax/ 40755      0      0           0  7763374376  16612 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/gjt/sp/jedit/textarea/ 40755      0      0           0  7763374376  17101 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/gjt/sp/jedit/gui/ 40755      0      0           0  7763374353  16043 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/ 40755      0      0           0  7764671252  13723 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/images/ 40755      0      0           0  7763374376  15176 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/dawn/ 40755      0      0           0  7763374377  14663 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/dawn/string/ 40755      0      0           0  7763374376  16170 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/dawn/math/ 40755      0      0           0  7763374375  15612 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/dawn/javaccess/ 40755      0      0           0  7763374373  16621 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/dawn/util/ 40755      0      0           0  7763374376  15637 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/dawn/test/ 40755      0      0           0  7763374371  15634 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/dawn/stack/ 40755      0      0           0  7763374376  15767 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/dawn/array/ 40755      0      0           0  7763374376  16000 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/dawn/naming/ 40755      0      0           0  7763374376  16133 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/dawn/io/ 40755      0      0           0  7763374375  15270 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/dawn/err/ 40755      0      0           0  7763374373  15447 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/dawn/loop/ 40755      0      0           0  7763374360  15624 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/scripting/ 40755      0      0           0  7763374371  15726 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/scripting/dawn/ 40755      0      0           0  7763374373  16661 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/scripting/dawn/functions/ 40755      0      0           0  7763374376  20674 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/scripting/python/ 40755      0      0           0  7763374371  17247 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/xinsert/ 40755      0      0           0  7763374361  15417 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/options/ 40755      0      0           0  7763374375  15423 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/console/ 40755      0      0           0  7763374375  15372 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/console/commands/ 40755      0      0           0  7763374375  17173 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/protocol/ 40755      0      0           0  7763374350  15562 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/protocol/jextresource/ 40755      0      0           0  7763374355  20311 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/misc/ 40755      0      0           0  7763374374  14662 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/actions/ 40755      0      0           0  7763374374  15367 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/textarea/ 40755      0      0           0  7763374374  15544 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/oneclick/ 40755      0      0           0  7763374350  15510 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/project/ 40755      0      0           0  7763374370  15371 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/print/ 40755      0      0           0  7763374367  15065 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/search/ 40755      0      0           0  7763374374  15174 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/toolbar/ 40755      0      0           0  7763374370  15365 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/xml/ 40755      0      0           0  7763374374  14527 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/gui/ 40755      0      0           0  7764671252  14507 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/event/ 40755      0      0           0  7763374362  15045 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/jext/menus/ 40755      0      0           0  7763374375  15057 5ustar     0      0 jextSrc-3.2pre4/src/lib/gnu/ 40755      0      0           0  7763374342  12752 5ustar     0      0 jextSrc-3.2pre4/src/lib/gnu/regexp/ 40755      0      0           0  7763374375  14252 5ustar     0      0 jextSrc-3.2pre4/src/lib/com/ 40755      0      0           0  7763374344  12741 5ustar     0      0 jextSrc-3.2pre4/src/lib/com/microstar/ 40755      0      0           0  7763374345  14745 5ustar     0      0 jextSrc-3.2pre4/src/lib/com/microstar/xml/ 40755      0      0           0  7763374377  15552 5ustar     0      0 jextSrc-3.2pre4/src/plugins/ 40755      0      0           0  7763374365  13101 5ustar     0      0 jextSrc-3.2pre4/src/plugins/Java/ 40755      0      0           0  7763374377  13765 5ustar     0      0 jextSrc-3.2pre4/src/plugins/KLNF/ 40755      0      0           0  7763374373  13632 5ustar     0      0 jextSrc-3.2pre4/src/plugins/KLNF/com/ 40755      0      0           0  7763374351  14404 5ustar     0      0 jextSrc-3.2pre4/src/plugins/KLNF/com/incors/ 40755      0      0           0  7763374344  15703 5ustar     0      0 jextSrc-3.2pre4/src/plugins/KLNF/com/incors/plaf/ 40755      0      0           0  7763374377  16633 5ustar     0      0 jextSrc-3.2pre4/src/plugins/KLNF/com/incors/plaf/kunststoff/ 40755      0      0           0  7763374376  21040 5ustar     0      0 jextSrc-3.2pre4/src/plugins/KLNF/com/incors/plaf/kunststoff/icons/ 40755      0      0           0  7763374375  22152 5ustar     0      0 jextSrc-3.2pre4/src/plugins/KLNF/com/incors/plaf/kunststoff/themes/ 40755      0      0           0  7763374374  22323 5ustar     0      0 jextSrc-3.2pre4/src/plugins/PyBrowse/ 40755      0      0           0  7763374375  14654 5ustar     0      0 jextSrc-3.2pre4/src/plugins/check/ 40755      0      0           0  7763374376  14160 5ustar     0      0 jextSrc-3.2pre4/src/plugins/FindAll/ 40755      0      0           0  7763374375  14413 5ustar     0      0 jextSrc-3.2pre4/src/plugins/HTML/ 40755      0      0           0  7763374376  13647 5ustar     0      0 jextSrc-3.2pre4/src/plugins/FunnyBrackets/ 40755      0      0           0  7763374373  15656 5ustar     0      0 jextSrc-3.2pre4/src/plugins/FunnyBrackets/src/ 40755      0      0           0  7763374364  16445 5ustar     0      0 jextSrc-3.2pre4/src/plugins/Php/ 40755      0      0           0  7763374351  13623 5ustar     0      0 jextSrc-3.2pre4/src/plugins/Php/tpl/ 40755      0      0           0  7763374374  14427 5ustar     0      0 jextSrc-3.2pre4/src/plugins/Php/src/ 40755      0      0           0  7763374374  14417 5ustar     0      0 jextSrc-3.2pre4/src/plugins/Php/trans/ 40755      0      0           0  7763374353  14754 5ustar     0      0 jextSrc-3.2pre4/src/plugins/Php/trans/Français/ 40755      0      0           0  7763374363  16707 5ustar     0      0 jextSrc-3.2pre4/src/plugins/KeystrokeRecorder/ 40755      0      0           0  7763374374  16547 5ustar     0      0 jextSrc-3.2pre4/src/plugins/PHPBrowse/ 40755      0      0           0  7763374370  14706 5ustar     0      0 jextSrc-3.2pre4/src/plugins/WheelMouse/ 40755      0      0           0  7763374376  15160 5ustar     0      0 jextSrc-3.2pre4/src/plugins/WheelMouse/Native/ 40755      0      0           0  7763374365  16404 5ustar     0      0 jextSrc-3.2pre4/src/plugins/HyperTyper/ 40755      0      0           0  7763374376  15216 5ustar     0      0 jextSrc-3.2pre4/src/plugins/XMLBrowse/ 40755      0      0           0  7763374366  14724 5ustar     0      0 jextSrc-3.2pre4/src/plugins/FindInFiles/ 40755      0      0           0  7763374372  15231 5ustar     0      0 jextSrc-3.2pre4/src/plugins/FindInFiles/src/ 40755      0      0           0  7763374374  16022 5ustar     0      0 jextSrc-3.2pre4/src/plugins/diffs/ 40755      0      0           0  7763374371  14171 5ustar     0      0 jextSrc-3.2pre4/src/docs/ 40755      0      0           0  7763374365  12350 5ustar     0      0 jextSrc-3.2pre4/src/docs/xml-en/ 40755      0      0           0  7763374374  13550 5ustar     0      0 jextSrc-3.2pre4/src/docs/dtd/ 40755      0      0           0  7763374375  13124 5ustar     0      0 jextSrc-3.2pre4/src/docs/xml-fr/ 40755      0      0           0  7763374376  13557 5ustar     0      0 jextSrc-3.2pre4/src/docs/bin/ 40755      0      0           0  7763374366  13121 5ustar     0      0 jextSrc-3.2pre4/src/docs/index/ 40755      0      0           0  7763374374  13457 5ustar     0      0 jextSrc-3.2pre4/src/updating/ 40755      0      0           0  7763374375  13234 5ustar     0      0 jextSrc-3.2pre4/src/jextlauncher/ 40755      0      0           0  7763374377  14117 5ustar     0      0 jextSrc-3.2pre4/extplugins/ 40755      0      0           0  7763374377  13036 5ustar     0      0 jextSrc-3.2pre4/extplugins/Admin/ 40755      0      0           0  7763374377  14066 5ustar     0      0 jextSrc-3.2pre4/src/lib/org/gjt/sp/jedit/syntax/PatchTokenMarker.java100644      0      0        2116  7763374340  22743 0ustar     0      0 /*
 * PatchTokenMarker.java - DIFF patch token marker
 * Copyright (C) 1999 Slava Pestov
 *
 * You may use and modify this package for any purpose. Redistribution is
 * permitted, in both source and binary form, provided that this notice
 * remains intact in all source distributions of this package.
 */

package org.gjt.sp.jedit.syntax;

import javax.swing.text.Segment;

/**
 * Patch/diff token marker.
 *
 * @author Slava Pestov
 * @version $Id: PatchTokenMarker.java,v 1.1 2002/12/27 18:50:37 blaisorblade Exp $
 */
public class PatchTokenMarker extends TokenMarker
{
	public byte markTokensImpl(byte token, Segment line, int lineIndex)
	{
		if(line.count == 0)
			return Token.NULL;
		switch(line.array[line.offset])
		{
		case '+': case '>':
			addToken(line.count,Token.KEYWORD1);
			break;
		case '-': case '<':
			addToken(line.count,Token.KEYWORD2);
			break;
		case '@': case '*':
			addToken(line.count,Token.KEYWORD3);
			break;
	        default:
			addToken(line.count,Token.NULL);
			break;
		}
		return Token.NULL;
	}

	public boolean supportsMultilineTokens()
	{
		return false;
	}
}
jextSrc-3.2pre4/src/lib/org/gjt/sp/jedit/syntax/TokenMarkerWithAddToken.java100644      0      0        1711  7763374340  24231 0ustar     0      0 /*
 * TokenMarkerWithAddToken.java
 * Copyright (c) 1999 André Kaplan
 *
 * This program 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 program 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 program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

package org.gjt.sp.jedit.syntax;

/**
 * @author  Andre Kaplan
 * @version 0.5
 */

public interface TokenMarkerWithAddToken
{
	public void addToken(int length, byte id);
}
jextSrc-3.2pre4/src/lib/org/gjt/sp/jedit/syntax/TokenMarkerContext.java100644      0      0       14524  7763374341  23357 0ustar     0      0 /*
 * TokenMarkerContext.java
 * Copyright (c) 1999 André Kaplan
 *
 * This program 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 program 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 program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
package org.gjt.sp.jedit.syntax;

import javax.swing.text.Segment;

import gnu.regexp.*;

/**
 * This class contains the Context of a Token Marker that can be passed along 
 * nested Token Markers through a method like
 *   markTokensImpl(MyToken token, TokenMarkerContext ctx) : MyToken
 * where MyToken represents the token state at the end of the marked line.
 *
 * It contains useful infos such as last offset and last keyword and the pos in the marked line
 * It also provides utility functions that are often used in TokenMarkers such as
 * addTokenToPos, addTokenToEnd
 * doKeywordToPos, doKeywordToEnd
 *
 * @author  Andre Kaplan
 * @version 0.6
 */
public class TokenMarkerContext
{
	public TokenMarkerContext(Segment line,
							  int lineIndex,
							  TokenMarkerWithAddToken marker,
							  TokenMarker.LineInfo[] lineInfo)
	{
		this.line        = line;
		this.lineIndex   = lineIndex;
		this.marker      = marker;

		this.array       = line.array;
		this.offset      = line.offset;
		this.lastOffset  = line.offset;
		this.lastKeyword = line.offset;
		this.length      = line.offset + line.count;

		this.pos         = line.offset;

		if (lineInfo != null)
		{
			this.currLineInfo = lineInfo[lineIndex];
			this.prevLineInfo = ((lineIndex == 0) ? null : lineInfo[lineIndex - 1]);
		}
	}

	public TokenMarkerContext(Segment line,
							  int lineIndex,
							  TokenMarkerWithAddToken marker)
	{
		this(line, lineIndex, marker, null);
	}

	public boolean atFirst()
	{
		return (this.pos == line.offset);
	}

	public boolean hasMoreChars()
	{
		return (this.pos < this.length);
	}

	public int remainingChars()
	{
		return ((this.length - 1) - this.pos);
	}

	public char getChar()
	{
		return this.array[this.pos];
	}

	public char getChar(int inc)
	{
		return this.array[this.pos + inc];
	}

	public char lastChar()
	{
		return this.array[this.length - 1];
	}

	public void addToken(int length, byte id)
	{
		this.marker.addToken(length, id);
	}

	/**
	 * Adds a token to the position specified (position exclusive)
	 * The character at pos index is excluded
	 */
	public void addTokenToPos(byte id)
	{
		if (this.pos > this.lastOffset)
		{
			this.addToken(this.pos - this.lastOffset, id);
			this.lastOffset = this.lastKeyword = this.pos;
		}
	}

	public void addTokenToPos(int pos, byte id)
	{
		if (pos > this.lastOffset)
		{
			this.addToken(pos - this.lastOffset, id);
			this.lastOffset = this.lastKeyword = pos;
		}
	}

	// *************
	// addTokenToEnd
	// *************
	public void addTokenToEnd(byte id)
	{
		if (this.length > this.lastOffset)
		{
			this.addToken(this.length - this.lastOffset, id);
			this.pos = this.lastOffset = this.lastKeyword = this.length;
		}
	}

	// **************
	// doKeywordToPos
	// **************
	public byte doKeywordToPos(int pos, KeywordMap keywords)
	{
		int len = pos - this.lastKeyword;
		byte id = keywords.lookup(this.line, this.lastKeyword, len);

		if  (id != Token.NULL)
		{
			this.addTokenToPos(this.lastKeyword, Token.NULL);
			this.addTokenToPos(pos, id);
		}
		this.lastKeyword = pos + 1;
		return id;
	}

	// **************
	// doKeywordToPos
	// **************
	public byte doKeywordToPos(KeywordMap keywords)
	{
		int len = this.pos - this.lastKeyword;
		byte id = keywords.lookup(this.line, this.lastKeyword, len);

		if  (id != Token.NULL)
		{
			this.addTokenToPos(this.lastKeyword, Token.NULL);
			this.addTokenToPos(this.pos, id);
		}
		this.lastKeyword = this.pos + 1;
		return id;
	}

	// **************
	// doKeywordToEnd
	// **************
	public byte doKeywordToEnd(KeywordMap keywords)
	{
		return this.doKeywordToPos(this.length, keywords);
	}

	public boolean regionMatches(boolean ignoreCase, String match)
	{
		return SyntaxUtilities.regionMatches(ignoreCase, this.line, this.pos, match);
	}

	public REMatch RERegionMatches(RE match)
	{
		return RERegionMatches(this.line, this.pos, match);
	}

	/**
	 * Checks if a subregion of a <code>Segment</code> matches a regular expression.
     * The match-beginning operator (^) in the regular expression matches segment at position offset
	 * This function is intended to be part of SyntaxUtilities
	 * @param text The segment
	 * @param offset The offset into the segment
	 * @param match The regular expression to match
	 */
	private static REMatch RERegionMatches(Segment text, int offset, RE match)
	{
		try
		{
			String s = String.copyValueOf(text.array, offset, text.count - (offset - text.offset));
			return match.getMatch(s, 0, RE.REG_ANCHORINDEX);
			// BUG: The following may throw exceptions
			// I guess it's a thread safety issue since text.array may point to nowhere before getMatch has completed
			// If anyone knows about it...
			// char[] textArray = text.array;
			// return match.getMatch(textArray, offset, RE.REG_ANCHORINDEX);
		}
		catch (IllegalArgumentException iae)
		{
			return null;
		}
	}

	public String toString() {
		String res = 
			  "Line: " + (this.lineIndex + 1) /* Line numbers start from 1*/
			+ ", pos:" + (this.pos  - this.offset) + "\n";
		res += new String(line.array, line.offset, line.count);
		res += "\n";
		int spacerLen = this.pos - this.offset;
		StringBuffer spacer = new StringBuffer(spacerLen + 2);
		for (int i = 0; i < spacerLen; i++) {
			spacer.append('.');
		}
		spacer.append('^');
		spacer.append('\n');
		res += spacer.toString();
		return res;
	}

	public Segment line;
	public int     lineIndex;
	public char[]  array;
	public int     offset;
	public int     lastOffset;
	public int     lastKeyword;
	public int     length;

	public int     pos;

	private TokenMarkerWithAddToken marker;
	public TokenMarker.LineInfo prevLineInfo;
	public TokenMarker.LineInfo currLineInfo;
}

jextSrc-3.2pre4/src/lib/org/gjt/sp/jedit/syntax/SyntaxDocument.java100644      0      0       13717  7763374342  22561 0ustar     0      0 /*
 * SyntaxDocument.java - Document that can be tokenized
 * Copyright (C) 1999 Slava Pestov
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or any later version.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; 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.event.*;
import javax.swing.text.*;
import javax.swing.undo.UndoableEdit;

/**
 * A document implementation that can be tokenized by the syntax highlighting
 * system.
 *
 * @author Slava Pestov
 * @version $Id: SyntaxDocument.java,v 1.1.1.1 2001/08/20 22:31:42 gfx Exp $
 */
public class SyntaxDocument extends PlainDocument
{
	/**
	 * Returns the token marker that is to be used to split lines
	 * of this document up into tokens. May return null if this
	 * document is not to be colorized.
	 */
	public TokenMarker getTokenMarker()
	{
		return tokenMarker;
	}

	/**
	 * Sets the token marker that is to be used to split lines of
	 * this document up into tokens. May throw an exception if
	 * this is not supported for this type of document.
	 * @param tm The new token marker
	 */
	public void setTokenMarker(TokenMarker tm)
	{
		tokenMarker = tm;
		if(tm == null)
			return;
		tokenMarker.insertLines(0,getDefaultRootElement()
			.getElementCount());
		tokenizeLines();
	}

	/**
	 * Reparses the document, by passing all lines to the token
	 * marker. This should be called after the document is first
	 * loaded.
	 */
	public void tokenizeLines()
	{
		tokenizeLines(0,getDefaultRootElement().getElementCount());
	}

	/**
	 * Reparses the document, by passing the specified lines to the
	 * token marker. This should be called after a large quantity of
	 * text is first inserted.
	 * @param start The first line to parse
	 * @param len The number of lines, after the first one to parse
	 */
	public void tokenizeLines(int start, int len)
	{
		if(tokenMarker == null || !tokenMarker.supportsMultilineTokens())
			return;

		Segment lineSegment = new Segment();
		Element map = getDefaultRootElement();

		len += start;

		try
		{
			for(int i = start; i < len; i++)
			{
				Element lineElement = map.getElement(i);
				int lineStart = lineElement.getStartOffset();
				getText(lineStart,lineElement.getEndOffset()
					- lineStart - 1,lineSegment);
				tokenMarker.markTokens(lineSegment,i);
			}
		}
		catch(BadLocationException bl)
		{
			bl.printStackTrace();
		}
	}

	/**
	 * Starts a compound edit that can be undone in one operation.
	 * Subclasses that implement undo should override this method;
	 * this class has no undo functionality so this method is
	 * empty.
	 */
	public void beginCompoundEdit() {}

	/**
	 * Ends a compound edit that can be undone in one operation.
	 * Subclasses that implement undo should override this method;
	 * this class has no undo functionality so this method is
	 * empty.
	 */
	public void endCompoundEdit() {}

	/**
	 * Adds an undoable edit to this document's undo list. The edit
	 * should be ignored if something is currently being undone.
	 * @param edit The undoable edit
	 *
	 * @since jEdit 2.2pre1
	 */
	public void addUndoableEdit(UndoableEdit edit) {}

	// protected members
	protected TokenMarker tokenMarker;

	/**
	 * We overwrite this method to update the token marker
	 * state immediately so that any event listeners get a
	 * consistent token marker.
	 */
	protected void fireInsertUpdate(DocumentEvent evt)
	{
		if(tokenMarker != null)
		{
			DocumentEvent.ElementChange ch = evt.getChange(
				getDefaultRootElement());
			if(ch != null)
			{
				tokenMarker.insertLines(ch.getIndex() + 1,
					ch.getChildrenAdded().length -
					ch.getChildrenRemoved().length);
			}
		}

		super.fireInsertUpdate(evt);
	}

	/**
	 * We overwrite this method to update the token marker
	 * state immediately so that any event listeners get a
	 * consistent token marker.
	 */
	protected void fireRemoveUpdate(DocumentEvent evt)
	{
		if(tokenMarker != null)
		{
			DocumentEvent.ElementChange ch = evt.getChange(
				getDefaultRootElement());
			if(ch != null)
			{
				tokenMarker.deleteLines(ch.getIndex() + 1,
					ch.getChildrenRemoved().length -
					ch.getChildrenAdded().length);
			}
		}

		super.fireRemoveUpdate(evt);
	}
}

/*
 * ChangeLog:
 * $Log: SyntaxDocument.java,v $
 * Revision 1.1.1.1  2001/08/20 22:31:42  gfx
 * Jext 3.0pre5
 *
 * Revision 1.1.1.1  2001/04/11 14:22:35  gfx
 *
 * Jext 2.11: GUI customization, bug fixes
 *
 * Revision 1.14  1999/12/13 03:40:30  sp
 * Bug fixes, syntax is now mostly GPL'd
 *
 * Revision 1.13  1999/12/10 03:22:47  sp
 * Bug fixes, old loading code is now used again
 *
 * Revision 1.12  1999/12/07 08:16:55  sp
 * Reload bug nailed to the wall
 *
 * Revision 1.11  1999/11/07 06:51:43  sp
 * Check box menu items supported
 *
 * Revision 1.10  1999/10/24 02:06:41  sp
 * Miscallaneous pre1 stuff
 *
 * 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/07/05 04:38:39  sp
 * Massive batch of changes... bug fixes, also new text component is in place.
 * Have fun
 *
 * Revision 1.7  1999/06/22 06:14:39  sp
 * RMI updates, text area updates, flag to disable geometry saving
 *
 * 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/05 00:22:58  sp
 * LGPL'd syntax package
 *
 * Revision 1.4  1999/05/02 00:07:21  sp
 * Syntax system tweaks, console bugfix for Swing 1.1.1
 *
 * Revision 1.3  1999/04/19 05:38:20  sp
 * Syntax API changes
 *
 */
jextSrc-3.2pre4/src/lib/org/gjt/sp/jedit/syntax/VHDLTokenMarker.java100644      0      0       22454  7763374343  22473 0ustar     0      0 /*
 * VHDLTokenMarker.java - VHDL token marker
 * Copyright (C) 2000 Bogdan Mitu
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or any later version.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; 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;

/**
 * VHDL token marker.
 *
 * @author Bogdan Mitu
 * @version $Id: VHDLTokenMarker.java,v 1.1.1.1 2001/08/20 22:31:49 gfx Exp $
 */
public class VHDLTokenMarker extends TokenMarker
{
	public VHDLTokenMarker()
	{
		this.keywords = getKeywords();
	}

	public byte markTokensImpl(byte token, Segment line, int lineIndex)
	{
		char[] array = line.array;
		int offset = line.offset;
		lastOffset = offset;
		lastKeyword = offset;
		int length = line.count + offset;
		boolean backslash = false;

loop:		for(int i = offset; i < length; i++)
		{
			int i1 = (i+1);

			char c = array[i];
			if(c == '\\')
			{
				backslash = !backslash;
				continue;
			}

			switch(token)
			{
			case Token.NULL:
				switch(c)
				{
				case '#':
					if(backslash)
						backslash = false;
					break;
				case '"':
					doKeyword(line,i,c);
					if(backslash)
						backslash = false;
					else
					{
						addToken(i - lastOffset,token);
						token = Token.LITERAL1;
						lastOffset = lastKeyword = i;
					}
					break;
				case ':':
					if(lastKeyword == offset)
					{
						if(doKeyword(line,i,c))
							break;
						backslash = false;
						addToken(i1 - lastOffset,Token.LABEL);
						lastOffset = lastKeyword = i1;
					}
					else if(doKeyword(line,i,c))
						break;
					break;
				case '-':
					backslash = false;
					doKeyword(line,i,c);
					if(length - i > 1)
					{
						switch(array[i1])
						{
						case '*':
							addToken(i - lastOffset,token);
							lastOffset = lastKeyword = i;
							token = Token.COMMENT1;
							break;
						case '-':
							addToken(i - lastOffset,token);
							addToken(length - i,Token.COMMENT1);
							lastOffset = lastKeyword = length;
							break loop;
						}
					}
					break;
				default:
					backslash = false;
					if(!Character.isLetterOrDigit(c)
						&& c != '_')
						doKeyword(line,i,c);
					break;
				}
				break;
			case Token.COMMENT1:
			case Token.COMMENT2:
				backslash = false;
				if(c == '*' && length - i > 1)
				{
					if(array[i1] == '/')
					{
						i++;
						addToken((i+1) - lastOffset,token);
						token = Token.NULL;
						lastOffset = lastKeyword = i+1;
					}
				}
				break;
			case Token.LITERAL1:
				if(backslash)
					backslash = false;
				else if(c == '"')
				{
					addToken(i1 - lastOffset,token);
					token = Token.NULL;
					lastOffset = lastKeyword = i1;
				}
				break;
			case Token.LITERAL2:
				if(backslash)
					backslash = false;
				else if(c == '\'')
				{
					addToken(i1 - lastOffset,Token.LITERAL1);
					token = Token.NULL;
					lastOffset = lastKeyword = i1;
				}
				break;
			default:
				throw new InternalError("Invalid state: "
					+ token);
			}
		}

		if(token == Token.NULL)
			doKeyword(line,length,'\0');

		switch(token)
		{
		case Token.LITERAL1:
		case Token.LITERAL2:
			addToken(length - lastOffset,Token.INVALID);
			token = Token.NULL;
			break;
		case Token.KEYWORD2:
			addToken(length - lastOffset,token);
			if(!backslash)
				token = Token.NULL;
		default:
			addToken(length - lastOffset,token);
			break;
		}

		return token;
	}

	public static KeywordMap getKeywords()
	{
   		if(vhdlKeywords == null)
		{
            vhdlKeywords = new KeywordMap( true);
            vhdlKeywords.add("char",Token.KEYWORD3);
            vhdlKeywords.add("double",Token.KEYWORD3);
            vhdlKeywords.add("enum",Token.KEYWORD3);
            vhdlKeywords.add("real",Token.KEYWORD3);
            vhdlKeywords.add("integer",Token.KEYWORD3);
            vhdlKeywords.add("natural",Token.KEYWORD3);
            vhdlKeywords.add("text",Token.KEYWORD3);
            vhdlKeywords.add("boolean",Token.KEYWORD3);
            vhdlKeywords.add("line",Token.KEYWORD3);
            vhdlKeywords.add("string",Token.KEYWORD3);
            
            vhdlKeywords.add("bit",Token.KEYWORD3);
            vhdlKeywords.add("bit_vector",Token.KEYWORD3);
            vhdlKeywords.add("std_logic",Token.KEYWORD3);
            vhdlKeywords.add("std_logic_vector",Token.KEYWORD3);

            vhdlKeywords.add("if",Token.KEYWORD1);
            vhdlKeywords.add("then",Token.KEYWORD1);
            vhdlKeywords.add("elsif",Token.KEYWORD1);
            vhdlKeywords.add("else",Token.KEYWORD1);
            vhdlKeywords.add("begin",Token.KEYWORD1);
            vhdlKeywords.add("end",Token.KEYWORD1);
            vhdlKeywords.add("for",Token.KEYWORD1);
            vhdlKeywords.add("while",Token.KEYWORD1);
            vhdlKeywords.add("loop",Token.KEYWORD1);
            vhdlKeywords.add("when",Token.KEYWORD1);
            vhdlKeywords.add("after",Token.KEYWORD1);
            vhdlKeywords.add("wait",Token.KEYWORD1);
            vhdlKeywords.add("function",Token.KEYWORD1);
            vhdlKeywords.add("procedure",Token.KEYWORD1);
            vhdlKeywords.add("case",Token.KEYWORD1);
            vhdlKeywords.add("default",Token.KEYWORD1);
            vhdlKeywords.add("transport",Token.KEYWORD1);
            vhdlKeywords.add("and",Token.KEYWORD1);
            vhdlKeywords.add("or",Token.KEYWORD1);
            vhdlKeywords.add("not",Token.KEYWORD1);
            vhdlKeywords.add("xor",Token.KEYWORD1);
            vhdlKeywords.add("entity",Token.KEYWORD1);
            vhdlKeywords.add("architecture",Token.KEYWORD1);
            vhdlKeywords.add("port",Token.KEYWORD1);
            vhdlKeywords.add("in",Token.KEYWORD1);
            vhdlKeywords.add("out",Token.KEYWORD1);
            vhdlKeywords.add("inout",Token.KEYWORD1);
            vhdlKeywords.add("map",Token.KEYWORD1);
            vhdlKeywords.add("component",Token.KEYWORD1);
            vhdlKeywords.add("of",Token.KEYWORD1);
            vhdlKeywords.add("on",Token.KEYWORD1);
            vhdlKeywords.add("is",Token.KEYWORD1);
            vhdlKeywords.add("process",Token.KEYWORD1);
            vhdlKeywords.add("return",Token.KEYWORD1);
            vhdlKeywords.add("to",Token.KEYWORD1);
            vhdlKeywords.add("downto",Token.KEYWORD1);
            vhdlKeywords.add("alias",Token.KEYWORD1);
            vhdlKeywords.add("variable",Token.KEYWORD1);
            vhdlKeywords.add("signal",Token.KEYWORD1);
            vhdlKeywords.add("constant",Token.KEYWORD1);
            vhdlKeywords.add("generic",Token.KEYWORD1); 
            vhdlKeywords.add("range",Token.KEYWORD1); 
            vhdlKeywords.add("event",Token.KEYWORD1); 
            vhdlKeywords.add("file",Token.KEYWORD1);
            vhdlKeywords.add("time",Token.KEYWORD1);
            vhdlKeywords.add("all",Token.KEYWORD1);
            vhdlKeywords.add("package",Token.KEYWORD1);
            vhdlKeywords.add("use",Token.KEYWORD1);
            vhdlKeywords.add("library",Token.KEYWORD1);
            
            vhdlKeywords.add("true",Token.LITERAL2);
            vhdlKeywords.add("false",Token.LITERAL2);

            vhdlKeywords.add("NULL",Token.LITERAL2);
		}
		return vhdlKeywords;
	}

    public static final int AS_IS = 0;
    public static final int LOWER_CASE = 1;
    public static final int UPPER_CASE = 2;

	// private members
	private static KeywordMap vhdlKeywords;
	private KeywordMap keywords;
	private int lastOffset;
	private int lastKeyword;
	// to be used by a future plugin
	private int keywordCase = AS_IS;
	private boolean allLowerCase = false;

	private boolean doKeyword( Segment line, int i, char c)
	{
		int i1 = i+1;
		int len = i - lastKeyword;
        
		int txtOffset = lastKeyword;
		int n = i;
        
		byte id = keywords.lookup(line,lastKeyword,len);
		if(id != Token.NULL)
		{
			if(lastKeyword != lastOffset)
				addToken(lastKeyword - lastOffset,Token.NULL);
                              
			addToken(len,id);
			lastOffset = i;

            if( keywordCase == LOWER_CASE || allLowerCase == true ) 
            {
                char[] txt = line.array;
                for (int j = txtOffset; j < n; j++) 
                {
                    txt [j] = Character.toLowerCase( txt [j]); 
                }
            }
            else if( keywordCase == UPPER_CASE) 
            {
                char[] txt = line.array;
                for (int j = txtOffset; j < n; j++) 
                {
                    txt [j] = Character.toUpperCase( txt [j]); 
                }
            }
		}
		lastKeyword = i1;
		return false;
	}
	
	// to be used by a future plugin
	public void setKeywordCase( int c)
	{
		keywordCase = c;
	}
	
	// to be used by a future plugin
	public int getKeywordCase()
	{
		return keywordCase;
	}

	// to be used by a future plugin    
	public void setAllLowerCase( boolean b)
	{
		allLowerCase = b;
	}
    
	// to be used by a future plugin    
	public boolean getAllLowerCase()
	{
		return allLowerCase;
	}

}

// End of VHDLTokenMarker.java
jextSrc-3.2pre4/src/lib/org/gjt/sp/jedit/syntax/HTMLTokenMarker.java100644      0      0       30602  7763374343  22474 0ustar     0      0 /*
 * HTMLTokenMarker.java - HTML token marker
 * Copyright (C) 1998, 1999 Slava Pestov
 * Portions Copyright (C) 2001 by Romain Guy
 * (this includes attributes colorizing)
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or any later version.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; 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;

/**
 * HTML token marker.
 *
 * @author Slava Pestov
 * @version $Id: HTMLTokenMarker.java,v 1.3 2001/12/01 18:54:31 gfx Exp $
 */
public class HTMLTokenMarker extends TokenMarker
{
  public static final byte JAVASCRIPT = Token.INTERNAL_FIRST;
  public static final byte HTML_LITERAL_QUOTE = Token.INTERNAL_FIRST + 1;
  public static final byte HTML_LITERAL_NO_QUOTE = Token.INTERNAL_FIRST + 2;
  public static final byte INSIDE_TAG = Token.INTERNAL_FIRST + 3;

  public HTMLTokenMarker()
  {
    this(true);
  }

  public HTMLTokenMarker(boolean js)
  {
    this.js = js;
    keywords = JavaScriptTokenMarker.getKeywords();
  }

  public byte markTokensImpl(byte token, Segment line, int lineIndex)
  {
    char[] array = line.array;
    int offset = line.offset;
    lastOffset = offset;
    lastKeyword = offset;
    int length = line.count + offset;
    boolean backslash = false;
    lastWhitespace = offset - 1;

    loop:
    for (int i = offset; i < length; i++)
    {
      int i1 = (i + 1);

      char c = array[i];
      if (c == '\\')
      {
        backslash = !backslash;
        if (token == JAVASCRIPT)
          continue;
      }

      switch (token)
      {
        case Token.NULL: // HTML text
          backslash = false;
          switch (c)
          {
            case '\\':
              addToken(i - lastOffset, token);
              lastOffset = lastKeyword = i;
              token = Token.OPERATOR;
              break;
            case '<':
              addToken(i - lastOffset, token);
              lastOffset = lastKeyword = i;
              if (SyntaxUtilities.regionMatches(false, line, i1, "!--"))
              {
                i += 3;
                token = Token.COMMENT1;
              } else if (js && SyntaxUtilities.regionMatches(true, line, i1, "script")) {
                addToken(1, Token.KEYWORD1);
                //addToken(6, Token.METHOD);
                //lastOffset = lastKeyword = (i += 7);
                lastOffset = lastKeyword = i1;
                token = Token.METHOD;//JAVASCRIPT;
                javascript = true;
              } else {
                addToken(1, Token.KEYWORD1);
                lastOffset = lastKeyword = i1;
                token = Token.METHOD;
              }
              break;
            case '&':
              addToken(i - lastOffset, token);
              lastOffset = lastKeyword = i;
              token = Token.KEYWORD2;
              break;
          }
          break;
        case Token.OPERATOR:
          backslash = false;
          if (c != '<')
          {
            addToken(i1 - lastOffset, token);
            lastOffset = lastKeyword = i1;
            token = Token.NULL;
          }
          break;
        case Token.METHOD: // Inside a tag
          backslash = false;
          if (c == '>')
          {
            addToken(i - lastOffset, token);
            addToken(1, Token.KEYWORD1);
            lastOffset = lastKeyword = i1;
            if (!javascript)
              token = Token.NULL;
            else
            {
              javascript = false;
              lastWhitespace = i;
              token = JAVASCRIPT;
            }
          } else if (c == ':') {
            addToken(i1 - lastOffset, Token.LITERAL2);
            lastOffset = lastKeyword = i1;
          } else if (c == ' ' || c == '\t') {
            addToken(i1 - lastOffset, token);
            lastOffset = lastKeyword = i1;
            token = INSIDE_TAG;
          }
          break;
        case INSIDE_TAG:
          if (c == '>')
          {
            addToken(i - lastOffset, Token.METHOD);
            addToken(1, Token.KEYWORD1);
            lastOffset = lastKeyword = i1;
            if (!javascript)
              token = Token.NULL;
            else
            {
              javascript = false;
              token = JAVASCRIPT;
            }
          } else if (c == '/' || c == '?') {
            addToken(1, Token.METHOD);
            lastOffset = lastKeyword = i1;
            token = Token.METHOD;
          } else {//if (c != ' ' && c != '\t') {
            addToken(i - lastOffset, Token.NULL);
            lastOffset = lastKeyword = i;
            token = Token.KEYWORD3;
          }
          break;
        case Token.KEYWORD2: // Inside an entity
          backslash = false;
          if (c == ';')
          {
            addToken(i1 - lastOffset, token);
            lastOffset = lastKeyword = i1;
            token = Token.NULL;
          }
          break;
        case Token.KEYWORD3: // Inside an attribute
          if (c == '/' || c == '?')
          {
            addToken(i - lastOffset, token);
            addToken(1, Token.METHOD);
            lastOffset = lastKeyword = i1;
            //token = INSIDE_TAG;
          } else if (c == '=') {
            addToken(i - lastOffset, token);
            addToken(1, Token.LABEL);
            lastOffset = lastKeyword = i1;
            if (i1 < array.length && array[i1] == '"')
            {
              token = HTML_LITERAL_QUOTE;
              i++;
            } else {
              token = HTML_LITERAL_NO_QUOTE;
            }
          } else if (c == '>') {
            addToken(i - lastOffset, token);
            addToken(1, Token.KEYWORD1);
            lastOffset = lastKeyword = i1;
            token = Token.NULL;
          } else if (c == ' ' || c == '\t') {
            addToken(i1 - lastOffset, token);
            lastOffset = lastKeyword = i1;
            token = INSIDE_TAG;
          }
          break;
        case HTML_LITERAL_QUOTE:
          if (c == '"')
          {
            addToken(i1 - lastOffset, Token.LITERAL1);
            lastOffset = lastKeyword = i1;
            token = INSIDE_TAG;
          }
          break;
        case HTML_LITERAL_NO_QUOTE:
          if (c == ' ' || c == '\t')
          {
            addToken(i1 - lastOffset, Token.LITERAL1);
            lastOffset = lastKeyword = i1;
            token = INSIDE_TAG;
          } else if (c == '>') {
            addToken(i - lastOffset, Token.LITERAL1);
            addToken(1, Token.KEYWORD1);
            lastOffset = lastKeyword = i1;
            token = Token.NULL;
          }
          break;
        case Token.COMMENT1: // Inside a comment
          backslash = false;
          if (SyntaxUtilities.regionMatches(false, line, i, "-->"))
          {
            addToken((i + 3) - lastOffset, token);
            lastOffset = lastKeyword = i + 3;
            token = Token.NULL;
          }
          break;
        case JAVASCRIPT: // Inside a JavaScript
          switch (c)
          {
            case '<':
              backslash = false;
              doKeyword(line, i, c);
              if (SyntaxUtilities.regionMatches(true, line, i1, "/script>"))
              {
                addToken(i - lastOffset, Token.NULL);
                addToken(1, Token.KEYWORD1);
                addToken(7, Token.METHOD);
                addToken(1, Token.KEYWORD1);
                lastOffset = lastKeyword = (i += 9);
                token = Token.NULL;
              }
              break;
            case '(':
              if (backslash)
              {
                doKeyword(line, i, c);
                backslash = false;
              } else {
                if (doKeyword(line, i, c))
                  break;
                addToken(lastWhitespace - lastOffset + 1, Token.NULL);
                addToken(i - lastWhitespace - 1, Token.METHOD);
                addToken(1, Token.NULL);
                token = JAVASCRIPT;
                lastOffset = lastKeyword = i1;
                lastWhitespace = i;
              }
              break;
            case '"':
              if (backslash)
                backslash = false;
              else
              {
                doKeyword(line, i, c);
                addToken(i - lastOffset, Token.NULL);
                lastOffset = lastKeyword = i;
                token = Token.LITERAL1;
              }
              break;
            case '\'':
              if (backslash)
                backslash = false;
              else
              {
                doKeyword(line, i, c);
                addToken(i - lastOffset, Token.NULL);
                lastOffset = lastKeyword = i;
                token = Token.LITERAL2;
              }
              break;
            case '/':
              backslash = false;
              doKeyword(line, i, c);
              if (length - i > 1)
              {
                addToken(i - lastOffset, Token.NULL);
                lastOffset = lastKeyword = i;
                if (array[i1] == '/')
                {
                  addToken(length - i, Token.COMMENT2);
                  lastOffset = lastKeyword = length;
                  break loop;
                } else if (array[i1] == '*') {
                  token = Token.COMMENT2;
                }
              }
              break;
            default:
              backslash = false;
              if (!Character.isLetterOrDigit(c) && c != '_')
                doKeyword(line, i, c);
              if (CTokenMarker.METHOD_DELIMITERS.indexOf(c) != -1)
              {
                lastWhitespace = i;
              }
              break;
          }
          break;
        case Token.LITERAL1: // JavaScript "..."
          if (backslash)
            backslash = false;
          else if (c == '"')
          {
            addToken(i1 - lastOffset, Token.LITERAL1);
            lastOffset = lastKeyword = i1;
            token = JAVASCRIPT;
          }
          break;
        case Token.LITERAL2: // JavaScript '...'
          if (backslash)
            backslash = false;
          else if (c == '\'')
          {
            addToken(i1 - lastOffset, Token.LITERAL1);
            lastOffset = lastKeyword = i1;
            token = JAVASCRIPT;
          }
          break;
        case Token.COMMENT2: // Inside a JavaScript comment
          backslash = false;
          if (c == '*' && length - i > 1 && array[i1] == '/')
          {
            addToken((i += 2) - lastOffset, Token.COMMENT1);
            lastOffset = lastKeyword = i;
            token = JAVASCRIPT;
          }
          break;
        default:
          throw new InternalError("Invalid state: " + token);
      }
    }

    switch (token)
    {
      case Token.LITERAL1:
      case Token.LITERAL2:
        addToken(length - lastOffset, Token.INVALID);
        token = JAVASCRIPT;
        break;
      case Token.KEYWORD2:
        addToken(length - lastOffset, Token.INVALID);
        token = Token.NULL;
        break;
      case JAVASCRIPT:
        doKeyword(line, length, '\0');
        addToken(length - lastOffset, Token.NULL);
        break;
      case Token.COMMENT2:
        addToken(length - lastOffset, Token.COMMENT1);
        break;
      case INSIDE_TAG:
        break;
      case HTML_LITERAL_QUOTE: case HTML_LITERAL_NO_QUOTE:
        addToken(length - lastOffset, Token.LITERAL1);
        break;
      default:
        addToken(length - lastOffset, token);
        break;
    }

    return token;
  }

  // private members
  private KeywordMap keywords;
  private boolean js;
  private boolean javascript;
  private int lastOffset;
  private int lastKeyword;
  private int lastWhitespace;

  private boolean doKeyword(Segment line, int i, char c)
  {
    int i1 = i + 1;

    int len = i - lastKeyword;
    byte id = keywords.lookup(line, lastKeyword, len);
    if (id != Token.NULL)
    {
      if (lastKeyword != lastOffset)
        addToken(lastKeyword - lastOffset, Token.NULL);
      addToken(len, id);
      lastKeyword = i1;
      lastOffset = i;
      lastWhitespace = i;
      return true;
    }
    lastKeyword = i1;
    return false;
  }
}
jextSrc-3.2pre4/src/lib/org/gjt/sp/jedit/syntax/PascalTokenMarker.java100644      0      0       21547  7763374343  23143 0ustar     0      0 /*
 * PascalTokenMarker.java - Pascal token marker
 * Copyright (C) 2002 Romain Guy
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or any later version.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; 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;

/**
 * Pascal token marker.
 */
public class PascalTokenMarker extends TokenMarker
{
  public static final String METHOD_DELIMITERS = " \t~!%^*()-+=|\\#/{}[]:;\"'<>,.?";

  public PascalTokenMarker()
  {
    this.keywords = getKeywords();
  }

  public byte markTokensImpl(byte token,  Segment line,  int lineIndex)
  {
    char[] array = line.array;
    int offset = line.offset;
    lastOffset = offset;
    lastKeyword = offset;
    lastWhitespace = offset - 1;
    int length = line.count + offset;
    boolean backslash = false;

loop:   for (int i = offset; i < length; i++)
    {
      int i1 = (i + 1);

      char c = array[i];
      if (c == '\\')
      {
        backslash = !backslash;
        continue;
      }

out:  switch(token)
      {
        case Token.NULL:
          switch(c)
          {
          case '(':
            if (backslash)
            {
              doKeyword(line, i, c);
              backslash = false;
            } else {
              boolean k = doKeyword(line, i, c);
              if(length - i > 1)
              {
                switch(array[i1])
                {
                  case '*':
                    addToken(i - lastOffset, token);
                    token = Token.COMMENT2;
                    lastOffset = lastKeyword = i;
                    break out;
                }
              }
              if (k)
                break;
              addToken(lastWhitespace - lastOffset + 1, token);
              addToken(i - lastWhitespace - 1, Token.METHOD);
              addToken(1, Token.NULL);
              token = Token.NULL;
              lastOffset = lastKeyword = i1;
              lastWhitespace = i;
            }
            break;
          case '{':
            backslash = false;
            doKeyword(line, i, c);
            addToken(i - lastOffset, token);
            token = Token.COMMENT1;
            lastOffset = lastKeyword = i1;
            break;
          case '\'':
            doKeyword(line, i, c);
            if(backslash)
              backslash = false;
            else
            {
              addToken(i - lastOffset, token);
              token = Token.LITERAL1;
              lastOffset = lastKeyword = i;
            }
            break;
          default:
            backslash = false;
            if (!Character.isLetterOrDigit(c) && c != '_' && c != '{' && c != '}')
              doKeyword(line, i, c);
            if (METHOD_DELIMITERS.indexOf(c) != -1)
            {
              lastWhitespace = i;
            }
            break;
          }
          break;
        case Token.COMMENT1:
          backslash = false;
          if (c == '}')
          {
            addToken((i + 1) - lastOffset, token);
            token = Token.NULL;
            lastOffset = lastKeyword = i;
            lastWhitespace = i;
          }
          break;
        case Token.COMMENT2:
          backslash = false;
          if (c == '*' && length - i > 1)
          {
            if (array[i1] == ')')
            {
              i++;
              addToken((i + 1) - lastOffset, token);
              token = Token.NULL;
              lastOffset = lastKeyword = i + 1;
              lastWhitespace = i;
            }
          }
          break;
        case Token.LITERAL1:
          if (backslash)
            backslash = false;
          else if (c == '\'')
          {
            addToken(i1 - lastOffset, token);
            token = Token.NULL;
            lastOffset = lastKeyword = i1;
            lastWhitespace = i;
          }
          break;
        default:
          throw new InternalError("Invalid state: " + token);
      }
    }

    if (token == Token.NULL)
      doKeyword(line, length, '\0');

    switch(token)
    {
      case Token.LITERAL1:
        addToken(length - lastOffset, Token.INVALID);
        token = Token.NULL;
        break;
      default:
        addToken(length - lastOffset, token);
        break;
    }

    return token;
  }

  public static KeywordMap getKeywords()
  {
    if (pascalKeywords == null)
    {
      pascalKeywords = new KeywordMap(false);
      pascalKeywords.add("absolute", Token.KEYWORD1);
      pascalKeywords.add("and", Token.OPERATOR);
      pascalKeywords.add("array", Token.KEYWORD3);
      pascalKeywords.add("asm", Token.KEYWORD1);
      pascalKeywords.add("begin", Token.KEYWORD1);
      pascalKeywords.add("case", Token.KEYWORD1);
      pascalKeywords.add("const", Token.KEYWORD1);
      pascalKeywords.add("constructor", Token.KEYWORD1);
      pascalKeywords.add("destructor", Token.KEYWORD1);
      pascalKeywords.add("div", Token.OPERATOR);
      pascalKeywords.add("do", Token.KEYWORD1);
      pascalKeywords.add("downto", Token.KEYWORD1);
      pascalKeywords.add("else", Token.KEYWORD1);
      pascalKeywords.add("end", Token.KEYWORD1);
      pascalKeywords.add("external", Token.KEYWORD1);
      pascalKeywords.add("file", Token.KEYWORD1);
      pascalKeywords.add("for", Token.KEYWORD1);
      pascalKeywords.add("forward", Token.KEYWORD1);
      pascalKeywords.add("function", Token.KEYWORD1);
      pascalKeywords.add("goto", Token.KEYWORD1);
      pascalKeywords.add("if", Token.KEYWORD1);
      pascalKeywords.add("implementation", Token.KEYWORD2);
      pascalKeywords.add("in", Token.KEYWORD1);
      pascalKeywords.add("inherited", Token.KEYWORD1);
      pascalKeywords.add("inline", Token.KEYWORD1);
      pascalKeywords.add("interface", Token.KEYWORD1);
      pascalKeywords.add("interrupt", Token.KEYWORD1);
      pascalKeywords.add("label", Token.KEYWORD2);
      pascalKeywords.add("library", Token.KEYWORD2);
      pascalKeywords.add("mod", Token.OPERATOR);
      pascalKeywords.add("nil", Token.LABEL);
      pascalKeywords.add("not", Token.OPERATOR);
      pascalKeywords.add("object", Token.KEYWORD3);
      pascalKeywords.add("of", Token.KEYWORD1);
      pascalKeywords.add("on", Token.KEYWORD1);
      pascalKeywords.add("packed", Token.KEYWORD1);
      pascalKeywords.add("private", Token.KEYWORD1);
      pascalKeywords.add("procedure", Token.KEYWORD1);
      pascalKeywords.add("program", Token.KEYWORD1);
      pascalKeywords.add("public", Token.KEYWORD1);
      pascalKeywords.add("record", Token.KEYWORD3);
      pascalKeywords.add("repeat", Token.KEYWORD1);
      pascalKeywords.add("set", Token.KEYWORD3);
      pascalKeywords.add("shl", Token.KEYWORD1);
      pascalKeywords.add("shr", Token.KEYWORD1);
      pascalKeywords.add("string", Token.KEYWORD3);
      pascalKeywords.add("then", Token.KEYWORD1);
      pascalKeywords.add("to", Token.KEYWORD1);
      pascalKeywords.add("type", Token.KEYWORD1);
      pascalKeywords.add("unit", Token.KEYWORD1);
      pascalKeywords.add("until", Token.KEYWORD1);
      pascalKeywords.add("uses", Token.KEYWORD2);
      pascalKeywords.add("var", Token.KEYWORD1);
      pascalKeywords.add("virtual", Token.KEYWORD1);
      pascalKeywords.add("while", Token.KEYWORD1);
      pascalKeywords.add("with", Token.KEYWORD1);
      pascalKeywords.add("xor", Token.OPERATOR);
      pascalKeywords.add("true", Token.LABEL);
      pascalKeywords.add("false", Token.LABEL);
      pascalKeywords.add("maxint", Token.LABEL);
      pascalKeywords.add("maxlongint", Token.LABEL);
      pascalKeywords.add("boolean", Token.KEYWORD3);
      pascalKeywords.add("byte", Token.KEYWORD3);
      pascalKeywords.add("char", Token.KEYWORD3);
      pascalKeywords.add("extended", Token.KEYWORD3);
      pascalKeywords.add("longint", Token.KEYWORD3);
      pascalKeywords.add("integer", Token.KEYWORD3);
    }
    return pascalKeywords;
  }

  // private members
  private static KeywordMap pascalKeywords;

  private KeywordMap keywords;
  private int lastOffset;
  private int lastKeyword;
  private int lastWhitespace;

  private boolean doKeyword(Segment line,  int i,  char c)
  {
    int i1 = i+1;

    int len = i - lastKeyword;
    byte id = keywords.lookup(line, lastKeyword, len);
    if (id != Token.NULL)
    {
      if (lastKeyword != lastOffset)
        addToken(lastKeyword - lastOffset, Token.NULL);
      addToken(len, id);
      lastOffset = i;
      lastKeyword = i1;
      lastWhitespace = i;
      return true;
    }
    lastKeyword = i1;
    return false;
  }
}
jextSrc-3.2pre4/src/lib/org/gjt/sp/jedit/syntax/SAP2000TokenMarker.java100644      0      0       20442  7763374343  22656 0ustar     0      0 /*
 * SAP2000TokenMarker.java - SAP2000 token marker
 * Copyright (C) 2002 Romain Guy
 * romain.guy@jext.org
 * www.jext.org
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or any later version.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; 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;

public class SAP2000TokenMarker extends TokenMarker
{
  // private members
  private static KeywordMap sapKeywords;
  private KeywordMap keywords;

  private int lastOffset;
  private int lastKeyword;

  public SAP2000TokenMarker()
  {
    this.keywords = getKeywords();
  }

  public byte markTokensImpl(byte token, Segment line, int lineIndex)
  {
    char[] array = line.array;
    int offset = line.offset;
    lastOffset = offset;
    lastKeyword = offset;
    int length = line.count + offset;

loop: for(int i = offset; i < length; i++)
    {
      int i1 = (i+1);

      char c = array[i];

      switch(token)
      {
        case Token.NULL:
          switch(c)
          {
            case ';':
              addToken(i - lastOffset, token);
              addToken(length - i, Token.COMMENT1);
              token = Token.NULL;
              lastOffset = lastKeyword = length;
              break loop;
            case ' ':
              doKeyword(line, i, c);
              break;
            default:
              if (!Character.isLetterOrDigit(c))
                doKeyword(line, i, c);
          }
          break;
        default:
          throw new InternalError("Invalid state: " + token);
      }
    }

    if (token == Token.NULL)
      doKeyword(line, length, '\0');

    switch(token)
    {
      //case Token.LITERAL1:
      //case Token.LITERAL2:
      //  addToken(length - lastOffset, Token.INVALID);
      //  token = Token.NULL;
      //  break;
      //case Token.KEYWORD2:
      //  addToken(length - lastOffset, token);
      //  token = Token.NULL;
      default:
        addToken(length - lastOffset, token);
        break;
    }

    return token;
  }

  public static KeywordMap getKeywords()
  {
    if (sapKeywords == null)
    {
      sapKeywords = new KeywordMap(true);
      sapKeywords.add("SYSTEM", Token.LABEL);
      sapKeywords.add("COORDINATE", Token.LABEL);
      sapKeywords.add("JOINT", Token.LABEL);
      sapKeywords.add("JOINTS", Token.LABEL);
      sapKeywords.add("LOCAL", Token.LABEL);
      sapKeywords.add("RESTRAINT", Token.LABEL);
      sapKeywords.add("RESTRAINTS", Token.LABEL);
      sapKeywords.add("CONSTRAINT", Token.LABEL);
      sapKeywords.add("CONSTRAINTS", Token.LABEL);
      sapKeywords.add("WELD", Token.LABEL);
      sapKeywords.add("PATTERN", Token.LABEL);
      sapKeywords.add("SPRING", Token.LABEL);
      sapKeywords.add("MASS", Token.LABEL);
      sapKeywords.add("MASSES", Token.LABEL);
      sapKeywords.add("MATERIAL", Token.LABEL);
      sapKeywords.add("FRAME", Token.LABEL);
      sapKeywords.add("FRAMES", Token.LABEL);
      sapKeywords.add("SHELL", Token.LABEL);
      sapKeywords.add("SECTION", Token.LABEL);
      sapKeywords.add("SECTIONS", Token.LABEL);
      sapKeywords.add("NLPROP", Token.LABEL);
      sapKeywords.add("FRAME", Token.LABEL);
      sapKeywords.add("SHELL", Token.LABEL);
      sapKeywords.add("PLANE", Token.LABEL);
      sapKeywords.add("ASOLID", Token.LABEL);
      sapKeywords.add("SOLID", Token.LABEL);
      sapKeywords.add("NLLINK", Token.LABEL);
      sapKeywords.add("MATTEMP", Token.LABEL);
      sapKeywords.add("REFTEMP", Token.LABEL);
      sapKeywords.add("PRESTRESS", Token.LABEL);
      sapKeywords.add("LOAD", Token.LABEL);
      sapKeywords.add("LOADS", Token.LABEL);
      sapKeywords.add("PDFORCE", Token.LABEL);
      sapKeywords.add("PDELTA", Token.LABEL);
      sapKeywords.add("MODES", Token.LABEL);
      sapKeywords.add("FUNCTION", Token.LABEL);
      sapKeywords.add("SPEC", Token.LABEL);
      sapKeywords.add("HISTORY", Token.LABEL);
      sapKeywords.add("LANE", Token.LABEL);
      sapKeywords.add("VEHICLE", Token.LABEL);
      sapKeywords.add("VEHICLE", Token.LABEL);
      sapKeywords.add("CLASS", Token.LABEL);
      sapKeywords.add("RESPONSE", Token.LABEL);
      sapKeywords.add("BRIDGE", Token.LABEL);
      sapKeywords.add("MOVING", Token.LABEL);
      sapKeywords.add("COMBO", Token.LABEL);
      sapKeywords.add("OUTPUT", Token.LABEL);
      sapKeywords.add("END", Token.LABEL);

      sapKeywords.add("NAME", Token.KEYWORD1);
      sapKeywords.add("TYPE", Token.KEYWORD1);
      sapKeywords.add("IDES", Token.KEYWORD1);
      sapKeywords.add("MAT", Token.KEYWORD1);
      sapKeywords.add("MATANG", Token.KEYWORD1);
      sapKeywords.add("TH", Token.KEYWORD1);
      sapKeywords.add("GEN", Token.KEYWORD1);
      sapKeywords.add("LGEN", Token.KEYWORD1);
      sapKeywords.add("FGEN", Token.KEYWORD1);
      sapKeywords.add("EGEN", Token.KEYWORD1);
      sapKeywords.add("CGEN", Token.KEYWORD1);
      sapKeywords.add("DEL", Token.KEYWORD1);
      sapKeywords.add("ADD", Token.KEYWORD1);
      sapKeywords.add("REM", Token.KEYWORD1);
      sapKeywords.add("ELEM", Token.KEYWORD1);
      sapKeywords.add("FACE", Token.KEYWORD1);
      sapKeywords.add("CSYS", Token.KEYWORD1);
      sapKeywords.add("AXDIR", Token.KEYWORD1);
      sapKeywords.add("PLDIR", Token.KEYWORD1);
      sapKeywords.add("LOCAL", Token.KEYWORD1);
      sapKeywords.add("SW", Token.KEYWORD1);

      sapKeywords.add("DOF", Token.KEYWORD2);
      sapKeywords.add("LENGTH", Token.KEYWORD2);
      sapKeywords.add("FORCE", Token.KEYWORD2);
      sapKeywords.add("UP", Token.KEYWORD2);
      sapKeywords.add("CYC", Token.KEYWORD2);
      sapKeywords.add("WARN", Token.KEYWORD2);
      sapKeywords.add("PAGE", Token.KEYWORD2);
      sapKeywords.add("LINES", Token.KEYWORD2);
      sapKeywords.add("LMAP", Token.KEYWORD2);
      sapKeywords.add("FMAP", Token.KEYWORD2);
      sapKeywords.add("NLP", Token.KEYWORD2);
      sapKeywords.add("AXVEC", Token.KEYWORD2);
      sapKeywords.add("PLVEC", Token.KEYWORD2);
      sapKeywords.add("ANG", Token.KEYWORD2);
      sapKeywords.add("ZERO", Token.KEYWORD2);
      sapKeywords.add("UX", Token.KEYWORD2);
      sapKeywords.add("UY", Token.KEYWORD2);
      sapKeywords.add("UZ", Token.KEYWORD2);
      sapKeywords.add("RX", Token.KEYWORD2);
      sapKeywords.add("RY	", Token.KEYWORD2);
      sapKeywords.add("RZ", Token.KEYWORD2);
      sapKeywords.add("U1", Token.KEYWORD2);
      sapKeywords.add("U2", Token.KEYWORD2);
      sapKeywords.add("U3", Token.KEYWORD2);
      sapKeywords.add("R1", Token.KEYWORD2);
      sapKeywords.add("R2", Token.KEYWORD2);
      sapKeywords.add("R3", Token.KEYWORD2);
      sapKeywords.add("RD", Token.KEYWORD2);
      sapKeywords.add("PAT", Token.KEYWORD2);

      sapKeywords.add("FORCE", Token.KEYWORD3);
      sapKeywords.add("RESTRAINT", Token.KEYWORD3);
      sapKeywords.add("SPRING", Token.KEYWORD3);
      sapKeywords.add("DISPLACEMENT", Token.KEYWORD3);
      sapKeywords.add("GRAVITY", Token.KEYWORD3);
      sapKeywords.add("CONCENTRATED", Token.KEYWORD3);
      sapKeywords.add("SPAN", Token.KEYWORD3);
      sapKeywords.add("DISTRIBUTED", Token.KEYWORD3);
      sapKeywords.add("PRESTRESS", Token.KEYWORD3);
      sapKeywords.add("UNIFORM", Token.KEYWORD3);
      sapKeywords.add("SURVACE", Token.KEYWORD3);
      sapKeywords.add("PORE", Token.KEYWORD3);
      sapKeywords.add("PRESSURE", Token.KEYWORD3);
      sapKeywords.add("TEMPERATURE", Token.KEYWORD3);
      sapKeywords.add("ROTATE", Token.KEYWORD3);
    }

    return sapKeywords;
  }

  private boolean doKeyword(Segment line, int i, char c)
  {
    int i1 = i + 1;

    int len = i - lastKeyword;
    byte id = keywords.lookup(line, lastKeyword, len);
    if (id != Token.NULL)
    {
      if(lastKeyword != lastOffset)
        addToken(lastKeyword - lastOffset, Token.NULL);
      addToken(len, id);
      lastOffset = i;
    }
    lastKeyword = i1;
    return false;
  }
}

// End of SAP2000TokenMarker.java
jextSrc-3.2pre4/src/lib/org/gjt/sp/jedit/syntax/PikeTokenMarker.java100644      0      0        5632  7763374344  22606 0ustar     0      0 /*
 * PikeTokenMarker.java - Java token marker
 * Copyright (C) 2002 Romain Guy
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or any later version.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; 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;

/**
 * Pike token marker.
 *
 * @author Romain Guy
 */

public class PikeTokenMarker extends CTokenMarker
{
	public PikeTokenMarker()
	{
		super(true, false, getKeywords());
	}

	public static KeywordMap getKeywords()
	{
		if (pikeKeywords == null)
		{
			pikeKeywords = new KeywordMap(false);
			pikeKeywords.add("array", Token.KEYWORD3);
			pikeKeywords.add("break", Token.KEYWORD1);
			pikeKeywords.add("case", Token.KEYWORD1);
			pikeKeywords.add("catch", Token.KEYWORD1);
			pikeKeywords.add("continue", Token.KEYWORD1);
			pikeKeywords.add("default", Token.KEYWORD1);
			pikeKeywords.add("do", Token.KEYWORD1);
			pikeKeywords.add("else", Token.KEYWORD1);
			pikeKeywords.add("float", Token.KEYWORD3);
			pikeKeywords.add("for", Token.KEYWORD1);
			pikeKeywords.add("foreach", Token.KEYWORD1);
			pikeKeywords.add("function", Token.KEYWORD1);
			pikeKeywords.add("gauge", Token.KEYWORD1);
			pikeKeywords.add("if", Token.KEYWORD1);
			pikeKeywords.add("inherit", Token.KEYWORD1);
			pikeKeywords.add("inline", Token.KEYWORD1);
			pikeKeywords.add("int", Token.KEYWORD3);
			pikeKeywords.add("lambda", Token.KEYWORD1);
			pikeKeywords.add("mapping", Token.KEYWORD1);
			pikeKeywords.add("mixed", Token.KEYWORD3);
			pikeKeywords.add("multiset", Token.KEYWORD1);
			pikeKeywords.add("nomask", Token.KEYWORD1);
			pikeKeywords.add("object", Token.KEYWORD3);
			pikeKeywords.add("predef", Token.KEYWORD1);
			pikeKeywords.add("private", Token.KEYWORD1);
			pikeKeywords.add("program", Token.KEYWORD1);
			pikeKeywords.add("protected", Token.KEYWORD1);
			pikeKeywords.add("public", Token.KEYWORD1);
			pikeKeywords.add("return", Token.KEYWORD1);
			pikeKeywords.add("sscanf", Token.KEYWORD1);
			pikeKeywords.add("static", Token.KEYWORD1);
			pikeKeywords.add("string", Token.KEYWORD3);
			pikeKeywords.add("switch", Token.KEYWORD1);
			pikeKeywords.add("typeof", Token.KEYWORD1);
			pikeKeywords.add("varargs", Token.KEYWORD1);
			pikeKeywords.add("void", Token.KEYWORD3);
			pikeKeywords.add("while", Token.KEYWORD1);
		}
		return pikeKeywords;
	}

	// private members
	private static KeywordMap pikeKeywords;
}

jextSrc-3.2pre4/src/lib/org/gjt/sp/jedit/syntax/BatchFileTokenMarker.java100644      0      0       10336  7763374344  23554 0ustar     0      0 /*
 * BatchFileTokenMarker.java - Batch file token marker
 * Copyright (C) 1998, 1999 Slava Pestov
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or any later version.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; 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;

/**
 * Batch file token marker.
 *
 * @author Slava Pestov
 * @version $Id: BatchFileTokenMarker.java,v 1.1.1.1 2001/08/20 22:32:04 gfx Exp $
 */
public class BatchFileTokenMarker extends TokenMarker
{
	public byte markTokensImpl(byte token, Segment line, int lineIndex)
	{
		char[] array = line.array;
		int offset = line.offset;
		int lastOffset = offset;
		int length = line.count + offset;

		if(SyntaxUtilities.regionMatches(true,line,offset,"rem"))
		{
			addToken(line.count,Token.COMMENT1);
			return Token.NULL;
		}

loop:		for(int i = offset; i < length; i++)
		{
			int i1 = (i+1);

			switch(token)
			{
			case Token.NULL:
				switch(array[i])
				{
				case '%':
					addToken(i - lastOffset,token);
					lastOffset = i;
					if(length - i <= 3 || array[i+2] == ' ')
					{
						addToken(2,Token.KEYWORD2);
						i += 2;
						lastOffset = i;
					}
					else
						token = Token.KEYWORD2;
					break;
				case '"':
					addToken(i - lastOffset,token);
					token = Token.LITERAL1;
					lastOffset = i;
					break;
				case ':':
					if(i == offset)
					{
						addToken(line.count,Token.LABEL);
						lastOffset = length;
						break loop;
					}
					break;
				case ' ':
					if(lastOffset == offset)
					{
						addToken(i - lastOffset,Token.KEYWORD1);
						lastOffset = i;
					}
					break;
				}
				break;
			case Token.KEYWORD2:
				if(array[i] == '%')
				{
					addToken(i1 - lastOffset,token);
					token = Token.NULL;
					lastOffset = i1;
				}
				break;
			case Token.LITERAL1:
				if(array[i] == '"')
				{
					addToken(i1 - lastOffset,token);
					token = Token.NULL;
					lastOffset = i1;
				}
				break;
			default:
				throw new InternalError("Invalid state: " + token);
			}
		}

		if(lastOffset != length)
		{
			if(token != Token.NULL)
				token = Token.INVALID;
			else if(lastOffset == offset)
				token = Token.KEYWORD1;
			addToken(length - lastOffset,token);
		}
		return Token.NULL;
	}

	public boolean supportsMultilineTokens()
	{
		return false;
	}
}

/*
 * ChangeLog:
 * $Log: BatchFileTokenMarker.java,v $
 * Revision 1.1.1.1  2001/08/20 22:32:04  gfx
 * Jext 3.0pre5
 *
 * Revision 1.1.1.1  2001/04/11 14:22:28  gfx
 *
 * Jext 2.11: GUI customization, bug fixes
 *
 * Revision 1.20  1999/12/13 03:40:29  sp
 * Bug fixes, syntax is now mostly GPL'd
 *
 * Revision 1.19  1999/07/16 23:45:49  sp
 * 1.7pre6 BugFree version
 *
 * Revision 1.18  1999/07/05 04:38:39  sp
 * Massive batch of changes... bug fixes, also new text component is in place.
 * Have fun
 *
 * Revision 1.17  1999/06/20 02:15:45  sp
 * Syntax coloring optimizations
 *
 * Revision 1.16  1999/06/05 00:22:58  sp
 * LGPL'd syntax package
 *
 * Revision 1.15  1999/06/03 08:24:13  sp
 * Fixing broken CVS
 *
 * Revision 1.16  1999/05/31 08:11:10  sp
 * Syntax coloring updates, expand abbrev bug fix
 *
 * Revision 1.15  1999/05/31 04:38:51  sp
 * Syntax optimizations, HyperSearch for Selection added (Mike Dillon)
 *
 * Revision 1.14  1999/04/19 05:38:20  sp
 * Syntax API changes
 *
 * Revision 1.13  1999/03/26 05:13:04  sp
 * Enhanced menu item updates
 *
 * Revision 1.12  1999/03/13 08:50:39  sp
 * Syntax colorizing updates and cleanups, general code reorganizations
 *
 * Revision 1.11  1999/03/13 00:09:07  sp
 * Console updates, uncomment removed cos it's too buggy, cvs log tags added
 *
 * Revision 1.10  1999/03/12 23:51:00  sp
 * Console updates, uncomment removed cos it's too buggy, cvs log tags added
 *
 */
jextSrc-3.2pre4/src/lib/org/gjt/sp/jedit/syntax/PovrayTokenMarker.java100644      0      0       24314  7763374345  23215 0ustar     0      0 /*
 * PovrayTokenMarker.java - Povray token marker
 * Copyright (C) 0000 Romain Guy
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 0
 * of the License, or any later version.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 09 Temple Place - Suite000, Boston, MA  00000-0007, USA.
 */

package org.gjt.sp.jedit.syntax;

import javax.swing.text.Segment;

/**
 * Povray token marker.
 * @author Romain Guy
 */

public class PovrayTokenMarker extends CTokenMarker
{
  // private members
  private static KeywordMap povrayKeywords;

  public PovrayTokenMarker()
  {
    super(true, true, getKeywords());
  }

  public static KeywordMap getKeywords()
  {
    if (povrayKeywords == null)
    {
      povrayKeywords = new KeywordMap(false);
      povrayKeywords.add("adaptive", Token.KEYWORD1);
      povrayKeywords.add("agate", Token.KEYWORD1);
      povrayKeywords.add("agate_turb", Token.KEYWORD1);
      povrayKeywords.add("all", Token.KEYWORD1);
      povrayKeywords.add("alpha", Token.KEYWORD1);
      povrayKeywords.add("ambient", Token.KEYWORD1);
      povrayKeywords.add("angle", Token.KEYWORD1);
      povrayKeywords.add("arc_angle", Token.KEYWORD1);
      povrayKeywords.add("area_light", Token.KEYWORD3);
      povrayKeywords.add("atmosphere", Token.KEYWORD3);
      povrayKeywords.add("atmospheric_attenuation", Token.KEYWORD1);
      povrayKeywords.add("background", Token.KEYWORD3);
      povrayKeywords.add("bicubic_patch", Token.KEYWORD3);
      povrayKeywords.add("blob", Token.KEYWORD3);
      povrayKeywords.add("blue", Token.LITERAL2);
      povrayKeywords.add("bounded_by", Token.KEYWORD1);
      povrayKeywords.add("box", Token.KEYWORD3);
      povrayKeywords.add("bozo", Token.KEYWORD1);
      povrayKeywords.add("brilliance", Token.KEYWORD1);
      povrayKeywords.add("bumps", Token.KEYWORD1);
      povrayKeywords.add("bump_map", Token.KEYWORD3);
      povrayKeywords.add("bump_size", Token.KEYWORD1);
      povrayKeywords.add("camera", Token.KEYWORD3);
      povrayKeywords.add("checker", Token.KEYWORD1);
      povrayKeywords.add("clipped_by", Token.KEYWORD1);
      povrayKeywords.add("clock", Token.LITERAL2);
      povrayKeywords.add("color", Token.KEYWORD1);
      povrayKeywords.add("color_map", Token.KEYWORD3);
      povrayKeywords.add("colour", Token.KEYWORD1);
      povrayKeywords.add("colour_map", Token.KEYWORD3);
      povrayKeywords.add("component", Token.KEYWORD1);
      povrayKeywords.add("composite", Token.KEYWORD1);
      povrayKeywords.add("cone", Token.KEYWORD3);
      povrayKeywords.add("crand", Token.KEYWORD1);
      povrayKeywords.add("cubic", Token.KEYWORD3);
      povrayKeywords.add("cylinder", Token.KEYWORD3);
      povrayKeywords.add("cylindrical_mapping", Token.KEYWORD1);
      povrayKeywords.add("declare", Token.LITERAL2);
      povrayKeywords.add("default", Token.LITERAL2);
      povrayKeywords.add("dents", Token.KEYWORD1);
      povrayKeywords.add("difference", Token.KEYWORD1);
      povrayKeywords.add("diffuse", Token.KEYWORD1);
      povrayKeywords.add("direction", Token.KEYWORD1);
      povrayKeywords.add("disc", Token.KEYWORD3);
      povrayKeywords.add("distance", Token.KEYWORD1);
      povrayKeywords.add("dump", Token.KEYWORD1);
      povrayKeywords.add("emitting", Token.KEYWORD1);
      povrayKeywords.add("falloff", Token.KEYWORD1);
      povrayKeywords.add("falloff_angle", Token.KEYWORD1);
      povrayKeywords.add("filter", Token.KEYWORD1);
      povrayKeywords.add("finish", Token.KEYWORD3);
      povrayKeywords.add("flatness", Token.KEYWORD1);
      povrayKeywords.add("fog", Token.KEYWORD3);
      povrayKeywords.add("fog_alt", Token.KEYWORD1);
      povrayKeywords.add("fog_offset", Token.KEYWORD1);
      povrayKeywords.add("fog_type", Token.KEYWORD1);
      povrayKeywords.add("frequency", Token.KEYWORD1);
      povrayKeywords.add("gif", Token.LITERAL2);
      povrayKeywords.add("gradient", Token.KEYWORD3);
      povrayKeywords.add("granite", Token.KEYWORD1);
      povrayKeywords.add("green", Token.LITERAL2);
      povrayKeywords.add("height_field", Token.KEYWORD3);
      povrayKeywords.add("hexagon", Token.KEYWORD1);
      povrayKeywords.add("iff", Token.LITERAL2);
      povrayKeywords.add("image_map", Token.KEYWORD3);
      povrayKeywords.add("include", Token.LITERAL2);
      povrayKeywords.add("interpolate", Token.KEYWORD1);
      povrayKeywords.add("intersection", Token.KEYWORD1);
      povrayKeywords.add("inverse", Token.KEYWORD1);
      povrayKeywords.add("ior", Token.KEYWORD1);
      povrayKeywords.add("halo", Token.KEYWORD3);
      povrayKeywords.add("jitter", Token.KEYWORD1);
      povrayKeywords.add("lambda", Token.KEYWORD1);
      povrayKeywords.add("leopard", Token.KEYWORD1);
      povrayKeywords.add("light_source", Token.KEYWORD3);
      povrayKeywords.add("linear", Token.KEYWORD1);
      povrayKeywords.add("linear_spline", Token.KEYWORD1);
      povrayKeywords.add("location", Token.KEYWORD1);
      povrayKeywords.add("looks_like", Token.KEYWORD1);
      povrayKeywords.add("look_at", Token.KEYWORD1);
      povrayKeywords.add("mandel", Token.KEYWORD1);
      povrayKeywords.add("map_type", Token.KEYWORD1);
      povrayKeywords.add("marble", Token.KEYWORD1);
      povrayKeywords.add("material_map", Token.KEYWORD3);
      povrayKeywords.add("max_intersections", Token.LABEL);
      povrayKeywords.add("max_trace_level", Token.LABEL);
      povrayKeywords.add("merge", Token.KEYWORD1);
      povrayKeywords.add("metallic", Token.KEYWORD1);
      povrayKeywords.add("normal", Token.KEYWORD3);
      povrayKeywords.add("no_shadow", Token.KEYWORD1);
      povrayKeywords.add("object", Token.KEYWORD3);
      povrayKeywords.add("off", Token.LITERAL2);
      povrayKeywords.add("on", Token.LITERAL2);
      povrayKeywords.add("octaves", Token.KEYWORD1);
      povrayKeywords.add("omega", Token.KEYWORD1);
      povrayKeywords.add("once", Token.KEYWORD1);
      povrayKeywords.add("onion", Token.KEYWORD1);
      povrayKeywords.add("open", Token.KEYWORD1);
      povrayKeywords.add("phase", Token.KEYWORD1);
      povrayKeywords.add("phong", Token.KEYWORD1);
      povrayKeywords.add("phong_size", Token.KEYWORD1);
      povrayKeywords.add("pigment", Token.KEYWORD3);
      povrayKeywords.add("plane", Token.KEYWORD3);
      povrayKeywords.add("point_at", Token.KEYWORD1);
      povrayKeywords.add("poly", Token.KEYWORD3);
      povrayKeywords.add("pot", Token.LITERAL2);
      povrayKeywords.add("prism", Token.KEYWORD3);
      povrayKeywords.add("quadric", Token.KEYWORD3);
      povrayKeywords.add("quartic", Token.KEYWORD3);
      povrayKeywords.add("quick_color", Token.KEYWORD1);
      povrayKeywords.add("quick_colour", Token.KEYWORD1);
      povrayKeywords.add("radial", Token.KEYWORD1);
      povrayKeywords.add("radius", Token.KEYWORD1);
      povrayKeywords.add("rainbow", Token.KEYWORD3);
      povrayKeywords.add("raw", Token.KEYWORD1);
      povrayKeywords.add("red", Token.LITERAL2);
      povrayKeywords.add("reflection", Token.KEYWORD1);
      povrayKeywords.add("refraction", Token.KEYWORD1);
      povrayKeywords.add("rgb", Token.KEYWORD1);
      povrayKeywords.add("rgbf", Token.KEYWORD1);
      povrayKeywords.add("rgbt", Token.KEYWORD1);
      povrayKeywords.add("right", Token.KEYWORD1);
      povrayKeywords.add("ripples", Token.KEYWORD1);
      povrayKeywords.add("rotate", Token.KEYWORD1);
      povrayKeywords.add("roughness", Token.KEYWORD1);
      povrayKeywords.add("samples", Token.KEYWORD1);
      povrayKeywords.add("scale", Token.KEYWORD1);
      povrayKeywords.add("scattering", Token.KEYWORD1);
      povrayKeywords.add("shadowless", Token.KEYWORD1);
      povrayKeywords.add("sky", Token.KEYWORD3);
      povrayKeywords.add("sky_sphere", Token.KEYWORD3);
      povrayKeywords.add("