Lex – 如何在命令行上运行/编译lex程序

我是Lex和Yacc的新手。 我有一个Lex程序。 示例: wordcount.l

我正在使用窗户和腻子。

我只是想运行这个文件..

  1. wordcount.l文件是否在C盘上?

  2. 我是否编译了Lex程序并生成了一个.c程序,然后我运行了什么?

我试过命令行:Lex wordcount.l

但我只是找不到档案……

wordcount.l

 %{ #include  #include  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 要运行程序,您需要使用g编译 (如gcc)编译它。 使用gcc,您可以使用gcc -lfl lex.yy.c编译它。 这将创建一个可以使用./a.out运行的a.out

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

这些也有效。 我在Ubuntu 14.04中使用它。