$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: [boost] [spirit] Support for one-pass iterators?
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2009-10-18 10:41:04
Hi,
I'm trying to use Boost.Spirit.Classic to parse a text file content (or, 
to be more generic, a content that is read from an STL stream). I 
created a grammar that would fit the content, but I'm not sure which 
iterator I should pass to the parse function. The parser does not 
guarantee that it will read the content only in one pass, and I'm sure 
my actors will want to read the content themselves as they are called. 
So, obviously, istream_iterator/istreambuf_iterator will not work.
Is there a tool in Boost.Spirit that would provide content buffering 
during the parse? If not, what can be suggested to solve this problem?
BTW, the content is line-aligned, i.e. each line is syntactically 
distinct from others. I was thinking about writing a loop of 
readline/parse combo but I'm not sure how efficient it would be with 
regard to the grammar definition construction/destruction within the 
parse function. Are these concerns valid?
Thanks.