Что делать с выводом lex? - PullRequest
       16

Что делать с выводом lex?

3 голосов
/ 21 января 2011

У меня совершенно нет опыта работы с компиляторами, и я отправился в путешествие "научи себя". Я изучаю lex, используя этот учебник, и набрал что-то вроде этого в файл с именем first.l

%%
    /* match everything except newline */
.   ECHO;
    /* match newline */
\n ECHO;

%%

int yywrap(void) {
    return 1;
}

int main(void) {
    yylex();
    return 0;
}

Теперь я понимаю, что lex должен генерировать токенизатор, который будет просто отображать все, что получает, используя файл first.l выше. Я пошел вперед и побежал

lex first.l

Создан файл с именем lex.yy.c. Затем в учебном пособии приведено еще несколько примеров и переход к yacc. Может кто-нибудь сказать мне, что можно сделать с файлом lex.yy.c, который генерируется lex? Я думал, что теперь у меня есть токенизатор, но как мне теперь скомпилировать этот файл в двоичный файл? Используете gcc?

1 Ответ

4 голосов
/ 21 января 2011

Да, с использованием GCC.Возможно, вы захотите сделать что-то вроде этого:

gcc -c file1.c
gcc -c file2.c
gcc -o result file1.o file2.o

Флаг -c для GCC говорит ему не связывать, а останавливать после создания объектного файла.После того, как вы скомпилировали все файлы, вы можете связать их вместе, передав их все в gcc.

Так что в вашем случае вам нужно просто скомпилировать выходной файл, сгенерированный lex дляполучить двоичный файл:

gcc -o output lex.yy.c
...