Итак, я пытаюсь создать компилятор, используя flex, bison и C. В моем файле step3.y есть основная функция:
step3.y
int main(int argc, char *argv[]) {
char filename[100];
strcpy(filename, argv[1]);
if (argc == 2) {
yyin = fopen(argv[1], "r");
printf("filename is %s\n", filename);
}
else {
printf("No files - Exit\n");
exit(1);
}
yyparse();
printf("\nMain symbol table");
Display();
printf("the input has been syntactically checked\n");
printf("starting print\n*\n*\n*\n*\n*\n");
ASTprint(0, prog);
return 0;
}
И я запускаю эти команды в моем cygwin:
bison -d step3.y
flex step3.fl
gcc lex.yy.c -lfl -o step3
Ранее я пытался использовать
gcc step3.tab.c lex.yy.c -lfl -o step3
, но это вызвало много ошибок «Множественные определения« указанной функции »»поэтому я удалил это, и теперь он компилируется без ошибок.
В любом случае, при выполнении этих 3 команд я не получаю вывод.Даже не принт.
В моем файле step3.fl есть следующая опция:
%option noyywrap
Почему моя функция main () не работает?Как я могу заставить его работать?