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); }
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; } }
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(); }