예제 #1
0
파일: lexan.cpp 프로젝트: psi29a/thirdeye
WORD LEX_require(LEX_class *LEX, WORD type, WORD token, BYTE *expect) {
    WORD OK = 1;

    if ((LEX_type(LEX, LEX_NXT) != type) || (LEX_token(LEX, LEX_NXT) != token))
        OK = 0;

    if (!OK)
        report(E_ERROR, LEX_line(LEX, LEX_NXT), MSG_EXP, expect,
               LEX_lexeme(LEX, LEX_NXT), NULL);

    LEX_fetch(LEX);

    return (OK);
}
예제 #2
0
파일: lexan.cpp 프로젝트: psi29a/thirdeye
void LEX_show(LEX_class *LEX, UWORD select) {
    printf("%s: ", LEX_line(LEX, select));

    switch (LEX_type(LEX, select)) {
    case TTYP_KEYWORD:
        printf("Keyword [%s] token %d\n", LEX_lexeme(LEX, select),
               LEX_token(LEX, select));
        break;
    case TTYP_NAME:
        printf("   Name [%s]\n", LEX_lexeme(LEX, select));
        break;
    case TTYP_SYMBOL:
        printf(" Symbol [%s] token %d\n", LEX_lexeme(LEX, select),
               LEX_token(LEX, select));
        break;
    case TTYP_STRLIT:
        printf(" String [%s]\n", LEX_lexeme(LEX, select));
        break;
    case TTYP_TXTLIT:
        printf("   Text [%s]\n", LEX_lexeme(LEX, select));
        break;
    case TTYP_NUM:
        printf(" Number %du (%lX)\n", LEX_value(LEX, select),
               LEX_value(LEX, select));
        break;
    case TTYP_EOF:
        printf("*** EOF ***\n");
        break;
    case TTYP_BAD:
        printf("Bad sym [%s]\n", LEX_lexeme(LEX, select));
        break;
    default:
        printf("*** Error %d ***\n", LEX_type(LEX, select));
        break;
    }
}
예제 #3
0
void LEX_real()
{
/**************************************
 *
 *	L E X _ r e a l
 *
 **************************************
 *
 * Functional description
 *	If the token is an end of line, get the next token.
 *
 **************************************/

	if (dudleyGlob.DDL_token.tok_string[0] != '\n')
		return;

	LEX_token();
}