[antlr-interest] Re: Problems while reusing Lexer/Parser/TreeParser instances
Terence Parr
parrt at antlr.org
Sat Sep 27 10:25:48 PDT 2003
Seems like there will be a file closing/rewinding issue now that you
mention it ;) Somehow the actual file must be reset not just the
internal state.
Ter
On Saturday, September 27, 2003, at 09:11 AM, micheal_jor wrote:
> Would someone please post working code for reusing
> Lexer/Parser/TreeParser instances please?. It can be in any of C++,
> Java and C#.
>
> Cheers
>
> Micheal
>
>> Hi,
>>
>> I'm tinkering with the code below[1*] to support reuse of
>> Lexer/Parser/Treeparser instances with ANTLR/C#:
>>
>> Issues:
>> 1. I haven't tried this in a basic Lexer->Parser situation ;-)
>>
>> 2. Given a situation (a.k.a. pipeline) where Lexer1 and Lexer2 are
>> multiplexed using a TokenStreamSelector that then feeds a Parser, only
>> the first use of an instance of the pipeline is error-free. When
>> parsing the same file repeatedly, the pipeline reports unexpected
>> token errors on pass two and dies catastrophically on pass 3.
>>
>> Any ideas?
>>
>> I reset the state in (2) above as follows:
>> 1. lexer1.resetState(<new-buffer-to-use>)
>> 2. lexer2.resetText()
>> 3. parser.resetState()
>>
>> The TokenStreamSelector doesn't seem to need any tweaking.
>>
>> ***
>> Does (and how) the use of exotic Token classes like HiddenStreamToken
>> (sp?) affect reuse of L/P/T instances?
>>
>> Cheers,
>>
>> Micheal
>>
>> ------------------
>>
>> [1*] Code excerpts below:
>>
>>
>> -----------------------------------------------------------
>> CharScanner.cs
>> -----------------------------------------------------------
>> 520a523,529
>>> public virtual void resetState(InputBuffer ib)
>>> {
>>> text.Length = 0;
>>> traceDepth = 0;
>>> inputState.resetInput(ib);
>>> }
>>>
>>
>> -----------------------------------------------------------
>> Parser.cs
>> -----------------------------------------------------------
>> 283a284,289
>>> public virtual void resetState()
>>> {
>>> traceDepth = 0;
>>> inputState.reset();
>>> }
>>>
>
>
>
>
> Your use of Yahoo! Groups is subject to
> http://docs.yahoo.com/info/terms/
>
>
>
--
Professor Comp. Sci., University of San Francisco
Creator, ANTLR Parser Generator, http://www.antlr.org
Co-founder, http://www.jguru.com
Co-founder, http://www.knowspam.net enjoy email again!
Co-founder, http://www.peerscope.com pure link sharing
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list