[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: (also possibly naive) question regarding cst -> ast
On Mon, Dec 16, 2002 at 02:13:19PM -0500, Donald Ball wrote:
> First, thanks to everyone who responded to my previous question. Tagging
> the repeated elements with [name]:s worked perfectly. My grammar is now
> working as I expect and the world is a happy place. On to the next
> problem...
>
> I am now trying (I think) to turn the concrete syntax tree generated by my
> parser into an abstract syntax tree suitable for editing using a GUI tool.
> For instance, a subset of my grammar contains these productions:
>
> condition =
> {term} boolean_term |
> {or} condition or boolean_term;
>
> boolean_term =
> {factor} boolean_factor |
> {and} boolean_term and boolean_factor;
>
> which generates, among other things, nodes named AOrCondition,
> ATermCondition, AFactorBooleanTerm, and AAndBooleanTerm. My (pre-existing)
> abstract syntax tree simply contains a CompoundClause which represents both
> AND and OR clauses. I think that I need to write some sort of visitor that
> walks the CST (left-to-right, probably?) and builds an AST, turning
> AORCondition and AAndBooleanTerm nodes into ConditionClauses, while pretty
> much ignoring the ATermCondition and AFactorBooleanTerm nodes.
Yep, that would be the approach I would take. There are plans to have
automatic AST generation in SableCC 3.0
>
> Am I on the right track here? Is there a model out there from which I can
> steal code or design patterns? Any pseudocode anyone can suggest?
>
You can extend the parser class, so that the AST is built during parse
time, instead of after the CST has been constructed. There is an example
at
http://schema.cheque.uq.edu.au/~roger/software/snippets/sablecc/CustomParser.java
> Thanks in advance for any help.
Okay, bye.
Roger
>
> - donald
>