X-Git-Url: http://git.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 index b227ae2..1b74a75 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCodeScanner.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCodeScanner.java @@ -83,6 +83,22 @@ public class PHPCodeScanner extends AbstractJavaScanner { 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)); @@ -113,32 +129,41 @@ public class PHPCodeScanner extends AbstractJavaScanner { c = scanner.read(); if (c != '?') { scanner.unread(); + scanner.unread(); + return Token.UNDEFINED; } else { c = scanner.read(); if (c != 'p') { scanner.unread(); + return getToken(IPreferenceConstants.PHP_TAG); } else { c = scanner.read(); if (c != 'h') { scanner.unread(); + scanner.unread(); + return getToken(IPreferenceConstants.PHP_TAG); } else { c = scanner.read(); if (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 == '$') { @@ -361,10 +386,6 @@ public class PHPCodeScanner extends AbstractJavaScanner { 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$ @@ -373,7 +394,6 @@ public class PHPCodeScanner extends AbstractJavaScanner { // 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); @@ -391,9 +411,9 @@ public class PHPCodeScanner extends AbstractJavaScanner { 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) { @@ -402,15 +422,17 @@ public class PHPCodeScanner extends AbstractJavaScanner { 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); -// return rules; } }