Lex - How to run / compile a lex program on commandline

c lex
user249375 picture user249375 · Jan 14, 2012 · Viewed 98.2k times · Source

I am very new to Lex and Yacc. I have a Lex program. Example: wordcount.l

I am using windows and putty.

I am just trying to run this file..

  1. Does the wordcount.l file go on the C drive?

  2. Do I compile the Lex program and it generates a .c program and then what do I run?

I tried on the command-line: Lex wordcount.l

but I just get file not found...

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);
}

In putty how do I compile and run this program?

Answer

Bilal Syed Hussain picture Bilal Syed Hussain · Jan 14, 2012

You first have to go to the directory which the file wordcount.l is in using cd. Then using lex wordcount.l will make the file lex.yy.c. To the run the program you need compile it with a c compiler such as gcc. With gcc you can compile it using gcc -lfl lex.yy.c. This will create a.out which can be run using ./a.out