Contributors:
IBM Corporation - Initial implementation
- Klaus Hartlage - www.eclipseproject.de
+ www.phpeclipse.de
**********************************************************************/
package net.sourceforge.phpeclipse.phpeditor.php;
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));
IPreferenceConstants.PHP_CONSTANT,
IPreferenceConstants.PHP_DEFAULT,
IPreferenceConstants.PHP_OPERATOR,
+ IPreferenceConstants.PHP_BRACE_OPERATOR,
IPreferenceConstants.PHP_KEYWORD_RETURN};
/**
* Creates a PHP code scanner
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);