Генерация вывода из сгенерированного гибкого исполняемого файла - PullRequest
0 голосов
/ 03 августа 2011

У меня проблемы с использованием flex.
Я написал файл C happy.c как

int num_lines = 0, num_chars = 0;

%%
\n      ++num_lines; ++num_chars;
.       ++num_chars;

%%
main()
    {
        yylex();
        printf( "# of lines = %d, # of chars = %d\n",
                         num_lines, num_chars );
        }

Затем я дал команду flex happy.c, которая выдала lex.yy
Затемдал команду gcc lex.yy.c -lfl, которая сгенерировала a exe-файл.
Но я не знаю, как использовать этот exe-файл.Например: когда я дал команду

./a test  (here test is a simple txt file)

Ничего не получалось.Я имею в виду, программа, кажется, зависает.

Скажите, пожалуйста, как использовать exe-файл.

1 Ответ

1 голос
/ 03 августа 2011

Попробуйте вместо этого:

%{
int num_lines = 0, num_chars = 0;
%}
%%
\n      { ++num_lines; ++num_chars; }
.       { ++num_chars; }

%%
main()
{
  yylex();
  printf( "# of lines = %d, # of chars = %d\n", num_lines, num_chars );
}

, а затем:

bart@hades:~/Programming/GNU-Flex-Bison/lexer$ flex happy.c 
bart@hades:~/Programming/GNU-Flex-Bison/lexer$ gcc lex.yy.c -lfl
bart@hades:~/Programming/GNU-Flex-Bison/lexer$ ./a.out < test
# of lines = 2, # of chars = 8

, где test содержит:

foo
bar
...