diff options
Diffstat (limited to 'lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gpp/DOMToGPPTokenMap.java')
-rw-r--r-- | lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gpp/DOMToGPPTokenMap.java | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gpp/DOMToGPPTokenMap.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gpp/DOMToGPPTokenMap.java new file mode 100644 index 00000000000..fd11952c827 --- /dev/null +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gpp/DOMToGPPTokenMap.java @@ -0,0 +1,180 @@ +/******************************************************************************* + * Copyright (c) 2006, 2008 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.core.dom.lrparser.gpp; + +import static org.eclipse.cdt.core.parser.IToken.*; +import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.*; + +import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap; +import org.eclipse.cdt.core.parser.IGCCToken; +import org.eclipse.cdt.core.parser.IToken; + +/** + * Maps tokens types returned by CPreprocessor to token types + * expected by the C++ parser. + * + * @author Mike Kucera + */ +public class DOMToGPPTokenMap implements IDOMTokenMap { + + + public static final DOMToGPPTokenMap DEFAULT_MAP = new DOMToGPPTokenMap(); + + private DOMToGPPTokenMap() { + // just a private constructor + } + + public int getEOFTokenKind() { + return TK_EOF_TOKEN; + } + + public int getEOCTokenKind() { + return TK_EndOfCompletion; + } + + public int mapKind(IToken token) { + + switch(token.getType()) { + case tIDENTIFIER : return TK_identifier; + case tINTEGER : return TK_integer; + case tCOLONCOLON : return TK_ColonColon; + case tCOLON : return TK_Colon; + case tSEMI : return TK_SemiColon; + case tCOMMA : return TK_Comma; + case tQUESTION : return TK_Question; + case tLPAREN : return TK_LeftParen; + case tRPAREN : return TK_RightParen; + case tLBRACKET : return TK_LeftBracket; + case tRBRACKET : return TK_RightBracket; + case tLBRACE : return TK_LeftBrace; + case tRBRACE : return TK_RightBrace; + case tPLUSASSIGN : return TK_PlusAssign; + case tINCR : return TK_PlusPlus; + case tPLUS : return TK_Plus; + case tMINUSASSIGN : return TK_MinusAssign; + case tDECR : return TK_MinusMinus; + case tARROWSTAR : return TK_ArrowStar; + case tARROW : return TK_Arrow; + case tMINUS : return TK_Minus; + case tSTARASSIGN : return TK_StarAssign; + case tSTAR : return TK_Star; + case tMODASSIGN : return TK_PercentAssign; + case tMOD : return TK_Percent; + case tXORASSIGN : return TK_CaretAssign; + case tXOR : return TK_Caret; + case tAMPERASSIGN : return TK_AndAssign; + case tAND : return TK_AndAnd; + case tAMPER : return TK_And; + case tBITORASSIGN : return TK_OrAssign; + case tOR : return TK_OrOr; + case tBITOR : return TK_Or; + case tBITCOMPLEMENT: return TK_Tilde; + case tNOTEQUAL : return TK_NE; + case tNOT : return TK_Bang; + case tEQUAL : return TK_EQ; + case tASSIGN : return TK_Assign; + case tUNKNOWN_CHAR : return TK_Invalid; + case tSHIFTL : return TK_LeftShift; + case tLTEQUAL : return TK_LE; + case tLT : return TK_LT; + case tSHIFTRASSIGN : return TK_RightShiftAssign; + case tSHIFTR : return TK_RightShift; + case tGTEQUAL : return TK_GE; + case tGT : return TK_GT; + case tSHIFTLASSIGN : return TK_LeftShiftAssign; + case tELLIPSIS : return TK_DotDotDot; + case tDOTSTAR : return TK_DotStar; + case tDOT : return TK_Dot; + case tDIVASSIGN : return TK_SlashAssign; + case tDIV : return TK_Slash; + + case t_asm : return TK_asm; + case t_auto : return TK_auto; + case t_bool : return TK_bool; + case t_break : return TK_break; + case t_case : return TK_case; + case t_catch : return TK_catch; + case t_char : return TK_char; + case t_class : return TK_class; + case t_const : return TK_const; + case t_const_cast : return TK_const_cast; + case t_continue : return TK_continue; + case t_default : return TK_default; + case t_delete : return TK_delete; + case t_do : return TK_do; + case t_double : return TK_double; + case t_dynamic_cast: return TK_dynamic_cast; + case t_else : return TK_else; + case t_enum : return TK_enum; + case t_explicit : return TK_explicit; + case t_export : return TK_export; + case t_extern : return TK_extern; + case t_false : return TK_false; + case t_float : return TK_float; + case t_for : return TK_for; + case t_friend : return TK_friend; + case t_goto : return TK_goto; + case t_if : return TK_if; + case t_inline : return TK_inline; + case t_int : return TK_int; + case t_long : return TK_long; + case t_mutable : return TK_mutable; + case t_namespace : return TK_namespace; + case t_new : return TK_new; + case t_operator : return TK_operator; + case t_private : return TK_private; + case t_protected : return TK_protected; + case t_public : return TK_public; + case t_register : return TK_register; + case t_reinterpret_cast : return TK_reinterpret_cast; + case t_return : return TK_return; + case t_short : return TK_short; + case t_sizeof : return TK_sizeof; + case t_static : return TK_static; + case t_static_cast : return TK_static_cast; + case t_signed : return TK_signed; + case t_struct : return TK_struct; + case t_switch : return TK_switch; + case t_template : return TK_template; + case t_this : return TK_this; + case t_throw : return TK_throw; + case t_true : return TK_true; + case t_try : return TK_try; + case t_typedef : return TK_typedef; + case t_typeid : return TK_typeid; + case t_typename : return TK_typename; + case t_union : return TK_union; + case t_unsigned : return TK_unsigned; + case t_using : return TK_using; + case t_virtual : return TK_virtual; + case t_void : return TK_void; + case t_volatile : return TK_volatile; + case t_wchar_t : return TK_wchar_t; + case t_while : return TK_while; + + case tFLOATINGPT : return TK_floating; + case tSTRING : return TK_stringlit; + case tLSTRING : return TK_stringlit; + case tCHAR : return TK_charconst; + case tLCHAR : return TK_charconst; + case tCOMPLETION : return TK_Completion; + case tEOC : return TK_EndOfCompletion; + case tEND_OF_INPUT : return TK_EOF_TOKEN; + + case IGCCToken.t__attribute__ : return TK___attribute__; + + default: + assert false : "token not recognized by the GPP parser: " + token.getType(); //$NON-NLS-1$ + return TK_Invalid; + } + } + +} |