2011-05-06 7 views
3

私はいくつかのファイルを解析した後、ユーザーからの入力を解析するという、かなり簡単なプログラムをLEXで書いています。Lex:強制スキャン?

今、ファイルでは、すべてが魅力のように機能します。ただし、stdinからのユーザー入力については、EOF(ctrl + D経由)文字が送信されるまでLEXルールは実行されません。私がそれをすると、LEXは私が書いたすべてを解析し、さらに入力を待つ。 2番目の連続するEOFがスキャナを終了します。

私は、プログラムが\nに反応して、何らかのデータを出力したいと思っています。ルール内から強制的にスキャンを実行する方法や、LEXバッファリングを何らかの形でこの動作に合わせて設定する方法はありますか?

答えて

4

解決済み!これはトリックでした、場合に...よく、誰が

%option always-interactive 

私は今後の参考のためにここにこれを残している知っています。

+0

回答を受け入れることを検討してください。これで回答が受け入れられるようになります。 – QuantumMechanic

+0

@QuantumMechanic私はそれを行うために2日待っています:) 23時間を残しました – slezica

0

これはlexとyaccで行ったUNIXシェルのスニペットです。私はそれがトリックを行うだろうと思う。

"\n"     | 
";"      { 
         //yylval.sb = getsb(yytext); for yacc stuff 
         fprintf(stderr,"EOL\n"); 
         return(EOL); 
         } 
+0

セミコロンは、シェル内の1行に複数のコマンドを実行するためのものでした。 – richmb