Как переопределить входной поток flex в указанном ниже примере?
Из своей программы вызываю yylex(); для распознавания строк вида x=1.
Нужно читать произвольное число строк.
[ccode]
extern int X;
extern int d;
%}
Ds [0-9]+
S [ \t]*
%%
x{S}={S}{Ds} {
std::istringstream str(yytext);
std::string temp;
getline(str,temp,'=')>>d;
return X;
}
\n|. {}
%%
int yywrap(){
return 0;
}
[/ccode]
главная программа
[ccode]
include <iostream>
#include "lex.yy.c"
int X;
int d;
int main(){
yylex();
std::cout << "X=" << d << std::endl;
}
[/ccode]
Вызываю так
[code]
cat data | ./a.out
[/code]
а в data строки
x=12
x=13
x=14
Пока обрабатывается только первая строка, а нужно обработать все причем их число неизвестно заранее.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум bison & C++ (2006)
- Форум С++ неожиданный результат выдаёт. (2020)
- Форум YYSTYPE Bison&Flex (2021)
- Форум Flex&Bisone конфликты (2020)
- Форум вопрос по С++ (операторные функции) (2008)
- Форум gcc cos(1)=0.540302 (2011)
- Форум Не компилируется программа :( (2008)
- Форум с++, long double, непонятное поведение (2008)
- Форум std::cout вместе с std::wcout (2009)
- Форум Неправильная длина строки std::string в C++ (2014)