LINUX.ORG.RU

lex/flex


0

0

Пытаюсь скомпилить пример из man-a (тот, что simple Pascal-like scaner):

%{ /* need this for the call to atof() below */ #include <math.h> /* need this for printf(), fopen() and stdin below */ #include <stdio.h> %}

DIGIT [0-9] ID [a-z][a-z0-9]* %%

{DIGIT}+ { printf("An integer: %s (%d)\n", yytext, atoi(yytext)); }

{DIGIT}+"."{DIGIT}* { printf("A float: %s (%g)\n", yytext, atof(yytext)); }

if|then|begin|end|procedure|function { printf("A keyword: %s\n", yytext); }

{ID} printf("An identifier: %s\n", yytext);

"+"|"-"|"*"|"/" printf("An operator: %s\n", yytext);

"{"[^}\n]*"}" /* eat up one-line comments */

[ \t\n]+ /* eat up white space */

. printf("Unrecognized character: %s\n", yytext);

%%

int main(int argc, char *argv[]) { ++argv, --argc; /* skip over program name */ if (argc > 0) yyin = fopen(argv[0], "r"); else yyin = stdin;

yylex(); }

далее: $lex pasc.c $gcc -lfl -o pasc lex.yy.c ld: fatal: symbol `main' is multiply-defined: (file /usr/local/lib/libfl.a(libmain.o) and file /tmp/ccjSIq7w.o); ld: fatal: File processing errors. No output written to rec collect2: ld returned 1 exit status

В чем дело?

anonymous

Re: lex/flex

Пиши так: gcc -o pasc lex.yy.c -lfl

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.