mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-09 18:56:02 +02:00
Fix the parsing.
This commit is contained in:
parent
13fdd7fb51
commit
3752b22c4e
1 changed files with 32 additions and 13 deletions
|
@ -63,7 +63,7 @@ public class CTagsEntry implements ITagEntry {
|
||||||
String delim = TAB_SEPARATOR;
|
String delim = TAB_SEPARATOR;
|
||||||
StringTokenizer st = new StringTokenizer(line, delim);
|
StringTokenizer st = new StringTokenizer(line, delim);
|
||||||
for (int state = 0; st.hasMoreTokens(); state++) {
|
for (int state = 0; st.hasMoreTokens(); state++) {
|
||||||
String token = st.nextToken(delim);
|
String token = st.nextToken();
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case 0: // TAG_NAME:
|
case 0: // TAG_NAME:
|
||||||
tagName = token;
|
tagName = token;
|
||||||
|
@ -71,33 +71,52 @@ public class CTagsEntry implements ITagEntry {
|
||||||
|
|
||||||
case 1: // FILE_NAME:
|
case 1: // FILE_NAME:
|
||||||
fileName = token;
|
fileName = token;
|
||||||
delim = PATTERN_SEPARATOR;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2: // PATTERN;
|
case 2: // PATTERN;
|
||||||
try {
|
try {
|
||||||
String sub = token.substring(1);
|
String sub = token.trim();
|
||||||
if (Character.isDigit(sub.charAt(0))) {
|
if (Character.isDigit(sub.charAt(0))) {
|
||||||
lineNumber = Integer.parseInt(sub);
|
lineNumber = Integer.parseInt(sub);
|
||||||
} else {
|
} 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
|
// Filter out the delimiters
|
||||||
int i = sub.indexOf("/^");
|
if (sub.endsWith("\"")) {
|
||||||
int j = sub.lastIndexOf("$/");
|
int j = sub.lastIndexOf('"');
|
||||||
try {
|
sub = sub.substring(0, j);
|
||||||
if(i >= 0 && j >= 0 ) {
|
}
|
||||||
sub = sub.substring(i + 2, j);
|
if (sub.endsWith(";")) {
|
||||||
} else if(i >= 0) {
|
int j = sub.lastIndexOf(';');
|
||||||
sub = sub.substring(i + 2, sub.length()-1);
|
sub = sub.substring(0, j);
|
||||||
}
|
}
|
||||||
} 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);
|
||||||
|
}
|
||||||
pattern = sub;
|
pattern = sub;
|
||||||
}
|
}
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
|
pattern = token;
|
||||||
//e.printStackTrace();
|
//e.printStackTrace();
|
||||||
} catch (IndexOutOfBoundsException e) {
|
} catch (IndexOutOfBoundsException e) {
|
||||||
|
pattern = token;
|
||||||
//e.printStackTrace();
|
//e.printStackTrace();
|
||||||
}
|
}
|
||||||
delim = TAB_SEPARATOR;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default: // EXTENSION_FIELDS:
|
default: // EXTENSION_FIELDS:
|
||||||
|
|
Loading…
Add table
Reference in a new issue