improved tester
authorken <ken@mihrtec.com>
Fri, 21 Oct 2016 03:21:11 +0000 (20:21 -0700)
committerken <ken@mihrtec.com>
Fri, 21 Oct 2016 03:21:11 +0000 (20:21 -0700)
src/bin/tools/testapc.c

index ea9cbe3..755cf74 100644 (file)
@@ -66,26 +66,31 @@ char tok_lval[MAX_TOK];
 int testapc_yyparse
 ()
 { int i, tok;
-  char* tok_pattern = "T[%i]L[%i]";
-  char* lval_type   = tok_pattern + 8; //location of i
-  tok_lval[NUM]  = 'i';
-  tok_lval[STR]  = 's';
-  tok_lval[SS]   = 'i';
-  tok_lval[NAME] = 's';
-  tok_lval[REF]  = 'x';
-  tok_lval[SSD]  = 'i';
-  tok_lval[FPTR] = 'x';
-  //lex 10 tokens
-  printf(YELLOW);
-  for (i = 0; i < 10; i++)
-    { if ((tok = lexer()) != 0)
-       { *lval_type = tok_lval[tok] ? tok_lval[tok] : 'i';
-         printf(tok_pattern, tok, yylval.val);
-       }
-      else
-       { printf(";");
-         break;
+  static char tok_pattern[] = "[" RED " %5i " CLRC "][" CYAN " %-12i " CLRC "]";
+  for (i = 0; i < 1000; 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:
+         default:
+           tok_pattern[OFFS] = 'i';
+           break;
+          case 0:
+           printf(";\n" GREEN "Done" CLRC ".\n");
+           return 0;
        }
+      printf(tok_pattern, tok, yylval.val);
+      if (i % 4 == 0 || yylval.val == 1)
+       printf(";\n");
     }
   printf("\n" CLRC);
 }