2012-01-14 11 views
4

私はLexとYaccの新機能です。私にはLexプログラムがあります。例:wordcount.lLex - コマンドラインでlexプログラムを実行/コンパイルする方法

私は窓とパテを使用しています。

私はちょうどこのファイルを実行しようとしています。..

  1. wordcount.lファイルは、Cドライブに行きますか。

  2. Lexプログラムをコンパイルすると、.cプログラムが生成されますが、それでは何が実行されますか?

私は、コマンドライン上で試してみました:私はどのように...パテで

wordcount.l

%{ 
#include <stdlib.h> 
#include <stdio.h> 

int charCount=0; 
int wordCount=0; 
int lineCount=0; 
%} 
%% 
\n  {charCount++; lineCount++;} 
[^ \t\n]+ {wordCount++; charCount+=yyleng;} 
.  {charCount++;} 

%% 
main(argc, argv) 
int argc; 
char** argv; 
{   
if (argc > 1) 
{ 
    FILE *file; 
    file = fopen(argv[1], "r"); 
    if (!file) 
    { 
     fprintf(stderr, "Could not open %s\n", argv[1]); 
     exit(1); 
    } 
    yyin = file; 
} 

yylex(); 
printf("%d %d %d\n", charCount, wordCount, lineCount); 
} 

レックスwordcount.lが、私はちょうどファイルが見つからない取得このプログラムをコンパイルして実行しますか?

+0

Lexまたはフレックス?その行動は異なっている。 –

+0

これはフレックスではない –

答えて

12

ファイルwordcount.lがあるディレクトリに移動する必要がありますcdを使用しています。次にlex wordcount.lを使用すると、ファイルlex.yy.cが作成されます。あなたが必要とするプログラムを実行するには、コンパイラ(gccなど)でコンパイルしてください。 gccではgcc -lfl lex.yy.cを使ってコンパイルできます。これは、これらはまた、作品./a.out

+0

私はcd c:\を試してからレックワードカウントを入力してもエラーが出る:そのようなファイルやディレクトリはありません –

+0

あなたはパテを使ってリモートホストに接続していますか? )?その場合、最初にそのホストにファイルをコピーする必要があります。 –

+0

私はパテを使用しています。ファイルをホストにコピーするとはどういう意味ですか?学校のサーバーにファイルをコピーするという意味ですか?代わりにSSHを使用できますか? –

3
lex file.l 
gcc lex.yy.c -ly -ll 
./a.out 

を使用して実行することができa.outを作成します。私はUbuntu 14.04でこれを使用しています。

関連する問題