Привет, у меня проблемы с моим анализатором lex. Когда я использую yyterminate для выхода, когда я обнаружил ошибку, он будет отображать ошибку в порядке, как вы можете видеть в самом низу. Но когда я иду, чтобы войти в новый URI, он все еще думает, что есть ошибка в коде. Похоже, что STDIN не был очищен, поскольку он продолжает получать ту же ошибку. Очевидно, что здесь есть путаница в коде, способ много писать здесь, но я думаю, что здесь проблема с main или yyterminate. любая помощь будет оценена.
main (int argc, char * argv []) {
char temp[10];
int q;
while(1)
{
YY_FLUSH_BUFFER;
yyrestart(stdin);
printf("\nPlease enter your URI: ");
yyin = stdin;
q= yylex();
if(errorFlag !=1)
{
if(validScheme==1)
R.protocol = "HTCPCP/1.0";
R.content = "message/coffee-pot";
if((helpFlag==1)||(helpFlag==2))
{
propfind();
theServer();
}
}
}
}
........
вот главное, где я должен иметь возможность циклически запрашивать URI, а затем переходить к функциям, а затем возвращаться, чтобы запросить другой URI, это прекрасно работает, пока нет ошибок.
........
<sep_state>. {printf("error in sep state");errorFlag=1; yyterminate(); }
<pot_value>[^0-2] { printf("Pot Value error"); errorFlag=1; yyterminate(); }
<pot_state>. { printf("pot state error");errorFlag=1; yyterminate();}
<sep_state>. { printf("couldnt recognise host");errorFlag=1; yyterminate();}
это где я делаю некоторые проверки ошибок. если ни одно из значений не было сопоставлено, я хочу, чтобы это привело к ошибке, следовательно, это соответствует всем входным данным (я думаю)
.......
Please enter your URI: coffee://128.0.111.11111/pot-0?
Host not recognised. Use 127.0.0.1/
Please enter your URI: coffee://127.0.0.1/pot-0?
Host not recognised. Use 127.0.0.1/
это вывод на стандартный вывод. Я хочу ввести URI-анализ, отправьте его. когда я получаю сообщение об ошибке, я хочу сообщить об ошибке и начать все заново с новым URI, но как только он получает ошибку, он удерживает ошибку, даже когда я набираю правильный URI, но я все еще получаю ошибку. Надеюсь, что все это имеет смысл. и был бы признателен за любую помощь.