From e0b51d0d5df867ac6a44d047342312d535620c01 Mon Sep 17 00:00:00 2001 From: ken Date: Fri, 7 Oct 2016 20:24:55 -0700 Subject: [PATCH] lexer test driver --- src/bin/tools/testscanner.c | 59 ++++++++++++++++++++++++++++++------- 1 file changed, 48 insertions(+), 11 deletions(-) diff --git a/src/bin/tools/testscanner.c b/src/bin/tools/testscanner.c index 270f1ff..c217faa 100644 --- a/src/bin/tools/testscanner.c +++ b/src/bin/tools/testscanner.c @@ -9,10 +9,20 @@ #include #include //lib errors /* Internal */ +#include + +extern //scanner.c +int scanner(void); extern //scanner.c int scanner_init(void); -extern +extern //scanner.c void scanner_quit(void); +extern //parser.tab.h +YYSTYPE yylval; +extern //lexer.c +int lexer(void); +extern //lexer.c +int lexer_init(void); /* Ansi Term Colors */ #define RED "\x1b[31m" @@ -25,6 +35,10 @@ void scanner_quit(void); int main(void); int test_init(void); +int test_scan(void); +int test_lex(void); + +const char* cargs['Z'] = {0}; int main #define $($)#$ @@ -36,23 +50,46 @@ int main PRINTINFO(T); \ if (U()) \ PRINTFAIL(U); \ - PRINTPASS(U); \ + else \ + PRINTPASS(U); \ } while (0) () -{ RUN_UNIT(test_init,"Initializing\n"); +{ cargs['d'] = "../../src"; + RUN_UNIT(test_scan,"Scanning\n"); return 0; } -int test_init -#define TESTS 50 +int test_scan () -{ static int n = 0; - printf("Init Run %-2i\n",n+1); - if (scanner_init()) - { perror("scanner init"); +{ static int scanned_total = 0; + static int n = 0; + int scanned, lexed; + int i; + if (lexer_init()) + { perror("LIB:"); return -1; } - scanner_quit(); - return (++n < TESTS) ? test_init() : scanner_init(); + loop: + if ((lexed = test_lex()) == 0) + { printf("No tokens to parse\n"); + return 0; + } + else + { printf("Parsed %i Token%c\n", lexed, lexed > 1 ? 's' : ' '); + goto loop; + } + return 0; } +int test_lex +() +{ int tok_val, n = 0; + while ((tok_val = lexer()) || yylval.val) + { if (++n % 9 == 0) + printf("\n"); + printf("[T:%4i|Y:%4i]",tok_val,yylval.val); + yylval.val = 0; + } + printf(";\n"); + return n; +} -- 2.18.0