[antlr-interest] Setting Lexer (Was: Please HELP!!!)

Craig Main craig at palantir.co.za
Fri Feb 7 00:20:55 PST 2003


Thanks Terrence,

I was thinking about restarting the lexer by saving the input text somehow.
Your suggestion is infinitely better, thanks.

Would a simple stack or queue not work effectively?

Regards
Craig.

-----Original Message-----
From: Terence Parr [mailto:parrt at jguru.com] 
Sent: 07 February 2003 09:53
To: antlr-interest at yahoogroups.com
Subject: Re: [antlr-interest] Setting Lexer (Was: Please HELP!!!)

Hi Craig...if you're walking over the input more than once, it's  
typical to build a tree or some other intermediate form and then walk  
that.

Regards,
Terence

On Thursday, February 6, 2003, at 11:40 PM, Craig Main wrote:

> Hi All,
>
> Is there any way of getting the lexer to restart from a particular  
> point,
> and consequently, to get the current position of the lexer.
>
> If I need to parse a section of code several times, how would I do it.
>
> Given
> [foreach 10]
> this
> test
> [endfor]
>
> I want to parse this section 10 times. I would use some sort of  
> artificial
> stack to keep track of the sections for nesting purposes. I need the  
> parser
> to remember where it is at [foreach 10] and re-parse from there 10  
> times
> when it gets to [endfor].
>
> Thanks
> Regards
> Craig
>
> On Thu, Feb 06, 2003 at 02:17:17AM -0000, rmsanjivp  
> <rmsanjivp at yahoo.com>
> wrote:
>> MyLexer lexer(some istream object);
>>
>> then there is no way for me to specify the lexer to read from
>> different input stream.
>>
>> Is there a way to change the input to lexer while I am parsing? Like
>> telling lexer to read from one file initially and then from another
>> file without re-instantiating the lexer?
>
> a) check the includeFile example (if you want include file like  
> behaviour)
> b) check LexerSharedInputState.hpp (if you just want to reinitialize  
> after
>    a parse run) something like this:
>
>    ifstream file;
>
> 	....
>
>    antlr::LexerSharedInputState lex_input = lexer->getInputState();
>    lex_input->initialize(file, filename);
>
>    // and reset parser (antlr) internal state
>    parser->getInputState()->reset();
>    parser->setFilename(filename);
>
>    // start parsing at the 'start' rule
>    parser->start();
>
>    setFilename's are necessary to get correct errormessages. The
>    inputstates need resets to prevent 'funny' things.
>
> Cheers,
>
> Ric
> --
> ----- 
> +++++*****************************************************+++++++++----
> ---
>     ---- Ric Klaren ----- j.klaren at utwente.nl ----- +31 53 4893722   
> ----
> ----- 
> +++++*****************************************************+++++++++----
> ---
>      "Evil will always triumph, because Good is dumb." ---  Spaceballs
>
>
>
>
> Your use of Yahoo! Groups is subject to  
> http://docs.yahoo.com/info/terms/
>
>
>
>
> Your use of Yahoo! Groups is subject to  
> http://docs.yahoo.com/info/terms/
>
>
--
Co-founder, http://www.jguru.com
Creator, ANTLR Parser Generator: http://www.antlr.org
Lecturer in Comp. Sci., University of San Francisco


 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 


 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 



More information about the antlr-interest mailing list