[antlr-interest] Re: Anyone tried this ANTLR-inspired CC?

Dave Makalsky dm at cs.yorku.ca
Tue Nov 11 11:15:54 PST 2003


One interesting approach (done by SableCC) is to automatically generate 
a CST and allow for easy CST -> AST transformation.

brian-l-smith at uiowa.edu wrote:

>Quoting "Tiller, Michael (M.M.)" <mtiller at ford.com>:
>  
>
>>>From: Terence Parr [mailto:parrt at cs.usfca.edu]
>>>On Sunday, November 9, 2003, at 05:37 PM, leung13512c wrote:
>>>
>>>      
>>>
>>>>The thing that caused me to switch away from ANTLR syntax
>>>>is because I prefer the tree building syntax of JJTree that always
>>>>create imaginary nodes instead of a mix of both.  And it mostly
>>>>avoid having to create nodes within actions.
>>>>        
>>>>
>>>Howdy.  This is the old AST versus parse tree argument...Parse trees 
>>>are easy to generate (i.e., no cost to developer) but have 
>>>way too much noise for tree transformation and also are sensitive
>>>to grammar construction whereas ASTs are the canonical repr for
>>>a particular language.
>>>
>>>Ter
>>>      
>>>
>>Personally, there are two extremes I would like to avoid.  One is using
>>terminals as roots in ASTs.  I don't really care for this approach because I
>>find it rather strange (just my personal preference).  The other case I
>>wouldn't like is having every production rule in my grammar generate a node
>>in my AST.  As far as I'm concerned, these are both sub-optimal.
>>    
>>
>
>I agree with Mike. I never use ANTLR's AST features because they aren't really
>for *abstract* syntax trees--they are really a kind of *concrete* syntax tree
>(similarly, parse trees ala JJTree are *concrete* syntax trees). This is easy to
>see because the resultant tree is built using elements of the concrete syntax
>grammar. An *abstract* syntax tree is independent of the concrete syntax of the
>language. In fact, usually I create a syntax-independent domain model of the
>language (e.g. with classes representing all the major concepts of the
>language), and then create an ANTLR grammar that can parse a syntax that allows
>one to express these abstract concepts textually. If you develop a language this
>way then the ANTLR "AST" mechanism is basically useless. But, IMO, this is the
>most sensible way to develop a language tool, because once you have the domain
>model built you can have one team work on the concrete syntax (text -> AST) part
>of the project while concurrently another team is working on the semantics (e.g.
>AST evaluation, translation). 
>
>Terence made the point that ANTLR's "AST's" are better than JJTree-style parse
>trees because the resultant trees are less sensitive to changes in the grammar
>used for parsing. But, changes in the concrete syntax of the language, and/or
>changes in the grammar used to parse it, still can easily reshape the resultant
>"AST" unless one is very careful. But, the AST-first approach completely
>isolates all grammar/syntax changes from other parts of the project.
>
>So, I guess what I would like to see is a mechanism for specifying a
>syntax-independent ("abstract") domain model of a language, a mechanism for
>specifying how to parse concrete textual representations of the language
>(grammars), and a mechanism for translating between textual representations and
>the abstract domain models (either one-way text -> AST, or bidirectional text
><--> AST).
>
>Regards,
>Brian
>
>
>
>
>
>
>
>
>
> 
>
>Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 
>
>  
>


 

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




More information about the antlr-interest mailing list