Lex - Как запустить / скомпилировать программу lex в командной строке
Я очень плохо знаком с Лексом и Яком. У меня есть программа Lex. Пример: wordcount.l
Я использую окна и замазку.
Я просто пытаюсь запустить этот файл..
Ли
wordcount.l
файл идет на диск С?Должен ли я скомпилировать программу 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.