YACC中的用户自定义错误
问题描述:
我正在使用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