2016-11-12 6 views
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 

:各トークンは識別何 は以下の通りです。場合は、要素が一致しない場合、私はメッセージを印刷し、解析を停止する必要があります。私のエラーメッセージは印刷されますが、解析は続行されます。どのように解析を停止するかについてのご意見をお待ちしております。

ありがとうございました。

答えて

0

使用YYABORT 1.

+0

おかげRICI状態に戻すためにyyparseの原因となる、マクロ。 If(){ } else { yyerror( "Invalid Input File"); YYABORT; }正常に動作します。 – Kunal

関連する問題