2016-12-31 7 views
0

のMatlab言語へのコンパイラとトランスレータの文法規則があります。私は ';'がないために構文エラーを捕捉したい声明の最後に。例えばBisonのカスタム構文エラー

私はreturn文を持っている:

stmt_return :  RETURN  {...some actions...} 
        exp ';'  {...others actions...} 

       |  RETURN  {...some actions...} 
        ';'   {...others actions...} 

どのように私はの欠如を扱うことができます ';'デフォルトのメッセージ "構文エラー"の代わりにカスタムエラーメッセージを表示します。

私はこれらのルールを追加しますが、正しく競合を生成しようとした:

stmt_return :  RETURN exp { yyerror("...")} 

       |  RETURN { yyerror("...")} 
+0

これはC#のではなく、タグを削除しました。あなたはおそらくCを意味しましたが、私は気にしません。 – leppie

+0

@leppieはい、私は間違っていました、ごめんなさい –

答えて

0

私はこの解決策が見つかりました:

stmt_return :  RETURN  {...some actions...} 
        exp sc  {...others actions...} 

      |  RETURN  {...some actions...} 
        sc   {...others actions...} 
      ; 

sc   : ';' 
      | { yyerror("Missing ';'"); } error 
      ; 
関連する問題