Re: ParserFilter suggestion

John Cowan (cowan@locke.ccil.org)
Fri, 31 Jul 1998 11:56:34 -0400


Ron Bourret scripsit:

> Currently, SetParser in ParserFilter accepts a single parser. I think this
> should be a Stack of parsers. Each ParserFilter would set its own parser to the
> top parser on the stack, pop that off, and pass the rest of the Stack to the
> next level down. This would allow the application to build a stack of
> ParserFilters, each performing a different operation.

That was my intent in making ParserFilter a subinterface of Parser.
Here's how an application can do what you want:

Parser p;
ParserFilter pf;
p = new RealParser();
pf = new FooFilter();
pf.setParser(p);
p = pf;
pf = new BarFilter();
pf.setParser(p);
p = pf;
pf = new BazFilter();
pf.setParser(p);
p = pf;
...

If setParser returned "this" rather than void, then you could write the
cascade in fewer lines:

Parser p = new RealParser();
ParserFilter pf = new FooFilter().setParser(p);
pf = new BarFilter().setParser(pf);
pf = new BazFilter().setParser(pf);
...
p = pf;

I will probably make that change to setParser.

-- 
John Cowan	http://www.ccil.org/~cowan		cowan@ccil.org
	You tollerday donsk?  N.  You tolkatiff scowegian?  Nn.
	You spigotty anglease?  Nnn.  You phonio saxo?  Nnnn.
		Clear all so!  'Tis a Jute.... (Finnegans Wake 16.5)