Changeset 265 for trunk/idl-compiler/c/token.c
- Timestamp:
- Mar 24, 2007, 9:08:34 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/idl-compiler/c/token.c
r264 r265 46 46 is e.g. a typespec or just a var name. 47 47 */ 48 void set SymbolInfo(GTokenType token)48 void setCurSymbolInfo(void) 49 49 { 50 50 PSYMBOLINFO psi; … … 52 52 psi=(PSYMBOLINFO)gScanner->user_data; 53 53 54 switch( token)54 switch(curToken) 55 55 { 56 56 case G_TOKEN_IDENTIFIER: … … 61 61 break; 62 62 } 63 if(token>G_TOKEN_LAST) 64 { 65 psi->uiCurSymbolKind=psi->pSymbols[token-G_TOKEN_LAST-1].uiKind; 63 if(curToken==G_TOKEN_SYMBOL) 64 { 65 GTokenValue value; 66 PSYMBOL pCurSymbol; 67 68 value=gScanner->value; 69 pCurSymbol=value.v_symbol; 70 71 psi->uiCurSymbolKind=pCurSymbol->uiKind; 66 72 } 67 73 } … … 75 81 } 76 82 77 static guint getKindFromTokenType(GTokenType token) 78 { 79 if(token>G_TOKEN_LAST) 80 { 81 PSYMBOLINFO psi; 83 /* This token is not necessarily the current token! */ 84 static guint getKindOfNextToken() 85 { 86 /* Load info into gScanner */ 87 g_scanner_peek_next_token(gScanner); 88 89 if(gScanner->next_token==G_TOKEN_SYMBOL) 90 { 91 GTokenValue value; 92 PSYMBOL pCurSymbol; 93 94 value=gScanner->next_value; 95 pCurSymbol=value.v_symbol; 82 96 83 psi=(PSYMBOLINFO)gScanner->user_data; 84 return psi->pSymbols[token-G_TOKEN_LAST-1].uiKind; 85 } 86 switch(token) 97 return pCurSymbol->uiKind; 98 } 99 switch(gScanner->next_token) 87 100 { 88 101 case G_TOKEN_IDENTIFIER: … … 98 111 } 99 112 113 #if 0 100 114 guint queryNextTokensKind(void) 101 115 { 102 116 return getKindFromTokenType(gScanner->next_token); 103 117 } 104 118 #endif 105 119 106 120 /* Well, the name says all... */ … … 108 122 { 109 123 curToken = g_scanner_get_next_token(gScanner); 110 set SymbolInfo(curToken);124 setCurSymbolInfo(); 111 125 } 112 126 113 127 gboolean matchNextKind(guint uiKind) 114 128 { 115 GTokenType token; 116 117 token=g_scanner_peek_next_token(gScanner); 118 if(uiKind==getKindFromTokenType(token)) 129 if(uiKind==getKindOfNextToken()) 119 130 { 120 131 getNextToken(); … … 158 169 switch(token) 159 170 { 160 case IDL_SYMBOL_INTERFACE: 161 g_message("Token: %d (IDL_SYMBOL_INTERFACE)\t\t\t (LINE %d)", token, g_scanner_cur_line(gScanner)); 162 break; 171 case G_TOKEN_SYMBOL: 172 { 173 PSYMBOL pCurSymbol=value.v_symbol; 174 175 switch(pCurSymbol->uiSymbolToken) 176 { 177 case IDL_SYMBOL_INTERFACE: 178 g_message("Token: %d (IDL_SYMBOL_INTERFACE)\t\t\t (LINE %d)", 179 pCurSymbol->uiSymbolToken, g_scanner_cur_line(gScanner)); 180 break; 181 case IDL_SYMBOL_DEFINE: 182 g_message("Token: %d (IDL_SYMBOL_DEFINE)\t\t\t", pCurSymbol->uiSymbolToken); 183 break; 184 case IDL_SYMBOL_IFDEF: 185 g_message("Token: %d (IDL_SYMBOL_IFDEF)\t\t\t", pCurSymbol->uiSymbolToken); 186 break; 187 case IDL_SYMBOL_ENDIF: 188 g_message("Token: %d (IDL_SYMBOL_ENDIF)\t\t\t", pCurSymbol->uiSymbolToken); 189 break; 190 default: 191 { 192 PSYMBOLINFO psi; 193 psi=(PSYMBOLINFO)gScanner->user_data; 194 195 g_message("Token: %d (%s)\t\t\t (LINE %d)", pCurSymbol->uiSymbolToken, 196 pCurSymbol->chrSymbolName, g_scanner_cur_line(gScanner)); 197 198 break; 199 } 200 }/* switch */ 201 break; 202 } 163 203 case G_TOKEN_IDENTIFIER: 164 204 g_message("Token: %d (G_TOKEN_IDENTIFIER)\t\t%s (LINE %d)", … … 198 238 g_message("Token: %d (G_TOKEN_INT)\t\t\t%ld", token, value.v_int); 199 239 break; 200 case IDL_SYMBOL_DEFINE:201 g_message("Token: %d (IDL_SYMBOL_DEFINE)\t\t\t", token);202 break;203 case IDL_SYMBOL_IFDEF:204 g_message("Token: %d (IDL_SYMBOL_IFDEF)\t\t\t", token);205 break;206 case IDL_SYMBOL_ENDIF:207 g_message("Token: %d (IDL_SYMBOL_ENDIF)\t\t\t", token);208 break;209 240 default: 210 { 211 PSYMBOLINFO psi; 212 psi=(PSYMBOLINFO)gScanner->user_data; 213 214 if(token>G_TOKEN_LAST) 215 g_message("Token: %d (%s)\t\t\t (LINE %d)", token, 216 psi->pSymbols[token-G_TOKEN_LAST-1].chrSymbolName, g_scanner_cur_line(gScanner)); 217 else 218 g_message("Token: %d (---)\t\t\t (LINE %d)", token, g_scanner_cur_line(gScanner)); 241 { 242 g_message("Token: %d (---)\t\t\t (LINE %d)", token, g_scanner_cur_line(gScanner)); 219 243 break; 220 244 } /* default */
Note:
See TracChangeset
for help on using the changeset viewer.