почему Ubuntu показывает ошибку при запуске программы lex - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь запустить лексическую программу в UBUNTU с расширением файла .l, я уже установил flex и bison и смог получить файл lex.yy.c, но когда я дал команду cc lex.yy.c -lfd или cc lex.yy.c терминал показал ошибку:

first.l:2:10: fatal error: iostream: No such file or directory
 #include <iostream>
          ^~~~~~~~~~

мой код:

%{
#include <iostream>
using namespace std;
#define YY_DECL extern "C" int yylex()
%}
%%
[ \t\n]         ;
[0-9]+\.[0-9]+  { cout << "Found a floating-point number:" << yytext                         << endl;   }
[0-9]+          { cout << "Found an integer:" << yytext << endl; }
[a-zA-Z0-9]+    { cout << "Found a string: " << yytext << endl; }
%%
 int main(int, char**) {
    // lex through the input:
    yylex();
}

Я переустанавливаю flex и bison, а также удаляю и устанавливаю gcc, но без изменений! Любая помощь будет принята с благодарностью,

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

Вы пытаетесь скомпилировать код C ++ с помощью компилятора C. Вместо этого используйте g++.

0 голосов
/ 25 апреля 2019

Вот правильный код для его запуска:

%%
[0-9]+\.[0-9]*  { printf("Found a floating-point number:"); }
[0-9]*          { printf("Found an integer:"); }
[a-zA-Z0-9]*    { printf("Found a string: "); }
%%
main(int argc, char** argv) 
{
 yylex();
} 
...