Я пытаюсь разобрать файл с помощью Bison/Yacc, но я хочу приостановить синтаксический анализ на некоторое время. Причина, по которой я хочу это сделать, заключается в том, что я хочу последовательно обрабатывать огромный файл и имитировать итератор Java с использованием методов hasNext() и next().
Тривиальным примером может быть разделение файла по строкам с помощью yacc, чтобы я мог вызвать:
while(myYaccObj.hasNext())
{
std::string line = myYaccObj.next()
}
Я не могу найти, как «приостановить» сканирование файла. Есть ли способ сделать это?
yylex
всякий раз, когда это необходимо. Обычное использование Bison заключается в вызовеyyparse
один раз для создания одного большого AST. Я думаю, Tlol хочет знать, как анализировать файл постепенно, а не за один вызовyyparse
. - person Rob Kennedy   schedule 08.11.2010