[antlr-interest] antlr 3.1 ast rewriting

Johannes Luber jaluber at gmx.de
Thu Mar 12 12:03:14 PDT 2009


Floris van Nee schrieb:
> Hi Johannes,
> 
> I've attached the lexer/parser file. If you generate that first and then
> generate the tree grammar, you'll get the error when compiling the
> generated code.
> 
> Floris

Thanks! I've found the cause and fixed it. ANTLR 3.1.3 is due for Friday
or you can download the latest Hudson build (assuming the build has
finished already).

Johannes
> 
> On Thu, Mar 12, 2009 at 8:16 AM, Johannes Luber <jaluber at gmx.de
> <mailto:jaluber at gmx.de>> wrote:
> 
>     Floris van Nee schrieb:
>     > Hello!
>     >
>     > I've got a question about rewriting an AST in a tree grammar, with
>     C# as
>     > target language. The code Antlr generates just won't compile when
>     I set
>     > the 'output=AST' in my tree grammar options.
>     > It complains about lines like this:
>     >
>     > if ( _first_1==null ) _first_1 = qual.Tree;
>     >
>     > Error    2    Cannot implicitly convert type 'object' to
>     > 'Antlr.Runtime.Tree.CommonTree'. An explicit conversion exists
>     (are you
>     > missing a cast?)    C:\Users\floris\Documents\Visual Studio
>     > 2008\Projects\Vnvd\Vnvd\vNVDCheckerPassTwo.cs    315    58    Vnvd
>     >
>     > Here _first_1 is of type CommonTree, and qual.Tree of type object. It
>     > needs an explicit cast there, but when Antlr generates the code, it
>     > doesn't add one. Is this something I did wrong in my grammar file,
>     or is
>     > this a bug?
>     > I am using the latest version of Antlr (3.1.2).
>     >
>     > Thanks in advance,
>     > Floris
> 
>     I need a full working grammar, which includes at least the .tokens-file.
>     I haven't tested yet, if that is enough or if I do need also the parser
>     and lexer. Full working means that I can generate the grammar on my
>     system so I can look up where I seemingly missed the conversion.
> 
>     Johannes
>     >
>     > Here are the contents of my (simplified) grammar file:
>     >
>     > tree grammar vNVDCheckerPassTwo;
>     >
>     > options
>     > {
>     >     ASTLabelType = CommonTree;
>     >     tokenVocab = vNVD;
>     >     language = CSharp2;
>     >     rewrite = true;
>     >     output = AST;
>     > }
>     >
>     > program
>     >     :    ^(node=PROGRAM import_stat* namespace_decl*)
>     >     ;
>     >
>     > import_stat
>     >     :    ^(node=USING qual=qualifier)
>     >     ;
>     >
>     > namespace_decl
>     >     :    ^(node=NAMESPACE qual=qualifier (namespace_decl)*)
>     >     ;
>     >
>     > qualifier
>     >     :    ^(fqual=FQUALIFIER IDENTIFIER+)
>     >     ;
>     >
>     >
>     >
>     >
>     ------------------------------------------------------------------------
>     >
>     >
>     > List: http://www.antlr.org/mailman/listinfo/antlr-interest
>     > Unsubscribe:
>     http://www.antlr.org/mailman/options/antlr-interest/your-email-address
> 
> 



More information about the antlr-interest mailing list