[antlr-interest] @init actions in “C Target ” have problems with MSVS compilers

Gavin Lambert antlr at mirality.co.nz
Thu Mar 22 12:15:43 PDT 2007

At 01:34 23/03/2007, Alexander Stasenko wrote:
 >Consider the following rule with @init action:
 >		CharacterConstant @init {
 >				char c; int o;
 >		}
 >MSVS 2005 compiler can not compiler it since "char c; int o;"
 >declarations are placed after executable statements. This
 >restriction was relazed in C99 standart which is unfortunately
 >is not supported even in MSVS 2005 in its C-mode. Trying to
 >compile in C++ mode causes other problems in other places,
 >so usage of C++ mode is not a solution here.

I reported this one a couple of months back, but sadly it still 
doesn't seem to have been fixed.

I did work around it by compiling in C++ mode, though, although it 
required adding a lot of extern "C" blocks.  But really the 
codegen templates need to get fixed.  Or we need to get another 
code-insertion block that inserts at the top of the generated 
function instead of further down.

More information about the antlr-interest mailing list