int character= scanner.read();
if (isOperator((char) character)) {
+ int lastCharacter = character;
+ character= scanner.read();
+ if (!isOperator((char) character)) {
+ scanner.unread();
+ return fToken;
+ }
+ if (lastCharacter=='<' && character=='?') {
+ scanner.unread();
+ scanner.unread();
+ return Token.UNDEFINED;
+ }
+ if (lastCharacter=='?' && character=='>') {
+ scanner.unread();
+ scanner.unread();
+ return Token.UNDEFINED;
+ }
do {
character= scanner.read();
} while (isOperator((char) character));
c = scanner.read();
if (c != '?') {
scanner.unread();
+ scanner.unread();
+ 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();
+ return getToken(IPreferenceConstants.PHP_TAG);
} else {
return getToken(IPreferenceConstants.PHP_TAG);
}
}
}
}
-
}
if (c == '?') {
- c = scanner.read();
+ c = scanner.read();
if (c == '>') {
return getToken(IPreferenceConstants.PHP_TAG);
- }
+ }
scanner.unread();
+ scanner.unread();
+ return Token.UNDEFINED;
}
if (fDetector.isWordStart((char) c)) {
if (c == '$') {
rules.add(new MultiLineRule("\"", "\"", token, '\\')); //$NON-NLS-2$ //$NON-NLS-1$
rules.add(new MultiLineRule("`", "`", token, '\\')); //$NON-NLS-2$ //$NON-NLS-1$
rules.add(new MultiLineRule("'", "'", token, '\\')); //$NON-NLS-2$ //$NON-NLS-1$
-
-// Add rule for operators and brackets
- token= getToken(IPreferenceConstants.PHP_OPERATOR);
- rules.add(new OperatorRule(token));
token = getToken(IPreferenceConstants.PHP_MULTILINE_COMMENT);
rules.add(new MultiLineRule("/*", "*/", token)); //$NON-NLS-2$ //$NON-NLS-1$
// Add word rule for keywords, types, and constants.
token = getToken(IPreferenceConstants.PHP_DEFAULT);
PHPWordRule wordRule = new PHPWordRule(new PHPWordDetector(), token);
- CombinedWordRule combinedWordRule= new CombinedWordRule(new PHPWordDetector(), token);
Token keyword = getToken(IPreferenceConstants.PHP_KEYWORD);
Token functionName = getToken(IPreferenceConstants.PHP_FUNCTIONNAME);
elbuffer = (PHPElement) buffer.get(i);
if (elbuffer instanceof PHPKeyword) {
name = ((PHPKeyword) elbuffer).getName();
-// if (!name.equals("return")) {
+ if (!name.equals("return")) {
wordRule.addWord(name, keyword);
-// }
+ }
} else if (elbuffer instanceof PHPFunction) {
wordRule.addWord(((PHPFunction) elbuffer).getName(), functionName);
} else if (elbuffer instanceof PHPType) {
wordRule.addWord(elbuffer.getName(), constant);
}
}
+
+// Add word rule for keyword 'return'.
+ token= getToken(IPreferenceConstants.PHP_KEYWORD_RETURN);
+ 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(wordRule);
-// Add word rule for keyword 'return'.
-// CombinedWordRule.WordMatcher returnWordRule= new CombinedWordRule.WordMatcher();
-// token= getToken(IPreferenceConstants.PHP_KEYWORD_RETURN);
-// returnWordRule.addWord("return", token); //$NON-NLS-1$
-// combinedWordRule.addWordMatcher(returnWordRule);
-// rules.add(combinedWordRule);
-//
+ setDefaultReturnToken(getToken(IPreferenceConstants.PHP_DEFAULT));
return rules;
}
}