[antlr-interest] C runtime, VS2005 barfs at generated Initializers for double!!

Jim Idle jimi at temporal-wave.com
Thu Nov 13 16:02:47 PST 2008


On Thu, 2008-11-13 at 15:28 -0800, Jim Idle wrote:
> On Wed, 2008-11-12 at 19:57 -0800, Vamsi Juvvi wrote:
> > Hi list/the-not-so-idle-idle:
> > 

Just a thought here though - have you done something like turn off
extensions in your project? I don't have VS2005 loaded anymore so can't
try this easilly.

Jim

> >    While preparing a small antlr presentation for my colleagues I
> > managed to generate code that VS 2005 simply refuses to compile.
> > 
> >    in my tree parser for a simple calculator example. I have
> > 
> > atom returns [double val]
> >     : (
> >             a=DECIMAL_LITERAL        
> >         | a=HEX_LITERAL
> >         | a=OCTAL_LITERAL
> >        )
> >        { val = parseInt($a.text);}
> >        
> >     | a=FLOATING_POINT_LITERAL 
> >       {val = parseDouble($a.text);}
> >     ;
> > 
> > The generated code for the atom method does this to initialize val
> > 
> > double val = 0.0D;
> > 
> > It does not compile unless I remove the D suffix on the 0.0. 0.0D is
> > not a legal double literal for Visual studio C/C++. 
> 
> Works fine with VS2008. Perhaps your best bet is to compile with
> the .Net C compiler.
> 
> > Is there any way I can turn this automatic initialization off ? Or is
> > this a bug that'll need to be fixed in the C templates ? I can
> > workaround this using a struct to wrap my double but that would be
> > perverse.
> 
> It is auto-intialized in the templates. However, I suspect that I
> probably changed it to use D for C++ or some other compiler. I will have
> to retest it all to change that.
> 
> Jim
> 
> > 
> > thanks much for reading.
> > 
> > -vamsi
> > 
> > -- 
> > Between impulse and reaction lies man's greatest strength: The freedom
> > to create a choice, to create his universe, to choose - Victor Frankl
> > (adapted)
> > List: http://www.antlr.org/mailman/listinfo/antlr-interest
> > Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address
> > 
> 
> 
> 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