From 443e4e89a3ffe01141700423e72adc3a3f27efed Mon Sep 17 00:00:00 2001 From: ken Date: Fri, 21 Oct 2016 14:49:56 -0700 Subject: [PATCH] robustness++ --- src/bin/tools/testapc.c | 57 +++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 33 deletions(-) diff --git a/src/bin/tools/testapc.c b/src/bin/tools/testapc.c index 1aca9b3..c51ba41 100644 --- a/src/bin/tools/testapc.c +++ b/src/bin/tools/testapc.c @@ -91,45 +91,36 @@ int test_yyparse #define PASSES 1000 () { int i, tok; - static char tok_pattern[] = "[" RED " %5i " CLRC "][" CYAN " %-12i " CLRC "]"; + static char* tok_string; + static char tok_pattern[] = "[" RED " %9s " CLRC "][" CYAN " %-12i " CLRC "]"; for (i = 0; i < PASSES; i++) { switch (tok = lexer()) - #define OFFS 27 - { case STR: - case NAME: - tok_pattern[OFFS] = 's'; - break; - case REF: - case FPTR: - tok_pattern[OFFS] = 'x'; - break; - case NUM: - case SS: - case SSD: - tok_pattern[OFFS] = 'i'; - break; - case CLOPEN: - case CLCLOSE: - case SOPEN: - case SCLOSE: - case EOPEN: - case ECLOSE: - case VOPEN: - case VCLOSE: - case QOPEN: - case QCLOSE: - case RT: - case HB: - tok_pattern[OFFS] = 'i'; + #define TOFFS 9 + #define LOFFS 27 + #define $($)#$ + #define TOK_CASE(T,C) \ + case T: \ + tok_string = $(T); \ + tok_pattern[LOFFS] = C; \ + break + { TOK_CASE(STR,'s'); + TOK_CASE(NAME,'s'); + TOK_CASE(REF,'x'); + TOK_CASE(FPTR,'x'); + TOK_CASE(NUM,'i'); + TOK_CASE(SS,'i'); + TOK_CASE(SSD,'i'); + TOK_CASE(CLOPEN,'i'); + TOK_CASE(CLCLOSE,'i'); + default: + tok_string = "UNKNOWN"; + tok_pattern[LOFFS] = 'i'; break; case 0: goto done; - default: - printf(YELLOW "test_yyparse" CLRC ", unknown token [" RED " %5i " CLRC "]",tok); - goto error; } - printf(tok_pattern, tok, yylval.val); - if (i % 4 == 0 || yylval.val == 1) + printf(tok_pattern, tok_string, yylval.val); + if (i % 4 == 0 || yylval.val == 0) printf(";\n"); } done: -- 2.18.0