Contributors:
IBM Corporation - Initial implementation
- Klaus Hartlage - www.eclipseproject.de
+ www.phpeclipse.de
**********************************************************************/
package net.sourceforge.phpeclipse.phpeditor.php;
import java.util.List;
import net.sourceforge.phpdt.internal.ui.text.AbstractJavaScanner;
-import net.sourceforge.phpdt.internal.ui.text.CombinedWordRule;
import net.sourceforge.phpdt.ui.text.IColorManager;
import net.sourceforge.phpeclipse.IPreferenceConstants;
import net.sourceforge.phpeclipse.phpeditor.PHPSyntaxRdr;
protected class OperatorRule implements IRule {
/** Java operators */
- private final char[] JAVA_OPERATORS= { ';', '(', ')', '{', '}', '.', '=', '/', '\\', '+', '-', '*', '[', ']', '<', '>', ':', '?', '!', ',', '|', '&', '^', '%', '~', '@'};
+ private final char[] JAVA_OPERATORS= { ';', '(', ')', '.', '=', '/', '\\', '+', '-', '*', '[', ']', '<', '>', ':', '?', '!', ',', '|', '&', '^', '%', '~', '@'};
/** Token to return for this rule */
private final IToken fToken;
-
+ /** Token to return for braces */
+ private final IToken fTokenBraces;
/**
* Creates a new operator rule.
*
* @param token
* Token to use for this rule
*/
- public OperatorRule(IToken token) {
+ public OperatorRule(IToken token, IToken tokenBraces) {
fToken= token;
+ fTokenBraces= tokenBraces;
+
}
/**
public IToken evaluate(ICharacterScanner scanner) {
int character= scanner.read();
+ if (character=='{' || character=='}') {
+ return fTokenBraces;
+ }
if (isOperator((char) character)) {
int lastCharacter = character;
character= scanner.read();
- if (!isOperator((char) character)) {
+ if (!isOperator((char) character)) {
scanner.unread();
return fToken;
}
scanner.unread();
scanner.unread();
return Token.UNDEFINED;
- }
- if (lastCharacter=='?' && character=='>') {
+ } else if (lastCharacter=='?' && character=='>') {
scanner.unread();
scanner.unread();
return Token.UNDEFINED;
- }
+ }
do {
character= scanner.read();
} while (isOperator((char) character));
return Token.UNDEFINED;
} else {
c = scanner.read();
- if (c != 'p') {
+ if (c != 'p' && c != 'P') {
scanner.unread();
return getToken(IPreferenceConstants.PHP_TAG);
} else {
c = scanner.read();
- if (c != 'h') {
+ if (c != 'h' && c != 'H') {
scanner.unread();
scanner.unread();
return getToken(IPreferenceConstants.PHP_TAG);
} else {
c = scanner.read();
- if (c != 'p') {
+ if (c != 'p' && c != 'P') {
scanner.unread();
scanner.unread();
scanner.unread();
IPreferenceConstants.PHP_CONSTANT,
IPreferenceConstants.PHP_DEFAULT,
IPreferenceConstants.PHP_OPERATOR,
+ IPreferenceConstants.PHP_BRACE_OPERATOR,
IPreferenceConstants.PHP_KEYWORD_RETURN};
/**
* Creates a PHP code scanner
protected String[] getTokenProperties() {
return fgTokenProperties;
}
- // public void updateToken(JavaColorManager provider) {
- // final IPreferenceStore store =
- // PHPeclipsePlugin.getDefault().getPreferenceStore();
- //
- // Color BackgroundColor =
- // provider.getColor(PreferenceConverter.getColor(store,
- // PHP_EDITOR_BACKGROUND));
- //
- // variable.setData(
- // new TextAttribute(
- // provider.getColor(PreferenceConverter.getColor(store, PHP_VARIABLE)),
- // BackgroundColor,
- // (store.getBoolean(PHP_VARIABLE_BOLD) ? SWT.BOLD : SWT.NONE)
- // + (store.getBoolean(PHP_VARIABLE_ITALIC) ? SWT.ITALIC : SWT.NONE)));
- // keyword.setData(
- // new TextAttribute(
- // provider.getColor(PreferenceConverter.getColor(store, PHP_KEYWORD)),
- // BackgroundColor,
- // (store.getBoolean(PHP_KEYWORD_BOLD) ? SWT.BOLD : SWT.NONE)
- // + (store.getBoolean(PHP_KEYWORD_ITALIC) ? SWT.ITALIC : SWT.NONE)));
- // type.setData(
- // new TextAttribute(
- // provider.getColor(PreferenceConverter.getColor(store, PHP_TYPE)),
- // BackgroundColor,
- // (store.getBoolean(PHP_TYPE_BOLD) ? SWT.BOLD : SWT.NONE) +
- // (store.getBoolean(PHP_TYPE_ITALIC) ? SWT.ITALIC : SWT.NONE)));
- // functionName.setData(
- // new TextAttribute(
- // provider.getColor(PreferenceConverter.getColor(store, PHP_FUNCTIONNAME)),
- // BackgroundColor,
- // (store.getBoolean(PHP_FUNCTIONNAME_BOLD) ? SWT.BOLD : SWT.NONE)
- // + (store.getBoolean(PHP_FUNCTIONNAME_ITALIC) ? SWT.ITALIC : SWT.NONE)));
- // constant.setData(
- // new TextAttribute(
- // provider.getColor(PreferenceConverter.getColor(store, PHP_CONSTANT)),
- // BackgroundColor,
- // (store.getBoolean(PHP_CONSTANT_BOLD) ? SWT.BOLD : SWT.NONE)
- // + (store.getBoolean(PHP_CONSTANT_ITALIC) ? SWT.ITALIC : SWT.NONE)));
- // string.setData(
- // new TextAttribute(
- // provider.getColor(PreferenceConverter.getColor(store, PHP_STRING)),
- // BackgroundColor,
- // (store.getBoolean(PHP_STRING_BOLD) ? SWT.BOLD : SWT.NONE) +
- // (store.getBoolean(PHP_STRING_ITALIC) ? SWT.ITALIC : SWT.NONE)));
- // comment.setData(
- // new TextAttribute(
- // provider.getColor(PreferenceConverter.getColor(store,
- // PHP_SINGLELINE_COMMENT)),
- // BackgroundColor,
- // (store.getBoolean(PHP_SINGLELINE_COMMENT_BOLD) ? SWT.BOLD : SWT.NONE)
- // + (store.getBoolean(PHP_SINGLELINE_COMMENT_ITALIC) ? SWT.ITALIC :
- // SWT.NONE)));
- // multi_comment.setData(
- // new TextAttribute(
- // provider.getColor(PreferenceConverter.getColor(store,
- // PHP_MULTILINE_COMMENT)),
- // BackgroundColor,
- // (store.getBoolean(PHP_MULTILINE_COMMENT_BOLD) ? SWT.BOLD : SWT.NONE)
- // + (store.getBoolean(PHP_MULTILINE_COMMENT_ITALIC) ? SWT.ITALIC :
- // SWT.NONE)));
- // other.setData(
- // new TextAttribute(
- // provider.getColor(PreferenceConverter.getColor(store, PHP_DEFAULT)),
- // BackgroundColor,
- // (store.getBoolean(PHP_DEFAULT_BOLD) ? SWT.BOLD : SWT.NONE)
- // + (store.getBoolean(PHP_DEFAULT_ITALIC) ? SWT.ITALIC : SWT.NONE)));
- // }
-
- // public void updateWordRules() {
-
/*
* @see AbstractJavaScanner#createRules()
wordRule.addWord("return", token);
// Add rule for operators and brackets (at the end !)
- token= getToken(IPreferenceConstants.PHP_OPERATOR);
- rules.add(new OperatorRule(token));
+ rules.add(new OperatorRule(getToken(IPreferenceConstants.PHP_OPERATOR), getToken(IPreferenceConstants.PHP_BRACE_OPERATOR)));
rules.add(wordRule);
+ setDefaultReturnToken(getToken(IPreferenceConstants.PHP_DEFAULT));
return rules;
}
}