[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] Indexer parse fix
|
2002-12-06 Alain Magloire
* indexer/.../internal/core/index/CTagsentry.java (parse): Remove
The parsing was wrong for Exuberant Ctags.
Index: org/eclipse/cdt/internal/core/index/CTagsEntry.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/CTagsEntry.java,v
retrieving revision 1.1
diff -u -r1.1 CTagsEntry.java
--- org/eclipse/cdt/internal/core/index/CTagsEntry.java 26 Jun 2002 20:33:48 -0000 1.1
+++ org/eclipse/cdt/internal/core/index/CTagsEntry.java 6 Dec 2002 19:51:10 -0000
@@ -63,7 +63,7 @@
String delim = TAB_SEPARATOR;
StringTokenizer st = new StringTokenizer(line, delim);
for (int state = 0; st.hasMoreTokens(); state++) {
- String token = st.nextToken(delim);
+ String token = st.nextToken();
switch (state) {
case 0: // TAG_NAME:
tagName = token;
@@ -71,33 +71,52 @@
case 1: // FILE_NAME:
fileName = token;
- delim = PATTERN_SEPARATOR;
break;
case 2: // PATTERN;
try {
- String sub = token.substring(1);
+ String sub = token.trim();
if (Character.isDigit(sub.charAt(0))) {
lineNumber = Integer.parseInt(sub);
} else {
+ // Filter out the prepend delimeter.
+ if (sub.startsWith("/") || sub.startsWith("?")) {
+ sub = sub.substring(1);
+ }
+ if (sub.startsWith("^")) {
+ sub = sub.substring(1);
+ }
+
// Filter out the delimiters
- int i = sub.indexOf("/^");
- int j = sub.lastIndexOf("$/");
- try {
- if(i >= 0 && j >= 0 ) {
- sub = sub.substring(i + 2, j);
- } else if(i >= 0) {
- sub = sub.substring(i + 2, sub.length()-1);
- }
- } catch (Exception e) {}
+ if (sub.endsWith("\"")) {
+ int j = sub.lastIndexOf('"');
+ sub = sub.substring(0, j);
+ }
+ if (sub.endsWith(";")) {
+ int j = sub.lastIndexOf(';');
+ sub = sub.substring(0, j);
+ }
+ if (sub.endsWith("?")) {
+ int j = sub.lastIndexOf('?');
+ sub = sub.substring(0, j);
+ }
+ if (sub.endsWith("/")) {
+ int j = sub.lastIndexOf('/');
+ sub = sub.substring(0, j);
+ }
+ if (sub.endsWith("$")) {
+ int j = sub.lastIndexOf('$');
+ sub = sub.substring(0, j);
+ }
pattern = sub;
}
} catch (NumberFormatException e) {
+ pattern = token;
//e.printStackTrace();
} catch (IndexOutOfBoundsException e) {
+ pattern = token;
//e.printStackTrace();
}
- delim = TAB_SEPARATOR;
break;
default: // EXTENSION_FIELDS: