在IBM机器上使用yy_scan_string在lex程序中编译错误

时间:2013-10-26 01:35:07

标签: lex

我的程序在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机器上解决此错误?

1 个答案:

答案 0 :(得分:1)

yy_scan_stringflex的一部分,但它不是传统lex的一部分。我认为你的“IBM机器”安装了AT&amp; T lex。 (也可能有flex。)