yyparse を実行および解析でき、repl 型システム内で使用できる flex/bison システムをセットアップしました。ユーザーが特定の状態 (たとえば、メソッドの定義) に入り、systax エラーが発生した場合、バイソンがユーザーが入力したことがないように振る舞うことができるような方法でこれを処理する方法を探していますライン。
例えば:
1> class foo { <enter>
2> a = 1; <enter>
3> asfasdfa <enter>
この場合、パーサーは最後の行を読み取る前の状態に戻る必要があります。現時点では、構文エラーが発生し、完全なスタックが巻き戻されます。
bisons yyparse() 関数には、状態追跡に使用されるローカル スタック状態値 (yyvsp、yyssp、yylsp) があることはわかっていますが、YYERROR などの標準機能以外でこれらを変更する方法はないようです。
私の質問は、バイソンでこれらの保存/復元状態をリモートで実行することも可能ですか?そうでない場合、そのようなエラーに対処する最善の方法は何ですか.