我在使用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文件。
答案 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