Я пытаюсь написать парсер, используя flex ++ и bison.Мне нужен парсер, чтобы иметь возможность читать из файла и записывать новый файл в выходной файл.
У меня есть экземпляр yyFlexLexer следующим образом:
yyFlexLexer lexer;
и я использую его:
int main(int argc, char* argv[])
{
std::istream* in_file = new std::ifstream(argv[1])
std::ostream* out_file = new std::ofstream(argv[2])
lexer.switch_streams(in_file, out_file);
yyparse();
return 0;
}
Если я запустил:
./executable foo bar
, то парсер правильно прочитал файл foo (я вижу, что он печатает в правилах зубров), но в конце я нашел только пустой файл с именем«бар» без чего-либо в нем.
Я также пытался сделать это:
int main(int argc, char* argv[])
{
std::istream* in_file = new std::ifstream(argv[1])
std::ostream* out_file = new std::ofstream(argv[2])
lexer.switch_streams(in_file, out_file);
while(lexer.yylex())
;
return 0;
}
но он делает то же самое.