gpt4 book ai didi

c - 弹性错误 matchtype.h

转载 作者:太空宇宙 更新时间:2023-11-04 02:47:31 25 4
gpt4 key购买 nike

我正在编写一个简单的 flex 程序,它接受一些输入并为解析器创建标记。

我的代码 [ex4.l]

%{
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");
}
}

在此之后,我运行了生成 lex.yy.c 文件的命令 flex ex4.l,当我尝试使用 cc lex.yy.c -lfl 运行它时 我被这个错误消息困住了。而且我不断收到此错误,我完全不确定问题出在哪里。我坚持了很长时间。请指教

错误信息

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

最佳答案

您的弹性输入的第 11 行:

int yylval

缺少一个分号。

毫无疑问,发生的事情是 flex 在代码序言之后立即插入一个 #include 指令,并且包含的​​第一个文件(递归地)是 machtypes.h。该文件的第一个非预处理器行标记了错误,大概是因为预处理的 C 程序是:

int yylval typedef struct   _label_t { long val[2]; } label_t;

如报告的那样,这是一个语法错误。

关于c - 弹性错误 matchtype.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25734174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com