2017-09-09 4 views
0

私はパスカルのサブセットを使ってプロジェクトを行っています。私もちょうど\ n個の代わりに[\ N]または[\ n]のではなく、期待される結果なしで、それに対処するための多くの方法を試してみましたフレックス - 新しい行が認識されない

NLINE  [\n] 
BRACKET  ['('|')'] 

%% 

{BRACKET} { 
    std::cout << "Found BRACKET symbol " << yytext[0] << std::endl; 
    return yytext[0]; 
} 

{NLINE} { 
    std::cout << "Found NEWLINE symbol " << yytext[0] << std::endl; 
    yylineno++; 
} 

... 

. { // anything is exactly before EOF 
    std::cout << "Found ANYTHING " << yytext[0] << std::endl; 
    yylval = NONE; 
    return yytext[0]; 
} 

:ように私のコードが見えます。出力は以下の通りです:

... 
Found BRACKET symbol) 
Found ANYTHING ; 
Found ANYTHING << where in code should be \n 

これは\ n問題だと私は知っています。なぜなら、私はコードをプッシュすると、それは魅力的です。

建設的な回答があれば分かります。

+1

'('または ')'にマッチする正しいパターンは '[()]'です。あなたのパターンはかっこ、アポストロフィ、または縦棒と一致します。 – rici

+0

また、「それを使わずにコードをプッシュすると」という言い方が分かりません。 – rici

+0

私はすべての\ nを入力ファイルから切り取ったときを意味します。すべて1列に並んでいますが、これはあまり快適ではありません。申し訳ありませんが、私は十分に自分自身を明確に表現していませんでした – Kris

答えて

0

問題は復帰記号のようでした。同様の問題が発生する場合は、これが役に立たない場合は、他の印刷不可能な文字をチェックしてください。私の場合は

は助け:

DELIM  [ \t\r] 

DELIMがそのようにルールが適用されていない私の溶液中で "eated" されます。

関連する問題