[antlr-interest] [C target] Warnings in 64-bit compile

Justin Murray jmurray at aerotech.com
Fri Jun 24 08:11:51 PDT 2011


Jim,

I just wanted to see if this was on your radar for the 3.4 C runtime update. I haven't been able to test it with beta3 because I hit some earlier roadblocks.

Thanks,

-- Justin



	Ah it is probably because the backtrack and memorize option. I strongly
	
	advise that you don't use these but left factor your grammar. However, I
	
	will fix it of course.
	
	
	
	

	Jim
	
	
	
	

	-----Original Message-----
	
	From: Justin Murray [mailto:jmur... at aerotech.com]
	
	Sent: Tuesday, December 28, 2010 1:39 PM
	
	To: Jim Idle; antl... at antlr.org
	
	Subject: RE: [antlr-interest] [C target] Warnings in 64-bit compile
	
	
	
	

	I believe that it is caused by using the memorize=true; option and
	
	building 64-bit. The following grammar has these warnings in the
	
	generated TestParser.c (compiled as C++ code in Visual Studio 2008).
	
	You will find the offending line at the beginning of the generated
	
	prog() function.
	
	
	
	

	-----------------------------
	
	grammar Test;
	
	
	
	

	options
	
	{
	
	language=C;
	
	backtrack=true;
	
	memoize=true;
	
	}
	
	
	
	

	prog
	
	: SOMETHING+;
	
	
	
	

	SOMETHING
	
	: 'A'..'Z';
	
	

	------------------------------
	
	
	
	

	Thanks,
	
	
	
	

	Justin
	
	
	
	

	-----Original Message-----
	
	From: antl... at antlr.org
	
	[mailto:antl... at antlr.org] On Behalf Of Jim Idle
	
	Sent: Tuesday, December 28, 2010 3:04 PM
	
	To: antl... at antlr.org
	
	Subject: Re: [antlr-interest] [C target] Warnings in 64-bit compile
	
	
	
	

	There were some such warnings a number of versions back but they are
	
	all fixed as far as I know. What construct are you using that results
	
	in the warning? If you give me a reproducible grammar snippet, then I
	
	will fix it for the next release, which is just waiting on my other
	
	commitments right now.
	
	
	
	

	Jim
	
	
	
	

	-----Original Message-----
	
	From: antl... at antlr.org [mailto:antlr-interest-
	
	boun... at antlr.org] On Behalf Of Justin Murray
	
	Sent: Tuesday, December 28, 2010 11:59 AM
	
	To: antl... at antlr.org
	
	Subject: [antlr-interest] [C target] Warnings in 64-bit compile
	
	
	
	

	Jim,
	
	
	
	

	I am working on making our compiler support 64-bit builds, and have
	
	run
	
	into a number of compiler warnings due to conflicting types in the
	
	ANTLR generated C code:
	
	
	
	

	warning C4244: '=' : conversion from 'ANTLR3_MARKER' to
	
	'ANTLR3_UINT32', possible loss of data
	
	
	
	

	This comes from the line:
	
	
	
	

	axisMask_StartIndex = INDEX();
	
	
	
	

	axisMask_StartIndex is declared as type ANTLR3_UINT32, and INDEX() is
	
	returning type ANTLR3_MARKER. On a 64-bit build (on a Windows
	
	machine),
	
	ANTLR3_UINT32 is a typedef of uint32_t, and ANTLR3_MARKER is of type
	
	ANTLR3_INT64 which is a typedef of int64_t. It seems to me that this
	
	is
	
	a bug in the template, and that axisMask_StartIndex should have been
	
	declared as type ANTLR3_MARKER.
	
	
	
	

	My questions are, do you know of a quick workaround for this for now?
	
	Do you know if this will be fixed in the next release of the C target
	
	runtime? Also, is there a tenative release date for the C runtime
	
	that
	
	will officially support ANTLR 3.3 (it seems that the code generated
	
	by
	
	ANTLR 3.3 works ok with the 3.2 C runtime)?
	
	
	
	

	Thanks,
	
	
	
	

	Justin Murray
	
	Software Engineer
	
	jmur... at aerotech.com
	
	
	
	

	Aerotech, Inc.
	
	101 Zeta Drive
	
	Pittsburgh, PA 15238
	
	412-963-7470
	
	
	
	

	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
	
	

	
	
	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