[mapserver-dev] RFC 59 Logical Expression Overhaul (preliminary draft)

Lime, Steve D (DNR) Steve.Lime at state.mn.us
Sun Aug 8 09:26:07 EDT 2010

Yes, I saw the OGR RFC thread, it prompted me to get off my butt...

Can you provide some hints on 1? I'm not sure where to start. If there's a structure even closer
to what is ultimately evaluated I'm all for it. 

Idea 2 is also a good idea, I'll have a look when I'm back from a short holiday.


From: mapserver-dev-bounces at lists.osgeo.org [mapserver-dev-bounces at lists.osgeo.org] On Behalf Of Frank Warmerdam [warmerdam at pobox.com]
Sent: Saturday, August 07, 2010 8:47 AM
To: Lime, Steve D (DNR)
Cc: mapserver-dev at lists.osgeo.org
Subject: Re: [mapserver-dev] RFC 59 Logical Expression Overhaul (preliminary    draft)

On Fri, Aug 6, 2010 at 1:41 PM, Lime, Steve D (DNR)
<Steve.Lime at state.mn.us> wrote:
> Hi all: I figure it's time to formally surface some work I've been doing relative to improving the function and extending the
> use of the MapServer Bison/Yacc parser. For now I drafted the RFC on the wiki and will move to the dev. portion of the
> website if necessary. I think this adds some pretty interesting functionality. Anyway, it's at:
>  http://trac.osgeo.org/mapserver/wiki/RFC59-Draft


This looks like a promising step.  Coincidentally, this is at the
same time that I wrote an SQL parser using yacc/bison for OGR.

A few thoughts.

1) Why not parse the expression once into an expression tree
data structure and then just evaluate that each time instead of
also having to run the parser each time?   I'm not sure what the
speed advantage of this would be over doing the evaluation of
the expression as part of parsing, but it *seems* like a more
conventional approach.

2) You mention the use of globals to pass in stuff to the parser.
I was able to use the parse-param and lex-param directives to
Bison to have a 'context' data structure in to the parser and on
to the lexer.  You can skim the .y file I came up with at:


This was also a fully reentrant parsers so different threads could
be parsing at the same time without serialization.  I'd be happy to
help if you would like to investigate.

I certainly agree that the old substitute and re-parse
approach was a performance issue, so I'm pleased to
see the direction you are moving.

Best regards,
I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | Geospatial Programmer for Rent
mapserver-dev mailing list
mapserver-dev at lists.osgeo.org

More information about the mapserver-dev mailing list