C 使用Flex编译器时的编译问题

C 使用Flex编译器时的编译问题,c,flex-lexer,C,Flex Lexer,我有一个需要使用flex编译器编译的文件,但是当我使用flex file.c编译时,我得到了这个错误,我不太清楚它的意思 %{ int _numargs = 10; char *_args[10]; int _argcount = 0; %} WORD [a-zA-Z0-9\/\.-]+ SPECIAL [()><|&;*] %% _argcount = 0; _args[0] = NULL; {WORD}|{SPECIAL} {

我有一个需要使用flex编译器编译的文件,但是当我使用flex file.c编译时,我得到了这个错误,我不太清楚它的意思

%{
int _numargs = 10;
char *_args[10];
int _argcount = 0;
%}

WORD    [a-zA-Z0-9\/\.-]+
SPECIAL [()><|&;*]

%%
    _argcount = 0; 
    _args[0] = NULL; 

{WORD}|{SPECIAL} {  
      if(_argcount < _numargs-1) {
        _args[_argcount++] = (char *)strdup(yytext);
        _args[_argcount] = NULL;
      }
    }

\n  return (int)_args;

[ \t]+

.

%%

char **getline() {
  return (char **)yylex();
}

我认为
\u argcount=0_args[0]=NULL
需要与include放在同一部分。
flex
程序将
.l
(词法分析器)文件转换为
.c
文件(通常也是
.h
文件)。您没有对
.c
文件运行
flex
,而是由它生成它们。@DanielWalker:代码的这一部分很好。第一个图案插入到
yylex
顶部之前的缩进代码。由于在看到换行符之前操作不会返回,因此这实际上是每行循环初始化。将指针投射到
int
并返回会有更大的问题..我认为
\u argcount=0_args[0]=NULL
需要与include放在同一部分。
flex
程序将
.l
(词法分析器)文件转换为
.c
文件(通常也是
.h
文件)。您没有对
.c
文件运行
flex
,而是由它生成它们。@DanielWalker:代码的这一部分很好。第一个图案插入到
yylex
顶部之前的缩进代码。由于在看到换行符之前操作不会返回,因此这实际上是每行循环初始化。将指针投射到
int
和back会产生更大的问题。。
lex.c:10: unrecognized '%' directive
lex.c:14: bad character: {
lex.c:14: unknown error processing section 1
lex.c:14: unknown error processing section 1
lex.c:14: bad character: }
lex.c:14: bad character: |
lex.c:14: bad character: {
lex.c:14: unknown error processing section 1
lex.c:14: bad character: }
lex.c:14: bad character: {
lex.c:19: bad character: }
lex.c:21: bad character: \
lex.c:21: unknown error processing section 1
lex.c:21: unknown error processing section 1
lex.c:21: bad character: (
lex.c:21: unknown error processing section 1
lex.c:21: bad character: )
lex.c:21: unknown error processing section 1
lex.c:21: bad character: ;
lex.c:23: bad character: [
lex.c:23: bad character: \
lex.c:23: unknown error processing section 1
lex.c:23: bad character: ]
lex.c:23: bad character: +
lex.c:25: bad character: .