Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/upc
diff options
context:
space:
mode:
authorMike Kucera2007-10-03 20:26:27 +0000
committerMike Kucera2007-10-03 20:26:27 +0000
commitb44e94c0e15a1463d0c4e8ac939fab4b5b099551 (patch)
tree33b7b6279b222243b7394b16604f6c2d3db9e989 /upc
parent44f817a54b5a7ad0176060835762608e149d2fc1 (diff)
downloadorg.eclipse.cdt-b44e94c0e15a1463d0c4e8ac939fab4b5b099551.tar.gz
org.eclipse.cdt-b44e94c0e15a1463d0c4e8ac939fab4b5b099551.tar.xz
org.eclipse.cdt-b44e94c0e15a1463d0c4e8ac939fab4b5b099551.zip
optimizations to C99 preprocessor, new token classes, changed the interface to the token comparator, some code has been ported to java 5
Diffstat (limited to 'upc')
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCPPTokenComparator.java72
1 files changed, 42 insertions, 30 deletions
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCPPTokenComparator.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCPPTokenComparator.java
index 4b2ccdccb1b..1c9b72830bf 100644
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCPPTokenComparator.java
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCPPTokenComparator.java
@@ -11,55 +11,67 @@
package org.eclipse.cdt.internal.core.dom.parser.upc;
+import static org.eclipse.cdt.core.dom.parser.c99.PPToken.*;
+
import org.eclipse.cdt.core.dom.c99.IPPTokenComparator;
import org.eclipse.cdt.core.dom.parser.c99.IToken;
import org.eclipse.cdt.core.dom.parser.c99.PPToken;
+import org.eclipse.cdt.internal.core.dom.parser.c99.C99Parsersym;
+import org.eclipse.cdt.internal.core.dom.parser.c99.preprocessor.SynthesizedToken;
+import org.eclipse.cdt.internal.core.dom.parser.c99.preprocessor.Token;
public class UPCPPTokenComparator implements IPPTokenComparator {
- public boolean compare(PPToken pptoken, IToken token) {
+ public PPToken getKind(IToken token) {
if(token == null)
- return false;
+ return null;
switch(token.getKind()) {
- case UPCParsersym.TK_Hash : return pptoken == PPToken.HASH;
- case UPCParsersym.TK_HashHash : return pptoken == PPToken.HASHHASH;
- case UPCParsersym.TK_LeftParen : return pptoken == PPToken.LPAREN;
- case UPCParsersym.TK_NewLine : return pptoken == PPToken.NEWLINE;
- case UPCParsersym.TK_Comma : return pptoken == PPToken.COMMA;
- case UPCParsersym.TK_RightParen : return pptoken == PPToken.RPAREN;
- case UPCParsersym.TK_DotDotDot : return pptoken == PPToken.DOTDOTDOT;
- case UPCParsersym.TK_EOF_TOKEN : return pptoken == PPToken.EOF;
- case UPCParsersym.TK_stringlit : return pptoken == PPToken.STRINGLIT;
- case UPCParsersym.TK_integer : return pptoken == PPToken.INTEGER;
- case UPCParsersym.TK_LT : return pptoken == PPToken.LEFT_ANGLE_BRACKET;
- case UPCParsersym.TK_GT : return pptoken == PPToken.RIGHT_ANGLE_BRACKET;
- case UPCParsersym.TK_SingleLineComment : return pptoken == PPToken.SINGLE_LINE_COMMENT;
- case UPCParsersym.TK_MultiLineComment : return pptoken == PPToken.MULTI_LINE_COMMENT;
- // an identifier might be a preprocessing directive like #if or #include
- case UPCParsersym.TK_identifier :
- PPToken result = PPToken.getDirective(token.toString());
- return pptoken == ((result == null) ? PPToken.IDENT : result);
+ case UPCParsersym.TK_Hash : return HASH;
+ case UPCParsersym.TK_HashHash : return HASHHASH;
+ case UPCParsersym.TK_LeftParen : return LPAREN;
+ case UPCParsersym.TK_NewLine : return NEWLINE;
+ case UPCParsersym.TK_Comma : return COMMA;
+ case UPCParsersym.TK_RightParen : return RPAREN;
+ case UPCParsersym.TK_DotDotDot : return DOTDOTDOT;
+ case UPCParsersym.TK_EOF_TOKEN : return EOF;
+ case UPCParsersym.TK_stringlit : return STRINGLIT;
+ case UPCParsersym.TK_integer : return INTEGER;
+ case UPCParsersym.TK_LT : return LEFT_ANGLE_BRACKET;
+ case UPCParsersym.TK_GT : return RIGHT_ANGLE_BRACKET;
+ case UPCParsersym.TK_SingleLineComment : return SINGLE_LINE_COMMENT;
+ case UPCParsersym.TK_MultiLineComment : return MULTI_LINE_COMMENT;
+ case UPCParsersym.TK_identifier : return IDENT;
}
- return false;
+ return null;
}
- public int getKind(int tokenToMake) {
+ public IToken createToken(int tokenToMake, int startOffset, int endOffset, String image) {
+ int kind;
switch(tokenToMake) {
- case KIND_IDENTIFIER : return UPCParsersym.TK_identifier;
- case KIND_EOF : return UPCParsersym.TK_EOF_TOKEN;
- case KIND_COMPLETION : return UPCParsersym.TK_Completion;
- case KIND_END_OF_COMPLETION : return UPCParsersym.TK_EndOfCompletion;
- case KIND_INTEGER : return UPCParsersym.TK_integer;
- case KIND_STRINGLIT : return UPCParsersym.TK_stringlit;
- case KIND_INVALID : return UPCParsersym.TK_Invalid;
- default : return UPCParsersym.TK_Invalid;
+ case KIND_IDENTIFIER : kind = UPCParsersym.TK_identifier; break;
+ case KIND_EOF : kind = UPCParsersym.TK_EOF_TOKEN; break;
+ case KIND_COMPLETION : kind = UPCParsersym.TK_Completion; break;
+ case KIND_END_OF_COMPLETION : kind = UPCParsersym.TK_EndOfCompletion; break;
+ case KIND_INTEGER : kind = UPCParsersym.TK_integer; break;
+ case KIND_STRINGLIT : kind = UPCParsersym.TK_stringlit; break;
+ case KIND_INVALID : kind = UPCParsersym.TK_Invalid; break;
+ default : kind = UPCParsersym.TK_Invalid; break;
}
+
+ return new SynthesizedToken(startOffset, endOffset, kind, image);
}
+ public IToken cloneToken(IToken token) {
+ if(token instanceof Token) {
+ return ((Token)token).clone();
+ }
+ throw new RuntimeException("don't know what kind of token that is"); //$NON-NLS-1$
+ }
public String[] getLPGOrderedTerminalSymbols() {
return UPCParsersym.orderedTerminalSymbols;
}
+
}

Back to the top