コード例 #1
0
ファイル: tokens.c プロジェクト: CGAnderson/cgc-opensrc
void RecordToken(TokenStream *pTok, int token)
{
    const char *s;

    // token = lCompressToken(token);
    if (token > 256)
        lAddByte(pTok, (unsigned char)((token & 0x7f) + 0x80));
    else
        lAddByte(pTok, (unsigned char)(token & 0x7f));
    switch (token) {
    case IDENT_SY:
    case TYPEIDENT_SY:
    case STRCONST_SY:
        s = GetAtomString(atable, yylval.sc_ident);
        while (*s)
            lAddByte(pTok, (unsigned char) *s++);
        lAddByte(pTok, 0);
        break;
    case CFLOATCONST_SY:
    case FLOATCONST_SY:
    case FLOATHCONST_SY:
    case FLOATXCONST_SY:
        lAdd4Bytes(pTok, (unsigned char *) &yylval.sc_fval);
        break;
    case INTCONST_SY:
        lAdd4Bytes(pTok, (unsigned char *) &yylval.sc_int);
        break;
    case '(':
        lAddByte(pTok, (unsigned char)(yylval.sc_int ? 1 : 0));
    default:
        break;
    }
} // RecordToken
コード例 #2
0
void RecordToken(TokenStream *pTok, int token, yystypepp * yylvalpp)
{
    const char *s;
    char *str=NULL;

    if (token > 256)
        lAddByte(pTok, (unsigned char)((token & 0x7f) + 0x80));
    else
        lAddByte(pTok, (unsigned char)(token & 0x7f));
    switch (token) {
    case CPP_IDENTIFIER:
    case CPP_TYPEIDENTIFIER:
    case CPP_STRCONSTANT:
        s = GetAtomString(atable, yylvalpp->sc_ident);
        while (*s)
            lAddByte(pTok, (unsigned char) *s++);
        lAddByte(pTok, 0);
        break;
    case CPP_FLOATCONSTANT:
    case CPP_INTCONSTANT:
         str=yylvalpp->symbol_name;
         while (*str){
            lAddByte(pTok, (unsigned char) *str++);
         }
         lAddByte(pTok, 0);
         break;
    case '(':
        lAddByte(pTok, (unsigned char)(yylvalpp->sc_int ? 1 : 0));
    default:
        break;
    }
} // RecordToken
コード例 #3
0
ファイル: PpTokens.cpp プロジェクト: disigma/glslang
/*
* Add a token to the end of a list for later playback.
*/
void TPpContext::RecordToken(TokenStream *pTok, int token, TPpToken* ppToken)
{
    const char* s;
    char* str = NULL;

    if (token > PpAtomMaxSingle)
        lAddByte(pTok, (unsigned char)((token & 0x7f) + 0x80));
    else
        lAddByte(pTok, (unsigned char)(token & 0x7f));

    switch (token) {
    case PpAtomIdentifier:
    case PpAtomConstString:
        s = ppToken->name;
        while (*s)
            lAddByte(pTok, (unsigned char) *s++);
        lAddByte(pTok, 0);
        break;
    case PpAtomConstInt:
    case PpAtomConstUint:
    case PpAtomConstFloat:
    case PpAtomConstDouble:
        str = ppToken->name;
        while (*str) {
            lAddByte(pTok, (unsigned char) *str);
            str++;
        }
        lAddByte(pTok, 0);
        break;
    default:
        break;
    }
}
コード例 #4
0
ファイル: PpTokens.cpp プロジェクト: TimNN/glslang
/*
* Add a token to the end of a list for later playback.
*/
void TPpContext::RecordToken(TokenStream *pTok, int token, TPpToken* ppToken)
{
    const char* s;
    char* str = NULL;

    if (token > 256)
        lAddByte(pTok, (unsigned char)((token & 0x7f) + 0x80));
    else
        lAddByte(pTok, (unsigned char)(token & 0x7f));

    switch (token) {
    case CPP_IDENTIFIER:
    case CPP_STRCONSTANT:
        s = GetAtomString(ppToken->atom);
        while (*s)
            lAddByte(pTok, (unsigned char) *s++);
        lAddByte(pTok, 0);
        break;
    case CPP_INTCONSTANT:
    case CPP_UINTCONSTANT:
    case CPP_FLOATCONSTANT:
    case CPP_DOUBLECONSTANT:
        str = ppToken->name;
        while (*str){
            lAddByte(pTok, (unsigned char) *str);
            str++;
        }
        lAddByte(pTok, 0);
        break;
    default:
        break;
    }
}