일부 입력을 받아 파서에 대한 토큰을 만드는 간단한 플렉스 프로그램을 작성했습니다.플렉스 오류 matchtype.h
내 코드 [ex4.l] 난을 lex.yy.c 파일을 생성 명령 flex ex4.l
을 실행하고 내가 cc lex.yy.c -lfl
를 사용하여이 작업을 실행하려고 할 때 내가 붙어있어 이후
%{
enum yytokentype{
NUMBER = 258,
ADD = 259,
SUB = 260,
MUL = 261,
DIV = 262,
ABS = 263,
EOL = 264
};
int yylval
%}
%%
"+" {return ADD;}
"-" {return SUB;}
"*" {return MUL;}
"/" {return DIV;}
"|" {return ABS;}
[0-9]+ {yylval = atoi(yytext);return NUMBER;}
\n {return EOL;}
[ \t] {/*ignore whitespace */}
. {printf("Mystery character %c\n",*yytext);}
%%
int main(int argc, char **argv)
{
int tok;
while(tok = yylex()){
printf("%d",tok);
if(tok == NUMBER)
printf("=%d\n",yylval);
else
printf("\n");
}
}
이 오류 메시지가 표시됩니다. 그리고 나는이 오류가 계속 나는 문제가 무엇인지 전혀 모르겠다. 나는 이것에 아주 오래 머물러 있습니다. 당신의 플렉스 입력의
오류 메시지
cc lex.yy.c -lfl
"/usr/include/sys/machtypes.h", line 33: syntax error before or at: typedef
cc: acomp failed for lex.yy.c
나는 당신이 번들로 제공되는'acomp' 컴파일러와 함께 솔라리스와 썬 스튜디오를 사용하고 있다고 가정합니다. 이것은 헤더 파일과 오류 메시지에서 추측 한 것입니다. 컴파일러와 플렉스 버전을 추가하는 것이 좋을 것입니다. ('flex --version'은 플렉스 버전을 줄 것이고,'cc -V'는 C 컴파일러에서도 똑같이 할 것입니다.) – rici