
/*************************************************************************/
/*                                                                       */
/*        Produced by MetaGen version 2.0  -    1989-1995                 */
/*       Syntaxic Analyzer Meta Generator developped by                  */
/*                  Eric Lavillonniere                                   */
/*                                                                       */
/*************************************************************************/

#include "token.h"
#include "cplus.h"


#line 1991 "cplus.met"
PPTREE cplus::abstract_declarator ( int error_free)
#line 1991 "cplus.met"
{
#line 1991 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1991 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1991 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1991 "cplus.met"
    int _Debug = TRACE_RULE("abstract_declarator",TRACE_ENTER,(PPTREE)0);
#line 1991 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1991 "cplus.met"
#line 1991 "cplus.met"
    PPTREE valTree = (PPTREE) 0,retTree = (PPTREE) 0;
#line 1991 "cplus.met"
#line 1993 "cplus.met"
    if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(range_modifier), 98, cplus)){
#line 1993 "cplus.met"
#line 1994 "cplus.met"
        {
#line 1994 "cplus.met"
            PPTREE _ptTree0;
#line 1994 "cplus.met"
            {
#line 1994 "cplus.met"
                PPTREE _ptTree1;
#line 1994 "cplus.met"
                if ( (_ptTree1=NQUICK_CALL(_Tak(abstract_declarator)(error_free), 1, cplus))== (PPTREE) -1 ) {
#line 1994 "cplus.met"
                    PROG_EXIT(abstract_declarator_exit,"abstract_declarator")
#line 1994 "cplus.met"
                }
#line 1994 "cplus.met"
                _ptTree0=ReplaceTree(valTree , 2 , _ptTree1);
#line 1994 "cplus.met"
            }
#line 1994 "cplus.met"
            _retValue =_ptTree0;
#line 1994 "cplus.met"
            goto abstract_declarator_ret;
#line 1994 "cplus.met"
        }
#line 1994 "cplus.met"
    }
#line 1994 "cplus.met"
#line 1995 "cplus.met"
    retTree = (PPTREE) 0;
#line 1995 "cplus.met"
#line 1996 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1996 "cplus.met"
    switch( lexEl.Value) {
#line 1996 "cplus.met"
#line 1997 "cplus.met"
        case ETOI : 
#line 1997 "cplus.met"
            tokenAhead = 0 ;
#line 1997 "cplus.met"
            CommTerm();
#line 1997 "cplus.met"
#line 1997 "cplus.met"
            {
#line 1997 "cplus.met"
                PPTREE _ptTree0;
#line 1997 "cplus.met"
                {
#line 1997 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1997 "cplus.met"
                    _ptRes1= MakeTree(TYP_ADDR, 1);
#line 1997 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(abstract_declarator)(error_free), 1, cplus))== (PPTREE) -1 ) {
#line 1997 "cplus.met"
                        PROG_EXIT(abstract_declarator_exit,"abstract_declarator")
#line 1997 "cplus.met"
                    }
#line 1997 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1997 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1997 "cplus.met"
                }
#line 1997 "cplus.met"
                _retValue =_ptTree0;
#line 1997 "cplus.met"
                goto abstract_declarator_ret;
#line 1997 "cplus.met"
            }
#line 1997 "cplus.met"
            break;
#line 1997 "cplus.met"
#line 1998 "cplus.met"
        case ETCO : 
#line 1998 "cplus.met"
            tokenAhead = 0 ;
#line 1998 "cplus.met"
            CommTerm();
#line 1998 "cplus.met"
#line 1998 "cplus.met"
            {
#line 1998 "cplus.met"
                PPTREE _ptTree0;
#line 1998 "cplus.met"
                {
#line 1998 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1998 "cplus.met"
                    _ptRes1= MakeTree(TYP_REF, 1);
#line 1998 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(abstract_declarator)(error_free), 1, cplus))== (PPTREE) -1 ) {
#line 1998 "cplus.met"
                        PROG_EXIT(abstract_declarator_exit,"abstract_declarator")
#line 1998 "cplus.met"
                    }
#line 1998 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1998 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1998 "cplus.met"
                }
#line 1998 "cplus.met"
                _retValue =_ptTree0;
#line 1998 "cplus.met"
                goto abstract_declarator_ret;
#line 1998 "cplus.met"
            }
#line 1998 "cplus.met"
            break;
#line 1998 "cplus.met"
#line 1999 "cplus.met"
        case TILD : 
#line 1999 "cplus.met"
            tokenAhead = 0 ;
#line 1999 "cplus.met"
            CommTerm();
#line 1999 "cplus.met"
#line 1999 "cplus.met"
            {
#line 1999 "cplus.met"
                PPTREE _ptTree0;
#line 1999 "cplus.met"
                {
#line 1999 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1999 "cplus.met"
                    _ptRes1= MakeTree(DESTRUCT, 1);
#line 1999 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(abstract_declarator)(error_free), 1, cplus))== (PPTREE) -1 ) {
#line 1999 "cplus.met"
                        PROG_EXIT(abstract_declarator_exit,"abstract_declarator")
#line 1999 "cplus.met"
                    }
#line 1999 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1999 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1999 "cplus.met"
                }
#line 1999 "cplus.met"
                _retValue =_ptTree0;
#line 1999 "cplus.met"
                goto abstract_declarator_ret;
#line 1999 "cplus.met"
            }
#line 1999 "cplus.met"
            break;
#line 1999 "cplus.met"
#line 2003 "cplus.met"
        case POUV : 
#line 2003 "cplus.met"
            tokenAhead = 0 ;
#line 2003 "cplus.met"
            CommTerm();
#line 2003 "cplus.met"
#line 2001 "cplus.met"
#line 2002 "cplus.met"
            if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( PFER,")")){
#line 2002 "cplus.met"
#line 2003 "cplus.met"
                LEX_EXIT ("",0);
#line 2003 "cplus.met"
                goto abstract_declarator_exit;
#line 2003 "cplus.met"
#line 2003 "cplus.met"
            }
#line 2003 "cplus.met"
#line 2004 "cplus.met"
            {
#line 2004 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2004 "cplus.met"
                _ptRes0= MakeTree(TYP, 1);
#line 2004 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(abstract_declarator)(error_free), 1, cplus))== (PPTREE) -1 ) {
#line 2004 "cplus.met"
                    PROG_EXIT(abstract_declarator_exit,"abstract_declarator")
#line 2004 "cplus.met"
                }
#line 2004 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2004 "cplus.met"
                retTree=_ptRes0;
#line 2004 "cplus.met"
            }
#line 2004 "cplus.met"
#line 2005 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2005 "cplus.met"
            if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 2005 "cplus.met"
                TOKEN_EXIT(abstract_declarator_exit,")")
#line 2005 "cplus.met"
#line 2006 "cplus.met"
            if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(declarator_follow), 35, cplus)){
#line 2006 "cplus.met"
#line 2007 "cplus.met"
                    { PPTREE theTree ;
#line 2007 "cplus.met"
                                           theTree = valTree ;
#line 2007 "cplus.met"
                                           if (theTree) {
#line 2007 "cplus.met"
                                               while (SonTree(theTree,1))
#line 2007 "cplus.met"
                                                   if (NumberTree(theTree)
#line 2007 "cplus.met"
                                                           != RANGE_MODIFIER)
#line 2007 "cplus.met"
                                                       theTree = SonTree(theTree,1);
#line 2007 "cplus.met"
                                                   else
#line 2007 "cplus.met"
                                                       theTree = SonTree(theTree,2);
#line 2007 "cplus.met"
                                               ReplaceTree(theTree,1,retTree);
#line 2007 "cplus.met"
                                               /* modif portage sun */
#line 2007 "cplus.met"
                                               retTree = valTree;
#line 2007 "cplus.met"
                                           }
#line 2007 "cplus.met"
                                       }
#line 2007 "cplus.met"
                  
#line 2007 "cplus.met"
            }
#line 2007 "cplus.met"
            break;
#line 2007 "cplus.met"
#line 2024 "cplus.met"
        case META : 
#line 2024 "cplus.met"
        case IDENT : 
#line 2024 "cplus.met"
#line 2025 "cplus.met"
#line 2026 "cplus.met"
            if ( (valTree=NQUICK_CALL(_Tak(member_declarator)(error_free), 74, cplus))== (PPTREE) -1 ) {
#line 2026 "cplus.met"
                PROG_EXIT(abstract_declarator_exit,"abstract_declarator")
#line 2026 "cplus.met"
            }
#line 2026 "cplus.met"
#line 2027 "cplus.met"
            {
#line 2027 "cplus.met"
                PPTREE _ptTree0;
#line 2027 "cplus.met"
                {
#line 2027 "cplus.met"
                    PPTREE _ptTree1;
#line 2027 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(abstract_declarator)(error_free), 1, cplus))== (PPTREE) -1 ) {
#line 2027 "cplus.met"
                        PROG_EXIT(abstract_declarator_exit,"abstract_declarator")
#line 2027 "cplus.met"
                    }
#line 2027 "cplus.met"
                    _ptTree0=ReplaceTree(valTree , 2 , _ptTree1);
#line 2027 "cplus.met"
                }
#line 2027 "cplus.met"
                _retValue =_ptTree0;
#line 2027 "cplus.met"
                goto abstract_declarator_ret;
#line 2027 "cplus.met"
            }
#line 2027 "cplus.met"
            break;
#line 2027 "cplus.met"
#line 2033 "cplus.met"
        default : 
#line 2033 "cplus.met"
#line 2032 "cplus.met"
            if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(declarator_follow), 35, cplus)){
#line 2032 "cplus.met"
#line 2034 "cplus.met"
                retTree = valTree ;
#line 2034 "cplus.met"
#line 2034 "cplus.met"
            }
#line 2034 "cplus.met"
            break;
#line 2034 "cplus.met"
    }
#line 2034 "cplus.met"
#line 2036 "cplus.met"
    {
#line 2036 "cplus.met"
        _retValue = retTree ;
#line 2036 "cplus.met"
        goto abstract_declarator_ret;
#line 2036 "cplus.met"
        
#line 2036 "cplus.met"
    }
#line 2036 "cplus.met"
#line 2037 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2037 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2037 "cplus.met"
return((PPTREE) 0);
#line 2037 "cplus.met"

#line 2037 "cplus.met"
abstract_declarator_exit :
#line 2037 "cplus.met"

#line 2037 "cplus.met"
    {
#line 2037 "cplus.met"
        MulFreeTree(2,retTree,valTree);
#line 2037 "cplus.met"
    }
#line 2037 "cplus.met"
    _Debug = TRACE_RULE("abstract_declarator",TRACE_EXIT,(PPTREE)0);
#line 2037 "cplus.met"
    _funcLevel--;
#line 2037 "cplus.met"
    return((PPTREE) -1) ;
#line 2037 "cplus.met"

#line 2037 "cplus.met"
abstract_declarator_ret :
#line 2037 "cplus.met"
    
#line 2037 "cplus.met"
    _Debug = TRACE_RULE("abstract_declarator",TRACE_RETURN,_retValue);
#line 2037 "cplus.met"
    (tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2037 "cplus.met"
    if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,_retValue,lastTree); else {_lastTree=_retValue;_funcLevel--;}
#line 2037 "cplus.met"
    return _retValue ;
#line 2037 "cplus.met"
}
#line 2037 "cplus.met"

#line 2037 "cplus.met"
#line 2291 "cplus.met"
PPTREE cplus::additive_expression ( int error_free)
#line 2291 "cplus.met"
{
#line 2291 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2291 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2291 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2291 "cplus.met"
    int _Debug = TRACE_RULE("additive_expression",TRACE_ENTER,(PPTREE)0);
#line 2291 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2291 "cplus.met"
#line 2291 "cplus.met"
    PPTREE expTree = (PPTREE) 0;
#line 2291 "cplus.met"
#line 2293 "cplus.met"
    if ( (expTree=NQUICK_CALL(_Tak(multiplicative_expression)(error_free), 76, cplus))== (PPTREE) -1 ) {
#line 2293 "cplus.met"
        PROG_EXIT(additive_expression_exit,"additive_expression")
#line 2293 "cplus.met"
    }
#line 2293 "cplus.met"
#line 2294 "cplus.met"
    while (((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( PLUS,"+")) || 
#line 2294 "cplus.met"
          ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( TIRE,"-"))) { 
#line 2294 "cplus.met"
#line 2295 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2295 "cplus.met"
        switch( lexEl.Value) {
#line 2295 "cplus.met"
#line 2296 "cplus.met"
            case PLUS : 
#line 2296 "cplus.met"
                tokenAhead = 0 ;
#line 2296 "cplus.met"
                CommTerm();
#line 2296 "cplus.met"
#line 2296 "cplus.met"
                {
#line 2296 "cplus.met"
                    PPTREE _ptTree0,_ptRes0;
#line 2296 "cplus.met"
                    _ptRes0= MakeTree(PLUS, 2);
#line 2296 "cplus.met"
                    ReplaceTree(_ptRes0, 1, expTree );
#line 2296 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(multiplicative_expression)(error_free), 76, cplus))== (PPTREE) -1 ) {
#line 2296 "cplus.met"
                        PROG_EXIT(additive_expression_exit,"additive_expression")
#line 2296 "cplus.met"
                    }
#line 2296 "cplus.met"
                    ReplaceTree(_ptRes0, 2, _ptTree0);
#line 2296 "cplus.met"
                    expTree=_ptRes0;
#line 2296 "cplus.met"
                }
#line 2296 "cplus.met"
                break;
#line 2296 "cplus.met"
#line 2298 "cplus.met"
            case TIRE : 
#line 2298 "cplus.met"
                tokenAhead = 0 ;
#line 2298 "cplus.met"
                CommTerm();
#line 2298 "cplus.met"
#line 2298 "cplus.met"
                {
#line 2298 "cplus.met"
                    PPTREE _ptTree0,_ptRes0;
#line 2298 "cplus.met"
                    _ptRes0= MakeTree(MINUS, 2);
#line 2298 "cplus.met"
                    ReplaceTree(_ptRes0, 1, expTree );
#line 2298 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(multiplicative_expression)(error_free), 76, cplus))== (PPTREE) -1 ) {
#line 2298 "cplus.met"
                        PROG_EXIT(additive_expression_exit,"additive_expression")
#line 2298 "cplus.met"
                    }
#line 2298 "cplus.met"
                    ReplaceTree(_ptRes0, 2, _ptTree0);
#line 2298 "cplus.met"
                    expTree=_ptRes0;
#line 2298 "cplus.met"
                }
#line 2298 "cplus.met"
                break;
#line 2298 "cplus.met"
            default :
#line 2298 "cplus.met"
                CASE_EXIT(additive_expression_exit,"either + or -")
#line 2298 "cplus.met"
                break;
#line 2298 "cplus.met"
        }
#line 2298 "cplus.met"
    } 
#line 2298 "cplus.met"
#line 2301 "cplus.met"
    {
#line 2301 "cplus.met"
        _retValue = expTree ;
#line 2301 "cplus.met"
        goto additive_expression_ret;
#line 2301 "cplus.met"
        
#line 2301 "cplus.met"
    }
#line 2301 "cplus.met"
#line 2302 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2302 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2302 "cplus.met"
return((PPTREE) 0);
#line 2302 "cplus.met"

#line 2302 "cplus.met"
additive_expression_exit :
#line 2302 "cplus.met"

#line 2302 "cplus.met"
    {
#line 2302 "cplus.met"
        MulFreeTree(1,expTree);
#line 2302 "cplus.met"
    }
#line 2302 "cplus.met"
    _Debug = TRACE_RULE("additive_expression",TRACE_EXIT,(PPTREE)0);
#line 2302 "cplus.met"
    _funcLevel--;
#line 2302 "cplus.met"
    return((PPTREE) -1) ;
#line 2302 "cplus.met"

#line 2302 "cplus.met"
additive_expression_ret :
#line 2302 "cplus.met"
    
#line 2302 "cplus.met"
    _Debug = TRACE_RULE("additive_expression",TRACE_RETURN,_retValue);
#line 2302 "cplus.met"
    (tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2302 "cplus.met"
    if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,_retValue,lastTree); else {_lastTree=_retValue;_funcLevel--;}
#line 2302 "cplus.met"
    return _retValue ;
#line 2302 "cplus.met"
}
#line 2302 "cplus.met"

#line 2302 "cplus.met"
#line 2392 "cplus.met"
PPTREE cplus::alloc_expression ( int error_free)
#line 2392 "cplus.met"
{
#line 2392 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2392 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2392 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2392 "cplus.met"
    int _Debug = TRACE_RULE("alloc_expression",TRACE_ENTER,(PPTREE)0);
#line 2392 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2392 "cplus.met"
#line 2392 "cplus.met"
    PPTREE retTree = (PPTREE) 0,valTree = (PPTREE) 0;
#line 2392 "cplus.met"
#line 2394 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(DPOIDPOI,"::") && (tokenAhead = 0,CommTerm(),1)){
#line 2394 "cplus.met"
#line 2395 "cplus.met"
#line 2396 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2396 "cplus.met"
        switch( lexEl.Value) {
#line 2396 "cplus.met"
#line 2397 "cplus.met"
            case NEW : 
#line 2397 "cplus.met"
#line 2397 "cplus.met"
                if ( (valTree=NQUICK_CALL(_Tak(allocation_expression)(error_free), 4, cplus))== (PPTREE) -1 ) {
#line 2397 "cplus.met"
                    PROG_EXIT(alloc_expression_exit,"alloc_expression")
#line 2397 "cplus.met"
                }
#line 2397 "cplus.met"
                break;
#line 2397 "cplus.met"
#line 2398 "cplus.met"
            case DELETE : 
#line 2398 "cplus.met"
#line 2398 "cplus.met"
                if ( (valTree=NQUICK_CALL(_Tak(deallocation_expression)(error_free), 33, cplus))== (PPTREE) -1 ) {
#line 2398 "cplus.met"
                    PROG_EXIT(alloc_expression_exit,"alloc_expression")
#line 2398 "cplus.met"
                }
#line 2398 "cplus.met"
                break;
#line 2398 "cplus.met"
            default :
#line 2398 "cplus.met"
                CASE_EXIT(alloc_expression_exit,"either new or delete")
#line 2398 "cplus.met"
                break;
#line 2398 "cplus.met"
        }
#line 2398 "cplus.met"
#line 2400 "cplus.met"
        {
#line 2400 "cplus.met"
            PPTREE _ptRes0;
#line 2400 "cplus.met"
            _ptRes0= MakeTree(QUALIFIED, 2);
#line 2400 "cplus.met"
            ReplaceTree(_ptRes0, 2, valTree );
#line 2400 "cplus.met"
            retTree=_ptRes0;
#line 2400 "cplus.met"
        }
#line 2400 "cplus.met"
#line 2401 "cplus.met"
    } else {
#line 2401 "cplus.met"
#line 2403 "cplus.met"
#line 2404 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2404 "cplus.met"
        switch( lexEl.Value) {
#line 2404 "cplus.met"
#line 2405 "cplus.met"
            case NEW : 
#line 2405 "cplus.met"
#line 2405 "cplus.met"
                if ( (valTree=NQUICK_CALL(_Tak(allocation_expression)(error_free), 4, cplus))== (PPTREE) -1 ) {
#line 2405 "cplus.met"
                    PROG_EXIT(alloc_expression_exit,"alloc_expression")
#line 2405 "cplus.met"
                }
#line 2405 "cplus.met"
                break;
#line 2405 "cplus.met"
#line 2406 "cplus.met"
            case DELETE : 
#line 2406 "cplus.met"
#line 2406 "cplus.met"
                if ( (valTree=NQUICK_CALL(_Tak(deallocation_expression)(error_free), 33, cplus))== (PPTREE) -1 ) {
#line 2406 "cplus.met"
                    PROG_EXIT(alloc_expression_exit,"alloc_expression")
#line 2406 "cplus.met"
                }
#line 2406 "cplus.met"
                break;
#line 2406 "cplus.met"
            default :
#line 2406 "cplus.met"
                CASE_EXIT(alloc_expression_exit,"either new or delete")
#line 2406 "cplus.met"
                break;
#line 2406 "cplus.met"
        }
#line 2406 "cplus.met"
#line 2408 "cplus.met"
        retTree = valTree ;
#line 2408 "cplus.met"
    }
#line 2408 "cplus.met"
#line 2410 "cplus.met"
    {
#line 2410 "cplus.met"
        _retValue = retTree ;
#line 2410 "cplus.met"
        goto alloc_expression_ret;
#line 2410 "cplus.met"
        
#line 2410 "cplus.met"
    }
#line 2410 "cplus.met"
#line 2411 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2411 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2411 "cplus.met"
return((PPTREE) 0);
#line 2411 "cplus.met"

#line 2411 "cplus.met"
alloc_expression_exit :
#line 2411 "cplus.met"

#line 2411 "cplus.met"
    {
#line 2411 "cplus.met"
        MulFreeTree(2,valTree,retTree);
#line 2411 "cplus.met"
    }
#line 2411 "cplus.met"
    _Debug = TRACE_RULE("alloc_expression",TRACE_EXIT,(PPTREE)0);
#line 2411 "cplus.met"
    _funcLevel--;
#line 2411 "cplus.met"
    return((PPTREE) -1) ;
#line 2411 "cplus.met"

#line 2411 "cplus.met"
alloc_expression_ret :
#line 2411 "cplus.met"
    
#line 2411 "cplus.met"
    _Debug = TRACE_RULE("alloc_expression",TRACE_RETURN,_retValue);
#line 2411 "cplus.met"
    (tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2411 "cplus.met"
    if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,_retValue,lastTree); else {_lastTree=_retValue;_funcLevel--;}
#line 2411 "cplus.met"
    return _retValue ;
#line 2411 "cplus.met"
}
#line 2411 "cplus.met"

#line 2411 "cplus.met"
#line 2442 "cplus.met"
PPTREE cplus::allocation_expression ( int error_free)
#line 2442 "cplus.met"
{
#line 2442 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2442 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2442 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2442 "cplus.met"
    int _Debug = TRACE_RULE("allocation_expression",TRACE_ENTER,(PPTREE)0);
#line 2442 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2442 "cplus.met"
#line 2442 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 2442 "cplus.met"
#line 2442 "cplus.met"
    PPTREE retTree = (PPTREE) 0,list = (PPTREE) 0;
#line 2442 "cplus.met"
#line 2444 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2444 "cplus.met"
    if (  !SEE_TOKEN( NEW,"new") || !(CommTerm(),1)) 
#line 2444 "cplus.met"
        TOKEN_EXIT(allocation_expression_exit,"new")
#line 2444 "cplus.met"
#line 2445 "cplus.met"
    if (! (NPUSH_CALL_AFF_VERIF(retTree = ,_Tak(new_1), 77, cplus))){
#line 2445 "cplus.met"
#line 2446 "cplus.met"
        if ( (retTree=NQUICK_CALL(_Tak(new_2)(error_free), 78, cplus))== (PPTREE) -1 ) {
#line 2446 "cplus.met"
            PROG_EXIT(allocation_expression_exit,"allocation_expression")
#line 2446 "cplus.met"
        }
#line 2446 "cplus.met"
    }
#line 2446 "cplus.met"
#line 2447 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(POUV,"(") && (tokenAhead = 0,CommTerm(),1)){
#line 2447 "cplus.met"
#line 2448 "cplus.met"
#line 2449 "cplus.met"
        if (! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( PFER,")"))){
#line 2449 "cplus.met"
#line 2451 "cplus.met"
#line 2451 "cplus.met"
            _addlist1 = list ;
#line 2451 "cplus.met"
#line 2450 "cplus.met"
            do {
#line 2450 "cplus.met"
#line 2451 "cplus.met"
                {
#line 2451 "cplus.met"
                    PPTREE _ptTree0;
#line 2451 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(initializer)(error_free), 63, cplus))== (PPTREE) -1 ) {
#line 2451 "cplus.met"
                        PROG_EXIT(allocation_expression_exit,"allocation_expression")
#line 2451 "cplus.met"
                    }
#line 2451 "cplus.met"
                    _addlist1 =AddList(_addlist1 , _ptTree0);
#line 2451 "cplus.met"
                }
#line 2451 "cplus.met"
#line 2451 "cplus.met"
                if (list){
#line 2451 "cplus.met"
#line 2451 "cplus.met"
                    _addlist1 = SonTree (_addlist1 ,2 );
#line 2451 "cplus.met"
                } else {
#line 2451 "cplus.met"
#line 2451 "cplus.met"
                    list = _addlist1 ;
#line 2451 "cplus.met"
                }
#line 2451 "cplus.met"
#line 2452 "cplus.met"
            } while ( !(! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(VIRG,",") && (tokenAhead = 0,CommTerm(),1)))) ;
#line 2452 "cplus.met"
        }
#line 2452 "cplus.met"
#line 2453 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2453 "cplus.met"
        if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 2453 "cplus.met"
            TOKEN_EXIT(allocation_expression_exit,")")
#line 2453 "cplus.met"
#line 2454 "cplus.met"
        {
#line 2454 "cplus.met"
            PPTREE _ptTree0;
#line 2454 "cplus.met"
            {
#line 2454 "cplus.met"
                PPTREE _ptRes1;
#line 2454 "cplus.met"
                _ptRes1= MakeTree(INIT_NEW, 1);
#line 2454 "cplus.met"
                ReplaceTree(_ptRes1, 1, list );
#line 2454 "cplus.met"
                _ptTree0=_ptRes1;
#line 2454 "cplus.met"
            }
#line 2454 "cplus.met"
            ReplaceTree(retTree , 3 , _ptTree0);
#line 2454 "cplus.met"
        }
#line 2454 "cplus.met"
#line 2455 "cplus.met"
    }
#line 2455 "cplus.met"
#line 2456 "cplus.met"
    {
#line 2456 "cplus.met"
        _retValue = retTree ;
#line 2456 "cplus.met"
        goto allocation_expression_ret;
#line 2456 "cplus.met"
        
#line 2456 "cplus.met"
    }
#line 2456 "cplus.met"
#line 2457 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2457 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2457 "cplus.met"
return((PPTREE) 0);
#line 2457 "cplus.met"

#line 2457 "cplus.met"
allocation_expression_exit :
#line 2457 "cplus.met"

#line 2457 "cplus.met"
    {
#line 2457 "cplus.met"
        MulFreeTree(3,list,retTree,_addlist1);
#line 2457 "cplus.met"
    }
#line 2457 "cplus.met"
    _Debug = TRACE_RULE("allocation_expression",TRACE_EXIT,(PPTREE)0);
#line 2457 "cplus.met"
    _funcLevel--;
#line 2457 "cplus.met"
    return((PPTREE) -1) ;
#line 2457 "cplus.met"

#line 2457 "cplus.met"
allocation_expression_ret :
#line 2457 "cplus.met"
    
#line 2457 "cplus.met"
    _Debug = TRACE_RULE("allocation_expression",TRACE_RETURN,_retValue);
#line 2457 "cplus.met"
    (tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2457 "cplus.met"
    if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,_retValue,lastTree); else {_lastTree=_retValue;_funcLevel--;}
#line 2457 "cplus.met"
    return _retValue ;
#line 2457 "cplus.met"
}
#line 2457 "cplus.met"

#line 2457 "cplus.met"
#line 2241 "cplus.met"
PPTREE cplus::and_expression ( int error_free)
#line 2241 "cplus.met"
{
#line 2241 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2241 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2241 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2241 "cplus.met"
    int _Debug = TRACE_RULE("and_expression",TRACE_ENTER,(PPTREE)0);
#line 2241 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2241 "cplus.met"
#line 2241 "cplus.met"
    PPTREE expTree = (PPTREE) 0;
#line 2241 "cplus.met"
#line 2243 "cplus.met"
    if ( (expTree=NQUICK_CALL(_Tak(equality_expression)(error_free), 43, cplus))== (PPTREE) -1 ) {
#line 2243 "cplus.met"
        PROG_EXIT(and_expression_exit,"and_expression")
#line 2243 "cplus.met"
    }
#line 2243 "cplus.met"
#line 2244 "cplus.met"
    while ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(ETCO,"&") && (tokenAhead = 0,CommTerm(),1)) { 
#line 2244 "cplus.met"
#line 2245 "cplus.met"
        {
#line 2245 "cplus.met"
            PPTREE _ptTree0,_ptRes0;
#line 2245 "cplus.met"
            _ptRes0= MakeTree(LAND, 2);
#line 2245 "cplus.met"
            ReplaceTree(_ptRes0, 1, expTree );
#line 2245 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(equality_expression)(error_free), 43, cplus))== (PPTREE) -1 ) {
#line 2245 "cplus.met"
                PROG_EXIT(and_expression_exit,"and_expression")
#line 2245 "cplus.met"
            }
#line 2245 "cplus.met"
            ReplaceTree(_ptRes0, 2, _ptTree0);
#line 2245 "cplus.met"
            expTree=_ptRes0;
#line 2245 "cplus.met"
        }
#line 2245 "cplus.met"
    } 
#line 2245 "cplus.met"
#line 2246 "cplus.met"
    {
#line 2246 "cplus.met"
        _retValue = expTree ;
#line 2246 "cplus.met"
        goto and_expression_ret;
#line 2246 "cplus.met"
        
#line 2246 "cplus.met"
    }
#line 2246 "cplus.met"
#line 2247 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2247 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2247 "cplus.met"
return((PPTREE) 0);
#line 2247 "cplus.met"

#line 2247 "cplus.met"
and_expression_exit :
#line 2247 "cplus.met"

#line 2247 "cplus.met"
    {
#line 2247 "cplus.met"
        MulFreeTree(1,expTree);
#line 2247 "cplus.met"
    }
#line 2247 "cplus.met"
    _Debug = TRACE_RULE("and_expression",TRACE_EXIT,(PPTREE)0);
#line 2247 "cplus.met"
    _funcLevel--;
#line 2247 "cplus.met"
    return((PPTREE) -1) ;
#line 2247 "cplus.met"

#line 2247 "cplus.met"
and_expression_ret :
#line 2247 "cplus.met"
    
#line 2247 "cplus.met"
    _Debug = TRACE_RULE("and_expression",TRACE_RETURN,_retValue);
#line 2247 "cplus.met"
    (tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2247 "cplus.met"
    if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,_retValue,lastTree); else {_lastTree=_retValue;_funcLevel--;}
#line 2247 "cplus.met"
    return _retValue ;
#line 2247 "cplus.met"
}
#line 2247 "cplus.met"

#line 2247 "cplus.met"
#line 2109 "cplus.met"
PPTREE cplus::arg_declarator ( int error_free)
#line 2109 "cplus.met"
{
#line 2109 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2109 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2109 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2109 "cplus.met"
    int _Debug = TRACE_RULE("arg_declarator",TRACE_ENTER,(PPTREE)0);
#line 2109 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2109 "cplus.met"
#line 2109 "cplus.met"
    PPTREE retTree = (PPTREE) 0,valTree = (PPTREE) 0;
#line 2109 "cplus.met"
#line 2111 "cplus.met"
    if ( (retTree=NQUICK_CALL(_Tak(type_specifier)(error_free), 119, cplus))== (PPTREE) -1 ) {
#line 2111 "cplus.met"
        PROG_EXIT(arg_declarator_exit,"arg_declarator")
#line 2111 "cplus.met"
    }
#line 2111 "cplus.met"
#line 2112 "cplus.met"
    if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(declarator), 34, cplus)){
#line 2112 "cplus.met"
#line 2113 "cplus.met"
        {
#line 2113 "cplus.met"
            PPTREE _ptRes0;
#line 2113 "cplus.met"
            _ptRes0= MakeTree(DECLARATOR, 2);
#line 2113 "cplus.met"
            ReplaceTree(_ptRes0, 1, retTree );
#line 2113 "cplus.met"
            ReplaceTree(_ptRes0, 2, valTree );
#line 2113 "cplus.met"
            valTree=_ptRes0;
#line 2113 "cplus.met"
        }
#line 2113 "cplus.met"
    } else {
#line 2113 "cplus.met"
#line 2115 "cplus.met"
        if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(abstract_declarator), 1, cplus)){
#line 2115 "cplus.met"
#line 2116 "cplus.met"
            {
#line 2116 "cplus.met"
                PPTREE _ptRes0;
#line 2116 "cplus.met"
                _ptRes0= MakeTree(ABST_DECLARATOR, 2);
#line 2116 "cplus.met"
                ReplaceTree(_ptRes0, 1, retTree );
#line 2116 "cplus.met"
                ReplaceTree(_ptRes0, 2, valTree );
#line 2116 "cplus.met"
                valTree=_ptRes0;
#line 2116 "cplus.met"
            }
#line 2116 "cplus.met"
        } else {
#line 2116 "cplus.met"
#line 2118 "cplus.met"
            valTree = retTree ;
#line 2118 "cplus.met"
        }
#line 2118 "cplus.met"
    }
#line 2118 "cplus.met"
#line 2119 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(EGAL,"=") && (tokenAhead = 0,CommTerm(),1)){
#line 2119 "cplus.met"
#line 2120 "cplus.met"
#line 2121 "cplus.met"
        {
#line 2121 "cplus.met"
            PPTREE _ptTree0,_ptRes0;
#line 2121 "cplus.met"
            _ptRes0= MakeTree(TYP_AFF, 2);
#line 2121 "cplus.met"
            ReplaceTree(_ptRes0, 1, valTree );
#line 2121 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(assignment_expression)(error_free), 11, cplus))== (PPTREE) -1 ) {
#line 2121 "cplus.met"
                PROG_EXIT(arg_declarator_exit,"arg_declarator")
#line 2121 "cplus.met"
            }
#line 2121 "cplus.met"
            ReplaceTree(_ptRes0, 2, _ptTree0);
#line 2121 "cplus.met"
            valTree=_ptRes0;
#line 2121 "cplus.met"
        }
#line 2121 "cplus.met"
#line 2122 "cplus.met"
    }
#line 2122 "cplus.met"
#line 2123 "cplus.met"
    {
#line 2123 "cplus.met"
        _retValue = valTree ;
#line 2123 "cplus.met"
        goto arg_declarator_ret;
#line 2123 "cplus.met"
        
#line 2123 "cplus.met"
    }
#line 2123 "cplus.met"
#line 2124 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2124 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2124 "cplus.met"
return((PPTREE) 0);
#line 2124 "cplus.met"

#line 2124 "cplus.met"
arg_declarator_exit :
#line 2124 "cplus.met"

#line 2124 "cplus.met"
    {
#line 2124 "cplus.met"
        MulFreeTree(2,valTree,retTree);
#line 2124 "cplus.met"
    }
#line 2124 "cplus.met"
    _Debug = TRACE_RULE("arg_declarator",TRACE_EXIT,(PPTREE)0);
#line 2124 "cplus.met"
    _funcLevel--;
#line 2124 "cplus.met"
    return((PPTREE) -1) ;
#line 2124 "cplus.met"

#line 2124 "cplus.met"
arg_declarator_ret :
#line 2124 "cplus.met"
    
#line 2124 "cplus.met"
    _Debug = TRACE_RULE("arg_declarator",TRACE_RETURN,_retValue);
#line 2124 "cplus.met"
    (tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2124 "cplus.met"
    if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,_retValue,lastTree); else {_lastTree=_retValue;_funcLevel--;}
#line 2124 "cplus.met"
    return _retValue ;
#line 2124 "cplus.met"
}
#line 2124 "cplus.met"

#line 2124 "cplus.met"
#line 1855 "cplus.met"
PPTREE cplus::arg_typ_declarator ( int error_free)
#line 1855 "cplus.met"
{
#line 1855 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1855 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1855 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1855 "cplus.met"
    int _Debug = TRACE_RULE("arg_typ_declarator",TRACE_ENTER,(PPTREE)0);
#line 1855 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1855 "cplus.met"
#line 1855 "cplus.met"
    PPTREE retTree = (PPTREE) 0,expList = (PPTREE) 0;
#line 1855 "cplus.met"
#line 1857 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1857 "cplus.met"
    if (  !SEE_TOKEN( POUV,"(") || !(CommTerm(),1)) 
#line 1857 "cplus.met"
        TOKEN_EXIT(arg_typ_declarator_exit,"(")
#line 1857 "cplus.met"
#line 1858 "cplus.met"
    if (NPUSH_CALL_AFF_VERIF(expList = ,_Tak(arg_typ_list), 8, cplus)){
#line 1858 "cplus.met"
#line 1859 "cplus.met"
        {
#line 1859 "cplus.met"
            PPTREE _ptRes0;
#line 1859 "cplus.met"
            _ptRes0= MakeTree(TYP_LIST, 3);
#line 1859 "cplus.met"
            ReplaceTree(_ptRes0, 2, expList );
#line 1859 "cplus.met"
            retTree=_ptRes0;
#line 1859 "cplus.met"
        }
#line 1859 "cplus.met"
    } else {
#line 1859 "cplus.met"
#line 1861 "cplus.met"
        {
#line 1861 "cplus.met"
            PPTREE _ptRes0;
#line 1861 "cplus.met"
            _ptRes0= MakeTree(TYP_LIST, 3);
#line 1861 "cplus.met"
            retTree=_ptRes0;
#line 1861 "cplus.met"
        }
#line 1861 "cplus.met"
    }
#line 1861 "cplus.met"
#line 1862 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1862 "cplus.met"
    if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 1862 "cplus.met"
        TOKEN_EXIT(arg_typ_declarator_exit,")")
#line 1862 "cplus.met"
#line 1863 "cplus.met"
    {
#line 1863 "cplus.met"
        _retValue = retTree ;
#line 1863 "cplus.met"
        goto arg_typ_declarator_ret;
#line 1863 "cplus.met"
        
#line 1863 "cplus.met"
    }
#line 1863 "cplus.met"
#line 1864 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1864 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1864 "cplus.met"
return((PPTREE) 0);
#line 1864 "cplus.met"

#line 1864 "cplus.met"
arg_typ_declarator_exit :
#line 1864 "cplus.met"

#line 1864 "cplus.met"
    {
#line 1864 "cplus.met"
        MulFreeTree(2,expList,retTree);
#line 1864 "cplus.met"
    }
#line 1864 "cplus.met"
    _Debug = TRACE_RULE("arg_typ_declarator",TRACE_EXIT,(PPTREE)0);
#line 1864 "cplus.met"
    _funcLevel--;
#line 1864 "cplus.met"
    return((PPTREE) -1) ;
#line 1864 "cplus.met"

#line 1864 "cplus.met"
arg_typ_declarator_ret :
#line 1864 "cplus.met"
    
#line 1864 "cplus.met"
    _Debug = TRACE_RULE("arg_typ_declarator",TRACE_RETURN,_retValue);
#line 1864 "cplus.met"
    (tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1864 "cplus.met"
    if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,_retValue,lastTree); else {_lastTree=_retValue;_funcLevel--;}
#line 1864 "cplus.met"
    return _retValue ;
#line 1864 "cplus.met"
}
#line 1864 "cplus.met"

#line 1864 "cplus.met"
#line 2088 "cplus.met"
PPTREE cplus::arg_typ_list ( int error_free)
#line 2088 "cplus.met"
{
#line 2088 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2088 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2088 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2088 "cplus.met"
    int _Debug = TRACE_RULE("arg_typ_list",TRACE_ENTER,(PPTREE)0);
#line 2088 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2088 "cplus.met"
#line 2088 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 2088 "cplus.met"
#line 2088 "cplus.met"
    PPTREE retTree = (PPTREE) 0,valTree = (PPTREE) 0;
#line 2088 "cplus.met"
#line 2090 "cplus.met"
    {
#line 2090 "cplus.met"
        PPTREE _ptTree0;
#line 2090 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(arg_declarator)(error_free), 6, cplus))== (PPTREE) -1 ) {
#line 2090 "cplus.met"
            PROG_EXIT(arg_typ_list_exit,"arg_typ_list")
#line 2090 "cplus.met"
        }
#line 2090 "cplus.met"
        retTree =AddList(retTree , _ptTree0);
#line 2090 "cplus.met"
    }
#line 2090 "cplus.met"
#line 2091 "cplus.met"
#line 2092 "cplus.met"
     {  int exit = 0 ; 
#line 2092 "cplus.met"
#line 2092 "cplus.met"
    _addlist1 = retTree ;
#line 2092 "cplus.met"
#line 2093 "cplus.met"
    while ((! ( exit )) && 
#line 2093 "cplus.met"
          ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(VIRG,",") && (tokenAhead = 0,CommTerm(),1))) { 
#line 2093 "cplus.met"
#line 2094 "cplus.met"
        if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(arg_declarator), 6, cplus)){
#line 2094 "cplus.met"
#line 2095 "cplus.met"
#line 2095 "cplus.met"
            _addlist1 =AddList(_addlist1 ,valTree );
#line 2095 "cplus.met"
#line 2095 "cplus.met"
            if (retTree){
#line 2095 "cplus.met"
#line 2095 "cplus.met"
                _addlist1 = SonTree (_addlist1 ,2 );
#line 2095 "cplus.met"
            } else {
#line 2095 "cplus.met"
#line 2095 "cplus.met"
                retTree = _addlist1 ;
#line 2095 "cplus.met"
            }
#line 2095 "cplus.met"
        } else {
#line 2095 "cplus.met"
#line 2097 "cplus.met"
#line 2098 "cplus.met"
            {
#line 2098 "cplus.met"
                PPTREE _ptTree0;
#line 2098 "cplus.met"
                {
#line 2098 "cplus.met"
                    PPTREE _ptRes1;
#line 2098 "cplus.met"
                    _ptRes1= MakeTree(VAR_LIST, 0);
#line 2098 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2098 "cplus.met"
                }
#line 2098 "cplus.met"
                _addlist1 =AddList(_addlist1 , _ptTree0);
#line 2098 "cplus.met"
            }
#line 2098 "cplus.met"
#line 2098 "cplus.met"
            if (retTree){
#line 2098 "cplus.met"
#line 2098 "cplus.met"
                _addlist1 = SonTree (_addlist1 ,2 );
#line 2098 "cplus.met"
            } else {
#line 2098 "cplus.met"
#line 2098 "cplus.met"
                retTree = _addlist1 ;
#line 2098 "cplus.met"
            }
#line 2098 "cplus.met"
#line 2099 "cplus.met"
             exit = 1 ;
#line 2099 "cplus.met"
#line 2100 "cplus.met"
            if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(POINPOINPOIN,"...") && (tokenAhead = 0,CommTerm(),1)){
#line 2100 "cplus.met"
#line 2100 "cplus.met"
            }
#line 2100 "cplus.met"
        }
#line 2100 "cplus.met"
    } 
#line 2100 "cplus.met"
#line 2102 "cplus.met"
    if ((! ( exit )) && 
#line 2102 "cplus.met"
       ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(POINPOINPOIN,"...") && (tokenAhead = 0,CommTerm(),1))){
#line 2102 "cplus.met"
#line 2103 "cplus.met"
        {
#line 2103 "cplus.met"
            PPTREE _ptTree0;
#line 2103 "cplus.met"
            {
#line 2103 "cplus.met"
                PPTREE _ptRes1;
#line 2103 "cplus.met"
                _ptRes1= MakeTree(VAR_LIST, 0);
#line 2103 "cplus.met"
                _ptTree0=_ptRes1;
#line 2103 "cplus.met"
            }
#line 2103 "cplus.met"
            valTree =AddList(valTree , _ptTree0);
#line 2103 "cplus.met"
        }
#line 2103 "cplus.met"
#line 2103 "cplus.met"
    }
#line 2103 "cplus.met"
#line 2104 "cplus.met"
     } 
#line 2104 "cplus.met"
#line 2106 "cplus.met"
    {
#line 2106 "cplus.met"
        _retValue = retTree ;
#line 2106 "cplus.met"
        goto arg_typ_list_ret;
#line 2106 "cplus.met"
        
#line 2106 "cplus.met"
    }
#line 2106 "cplus.met"
#line 2107 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2107 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2107 "cplus.met"
return((PPTREE) 0);
#line 2107 "cplus.met"

#line 2107 "cplus.met"
arg_typ_list_exit :
#line 2107 "cplus.met"

#line 2107 "cplus.met"
    {
#line 2107 "cplus.met"
        MulFreeTree(3,valTree,retTree,_addlist1);
#line 2107 "cplus.met"
    }
#line 2107 "cplus.met"
    _Debug = TRACE_RULE("arg_typ_list",TRACE_EXIT,(PPTREE)0);
#line 2107 "cplus.met"
    _funcLevel--;
#line 2107 "cplus.met"
    return((PPTREE) -1) ;
#line 2107 "cplus.met"

#line 2107 "cplus.met"
arg_typ_list_ret :
#line 2107 "cplus.met"
    
#line 2107 "cplus.met"
    _Debug = TRACE_RULE("arg_typ_list",TRACE_RETURN,_retValue);
#line 2107 "cplus.met"
    (tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2107 "cplus.met"
    if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,_retValue,lastTree); else {_lastTree=_retValue;_funcLevel--;}
#line 2107 "cplus.met"
    return _retValue ;
#line 2107 "cplus.met"
}
#line 2107 "cplus.met"

#line 2107 "cplus.met"
#line 875 "cplus.met"
PPTREE cplus::asm_declaration ( int error_free)
#line 875 "cplus.met"
{
#line 875 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 875 "cplus.met"
    int _value,_nbPre = 0 ;
#line 875 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 875 "cplus.met"
    int _Debug = TRACE_RULE("asm_declaration",TRACE_ENTER,(PPTREE)0);
#line 875 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 875 "cplus.met"
#line 875 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 875 "cplus.met"
#line 877 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 877 "cplus.met"
    if (  !SEE_TOKEN( ASM,"asm") || !(CommTerm(),1)) 
#line 877 "cplus.met"
        TOKEN_EXIT(asm_declaration_exit,"asm")
#line 877 "cplus.met"
#line 878 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 878 "cplus.met"
    if (  !SEE_TOKEN( POUV,"(") || !(CommTerm(),1)) 
#line 878 "cplus.met"
        TOKEN_EXIT(asm_declaration_exit,"(")
#line 878 "cplus.met"
#line 879 "cplus.met"
    {
#line 879 "cplus.met"
        PPTREE _ptTree0,_ptRes0;
#line 879 "cplus.met"
        _ptRes0= MakeTree(ASM, 1);
#line 879 "cplus.met"
        {
#line 879 "cplus.met"
            PPTREE _ptTree1,_ptRes1;
#line 879 "cplus.met"
            _ptRes1= MakeTree(STRING, 1);
#line 879 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 879 "cplus.met"
            if ( ! TERM_OR_META(STRING,"STRING") || !(BUILD_TERM_META(_ptTree1))) 
#line 879 "cplus.met"
                TOKEN_EXIT(asm_declaration_exit,"STRING")
#line 879 "cplus.met"
            ReplaceTree(_ptRes1, 1, _ptTree1);
#line 879 "cplus.met"
            _ptTree0=_ptRes1;
#line 879 "cplus.met"
        }
#line 879 "cplus.met"
        ReplaceTree(_ptRes0, 1, _ptTree0);
#line 879 "cplus.met"
        retTree=_ptRes0;
#line 879 "cplus.met"
    }
#line 879 "cplus.met"
#line 880 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 880 "cplus.met"
    if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 880 "cplus.met"
        TOKEN_EXIT(asm_declaration_exit,")")
#line 880 "cplus.met"
#line 881 "cplus.met"
    {
#line 881 "cplus.met"
        _retValue = retTree ;
#line 881 "cplus.met"
        goto asm_declaration_ret;
#line 881 "cplus.met"
        
#line 881 "cplus.met"
    }
#line 881 "cplus.met"
#line 882 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 882 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 882 "cplus.met"
return((PPTREE) 0);
#line 882 "cplus.met"

#line 882 "cplus.met"
asm_declaration_exit :
#line 882 "cplus.met"

#line 882 "cplus.met"
    {
#line 882 "cplus.met"
        MulFreeTree(1,retTree);
#line 882 "cplus.met"
    }
#line 882 "cplus.met"
    _Debug = TRACE_RULE("asm_declaration",TRACE_EXIT,(PPTREE)0);
#line 882 "cplus.met"
    _funcLevel--;
#line 882 "cplus.met"
    return((PPTREE) -1) ;
#line 882 "cplus.met"

#line 882 "cplus.met"
asm_declaration_ret :
#line 882 "cplus.met"
    
#line 882 "cplus.met"
    _Debug = TRACE_RULE("asm_declaration",TRACE_RETURN,_retValue);
#line 882 "cplus.met"
    (tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 882 "cplus.met"
    if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,_retValue,lastTree); else {_lastTree=_retValue;_funcLevel--;}
#line 882 "cplus.met"
    return _retValue ;
#line 882 "cplus.met"
}
#line 882 "cplus.met"

#line 882 "cplus.met"
#line 2167 "cplus.met"
PPTREE cplus::assignment_end ( int error_free)
#line 2167 "cplus.met"
{
#line 2167 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2167 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2167 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2167 "cplus.met"
    int _Debug = TRACE_RULE("assignment_end",TRACE_ENTER,(PPTREE)0);
#line 2167 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2167 "cplus.met"
#line 2168 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2168 "cplus.met"
    switch( lexEl.Value) {
#line 2168 "cplus.met"
#line 2169 "cplus.met"
        case EGAL : 
#line 2169 "cplus.met"
            tokenAhead = 0 ;
#line 2169 "cplus.met"
            CommTerm();
#line 2169 "cplus.met"
#line 2169 "cplus.met"
            {
#line 2169 "cplus.met"
                PPTREE _ptTree0;
#line 2169 "cplus.met"
                {
#line 2169 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2169 "cplus.met"
                    _ptRes1= MakeTree(AFF, 2);
#line 2169 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(assignment_expression)(error_free), 11, cplus))== (PPTREE) -1 ) {
#line 2169 "cplus.met"
                        PROG_EXIT(assignment_end_exit,"assignment_end")
#line 2169 "cplus.met"
                    }
#line 2169 "cplus.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 2169 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2169 "cplus.met"
                }
#line 2169 "cplus.met"
                _retValue =_ptTree0;
#line 2169 "cplus.met"
                goto assignment_end_ret;
#line 2169 "cplus.met"
            }
#line 2169 "cplus.met"
            break;
#line 2169 "cplus.met"
#line 2170 "cplus.met"
        case ETOIEGAL : 
#line 2170 "cplus.met"
            tokenAhead = 0 ;
#line 2170 "cplus.met"
            CommTerm();
#line 2170 "cplus.met"
#line 2170 "cplus.met"
            {
#line 2170 "cplus.met"
                PPTREE _ptTree0;
#line 2170 "cplus.met"
                {
#line 2170 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2170 "cplus.met"
                    _ptRes1= MakeTree(MUL_AFF, 2);
#line 2170 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(assignment_expression)(error_free), 11, cplus))== (PPTREE) -1 ) {
#line 2170 "cplus.met"
                        PROG_EXIT(assignment_end_exit,"assignment_end")
#line 2170 "cplus.met"
                    }
#line 2170 "cplus.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 2170 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2170 "cplus.met"
                }
#line 2170 "cplus.met"
                _retValue =_ptTree0;
#line 2170 "cplus.met"
                goto assignment_end_ret;
#line 2170 "cplus.met"
            }
#line 2170 "cplus.met"
            break;
#line 2170 "cplus.met"
#line 2171 "cplus.met"
        case META : 
#line 2171 "cplus.met"
        case SLASEGAL : 
#line 2171 "cplus.met"
            tokenAhead = 0 ;
#line 2171 "cplus.met"
            CommTerm();
#line 2171 "cplus.met"
#line 2171 "cplus.met"
            {
#line 2171 "cplus.met"
                PPTREE _ptTree0;
#line 2171 "cplus.met"
                {
#line 2171 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2171 "cplus.met"
                    _ptRes1= MakeTree(DIV_AFF, 2);
#line 2171 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(assignment_expression)(error_free), 11, cplus))== (PPTREE) -1 ) {
#line 2171 "cplus.met"
                        PROG_EXIT(assignment_end_exit,"assignment_end")
#line 2171 "cplus.met"
                    }
#line 2171 "cplus.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 2171 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2171 "cplus.met"
                }
#line 2171 "cplus.met"
                _retValue =_ptTree0;
#line 2171 "cplus.met"
                goto assignment_end_ret;
#line 2171 "cplus.met"
            }
#line 2171 "cplus.met"
            break;
#line 2171 "cplus.met"
#line 2173 "cplus.met"
        case POURCEGAL : 
#line 2173 "cplus.met"
            tokenAhead = 0 ;
#line 2173 "cplus.met"
            CommTerm();
#line 2173 "cplus.met"
#line 2173 "cplus.met"
            {
#line 2173 "cplus.met"
                PPTREE _ptTree0;
#line 2173 "cplus.met"
                {
#line 2173 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2173 "cplus.met"
                    _ptRes1= MakeTree(REM_AFF, 2);
#line 2173 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(assignment_expression)(error_free), 11, cplus))== (PPTREE) -1 ) {
#line 2173 "cplus.met"
                        PROG_EXIT(assignment_end_exit,"assignment_end")
#line 2173 "cplus.met"
                    }
#line 2173 "cplus.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 2173 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2173 "cplus.met"
                }
#line 2173 "cplus.met"
                _retValue =_ptTree0;
#line 2173 "cplus.met"
                goto assignment_end_ret;
#line 2173 "cplus.met"
            }
#line 2173 "cplus.met"
            break;
#line 2173 "cplus.met"
#line 2174 "cplus.met"
        case PLUSEGAL : 
#line 2174 "cplus.met"
            tokenAhead = 0 ;
#line 2174 "cplus.met"
            CommTerm();
#line 2174 "cplus.met"
#line 2174 "cplus.met"
            {
#line 2174 "cplus.met"
                PPTREE _ptTree0;
#line 2174 "cplus.met"
                {
#line 2174 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2174 "cplus.met"
                    _ptRes1= MakeTree(PLU_AFF, 2);
#line 2174 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(assignment_expression)(error_free), 11, cplus))== (PPTREE) -1 ) {
#line 2174 "cplus.met"
                        PROG_EXIT(assignment_end_exit,"assignment_end")
#line 2174 "cplus.met"
                    }
#line 2174 "cplus.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 2174 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2174 "cplus.met"
                }
#line 2174 "cplus.met"
                _retValue =_ptTree0;
#line 2174 "cplus.met"
                goto assignment_end_ret;
#line 2174 "cplus.met"
            }
#line 2174 "cplus.met"
            break;
#line 2174 "cplus.met"
#line 2175 "cplus.met"
        case TIREEGAL : 
#line 2175 "cplus.met"
            tokenAhead = 0 ;
#line 2175 "cplus.met"
            CommTerm();
#line 2175 "cplus.met"
#line 2175 "cplus.met"
            {
#line 2175 "cplus.met"
                PPTREE _ptTree0;
#line 2175 "cplus.met"
                {
#line 2175 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2175 "cplus.met"
                    _ptRes1= MakeTree(MIN_AFF, 2);
#line 2175 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(assignment_expression)(error_free), 11, cplus))== (PPTREE) -1 ) {
#line 2175 "cplus.met"
                        PROG_EXIT(assignment_end_exit,"assignment_end")
#line 2175 "cplus.met"
                    }
#line 2175 "cplus.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 2175 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2175 "cplus.met"
                }
#line 2175 "cplus.met"
                _retValue =_ptTree0;
#line 2175 "cplus.met"
                goto assignment_end_ret;
#line 2175 "cplus.met"
            }
#line 2175 "cplus.met"
            break;
#line 2175 "cplus.met"
#line 2176 "cplus.met"
        case INFEINFEEGAL : 
#line 2176 "cplus.met"
            tokenAhead = 0 ;
#line 2176 "cplus.met"
            CommTerm();
#line 2176 "cplus.met"
#line 2176 "cplus.met"
            {
#line 2176 "cplus.met"
                PPTREE _ptTree0;
#line 2176 "cplus.met"
                {
#line 2176 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2176 "cplus.met"
                    _ptRes1= MakeTree(LSH_AFF, 2);
#line 2176 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(assignment_expression)(error_free), 11, cplus))== (PPTREE) -1 ) {
#line 2176 "cplus.met"
                        PROG_EXIT(assignment_end_exit,"assignment_end")
#line 2176 "cplus.met"
                    }
#line 2176 "cplus.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 2176 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2176 "cplus.met"
                }
#line 2176 "cplus.met"
                _retValue =_ptTree0;
#line 2176 "cplus.met"
                goto assignment_end_ret;
#line 2176 "cplus.met"
            }
#line 2176 "cplus.met"
            break;
#line 2176 "cplus.met"
#line 2177 "cplus.met"
        case SUPESUPEEGAL : 
#line 2177 "cplus.met"
            tokenAhead = 0 ;
#line 2177 "cplus.met"
            CommTerm();
#line 2177 "cplus.met"
#line 2177 "cplus.met"
            {
#line 2177 "cplus.met"
                PPTREE _ptTree0;
#line 2177 "cplus.met"
                {
#line 2177 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2177 "cplus.met"
                    _ptRes1= MakeTree(RSH_AFF, 2);
#line 2177 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(assignment_expression)(error_free), 11, cplus))== (PPTREE) -1 ) {
#line 2177 "cplus.met"
                        PROG_EXIT(assignment_end_exit,"assignment_end")
#line 2177 "cplus.met"
                    }
#line 2177 "cplus.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 2177 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2177 "cplus.met"
                }
#line 2177 "cplus.met"
                _retValue =_ptTree0;
#line 2177 "cplus.met"
                goto assignment_end_ret;
#line 2177 "cplus.met"
            }
#line 2177 "cplus.met"
            break;
#line 2177 "cplus.met"
#line 2178 "cplus.met"
        case ETCOEGAL : 
#line 2178 "cplus.met"
            tokenAhead = 0 ;
#line 2178 "cplus.met"
            CommTerm();
#line 2178 "cplus.met"
#line 2178 "cplus.met"
            {
#line 2178 "cplus.met"
                PPTREE _ptTree0;
#line 2178 "cplus.met"
                {
#line 2178 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2178 "cplus.met"
                    _ptRes1= MakeTree(AND_AFF, 2);
#line 2178 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(assignment_expression)(error_free), 11, cplus))== (PPTREE) -1 ) {
#line 2178 "cplus.met"
                        PROG_EXIT(assignment_end_exit,"assignment_end")
#line 2178 "cplus.met"
                    }
#line 2178 "cplus.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 2178 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2178 "cplus.met"
                }
#line 2178 "cplus.met"
                _retValue =_ptTree0;
#line 2178 "cplus.met"
                goto assignment_end_ret;
#line 2178 "cplus.met"
            }
#line 2178 "cplus.met"
            break;
#line 2178 "cplus.met"
#line 2179 "cplus.met"
        case VBAREGAL : 
#line 2179 "cplus.met"
            tokenAhead = 0 ;
#line 2179 "cplus.met"
            CommTerm();
#line 2179 "cplus.met"
#line 2179 "cplus.met"
            {
#line 2179 "cplus.met"
                PPTREE _ptTree0;
#line 2179 "cplus.met"
                {
#line 2179 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2179 "cplus.met"
                    _ptRes1= MakeTree(OR_AFF, 2);
#line 2179 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(assignment_expression)(error_free), 11, cplus))== (PPTREE) -1 ) {
#line 2179 "cplus.met"
                        PROG_EXIT(assignment_end_exit,"assignment_end")
#line 2179 "cplus.met"
                    }
#line 2179 "cplus.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 2179 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2179 "cplus.met"
                }
#line 2179 "cplus.met"
                _retValue =_ptTree0;
#line 2179 "cplus.met"
                goto assignment_end_ret;
#line 2179 "cplus.met"
            }
#line 2179 "cplus.met"
            break;
#line 2179 "cplus.met"
#line 2180 "cplus.met"
        case CHAPEGAL : 
#line 2180 "cplus.met"
            tokenAhead = 0 ;
#line 2180 "cplus.met"
            CommTerm();
#line 2180 "cplus.met"
#line 2180 "cplus.met"
            {
#line 2180 "cplus.met"
                PPTREE _ptTree0;
#line 2180 "cplus.met"
                {
#line 2180 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2180 "cplus.met"
                    _ptRes1= MakeTree(XOR_AFF, 2);
#line 2180 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(assignment_expression)(error_free), 11, cplus))== (PPTREE) -1 ) {
#line 2180 "cplus.met"
                        PROG_EXIT(assignment_end_exit,"assignment_end")
#line 2180 "cplus.met"
                    }
#line 2180 "cplus.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 2180 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2180 "cplus.met"
                }
#line 2180 "cplus.met"
                _retValue =_ptTree0;
#line 2180 "cplus.met"
                goto assignment_end_ret;
#line 2180 "cplus.met"
            }
#line 2180 "cplus.met"
            break;
#line 2180 "cplus.met"
        default :
#line 2180 "cplus.met"
            CASE_EXIT(assignment_end_exit,"either = or *= or SLASEGAL or %= or += or -= or <<= or >>= or &= or |= or ^=")
#line 2180 "cplus.met"
            break;
#line 2180 "cplus.met"
    }
#line 2180 "cplus.met"
#line 2182 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2182 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2182 "cplus.met"
return((PPTREE) 0);
#line 2182 "cplus.met"

#line 2182 "cplus.met"
assignment_end_exit :
#line 2182 "cplus.met"

#line 2182 "cplus.met"
    _Debug = TRACE_RULE("assignment_end",TRACE_EXIT,(PPTREE)0);
#line 2182 "cplus.met"
    _funcLevel--;
#line 2182 "cplus.met"
    return((PPTREE) -1) ;
#line 2182 "cplus.met"

#line 2182 "cplus.met"
assignment_end_ret :
#line 2182 "cplus.met"
    
#line 2182 "cplus.met"
    _Debug = TRACE_RULE("assignment_end",TRACE_RETURN,_retValue);
#line 2182 "cplus.met"
    (tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2182 "cplus.met"
    if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,_retValue,lastTree); else {_lastTree=_retValue;_funcLevel--;}
#line 2182 "cplus.met"
    return _retValue ;
#line 2182 "cplus.met"
}
#line 2182 "cplus.met"

#line 2182 "cplus.met"
#line 2184 "cplus.met"
PPTREE cplus::assignment_expression ( int error_free)
#line 2184 "cplus.met"
{
#line 2184 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2184 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2184 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2184 "cplus.met"
    int _Debug = TRACE_RULE("assignment_expression",TRACE_ENTER,(PPTREE)0);
#line 2184 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2184 "cplus.met"
#line 2184 "cplus.met"
    PPTREE expTree = (PPTREE) 0,expFollow = (PPTREE) 0;
#line 2184 "cplus.met"
#line 2186 "cplus.met"
    if ( (expTree=NQUICK_CALL(_Tak(conditional_expression)(error_free), 23, cplus))== (PPTREE) -1 ) {
#line 2186 "cplus.met"
        PROG_EXIT(assignment_expression_exit,"assignment_expression")
#line 2186 "cplus.met"
    }
#line 2186 "cplus.met"
#line 2187 "cplus.met"
    if (NPUSH_CALL_AFF_VERIF(expFollow = ,_Tak(assignment_end), 10, cplus)){
#line 2187 "cplus.met"
#line 2188 "cplus.met"
#line 2189 "cplus.met"
        ReplaceTree(expFollow ,1 ,expTree );
#line 2189 "cplus.met"
#line 2190 "cplus.met"
        expTree = expFollow ;
#line 2190 "cplus.met"
#line 2191 "cplus.met"
    }
#line 2191 "cplus.met"
#line 2192 "cplus.met"
    {
#line 2192 "cplus.met"
        _retValue = expTree ;
#line 2192 "cplus.met"
        goto assignment_expression_ret;
#line 2192 "cplus.met"
        
#line 2192 "cplus.met"
    }
#line 2192 "cplus.met"
#line 2193 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2193 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2193 "cplus.met"
return((PPTREE) 0);
#line 2193 "cplus.met"

#line 2193 "cplus.met"
assignment_expression_exit :
#line 2193 "cplus.met"

#line 2193 "cplus.met"
    {
#line 2193 "cplus.met"
        MulFreeTree(2,expFollow,expTree);
#line 2193 "cplus.met"
    }
#line 2193 "cplus.met"
    _Debug = TRACE_RULE("assignment_expression",TRACE_EXIT,(PPTREE)0);
#line 2193 "cplus.met"
    _funcLevel--;
#line 2193 "cplus.met"
    return((PPTREE) -1) ;
#line 2193 "cplus.met"

#line 2193 "cplus.met"
assignment_expression_ret :
#line 2193 "cplus.met"
    
#line 2193 "cplus.met"
    _Debug = TRACE_RULE("assignment_expression",TRACE_RETURN,_retValue);
#line 2193 "cplus.met"
    (tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2193 "cplus.met"
    if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,_retValue,lastTree); else {_lastTree=_retValue;_funcLevel--;}
#line 2193 "cplus.met"
    return _retValue ;
#line 2193 "cplus.met"
}
#line 2193 "cplus.met"

#line 2193 "cplus.met"
#line 1549 "cplus.met"
PPTREE cplus::base_specifier ( int error_free)
#line 1549 "cplus.met"
{
#line 1549 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1549 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1549 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1549 "cplus.met"
    int _Debug = TRACE_RULE("base_specifier",TRACE_ENTER,(PPTREE)0);
#line 1549 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1549 "cplus.met"
#line 1549 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 1549 "cplus.met"
#line 1549 "cplus.met"
    PPTREE list = (PPTREE) 0;
#line 1549 "cplus.met"
#line 1549 "cplus.met"
    _addlist1 = list ;
#line 1549 "cplus.met"
#line 1551 "cplus.met"
    do {
#line 1551 "cplus.met"
#line 1552 "cplus.met"
        {
#line 1552 "cplus.met"
            PPTREE _ptTree0;
#line 1552 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(base_specifier_elem)(error_free), 13, cplus))== (PPTREE) -1 ) {
#line 1552 "cplus.met"
                PROG_EXIT(base_specifier_exit,"base_specifier")
#line 1552 "cplus.met"
            }
#line 1552 "cplus.met"
            _addlist1 =AddList(_addlist1 , _ptTree0);
#line 1552 "cplus.met"
        }
#line 1552 "cplus.met"
#line 1552 "cplus.met"
        if (list){
#line 1552 "cplus.met"
#line 1552 "cplus.met"
            _addlist1 = SonTree (_addlist1 ,2 );
#line 1552 "cplus.met"
        } else {
#line 1552 "cplus.met"
#line 1552 "cplus.met"
            list = _addlist1 ;
#line 1552 "cplus.met"
        }
#line 1552 "cplus.met"
#line 1553 "cplus.met"
    } while ( !(! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(VIRG,",") && (tokenAhead = 0,CommTerm(),1)))) ;
#line 1553 "cplus.met"
#line 1554 "cplus.met"
    {
#line 1554 "cplus.met"
        PPTREE _ptTree0;
#line 1554 "cplus.met"
        {
#line 1554 "cplus.met"
            PPTREE _ptRes1;
#line 1554 "cplus.met"
            _ptRes1= MakeTree(BASE_LIST, 1);
#line 1554 "cplus.met"
            ReplaceTree(_ptRes1, 1, list );
#line 1554 "cplus.met"
            _ptTree0=_ptRes1;
#line 1554 "cplus.met"
        }
#line 1554 "cplus.met"
        _retValue =_ptTree0;
#line 1554 "cplus.met"
        goto base_specifier_ret;
#line 1554 "cplus.met"
    }
#line 1554 "cplus.met"
#line 1555 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1555 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1555 "cplus.met"
return((PPTREE) 0);
#line 1555 "cplus.met"

#line 1555 "cplus.met"
base_specifier_exit :
#line 1555 "cplus.met"

#line 1555 "cplus.met"
    {
#line 1555 "cplus.met"
        MulFreeTree(2,list,_addlist1);
#line 1555 "cplus.met"
    }
#line 1555 "cplus.met"
    _Debug = TRACE_RULE("base_specifier",TRACE_EXIT,(PPTREE)0);
#line 1555 "cplus.met"
    _funcLevel--;
#line 1555 "cplus.met"
    return((PPTREE) -1) ;
#line 1555 "cplus.met"

#line 1555 "cplus.met"
base_specifier_ret :
#line 1555 "cplus.met"
    
#line 1555 "cplus.met"
    _Debug = TRACE_RULE("base_specifier",TRACE_RETURN,_retValue);
#line 1555 "cplus.met"
    (tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1555 "cplus.met"
    if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,_retValue,lastTree); else {_lastTree=_retValue;_funcLevel--;}
#line 1555 "cplus.met"
    return _retValue ;
#line 1555 "cplus.met"
}
#line 1555 "cplus.met"

#line 1555 "cplus.met"
#line 1532 "cplus.met"
PPTREE cplus::base_specifier_elem ( int error_free)
#line 1532 "cplus.met"
{
#line 1532 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1532 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1532 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1532 "cplus.met"
    int _Debug = TRACE_RULE("base_specifier_elem",TRACE_ENTER,(PPTREE)0);
#line 1532 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1532 "cplus.met"
#line 1532 "cplus.met"
    PPTREE ret = (PPTREE) 0;
#line 1532 "cplus.met"
#line 1534 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1534 "cplus.met"
    switch( lexEl.Value) {
#line 1534 "cplus.met"
#line 1535 "cplus.met"
        case PRIVATE : 
#line 1535 "cplus.met"
            tokenAhead = 0 ;
#line 1535 "cplus.met"
            CommTerm();
#line 1535 "cplus.met"
#line 1535 "cplus.met"
            {
#line 1535 "cplus.met"
                PPTREE _ptTree0;
#line 1535 "cplus.met"
                {
#line 1535 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1535 "cplus.met"
                    _ptRes1= MakeTree(PROTECT, 2);
#line 1535 "cplus.met"
                    ReplaceTree(_ptRes1, 1, MakeString ("private"));
#line 1535 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(base_specifier_elem)(error_free), 13, cplus))== (PPTREE) -1 ) {
#line 1535 "cplus.met"
                        PROG_EXIT(base_specifier_elem_exit,"base_specifier_elem")
#line 1535 "cplus.met"
                    }
#line 1535 "cplus.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 1535 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1535 "cplus.met"
                }
#line 1535 "cplus.met"
                _retValue =_ptTree0;
#line 1535 "cplus.met"
                goto base_specifier_elem_ret;
#line 1535 "cplus.met"
            }
#line 1535 "cplus.met"
            break;
#line 1535 "cplus.met"
#line 1537 "cplus.met"
        case PROTECTED : 
#line 1537 "cplus.met"
            tokenAhead = 0 ;
#line 1537 "cplus.met"
            CommTerm();
#line 1537 "cplus.met"
#line 1537 "cplus.met"
            {
#line 1537 "cplus.met"
                PPTREE _ptTree0;
#line 1537 "cplus.met"
                {
#line 1537 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1537 "cplus.met"
                    _ptRes1= MakeTree(PROTECT, 2);
#line 1537 "cplus.met"
                    ReplaceTree(_ptRes1, 1, MakeString ("protected"));
#line 1537 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(base_specifier_elem)(error_free), 13, cplus))== (PPTREE) -1 ) {
#line 1537 "cplus.met"
                        PROG_EXIT(base_specifier_elem_exit,"base_specifier_elem")
#line 1537 "cplus.met"
                    }
#line 1537 "cplus.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 1537 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1537 "cplus.met"
                }
#line 1537 "cplus.met"
                _retValue =_ptTree0;
#line 1537 "cplus.met"
                goto base_specifier_elem_ret;
#line 1537 "cplus.met"
            }
#line 1537 "cplus.met"
            break;
#line 1537 "cplus.met"
#line 1539 "cplus.met"
        case PUBLIC : 
#line 1539 "cplus.met"
            tokenAhead = 0 ;
#line 1539 "cplus.met"
            CommTerm();
#line 1539 "cplus.met"
#line 1539 "cplus.met"
            {
#line 1539 "cplus.met"
                PPTREE _ptTree0;
#line 1539 "cplus.met"
                {
#line 1539 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1539 "cplus.met"
                    _ptRes1= MakeTree(PROTECT, 2);
#line 1539 "cplus.met"
                    ReplaceTree(_ptRes1, 1, MakeString ("public"));
#line 1539 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(base_specifier_elem)(error_free), 13, cplus))== (PPTREE) -1 ) {
#line 1539 "cplus.met"
                        PROG_EXIT(base_specifier_elem_exit,"base_specifier_elem")
#line 1539 "cplus.met"
                    }
#line 1539 "cplus.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 1539 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1539 "cplus.met"
                }
#line 1539 "cplus.met"
                _retValue =_ptTree0;
#line 1539 "cplus.met"
                goto base_specifier_elem_ret;
#line 1539 "cplus.met"
            }
#line 1539 "cplus.met"
            break;
#line 1539 "cplus.met"
#line 1541 "cplus.met"
        case VIRTUAL : 
#line 1541 "cplus.met"
            tokenAhead = 0 ;
#line 1541 "cplus.met"
            CommTerm();
#line 1541 "cplus.met"
#line 1541 "cplus.met"
            {
#line 1541 "cplus.met"
                PPTREE _ptTree0;
#line 1541 "cplus.met"
                {
#line 1541 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1541 "cplus.met"
                    _ptRes1= MakeTree(PROTECT, 2);
#line 1541 "cplus.met"
                    ReplaceTree(_ptRes1, 1, MakeString ("virtual"));
#line 1541 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(base_specifier_elem)(error_free), 13, cplus))== (PPTREE) -1 ) {
#line 1541 "cplus.met"
                        PROG_EXIT(base_specifier_elem_exit,"base_specifier_elem")
#line 1541 "cplus.met"
                    }
#line 1541 "cplus.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 1541 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1541 "cplus.met"
                }
#line 1541 "cplus.met"
                _retValue =_ptTree0;
#line 1541 "cplus.met"
                goto base_specifier_elem_ret;
#line 1541 "cplus.met"
            }
#line 1541 "cplus.met"
            break;
#line 1541 "cplus.met"
#line 1541 "cplus.met"
        default : 
#line 1541 "cplus.met"
#line 1541 "cplus.met"
            break;
#line 1541 "cplus.met"
    }
#line 1541 "cplus.met"
#line 1545 "cplus.met"
    if ( (ret=NQUICK_CALL(_Tak(complete_class_name)(error_free), 21, cplus))== (PPTREE) -1 ) {
#line 1545 "cplus.met"
        PROG_EXIT(base_specifier_elem_exit,"base_specifier_elem")
#line 1545 "cplus.met"
    }
#line 1545 "cplus.met"
#line 1546 "cplus.met"
    {
#line 1546 "cplus.met"
        _retValue = ret ;
#line 1546 "cplus.met"
        goto base_specifier_elem_ret;
#line 1546 "cplus.met"
        
#line 1546 "cplus.met"
    }
#line 1546 "cplus.met"
#line 1547 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1547 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1547 "cplus.met"
return((PPTREE) 0);
#line 1547 "cplus.met"

#line 1547 "cplus.met"
base_specifier_elem_exit :
#line 1547 "cplus.met"

#line 1547 "cplus.met"
    {
#line 1547 "cplus.met"
        MulFreeTree(1,ret);
#line 1547 "cplus.met"
    }
#line 1547 "cplus.met"
    _Debug = TRACE_RULE("base_specifier_elem",TRACE_EXIT,(PPTREE)0);
#line 1547 "cplus.met"
    _funcLevel--;
#line 1547 "cplus.met"
    return((PPTREE) -1) ;
#line 1547 "cplus.met"

#line 1547 "cplus.met"
base_specifier_elem_ret :
#line 1547 "cplus.met"
    
#line 1547 "cplus.met"
    _Debug = TRACE_RULE("base_specifier_elem",TRACE_RETURN,_retValue);
#line 1547 "cplus.met"
    (tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1547 "cplus.met"
    if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,_retValue,lastTree); else {_lastTree=_retValue;_funcLevel--;}
#line 1547 "cplus.met"
    return _retValue ;
#line 1547 "cplus.met"
}
#line 1547 "cplus.met"

#line 1547 "cplus.met"
#line 2146 "cplus.met"
PPTREE cplus::bit_field_decl ( int error_free)
#line 2146 "cplus.met"
{
#line 2146 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2146 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2146 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2146 "cplus.met"
    int _Debug = TRACE_RULE("bit_field_decl",TRACE_ENTER,(PPTREE)0);
#line 2146 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2146 "cplus.met"
#line 2146 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 2146 "cplus.met"
#line 2148 "cplus.met"
    {
#line 2148 "cplus.met"
        PPTREE _ptTree0,_ptRes0;
#line 2148 "cplus.met"
        _ptRes0= MakeTree(TYP_BIT, 2);
#line 2148 "cplus.met"
        {
#line 2148 "cplus.met"
            PPTREE _ptTree1,_ptRes1;
#line 2148 "cplus.met"
            _ptRes1= MakeTree(IDENT, 1);
#line 2148 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2148 "cplus.met"
            if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 2148 "cplus.met"
                TOKEN_EXIT(bit_field_decl_exit,"IDENT")
#line 2148 "cplus.met"
            ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2148 "cplus.met"
            _ptTree0=_ptRes1;
#line 2148 "cplus.met"
        }
#line 2148 "cplus.met"
        ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2148 "cplus.met"
        retTree=_ptRes0;
#line 2148 "cplus.met"
    }
#line 2148 "cplus.met"
#line 2149 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2149 "cplus.met"
    if (  !SEE_TOKEN( DPOI,":") || !(CommTerm(),1)) 
#line 2149 "cplus.met"
        TOKEN_EXIT(bit_field_decl_exit,":")
#line 2149 "cplus.met"
#line 2150 "cplus.met"
    {
#line 2150 "cplus.met"
        PPTREE _ptTree0;
#line 2150 "cplus.met"
        {
#line 2150 "cplus.met"
            PPTREE _ptTree1;
#line 2150 "cplus.met"
            if ( (_ptTree1=NQUICK_CALL(_Tak(assignment_expression)(error_free), 11, cplus))== (PPTREE) -1 ) {
#line 2150 "cplus.met"
                PROG_EXIT(bit_field_decl_exit,"bit_field_decl")
#line 2150 "cplus.met"
            }
#line 2150 "cplus.met"
            _ptTree0=ReplaceTree(retTree , 2 , _ptTree1);
#line 2150 "cplus.met"
        }
#line 2150 "cplus.met"
        _retValue =_ptTree0;
#line 2150 "cplus.met"
        goto bit_field_decl_ret;
#line 2150 "cplus.met"
    }
#line 2150 "cplus.met"
#line 2151 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2151 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2151 "cplus.met"
return((PPTREE) 0);
#line 2151 "cplus.met"

#line 2151 "cplus.met"
bit_field_decl_exit :
#line 2151 "cplus.met"

#line 2151 "cplus.met"
    {
#line 2151 "cplus.met"
        MulFreeTree(1,retTree);
#line 2151 "cplus.met"
    }
#line 2151 "cplus.met"
    _Debug = TRACE_RULE("bit_field_decl",TRACE_EXIT,(PPTREE)0);
#line 2151 "cplus.met"
    _funcLevel--;
#line 2151 "cplus.met"
    return((PPTREE) -1) ;
#line 2151 "cplus.met"

#line 2151 "cplus.met"
bit_field_decl_ret :
#line 2151 "cplus.met"
    
#line 2151 "cplus.met"
    _Debug = TRACE_RULE("bit_field_decl",TRACE_RETURN,_retValue);
#line 2151 "cplus.met"
    (tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2151 "cplus.met"
    if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,_retValue,lastTree); else {_lastTree=_retValue;_funcLevel--;}
#line 2151 "cplus.met"
    return _retValue ;
#line 2151 "cplus.met"
}
#line 2151 "cplus.met"

#line 2151 "cplus.met"
#line 2337 "cplus.met"
PPTREE cplus::cast_expression ( int error_free)
#line 2337 "cplus.met"
{
#line 2337 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2337 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2337 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2337 "cplus.met"
    int _Debug = TRACE_RULE("cast_expression",TRACE_ENTER,(PPTREE)0);
#line 2337 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2337 "cplus.met"
#line 2337 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 2337 "cplus.met"
#line 2339 "cplus.met"
    if (NPUSH_CALL_AFF_VERIF(retTree = ,_Tak(cast_expression_value), 16, cplus)){
#line 2339 "cplus.met"
#line 2340 "cplus.met"
        {
#line 2340 "cplus.met"
            _retValue = retTree ;
#line 2340 "cplus.met"
            goto cast_expression_ret;
#line 2340 "cplus.met"
            
#line 2340 "cplus.met"
        }
#line 2340 "cplus.met"
    } else {
#line 2340 "cplus.met"
#line 2342 "cplus.met"
        {
#line 2342 "cplus.met"
            PPTREE _ptTree0;
#line 2342 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(unary_expression)(error_free), 122, cplus))== (PPTREE) -1 ) {
#line 2342 "cplus.met"
                PROG_EXIT(cast_expression_exit,"cast_expression")
#line 2342 "cplus.met"
            }
#line 2342 "cplus.met"
            _retValue =_ptTree0;
#line 2342 "cplus.met"
            goto cast_expression_ret;
#line 2342 "cplus.met"
        }
#line 2342 "cplus.met"
    }
#line 2342 "cplus.met"
#line 2343 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2343 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2343 "cplus.met"
return((PPTREE) 0);
#line 2343 "cplus.met"

#line 2343 "cplus.met"
cast_expression_exit :
#line 2343 "cplus.met"

#line 2343 "cplus.met"
    {
#line 2343 "cplus.met"
        MulFreeTree(1,retTree);
#line 2343 "cplus.met"
    }
#line 2343 "cplus.met"
    _Debug = TRACE_RULE("cast_expression",TRACE_EXIT,(PPTREE)0);
#line 2343 "cplus.met"
    _funcLevel--;
#line 2343 "cplus.met"
    return((PPTREE) -1) ;
#line 2343 "cplus.met"

#line 2343 "cplus.met"
cast_expression_ret :
#line 2343 "cplus.met"
    
#line 2343 "cplus.met"
    _Debug = TRACE_RULE("cast_expression",TRACE_RETURN,_retValue);
#line 2343 "cplus.met"
    (tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2343 "cplus.met"
    if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,_retValue,lastTree); else {_lastTree=_retValue;_funcLevel--;}
#line 2343 "cplus.met"
    return _retValue ;
#line 2343 "cplus.met"
}
#line 2343 "cplus.met"

#line 2343 "cplus.met"
#line 2329 "cplus.met"
PPTREE cplus::cast_expression_value ( int error_free)
#line 2329 "cplus.met"
{
#line 2329 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2329 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2329 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2329 "cplus.met"
    int _Debug = TRACE_RULE("cast_expression_value",TRACE_ENTER,(PPTREE)0);
#line 2329 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2329 "cplus.met"
#line 2329 "cplus.met"
    PPTREE ret = (PPTREE) 0;
#line 2329 "cplus.met"
#line 2331 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2331 "cplus.met"
    if (  !SEE_TOKEN( POUV,"(") || !(CommTerm(),1)) 
#line 2331 "cplus.met"
        TOKEN_EXIT(cast_expression_value_exit,"(")
#line 2331 "cplus.met"
#line 2332 "cplus.met"
    if ( (ret=NQUICK_CALL(_Tak(type_name)(error_free), 118, cplus))== (PPTREE) -1 ) {
#line 2332 "cplus.met"
        PROG_EXIT(cast_expression_value_exit,"cast_expression_value")
#line 2332 "cplus.met"
    }
#line 2332 "cplus.met"
#line 2333 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2333 "cplus.met"
    if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 2333 "cplus.met"
        TOKEN_EXIT(cast_expression_value_exit,")")
#line 2333 "cplus.met"
#line 2334 "cplus.met"
    {
#line 2334 "cplus.met"
        PPTREE _ptTree0;
#line 2334 "cplus.met"
        {
#line 2334 "cplus.met"
            PPTREE _ptTree1,_ptRes1;
#line 2334 "cplus.met"
            _ptRes1= MakeTree(CAST, 2);
#line 2334 "cplus.met"
            ReplaceTree(_ptRes1, 1, ret );
#line 2334 "cplus.met"
            if ( (_ptTree1=NQUICK_CALL(_Tak(cast_expression)(error_free), 15, cplus))== (PPTREE) -1 ) {
#line 2334 "cplus.met"
                PROG_EXIT(cast_expression_value_exit,"cast_expression_value")
#line 2334 "cplus.met"
            }
#line 2334 "cplus.met"
            ReplaceTree(_ptRes1, 2, _ptTree1);
#line 2334 "cplus.met"
            _ptTree0=_ptRes1;
#line 2334 "cplus.met"
        }
#line 2334 "cplus.met"
        _retValue =_ptTree0;
#line 2334 "cplus.met"
        goto cast_expression_value_ret;
#line 2334 "cplus.met"
    }
#line 2334 "cplus.met"
#line 2335 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2335 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2335 "cplus.met"
return((PPTREE) 0);
#line 2335 "cplus.met"

#line 2335 "cplus.met"
cast_expression_value_exit :
#line 2335 "cplus.met"

#line 2335 "cplus.met"
    {
#line 2335 "cplus.met"
        MulFreeTree(1,ret);
#line 2335 "cplus.met"
    }
#line 2335 "cplus.met"
    _Debug = TRACE_RULE("cast_expression_value",TRACE_EXIT,(PPTREE)0);
#line 2335 "cplus.met"
    _funcLevel--;
#line 2335 "cplus.met"
    return((PPTREE) -1) ;
#line 2335 "cplus.met"

#line 2335 "cplus.met"
cast_expression_value_ret :
#line 2335 "cplus.met"
    
#line 2335 "cplus.met"
    _Debug = TRACE_RULE("cast_expression_value",TRACE_RETURN,_retValue);
#line 2335 "cplus.met"
    (tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2335 "cplus.met"
    if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,_retValue,lastTree); else {_lastTree=_retValue;_funcLevel--;}
#line 2335 "cplus.met"
    return _retValue ;
#line 2335 "cplus.met"
}
#line 2335 "cplus.met"

#line 2335 "cplus.met"
