[antlr-interest] help with a logical query-like expression grammar [2nd try, sorry]

John B. Brodie jbb at acm.org
Wed Mar 5 17:09:41 PST 2003


Content-Type: multipart/mixed;
 boundary="------------3430973B69AE2B0E3C9DC7B5"

This is a multi-part message in MIME format.
--------------3430973B69AE2B0E3C9DC7B5
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Mr. Hartman :-

You asked (in part):
>I don't need to evaluate these expressions but rather parse them into
>an object model I have.

Which I understand to mean that, for whatever reason, use of Antlr's
Abstract Syntax Tree (AST) data structure is not suitable to you.

Fine. Perfectly Reasonable. Antlr should be (and is) flexible enough
for you to utilize your own intermediate data structure for
representing the results of the Antlr parsing activity (but of course
you might have to do some extra work over the use of AST's).

I have attached a zip file containing a small example of parsing
expressions in the form you desire into my own intermediate data
structure. Note that I do not claim that this structure is the best
(or even good) - it is just an example that is meant to help you.

I think the key concept here is the ability for rules to return
values. In this example, these returned values represent partially
built expression sub-trees.  These are usually called, I believe,
Synthetic Attributes in the Compiler Literature.  Note that you may
also pass values into rules - Inherited Attributes - but my example
didn't need to do that.

Hope this helps ... feel free to use any or all of the attached code.

--
       -jbb
----------------+----------------------------
 John B. Brodie | Email : jbrodie at cs.fit.edu
----------------+----------------------------


--------------3430973B69AE2B0E3C9DC7B5
Content-Type: application/zip;
 name="expr.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="expr.zip"

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
--------------3430973B69AE2B0E3C9DC7B5--


 

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



More information about the antlr-interest mailing list