38static char rcsid[] not_used = {
"$Id$"};
43#include "Error.tab.hh"
47void test_parser(Error &err);
49void test_object(Error &err);
56extern YYSTYPE Errorlval;
58const char *prompt =
"error-test: ";
65main(
int argc,
char *argv[])
68 GetOpt getopt(argc, argv,
"spd");
70 GetOpt getopt(argc, argv,
"spdo");
73 bool scanner_test =
false, parser_test =
false, object_test =
false;
77 while ((option_char = getopt()) != EOF)
78 switch (option_char) {
90 parser_test = object_test =
true;
99 if (!(scanner_test || parser_test))
101 if (!(scanner_test || parser_test || object_test))
125 fprintf(stderr,
"usage: error-test: [d][sp] < filename ...\n");
127 fprintf(stderr,
"usage: error-test: [d][spo] < filename ...\n");
129 fprintf(stderr,
" d: extra parser debugging information\n");
130 fprintf(stderr,
" s: run the scanner\n");
131 fprintf(stderr,
" p: run the parser\n");
133 fprintf(stderr,
" o: evaluate the object, runs the parser\n");
140 fprintf(stdout,
"%s", prompt);
142 while ((tok = Errorlex())) {
145 fprintf(stdout,
"ERROR\n");
148 fprintf(stdout,
"CODE\n");
151 fprintf(stdout,
"PTYPE\n");
154 fprintf(stdout,
"MSG\n");
157 fprintf(stdout,
"PROGRAM\n");
160 fprintf(stdout,
"%s\n", Errorlval.string);
163 fprintf(stdout,
"%d\n", Errorlval.integer);
166 fprintf(stdout,
"Left Brace\n");
169 fprintf(stdout,
"Right Brace\n");
172 fprintf(stdout,
"Semicolon\n");
175 fprintf(stdout,
"Assignment\n");
178 fprintf(stdout,
"Error: Unrecognized input\n");
180 fprintf(stdout,
"%s", prompt);
185void test_parser(Error &err) {
186 int status = err.parse(stdin);
187 fprintf(stdout,
"Status from parser: %d\n", status);
190 fprintf(stdout,
"Error passed OK check\n");
192 fprintf(stdout,
"Error failed OK check\n");