0
我正在使用Lex和YACC解析XML文件。我的語法就像。YACC中的用戶自定義錯誤
START_TAG attributes AN_CLOSE childelements data END_TAG AN_CLOSE
{
if(strcmp(getSubStr($1,1,strlen($1)-1),getSubStr($6,2,strlen($6)-1))==0)
{
//Here comes action to be performed if elements match
}
else
{
yyerror("Invalid Input File");
//In such message should be printed and parsing should stop
}
}
其中START_TAG,AN_CLOSE,END_TAG和AN_CLOSE是由Lex文件返回的標記。 什麼每個令牌標識下面給出:
START_TAG :<element
AN_CLOSE : >
END_TAG :</element
我們檢查,如果輸入的XML文件是有效的,我檢查元素START_TAG的「元素」,即$ 1 END_TAG的‘元素’,即$ 6的文本。如果元素不匹配,我必須打印消息並停止解析。我的錯誤消息正在打印,但解析仍在繼續。任何關於如何停止解析的建議將不勝感激。
感謝。
感謝RICI返回。如果(){else} yyerror(「Invalid Input File」); YYABORT; YYABORT; }工作正常。 – Kunal