X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCodeScanner.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCodeScanner.java deleted file mode 100644 index ccbc66a..0000000 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCodeScanner.java +++ /dev/null @@ -1,145 +0,0 @@ -/********************************************************************** -Copyright (c) 2000, 2002 IBM Corp. and others. -All rights reserved. This program and the accompanying materials -are made available under the terms of the Common Public License v1.0 -which accompanies this distribution, and is available at -http://www.eclipse.org/legal/cpl-v10.html - -Contributors: - IBM Corporation - Initial implementation - Klaus Hartlage - www.eclipseproject.de -**********************************************************************/ -package net.sourceforge.phpeclipse.phpeditor.php; - -import java.util.ArrayList; -import java.util.List; - -import net.sourceforge.phpeclipse.IPreferenceConstants; -import net.sourceforge.phpeclipse.PHPeclipsePlugin; -import net.sourceforge.phpeclipse.phpeditor.util.PHPColorProvider; -import net.sourceforge.phpeclipse.phpeditor.util.PHPWhitespaceDetector; -import net.sourceforge.phpeclipse.phpeditor.util.PHPWordDetector; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.preference.PreferenceConverter; -import org.eclipse.jface.text.TextAttribute; -import org.eclipse.jface.text.rules.EndOfLineRule; -import org.eclipse.jface.text.rules.ICharacterScanner; -import org.eclipse.jface.text.rules.IRule; -import org.eclipse.jface.text.rules.IToken; -import org.eclipse.jface.text.rules.IWordDetector; -import org.eclipse.jface.text.rules.MultiLineRule; -import org.eclipse.jface.text.rules.RuleBasedScanner; -import org.eclipse.jface.text.rules.SingleLineRule; -import org.eclipse.jface.text.rules.Token; -import org.eclipse.jface.text.rules.WhitespaceRule; -import org.eclipse.jface.text.rules.WordRule; - -/** - * PHP Code Scanner - */ -public class PHPCodeScanner extends RuleBasedScanner implements IPreferenceConstants { - - private IToken variable; - - private class PHPWordRule extends WordRule { - private StringBuffer fBuffer = new StringBuffer(); - - public PHPWordRule(IWordDetector detector) { - super(detector, Token.UNDEFINED); - } - - public PHPWordRule(IWordDetector detector, IToken defaultToken) { - super(detector, defaultToken); - } - - public IToken evaluate(ICharacterScanner scanner) { - int c = scanner.read(); - boolean isVariable = false; - if (fDetector.isWordStart((char) c)) { - if (c == '$') { - isVariable = true; - } - if (fColumn == UNDEFINED || (fColumn == scanner.getColumn() - 1)) { - - fBuffer.setLength(0); - do { - fBuffer.append((char) c); - c = scanner.read(); - } while (c != scanner.EOF && fDetector.isWordPart((char) c)); - scanner.unread(); - - if (isVariable) { - return variable; - } - IToken token = (IToken) fWords.get(fBuffer.toString()); - if (token != null) - return token; - - if (fDefaultToken.isUndefined()) - unreadBuffer(scanner); - - return fDefaultToken; - } - } - - scanner.unread(); - return Token.UNDEFINED; - } - } - - private static String[] fgConstants = { "__LINE__", "__FILE__", "true", "false", "null", "object", "array" }; - private TextAttribute fComment; - private TextAttribute fKeyword; - private TextAttribute fType; - private TextAttribute fString; - private PHPColorProvider fColorProvider; - - /** - * Creates a Java code scanner - */ - public PHPCodeScanner(PHPColorProvider provider) { - final IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore(); - - IToken keyword = new Token(new TextAttribute(provider.getColor(PreferenceConverter.getColor(store, PHP_KEYWORD)))); - IToken functionName = new Token(new TextAttribute(provider.getColor(PreferenceConverter.getColor(store, PHP_FUNCTIONNAME)))); - IToken string = new Token(new TextAttribute(provider.getColor(PreferenceConverter.getColor(store, PHP_STRING)))); - IToken comment = new Token(new TextAttribute(provider.getColor(PreferenceConverter.getColor(store, PHP_SINGLELINE_COMMENT)))); - IToken multi_comment = - new Token(new TextAttribute(provider.getColor(PreferenceConverter.getColor(store, PHP_MULTILINE_COMMENT)))); - IToken other = new Token(new TextAttribute(provider.getColor(PreferenceConverter.getColor(store, PHP_DEFAULT)))); - - variable = new Token(new TextAttribute(provider.getColor(PHPColorProvider.VARIABLE))); - - List rules = new ArrayList(); - - // Add rule for single line comments. - rules.add(new EndOfLineRule("//", comment)); //$NON-NLS-1$ - // EndOfLineRule endOfLine = new EndOfLineRule("#", comment); - // endOfLine.setColumnConstraint(0); - rules.add(new EndOfLineRule("#", comment)); - - // Add rule for strings and character constants. - rules.add(new MultiLineRule("\"", "\"", string, '\\')); //$NON-NLS-2$ //$NON-NLS-1$ - rules.add(new SingleLineRule("'", "'", string, '\\')); //$NON-NLS-2$ //$NON-NLS-1$ - - // rules.add(new SingleLineRule("//", "//", php_comment)); - rules.add(new MultiLineRule("/*", "*/", multi_comment)); - - // Add generic whitespace rule. - rules.add(new WhitespaceRule(new PHPWhitespaceDetector())); - - // Add word rule for keywords, types, and constants. - PHPWordRule wordRule = new PHPWordRule(new PHPWordDetector(), other); - for (int i = 0; i < PHPKeywords.PHP_KEYWORS.length; i++) - wordRule.addWord(PHPKeywords.PHP_KEYWORS[i], keyword); - for (int i = 0; i < PHPFunctionNames.FUNCTION_NAMES.length; i++) - wordRule.addWord(PHPFunctionNames.FUNCTION_NAMES[i], functionName); - for (int i = 0; i < fgConstants.length; i++) - wordRule.addWord(fgConstants[i], functionName); - rules.add(wordRule); - - IRule[] result = new IRule[rules.size()]; - rules.toArray(result); - setRules(result); - } -}