#include <stdio.h> //print
#include <errno.h> //errors
#include <string.h> //strnlen
+#include <setjmp.h> //non-local jumps
/* Posix */
#include <stdlib.h> //exit
#include <unistd.h> //getopt
int test_yyparse(void);
extern //bison
-int yyparse(void);
+int yyparse(void);
extern //lexer.c
int lexer_init(void);
+extern //scanner.c
+int scanner_init(void);
extern //apc.c
const char* cargs['Z'];
extern //lexer.c
int lexer(void);
+static
+jmp_buf testapc_jump;
+
/* Ansi Term Colors */
#define RED "\x1b[31m"
#define GREEN "\x1b[32m"
( int argc,
char* argv[]
)
-{ apc_main(argc, argv);
+{ setjmp(testapc_jump);
+ apc_main(argc, argv);
printf(GREEN "PASS" CLRC "\n");
exit(EXIT_SUCCESS);
}
return YYABORT;
}
bPassedTest = 't';
- apc_main(0,NULL);
+ longjmp(testapc_jump,0);
}
return yyparse();
}
TOK_CASE(CLOPEN,'i');
TOK_CASE(CLCLOSE,'i');
default:
- tok_string = "UNKNOWN";
+ tok_string = 0;
tok_pattern[LOFFS] = 'i';
break;
case 0:
goto done;
}
- printf(tok_pattern, tok_string, yylval.val);
+ if (tok_string == NULL)
+ { tok_pattern[TOFFS] = 'i';
+ printf(tok_pattern, tok, yylval.val);
+ }
+ else
+ { tok_pattern[TOFFS] = 's';
+ printf(tok_pattern, tok_string, yylval.val);
+ }
if (i % 4 == 0 || yylval.val == 0)
printf(";\n");
}