37 lines
1.2 KiB
C
37 lines
1.2 KiB
C
#include "runner.h"
|
|
|
|
int main(int argc, char ** argv) {
|
|
char *check_input;
|
|
int token;
|
|
//check_input can be compared to INVALID_ARG and DIFF_ARG to determine if -tok and holds the generated file name if it is
|
|
check_input = is_tok(argc, argv);
|
|
FILE * output = fopen(check_input, "w");
|
|
|
|
if (check_input == INVALID_ARG) {
|
|
return -1;
|
|
}
|
|
|
|
while (0 != (token = yylex())) {
|
|
if (check_input != DIFF_ARG) {
|
|
fprintf(output, "%d %d %3d \"%s\"\n", line_number, column_number, token, yytext);
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
char *is_tok(int argc, char *argv[]) {
|
|
if (argc == 3 && strcmp("-tok", argv[1])) {
|
|
char *input_prog = argv[2];
|
|
int file_len = strlen(input);
|
|
//check that input program is a .alpha file
|
|
if (strcmp(".alpha", input_prog[file_len - ALPHA_OFFSET]) != 0) {
|
|
return INVALID_ARG;
|
|
}
|
|
char *FILE_tok[file_len - ALPHA_OFFSET + TOK_LEN];
|
|
strncpy(input, FILE_tok, file_len - ALPHA_OFFSET); //copy name of prog before .alpha
|
|
strcpy(".tok", FILE_tok[file_len - ALPHA_OFFSET]); //add .tok to end of file name
|
|
return FILE_tok;
|
|
}
|
|
return DIFF_ARG;
|
|
}
|