0

私はFlexに非常に慣れていないため、この早い段階で立ち往生しています。Lex ファイル 20.l があり、その内容は次のとおりです。

%{
/* 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; }

教科書からコードをコピーしました (ここで質問に対処する方法はわかりません)。私はやった

flex 20.l

ファイルlex.yy.cを取得しました。それから私はそれをコンパイルしました

gcc lex.yy.c -o ADD -lfl

実行ファイルADDを取得しました。

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

ありがとうございました。これが本当にばかげた質問であることはわかっていますが、オンラインでこれを行う方法を誰も教えていないようです...

4

2 に答える 2

1

リダイレクトを使用せずに ./ADD try.c ie を有効にするには、ユーザー コード セクションでメインを次のコードに置き換えます。

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

    yylex();
}

入力引数オプションの解析を強化して、入力と出力の制御を向上させることができます。

于 2012-05-15T04:09:29.907 に答える