[antlr-interest] Parsing any tree using tree grammer?

Kamal Verma kverma at yahoo.com
Fri Jul 13 08:36:40 PDT 2007

Thanks for the reply Antlr.Runtime.Tree.ITree is what I meant. Interface is as follows,

public interface ITree
        int CharPositionInLine { get; }
        int ChildCount { get; }
        bool IsNil { get; }
        int Line { get; }
        string Text { get; }
        int TokenStartIndex { get; set; }
        int TokenStopIndex { get; set; }
        int Type { get; }

        void AddChild(ITree t);
        ITree DupNode();
        ITree DupTree();
        ITree GetChild(int i);
        string ToString();
        string ToStringTree();

For read only purposes I think we'll need only few items (IsNil, ChildCount, GetChild are things that convert tree into tree stream). I was wondering if we can a cleaner and smaller read-only interface that excludes various things that meant to mutate the node. TreeAdaptor is even bigger interface;

public interface ITreeAdaptor
        void AddChild(object t, object child);
        object BecomeRoot(IToken newRoot, object oldRoot);
        object BecomeRoot(object newRoot, object oldRoot);
        object Create(IToken payload);
        object Create(int tokenType, IToken fromToken);
        object Create(int tokenType, string text);
        object Create(int tokenType, IToken fromToken, string text);
        object DupNode(object treeNode);
        object DupTree(object tree);
        object GetChild(object t, int i);
        int GetChildCount(object t);
        object GetNilNode();
        string GetNodeText(object t);
        int GetNodeType(object t);
        IToken GetToken(object treeNode);
        int GetTokenStartIndex(object t);
        int GetTokenStopIndex(object t);
        int GetUniqueID(object node);
        bool IsNil(object tree);
        object RulePostProcessing(object root);
        void SetNodeText(object t, string text);
        void SetNodeType(object t, int type);
        void SetTokenBoundaries(object t, IToken startToken, IToken stopToken);

Technically, either of them can help achieve the tree grammar parsing; I was wondering if we can little more light weight interfaces to work with. Or these can be refactored to simpler ones; I think this is more for the architect of antlr framework to decide.

Meanwhile I will look into implementation of above and use those with tree grammar.


----- Original Message ----
From: Randall R Schulz <rschulz at sonic.net>
To: antlr-interest at antlr.org
Sent: Friday, July 13, 2007 11:20:39 AM
Subject: Re: [antlr-interest] Parsing any tree using tree grammer?

On Friday 13 July 2007 07:23, Kamal Verma wrote:
> Hi All,
> Does anybody have thoughts parsing any tree of type "ITree" using
> tree grammar. Can this be done ? I looked at ITree interface,

What is ITree? org.antlr.Tree is the interface that must be implemented 
if a tree is to be parseable in an ANTLR tree parser, right?

> I was wondering is there any more simpler interface I can use to
> create parseable tree??

Well, Tree is not really an exceptionally complex interface to 
implement. If you already have a class or classes that are essentially 
tree-structureed, then you should write an adaptor class that makes 
that tree structure appear to the ANTLR tree parser like its Tree 

I don't think there's a way to short-cut that task.

> Something like,
> interface ITree
> {
>       int ChildCount;
>      ITree getChild(int i);
> }
> Any thoughts ? comments ?
> -Kamal

Randall Schulz

Be a better Heartthrob. Get better relationship answers from someone who knows. Yahoo! Answers - Check it out. 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20070713/ff667624/attachment.html 

More information about the antlr-interest mailing list