0
私はLexとYACCを使用してXMLファイルを解析しています。私の文法は同じです。YACCでユーザ定義のエラー
START_TAG、AN_CLOSE、END_TAG、およびAN_CLOSEはlexのファイルによって返されたトークンで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
}
}
。入力XMLファイルが有効であれば、私は要素START_TAGの「要素」すなわちEND_TAGの 『要素』すなわち$ 6に$ 1のテキストをチェックしてるチェックするために今すぐ
START_TAG :<element
AN_CLOSE : >
END_TAG :</element
:各トークンは識別何 は以下の通りです。場合は、要素が一致しない場合、私はメッセージを印刷し、解析を停止する必要があります。私のエラーメッセージは印刷されますが、解析は続行されます。どのように解析を停止するかについてのご意見をお待ちしております。
ありがとうございました。
おかげRICI状態に戻すために
yyparse
の原因となる、マクロ。 If(){ } else { yyerror( "Invalid Input File"); YYABORT; }正常に動作します。 – Kunal