问题描述
我正在制作一个 flex 程序,它以描述形状的字符串的形式接收用户的输入。 现在我的代码看起来是正确的,但我在编译时过早地出现了。
我也试过做类似问题的答案,但仍然没有。
%{
int flag = 0;
}%
%%
"point" + [A-H]|"line" + [A-H]{2}|"triangle" + [A-H]{3}|"square" + [A-H]{4}|"pentagon" + [A-H] {5}|"hexagon" + [A-H]{6}|"heptagon" + [A-H]{7}|"octagon" + [A-H]{8}
flag=1;
%%
main(){
yylex();
if (flag == 1){
printf("Accepted");
}else{
printf("Not accepted");
}
}
解决方法
您的 %{
未关闭,因为您写的是 }%
而不是 %}
。因此 flex 认为 }%
及其之后的所有内容都应该是 C 代码的一部分,并且在到达文件末尾时仍在等待关闭的 %}
。