从flex生成的可执行文件生成输出

时间:2011-08-03 18:32:16

标签: flex-lexer

我在使用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 exe文件的命令a 但我不知道如何使用这个exe文件。例如:当我发出命令时

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

它什么也没产生。我的意思是程序似乎挂了。

请告诉我如何使用exe文件。

1 个答案:

答案 0 :(得分:1)

请改为尝试:

%{
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