char *getTokenIdName(pToken tok) { if (tok == NULL) { return NULL; } else { return getTokDataIdName(tok->data); } }
char *getTokDataStr(pTokData t, int useTargetLang, char *s, int spaceLeft) { TargetLangType lang; spaceLeft--; if (useTargetLang) { lang = g_opt.targetLang; } else { lang = TLT_C; } if (t == NULL) { reportError(FATAL_INTERNAL, "in getTokenStr: Null token passed"); } else { switch (t->code) { case Y_PRE_NEWLINE: sprintf(s, "<NL>"); break; case Y_NUMBER: _convertConstant(t, lang, s, spaceLeft); break; case Y_EOF: sprintf(s, "END-OF-FILE"); break; case Y_PRE_COMMENT: sprintf(s, "%c%.*s", g_tlang.commentChar, spaceLeft-1, t->repr.string); break; case Y_STRING: switch(lang) { case TLT_C: _getCString(s, spaceLeft, t->repr.s.s, t->repr.s.strLen); break; case TLT_FORTRAN: _getFortranString(s, spaceLeft, t->repr.s.s, t->repr.s.strLen); break; case TLT_ASM: _getAsmString(s, spaceLeft, t->repr.s.s, t->repr.s.strLen); break; default: assert(0); } break; case Y_INCLUDE_FILE_NAME: sprintf(s, "%.*s", spaceLeft, getTokDataIdName(t)); setNewFileExt(s, s, g_tlang.extension[0]); break; case Y_ID: case Y_TYPEDEF_NAME: sprintf(s, "%.*s", spaceLeft, getTokDataIdName(t)); break; default: { pTokTab elem = tabLookup(t->repr.string); char *tokStr; if (elem == NULL) { printf("DEBUG: t->code = %d", t->code); assert(elem != NULL); } if (lang == TLT_C) { tokStr = elem->name; } else { tokStr = elem->tname[lang]; } sprintf(s, "%.*s", spaceLeft, tokStr); } } } return s; }