C 使用Flex编译器时的编译问题
我有一个需要使用flex编译器编译的文件,但是当我使用flex file.c编译时,我得到了这个错误,我不太清楚它的意思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} {
%{
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: .