Example #1
0
char *getTokenIdName(pToken tok) {
    if (tok == NULL) {
        return NULL;
    } else {
        return getTokDataIdName(tok->data);
    }
}
Example #2
0
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;
}