Lex - Как запустить / скомпилировать программу lex в командной строке

Я очень плохо знаком с Лексом и Яком. У меня есть программа Lex. Пример: wordcount.l

Я использую окна и замазку.

Я просто пытаюсь запустить этот файл..

  1. Ли wordcount.l файл идет на диск С?

  2. Должен ли я скомпилировать программу 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);
}

В замазке, как мне скомпилировать и запустить эту программу?

2 ответа

Решение

Сначала вы должны перейти в каталог, в котором файл wordcount.l в использовании cd, Затем с помощью lex wordcount.l сделает файл lex.yy.c, Для запуска программы вам нужно скомпилировать ее с помощью компилятора c, такого как 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.

Другие вопросы по тегам