我对Lex和Yacc很新。我有一个Lex程序。示例:wordcount.l
我正在使用窗户和腻子。
我只是想运行这个文件..
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中如何编译和运行该程序?
答案 0 :(得分:15)
首先,您必须使用wordcount.l
转到文件cd
所在的目录。然后使用lex wordcount.l
生成文件lex.yy.c
。要运行该程序,您需要使用 c编译器(如gcc)进行编译。使用gcc,您可以使用gcc -lfl lex.yy.c
进行编译。这将创建a.out
,可以使用./a.out
答案 1 :(得分:3)
lex file.l
gcc lex.yy.c -ly -ll
./a.out
这些也有效。我在Ubuntu 14.04中使用它。