[antlr-interest] Jim Idle: C-Runtime and C++Builder, E2342 Type mismatch in parameter
Udo Weik
WeikEngOff at aol.com
Tue Oct 4 10:19:49 PDT 2011
Hello Jim,
thanks for your fast anser.
> It sounds more to me like there is something in the pre-processor that has
> redefined whatever should really be there. You should trace through the
> actual #defines to find out what.
And what "should really be there"? Can you give me an example of an correct
call (expanded) to ->push( ... )?
Many thanks and greetings
Udo
>> -----Original Message-----
>> From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
>> bounces at antlr.org] On Behalf Of Udo Weik
>> Sent: Tuesday, October 04, 2011 10:05 AM
>> To: Antlr-Interest Antlr.Org
>> Subject: Re: [antlr-interest] Jim Idle: C-Runtime and C++Builder, E2342
>> Type mismatch in parameter
>>
>> Hello Jim,
>>
>> I was able by using the prepocessor macro expansion to find at least
>> the location of the problem
>> FOLLOWPUSH(FOLLOW_subtype_indication_in_access_type_definition730)
>> which expands to
>> ctx->pParser->rec->state->following->push( ctx->pParser->rec->state-
>>> following,
>> ((void
>> *)(&(FOLLOW_subtype_indication_in_access_type_definition730))),
>> 99 ) ; The problem is the
>> value 99, which should be of type
>> void (ANTLR3_CDECL *freeptr)(void *)) according to
>> antlr3collections.h, line 211:
>> /*
>> ANTLR3_STACK_struct Struct Reference
>>
>> 00199 typedef struct ANTLR3_STACK_struct
>> 00200 {
>> 00203 pANTLR3_VECTOR vector;
>> 00204
>> 00207 void * top;
>> 00208 void (*free) (struct
>> ANTLR3_STACK_struct * stack);
>> 00209 void * (*pop) (struct
>> ANTLR3_STACK_struct * stack);
>> 00210 void * (*get) (struct
>> ANTLR3_STACK_struct * stack, ANTLR3_INTKEY key);
>> 00211 ANTLR3_BOOLEAN (*push) (struct ANTLR3_STACK_struct *
>> stack, void * element, void (ANTLR3_CDECL *freeptr)(void *));
>> 00212 ANTLR3_UINT32 (*size) (struct ANTLR3_STACK_struct *
>> stack);
>> 00213 void * (*peek) (struct
>> ANTLR3_STACK_struct * stack);
>> 00214
>> 00215 }
>> 00216 ANTLR3_STACK;
>> */
>>
>> Can you be so kind and explain me the purpose of 99 (and why is it just
>> an
>> int) and whether there is a more or less corresponding functionallity
>> for the ANTLR3_STACK_struct in ANTLR (Java sources).
>>
>> Many thanks and greetings
>> Udo
>>
>>
>>> I don't really know what you are trying to do or what compiler you
>> are
>>> using etc, but remember this is C code not C++ code so if you turn on
>>> all the warnings in the C++ compiler then you may get the odd
>> warning.
>>> But without seeing all the code, I can't guess where that warning is.
>>> It isn't the FOLLOWPUSH macro though. It looks more likely that you
>>> are not including the correct headers and so the prototype is
>> defaulting to int.
>>>
>>> As for tabs vs space... well it is generated code. You could always
>>> untab it using any one of a thousand tools, or modify the code
>>> generation template and remake ANTLR.
>>>
>>> I don't know anything about C__ builder, but it seems to be more of a
>>> hindrance than a help?
>>>
>>> Jim
>>>
>>>> -----Original Message-----
>>>> From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
>>>> bounces at antlr.org] On Behalf Of Udo Weik
>>>> Sent: Saturday, October 01, 2011 12:22 AM
>>>> To: Antlr-Interest Antlr.Org
>>>> Subject: [antlr-interest] Jim Idle: C-Runtime and C++Builder, E2342
>>>> Type mismatch in parameter
>>>>
>>>> Hello Jim,
>>>>
>>>> I'm getting some
>>>> E2342 Type mismatch in parameter 'freeptr' (wanted 'void
>> (*)(void
>>>> *)', got 'int') errors in code lines like
>>>>
>>>> FOLLOWPUSH(FOLLOW_subtype_indication_in_access_type_definition730)
>>>> ); Any hint?
>>>>
>>>>
>>>> And in the following functions an analog problem
>>>> E2342 Type mismatch in parameter 'state' (wanted
>>>> 'ANTLR3_RECOGNIZER_SHARED_STATE_struct *', got 'int')I I just
>>>> declared state and initialized it with NULL:
>>>>
>>>> ANTLR3_API pXYZLexer XYZLexerNew( pANTLR3_INPUT_STREAM instream ) {
>>>> pANTLR3_RECOGNIZER_SHARED_STATE state ; // UW
>>>> state = NULL ; // UW
>>>>
>>>> // See if we can create a new lexer with the standard
>> constructor
>>>> //
>>>> // UW return XYZLexerNewSSD(instream, NULL);
>>>> return XYZLexerNewSSD(instream, state); // UW }
>>>>
>>>> Same problem with
>>>> ANTLR3_API pXYZParser XYZParserNew( pANTLR3_COMMON_TOKEN_STREAM
>>>> instream ) {
>>>> pANTLR3_RECOGNIZER_SHARED_STATE state ; // UW
>>>> state = NULL ; // UW
>>>>
>>>> // See if we can create a new parser with the standard
>> constructor
>>>> //
>>>> // UW return XYZParserNewSSD(instream, NULL);
>>>> return XYZParserNewSSD(instream, state); // UW }
>>>>
>>>>
>>>> Is it in any way possible to avoid tabs in the generated code?
>>>> I would prefer two spaces for one tab.
>>>>
>>>>
>>>> Many thanks and greetings
>>>> Udo
>>>>
>>>> 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
>
> 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