2012-05-08 10 views
0

私はフレックスにとって非常に新しいです。私はこの早い段階で立ち往生しています。私は(それがどのようにここに私の質問に対処する方法を教えていません)私の教科書からコードをコピーし、その内容Lex(flex):入力の仕方と出力先

%{ 
/* a Lex program that adds line numbers 
    to lines of text, printing the new text 
    to the standard output 
*/ 
#include <stdio.h> 
int lineno = 1; 
%} 
line .*\n 
%% 
{line} { printf("%5d %s", lineno++, yytext); } 
%% 
main() 
{ yylex(); return 0; } 

であるレックス・ファイル20.lを持っています。私はこれをしました

flex 20.l 

そしてファイルlex.yy.cを得ました。その後、

gcc lex.yy.c -o ADD -lfl 

でコンパイルし、実行可能ファイルADDを取得しました。

このADDを使用して、他のテキストファイルに行番号を追加するにはどうすればよいですか?たとえば、入力ファイル名が "try.c"の場合、どのコマンドを使用しますか?私は "./ADD try.c"を試みましたが、明らかにうまくいきませんでした。出力はどのように表現されていますか?

ありがとうございます。私は、これは本当に愚かな質問である知っているが、それは誰もがこのオンラインを行う方法を教えていないようだ...

答えて

1

私は出力が表示されます

./ADD < try.c 

を「./ADD try.c」を試してみましたstdoutに。別のファイル処理をしたい場合は、独自のmain()を書くことができます。あなたは、ユーザーコードセクション内のコードを次のようにあなたのメインを置き換える使用することができますリダイレクト を使用せずに./ADD try.cすなわちを有効にするには

1

void main (int argc, char **argv) 
{ 
    if (argc>0) 
     yyin =fopen(argv[0], "r"); 
    else 
     yyin = stdin; 

    yylex(); 
} 

あなたがのために解析する入力引数オプションを向上させることができますより良い入出力制御。