LexとYaccは初めてです。 Lexプログラムを持っています。例:wordcount.l
WindowsとPuTTYを使用しています。
このファイルを実行しようとしています。
wordcount.l
ファイルはCドライブに移動しますか?
Lexプログラムをコンパイルすると、.c
プログラムを実行してから、何を実行しますか?
コマンドラインで試してみました:Lex wordcount.l
しかし、ファイルが見つからないだけです...
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);
}
PuTTYでこのプログラムをコンパイルして実行するにはどうすればよいですか?
まず、cd
を使用して、ファイルwordcount.l
が存在するディレクトリに移動する必要があります。次に、Lex wordcount.l
を使用すると、ファイルがLex.yy.c
になります。プログラムを実行するには、gccなどのcコンパイラでコンパイルする必要があります。 gccでは、gcc -lfl Lex.yy.c
を使用してコンパイルできます。これによりa.out
が作成され、./a.out
を使用して実行できます
Lex file.l
gcc Lex.yy.c -ly -ll
./a.out
これらも機能します。私はこれをUbuntu 14.04で使用しています。