[antlr-interest] Jim Idle: C-Runtime and C++Builder, E2342 Type mismatch in parameter

Jim Idle jimi at temporal-wave.com
Tue Oct 4 10:41:27 PDT 2011


Find the #define of the macro in your source code, see if there is
anything else in there that is further expanded, such say NULL or free
etc.


Jim

> -----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:20 AM
> To: Antlr-Interest Antlr.Org
> Subject: Re: [antlr-interest] Jim Idle: C-Runtime and C++Builder, E2342
> Type mismatch in parameter
>
> 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
>
>
> 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