Как выглядит стандартная функция main (), созданная с помощью flex? - PullRequest
0 голосов
/ 06 декабря 2009

Я хочу, чтобы моя программа flex / yacc делала то же самое, что и она, но я хочу немного ее изменить. Если бы я поместил main () в мой файл .l и сделал бы то же самое, что и если бы я не добавил main (), то как бы выглядел код?

1 Ответ

1 голос
/ 06 декабря 2009

Вы можете сгенерировать свой код в соответствии с нормой, а затем скопировать свой «обычный основной».

Но так как стандартный синтаксический анализатор ожидает ввода от стандартного ввода, все, что вам нужно сделать в main(), это вызвать yyparse()

в соответствии с 'lex & yacc' (стр. 211) стандартная магистраль:

main(ac, av)
{
    yyparse();
    return 0;
}

есть более полный пример на стр. 96, который настраивает ввод и вывод с помощью кода этого типа:

extern FILE *yyin, *yyout;

yyin = fopen(infile,"r");
if( yyin == NULL ) /* handle error */

yyout = fopen(outfile,"w")
/* error handling agian */

yyparse();

/* post processing */

exit(0);
...