#include <stdlib.h>
#include <errno.h> //lib errors
/* Internal */
+#include <apc/parser.tab.h>
+
+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"
int main(void);
int test_init(void);
+int test_scan(void);
+int test_lex(void);
+
+const char* cargs['Z'] = {0};
int main
#define $($)#$
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;
+}