我有一个基本的lex文件:
%{
/* Declarations section */
#include <stdio.h>
void showToken(char *);
%}
%option yylineno
%option noyywrap
digit ([0-9])
whitespace ([\t\n ])
%%
{digit}+ showToken("number");
{whitespace} ;
. printf("Lex doesn't know what that is!\n");
%%
void showToken(char * name)
{
printf("Lex found: %s, %s", name, yytext);
}
我已经安装了gcc和flex。 我编译以下命令:
flex example.lex
gcc -ll lex.yy.c
但我得到错误:
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld: cannot find -ll
collect2: error: ld returned 1 exit status
我错过了什么?
答案 0 :(得分:1)
要使用flex库,您需要提供-lfl
而不是-ll
。
flex example.lex
gcc -lfl lex.yy.c
-ll
仅在您使用原始lex命令及其库时才有效。 cygwin只包含flex,即免费的gnu版本。
答案 1 :(得分:0)
我的答案是明确写下“gcc -L”C:\ GnuWin32 \ lib“-lfl lex.yy.c”。