[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Line-by-line evaluation or all at once?

On Friday, Feb. 23 2001 18:15 Etienne M. Gagnon wrote:
> Michael Kerry wrote:
> > My question is mostly conceptual, I think.  I believe that I have a two
> > choices on how to implement this:...

> Both approaches look OK to me.  I'm not so sure that creating a new
> parser is very expensive.  The parse tables are loaded once [static
> initializer], not on every instantiation.

The main reason that one can't use the same parser again is that the 
parse-method doesn't finish with empty stack: with push(0, null, false) will 
be always a new symbol be pushed.  In case of an error the iterator (stack) 
is also not reset, which will again lead to unused elements in the 

This problem can be solved by intoducing a (final) LinkedList element (say 
listStack) to the class, removing the final modifier of the stack Iterator 
and inserting the statement 
	stack = listStack.listIterator();
as the first instruction to the parse-method.

By overriding the filter-method of the Lexer one can provide a EOF token as 

This would allow to use the same parser in an interactive enviroment 
(line-by-line evaluation) or where the input is a stream of parseable texts. 

This approach might be an alternative to always create a new parser object, 
since the entries in the LinkedList can be reused and must not be newly 

Any comments to this idea?