From: axelcl Date: Thu, 5 May 2005 14:06:38 +0000 (+0000) Subject: Fixed bug with unterminated strings at end of file X-Git-Url: http://secure.phpeclipse.com Fixed bug with unterminated strings at end of file --- diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/builder/IdentifierIndexManager.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/builder/IdentifierIndexManager.java index 8e859cf..c36e53d 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/builder/IdentifierIndexManager.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/builder/IdentifierIndexManager.java @@ -111,21 +111,21 @@ public class IdentifierIndexManager { /** * Get the next token from input */ - private void getNextToken() { - try { - fToken = fScanner.getNextToken(); - if (Scanner.DEBUG) { - int currentEndPosition = fScanner.getCurrentTokenEndPosition(); - int currentStartPosition = fScanner.getCurrentTokenStartPosition(); - System.out.print(currentStartPosition + "," + currentEndPosition + ": "); - System.out.println(fScanner.toStringAction(fToken)); - } - return; - } catch (InvalidInputException e) { - // ignore errors - // e.printStackTrace(); + private void getNextToken() throws InvalidInputException { + // try { + fToken = fScanner.getNextToken(); + if (Scanner.DEBUG) { + int currentEndPosition = fScanner.getCurrentTokenEndPosition(); + int currentStartPosition = fScanner.getCurrentTokenStartPosition(); + System.out.print(currentStartPosition + "," + currentEndPosition + ": "); + System.out.println(fScanner.toStringAction(fToken)); } - fToken = TokenNameERROR; + return; + // } catch (InvalidInputException e) { + // // ignore errors + // // e.printStackTrace(); + // } + // fToken = TokenNameERROR; } private void parseDeclarations(char[] parent, StringBuffer buf, boolean goBack) { @@ -268,6 +268,8 @@ public class IdentifierIndexManager { getNextToken(); } } + } catch (InvalidInputException e) { + // ignore errors } catch (SyntaxError e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -284,8 +286,8 @@ public class IdentifierIndexManager { fScanner.setSource(charArray); fScanner.setPHPMode(false); fToken = TokenNameEOF; - getNextToken(); try { + getNextToken(); while (fToken != TokenNameEOF) { // && fToken != TokenNameERROR) { phpdocOffset = -1; hasModifiers = false; @@ -377,6 +379,8 @@ public class IdentifierIndexManager { getNextToken(); } } + } catch (InvalidInputException e) { + // ignore errors } catch (SyntaxError e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -490,20 +494,21 @@ public class IdentifierIndexManager { addIdentifiers(treeMap, file); return treeMap; } + public TreeMap getIdentifiers(String startClazz) { TreeMap treeMap = new TreeMap(new StringComparator()); addIdentifiers(treeMap, startClazz); return treeMap; } - + public void addIdentifiers(TreeMap treeMap, IFile file) { String line = (String) fFileMap.get(file.getProjectRelativePath().toString()); if (line != null) { PHPIdentifierLocation ident; ArrayList allClassNames = new ArrayList(); addLine(treeMap, null, line, allClassNames); - int i=0; - while (i= end) { - return; + return false; } try { + char ch; while (true) { - if (document.getChar(position++) == ch) { - if (position < 2 || document.getChar(position - 2) != '\\') { - break; - } + ch = document.getChar(position++); + if (ch == '\\') { + ch = document.getChar(position++); // ignore escaped character + } else if (ch == '"') { + return true; + } + } + } catch (BadLocationException e) { + --position; + } + return false; + } + + private boolean readUntilEscapedSQ() { + // search last single quoted character + if (position >= end) { + return false; + } + try { + char ch; + while (true) { + ch = document.getChar(position++); + if (ch == '\\') { + ch = document.getChar(position++); // ignore escaped character + } else if (ch == '\'') { + return true; } } } catch (BadLocationException e) { --position; - return; } + return false; } private void readSingleLine() {