我的程序在Linux机器上工作正常但是当我在IBM yy_scan_string
上编译时不起作用。我是否需要声明或定义yy_scan_string
?
File : "file.l"
%{
#nclude <iostream>
#include <cstring>
bool st = false;
%}
%%
.([.][fF][1-9][0-9][Kk])$ { st = true; }
. { st = false; }
%%
int main()
{
const char *fName = "check.f9k";
char *elem = new char[strlen(fName) + 1];
sprintf(elem, "%s\n", fName);
yy_scan_string(elem);
yylex();
std::cout<<"\n ST : "<<st<<"\n";
return 0;
}
int yywrap() { return 1; }
编译:
lex file.l
g++ -o outfile lex.yy.c -ll
lex.yy.c: In function 'int main()': lex.yy.c:131: error: 'yy_scan_string' was not declared in this scope
如何在IBM机器上解决此错误?
答案 0 :(得分:1)
yy_scan_string
是flex
的一部分,但它不是传统lex
的一部分。我认为你的“IBM机器”安装了AT&amp; T lex。 (也可能有flex
。)