diff options
author | Mike Kucera | 2007-10-03 20:26:27 +0000 |
---|---|---|
committer | Mike Kucera | 2007-10-03 20:26:27 +0000 |
commit | b44e94c0e15a1463d0c4e8ac939fab4b5b099551 (patch) | |
tree | 33b7b6279b222243b7394b16604f6c2d3db9e989 /upc | |
parent | 44f817a54b5a7ad0176060835762608e149d2fc1 (diff) | |
download | org.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.java | 72 |
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; } + } |