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

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


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

#line 2524 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2524 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2524 "cplus.met"
    int _Debug = TRACE_RULE("string_list",TRACE_ENTER,(PPTREE)0);
#line 2524 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2524 "cplus.met"
#line 2524 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 2524 "cplus.met"
#line 2524 "cplus.met"
    PPTREE retTree = (PPTREE) 0,list = (PPTREE) 0;
#line 2524 "cplus.met"
#line 2526 "cplus.met"
    {
#line 2526 "cplus.met"
        PPTREE _ptTree0,_ptRes0;
#line 2526 "cplus.met"
        _ptRes0= MakeTree(STRING, 1);
#line 2526 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2526 "cplus.met"
        if ( ! TERM_OR_META(STRING,"STRING") || !(BUILD_TERM_META(_ptTree0))) 
#line 2526 "cplus.met"
            TOKEN_EXIT(string_list_exit,"STRING")
#line 2526 "cplus.met"
        ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2526 "cplus.met"
        retTree=_ptRes0;
#line 2526 "cplus.met"
    }
#line 2526 "cplus.met"
#line 2527 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( STRING,"STRING")){
#line 2527 "cplus.met"
#line 2528 "cplus.met"
#line 2529 "cplus.met"
        list =AddList(list ,retTree );
#line 2529 "cplus.met"
#line 2529 "cplus.met"
        _addlist1 = list ;
#line 2529 "cplus.met"
#line 2530 "cplus.met"
        while ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( STRING,"STRING")) { 
#line 2530 "cplus.met"
#line 2531 "cplus.met"
#line 2531 "cplus.met"
            {
#line 2531 "cplus.met"
                PPTREE _ptTree0;
#line 2531 "cplus.met"
                {
#line 2531 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2531 "cplus.met"
                    _ptRes1= MakeTree(STRING, 1);
#line 2531 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2531 "cplus.met"
                    if ( ! TERM_OR_META(STRING,"STRING") || !(BUILD_TERM_META(_ptTree1))) 
#line 2531 "cplus.met"
                        TOKEN_EXIT(string_list_exit,"STRING")
#line 2531 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2531 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2531 "cplus.met"
                }
#line 2531 "cplus.met"
                _addlist1 =AddList(_addlist1 , _ptTree0);
#line 2531 "cplus.met"
            }
#line 2531 "cplus.met"
#line 2531 "cplus.met"
            if (list){
#line 2531 "cplus.met"
#line 2531 "cplus.met"
                _addlist1 = SonTree (_addlist1 ,2 );
#line 2531 "cplus.met"
            } else {
#line 2531 "cplus.met"
#line 2531 "cplus.met"
                list = _addlist1 ;
#line 2531 "cplus.met"
            }
#line 2531 "cplus.met"
        } 
#line 2531 "cplus.met"
#line 2532 "cplus.met"
        {
#line 2532 "cplus.met"
            PPTREE _ptRes0;
#line 2532 "cplus.met"
            _ptRes0= MakeTree(STRING_LIST, 1);
#line 2532 "cplus.met"
            ReplaceTree(_ptRes0, 1, list );
#line 2532 "cplus.met"
            retTree=_ptRes0;
#line 2532 "cplus.met"
        }
#line 2532 "cplus.met"
#line 2533 "cplus.met"
    }
#line 2533 "cplus.met"
#line 2534 "cplus.met"
    {
#line 2534 "cplus.met"
        _retValue = retTree ;
#line 2534 "cplus.met"
        goto string_list_ret;
#line 2534 "cplus.met"
        
#line 2534 "cplus.met"
    }
#line 2534 "cplus.met"
#line 2535 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2535 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2535 "cplus.met"
return((PPTREE) 0);
#line 2535 "cplus.met"

#line 2535 "cplus.met"
string_list_exit :
#line 2535 "cplus.met"

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

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

#line 2535 "cplus.met"
#line 2978 "cplus.met"
PPTREE cplus::switch_elem ( int error_free)
#line 2978 "cplus.met"
{
#line 2978 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2978 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2978 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2978 "cplus.met"
    int _Debug = TRACE_RULE("switch_elem",TRACE_ENTER,(PPTREE)0);
#line 2978 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2978 "cplus.met"
#line 2978 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0,_addlist2 = (PPTREE) 0;
#line 2978 "cplus.met"
#line 2978 "cplus.met"
    PPTREE retTree = (PPTREE) 0,list = (PPTREE) 0,inter = (PPTREE) 0;
#line 2978 "cplus.met"
#line 2980 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2980 "cplus.met"
    switch( lexEl.Value) {
#line 2980 "cplus.met"
#line 2981 "cplus.met"
        case CASE : 
#line 2981 "cplus.met"
            tokenAhead = 0 ;
#line 2981 "cplus.met"
            CommTerm();
#line 2981 "cplus.met"
#line 2982 "cplus.met"
#line 2983 "cplus.met"
            {
#line 2983 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2983 "cplus.met"
                _ptRes0= MakeTree(CASE, 2);
#line 2983 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 2983 "cplus.met"
                    PROG_EXIT(switch_elem_exit,"switch_elem")
#line 2983 "cplus.met"
                }
#line 2983 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2983 "cplus.met"
                retTree=_ptRes0;
#line 2983 "cplus.met"
            }
#line 2983 "cplus.met"
#line 2984 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2984 "cplus.met"
            if (  !SEE_TOKEN( DPOI,":") || !(CommTerm(),1)) 
#line 2984 "cplus.met"
                TOKEN_EXIT(switch_elem_exit,":")
#line 2984 "cplus.met"
#line 2984 "cplus.met"
            _addlist1 = list ;
#line 2984 "cplus.met"
#line 2985 "cplus.met"
            while ((NPUSH_CALL_AFF_VERIF(inter = ,_Tak(statement), 112, cplus)) || 
#line 2985 "cplus.met"
                  (NPUSH_CALL_AFF_VERIF(inter = ,_Tak(stat_dir), 109, cplus))) { 
#line 2985 "cplus.met"
#line 2986 "cplus.met"
#line 2986 "cplus.met"
                _addlist1 =AddList(_addlist1 ,inter );
#line 2986 "cplus.met"
#line 2986 "cplus.met"
                if (list){
#line 2986 "cplus.met"
#line 2986 "cplus.met"
                    _addlist1 = SonTree (_addlist1 ,2 );
#line 2986 "cplus.met"
                } else {
#line 2986 "cplus.met"
#line 2986 "cplus.met"
                    list = _addlist1 ;
#line 2986 "cplus.met"
                }
#line 2986 "cplus.met"
            } 
#line 2986 "cplus.met"
#line 2987 "cplus.met"
            {
#line 2987 "cplus.met"
                PPTREE _ptTree0;
#line 2987 "cplus.met"
                _ptTree0=ReplaceTree(retTree ,2 ,list );
#line 2987 "cplus.met"
                _retValue =_ptTree0;
#line 2987 "cplus.met"
                goto switch_elem_ret;
#line 2987 "cplus.met"
            }
#line 2987 "cplus.met"
            break;
#line 2987 "cplus.met"
#line 2989 "cplus.met"
        case DEFAULT : 
#line 2989 "cplus.met"
            tokenAhead = 0 ;
#line 2989 "cplus.met"
            CommTerm();
#line 2989 "cplus.met"
#line 2990 "cplus.met"
#line 2991 "cplus.met"
            {
#line 2991 "cplus.met"
                PPTREE _ptRes0;
#line 2991 "cplus.met"
                _ptRes0= MakeTree(DEFAULT, 1);
#line 2991 "cplus.met"
                retTree=_ptRes0;
#line 2991 "cplus.met"
            }
#line 2991 "cplus.met"
#line 2992 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2992 "cplus.met"
            if (  !SEE_TOKEN( DPOI,":") || !(CommTerm(),1)) 
#line 2992 "cplus.met"
                TOKEN_EXIT(switch_elem_exit,":")
#line 2992 "cplus.met"
#line 2992 "cplus.met"
            _addlist2 = list ;
#line 2992 "cplus.met"
#line 2993 "cplus.met"
            while ((NPUSH_CALL_AFF_VERIF(inter = ,_Tak(statement), 112, cplus)) || 
#line 2993 "cplus.met"
                  (NPUSH_CALL_AFF_VERIF(inter = ,_Tak(stat_dir), 109, cplus))) { 
#line 2993 "cplus.met"
#line 2994 "cplus.met"
#line 2994 "cplus.met"
                _addlist2 =AddList(_addlist2 ,inter );
#line 2994 "cplus.met"
#line 2994 "cplus.met"
                if (list){
#line 2994 "cplus.met"
#line 2994 "cplus.met"
                    _addlist2 = SonTree (_addlist2 ,2 );
#line 2994 "cplus.met"
                } else {
#line 2994 "cplus.met"
#line 2994 "cplus.met"
                    list = _addlist2 ;
#line 2994 "cplus.met"
                }
#line 2994 "cplus.met"
            } 
#line 2994 "cplus.met"
#line 2995 "cplus.met"
            {
#line 2995 "cplus.met"
                PPTREE _ptTree0;
#line 2995 "cplus.met"
                _ptTree0=ReplaceTree(retTree ,1 ,list );
#line 2995 "cplus.met"
                _retValue =_ptTree0;
#line 2995 "cplus.met"
                goto switch_elem_ret;
#line 2995 "cplus.met"
            }
#line 2995 "cplus.met"
            break;
#line 2995 "cplus.met"
        default :
#line 2995 "cplus.met"
            CASE_EXIT(switch_elem_exit,"either case or default")
#line 2995 "cplus.met"
            break;
#line 2995 "cplus.met"
    }
#line 2995 "cplus.met"
#line 2998 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2998 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2998 "cplus.met"
return((PPTREE) 0);
#line 2998 "cplus.met"

#line 2998 "cplus.met"
switch_elem_exit :
#line 2998 "cplus.met"

#line 2998 "cplus.met"
    {
#line 2998 "cplus.met"
        MulFreeTree(5,inter,list,retTree,_addlist2,_addlist1);
#line 2998 "cplus.met"
    }
#line 2998 "cplus.met"
    _Debug = TRACE_RULE("switch_elem",TRACE_EXIT,(PPTREE)0);
#line 2998 "cplus.met"
    _funcLevel--;
#line 2998 "cplus.met"
    return((PPTREE) -1) ;
#line 2998 "cplus.met"

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

#line 2998 "cplus.met"
#line 3000 "cplus.met"
PPTREE cplus::switch_list ( int error_free)
#line 3000 "cplus.met"
{
#line 3000 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 3000 "cplus.met"
    int _value,_nbPre = 0 ;
#line 3000 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 3000 "cplus.met"
    int _Debug = TRACE_RULE("switch_list",TRACE_ENTER,(PPTREE)0);
#line 3000 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 3000 "cplus.met"
#line 3000 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 3000 "cplus.met"
#line 3000 "cplus.met"
    PPTREE list = (PPTREE) 0,retTree = (PPTREE) 0;
#line 3000 "cplus.met"
#line 3002 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 3002 "cplus.met"
    if (  !SEE_TOKEN( AOUV,"{") || !(CommTerm(),1)) 
#line 3002 "cplus.met"
        TOKEN_EXIT(switch_list_exit,"{")
#line 3002 "cplus.met"
#line 3002 "cplus.met"
    _addlist1 = list ;
#line 3002 "cplus.met"
#line 3003 "cplus.met"
    while (NPUSH_CALL_AFF_VERIF(retTree = ,_Tak(switch_elem), 114, cplus)) { 
#line 3003 "cplus.met"
#line 3004 "cplus.met"
#line 3004 "cplus.met"
        _addlist1 =AddList(_addlist1 ,retTree );
#line 3004 "cplus.met"
#line 3004 "cplus.met"
        if (list){
#line 3004 "cplus.met"
#line 3004 "cplus.met"
            _addlist1 = SonTree (_addlist1 ,2 );
#line 3004 "cplus.met"
        } else {
#line 3004 "cplus.met"
#line 3004 "cplus.met"
            list = _addlist1 ;
#line 3004 "cplus.met"
        }
#line 3004 "cplus.met"
    } 
#line 3004 "cplus.met"
#line 3005 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 3005 "cplus.met"
    if (  !SEE_TOKEN( AFER,"}") || !(CommTerm(),1)) 
#line 3005 "cplus.met"
        TOKEN_EXIT(switch_list_exit,"}")
#line 3005 "cplus.met"
#line 3006 "cplus.met"
    {
#line 3006 "cplus.met"
        _retValue = list ;
#line 3006 "cplus.met"
        goto switch_list_ret;
#line 3006 "cplus.met"
        
#line 3006 "cplus.met"
    }
#line 3006 "cplus.met"
#line 3007 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 3007 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 3007 "cplus.met"
return((PPTREE) 0);
#line 3007 "cplus.met"

#line 3007 "cplus.met"
switch_list_exit :
#line 3007 "cplus.met"

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

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

#line 3007 "cplus.met"
#line 2733 "cplus.met"
PPTREE cplus::type_and_declarator ( int error_free)
#line 2733 "cplus.met"
{
#line 2733 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2733 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2733 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2733 "cplus.met"
    int _Debug = TRACE_RULE("type_and_declarator",TRACE_ENTER,(PPTREE)0);
#line 2733 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2733 "cplus.met"
#line 2733 "cplus.met"
    PPTREE funcTree = (PPTREE) 0;
#line 2733 "cplus.met"
#line 2735 "cplus.met"
    {
#line 2735 "cplus.met"
        PPTREE _ptTree0,_ptRes0;
#line 2735 "cplus.met"
        _ptRes0= MakeTree(FUNC, 8);
#line 2735 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(sc_specifier)(error_free), 103, cplus))== (PPTREE) -1 ) {
#line 2735 "cplus.met"
            PROG_EXIT(type_and_declarator_exit,"type_and_declarator")
#line 2735 "cplus.met"
        }
#line 2735 "cplus.met"
        ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2735 "cplus.met"
        funcTree=_ptRes0;
#line 2735 "cplus.met"
    }
#line 2735 "cplus.met"
#line 2736 "cplus.met"
    {
#line 2736 "cplus.met"
        PPTREE _ptTree0;
#line 2736 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(type_specifier)(error_free), 119, cplus))== (PPTREE) -1 ) {
#line 2736 "cplus.met"
            PROG_EXIT(type_and_declarator_exit,"type_and_declarator")
#line 2736 "cplus.met"
        }
#line 2736 "cplus.met"
        ReplaceTree(funcTree , 2 , _ptTree0);
#line 2736 "cplus.met"
    }
#line 2736 "cplus.met"
#line 2737 "cplus.met"
    {
#line 2737 "cplus.met"
        PPTREE _ptTree0;
#line 2737 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(func_declarator)(error_free), 59, cplus))== (PPTREE) -1 ) {
#line 2737 "cplus.met"
            PROG_EXIT(type_and_declarator_exit,"type_and_declarator")
#line 2737 "cplus.met"
        }
#line 2737 "cplus.met"
        ReplaceTree(funcTree , 3 , _ptTree0);
#line 2737 "cplus.met"
    }
#line 2737 "cplus.met"
#line 2738 "cplus.met"
    {
#line 2738 "cplus.met"
        _retValue = funcTree ;
#line 2738 "cplus.met"
        goto type_and_declarator_ret;
#line 2738 "cplus.met"
        
#line 2738 "cplus.met"
    }
#line 2738 "cplus.met"
#line 2739 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2739 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2739 "cplus.met"
return((PPTREE) 0);
#line 2739 "cplus.met"

#line 2739 "cplus.met"
type_and_declarator_exit :
#line 2739 "cplus.met"

#line 2739 "cplus.met"
    {
#line 2739 "cplus.met"
        MulFreeTree(1,funcTree);
#line 2739 "cplus.met"
    }
#line 2739 "cplus.met"
    _Debug = TRACE_RULE("type_and_declarator",TRACE_EXIT,(PPTREE)0);
#line 2739 "cplus.met"
    _funcLevel--;
#line 2739 "cplus.met"
    return((PPTREE) -1) ;
#line 2739 "cplus.met"

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

#line 2739 "cplus.met"
#line 2674 "cplus.met"
PPTREE cplus::type_descr ( int error_free)
#line 2674 "cplus.met"
{
#line 2674 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2674 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2674 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2674 "cplus.met"
    int _Debug = TRACE_RULE("type_descr",TRACE_ENTER,(PPTREE)0);
#line 2674 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2674 "cplus.met"
#line 2675 "cplus.met"
    {
#line 2675 "cplus.met"
        PPTREE _ptTree0;
#line 2675 "cplus.met"
        {
#line 2675 "cplus.met"
            PPTREE _ptTree1,_ptRes1;
#line 2675 "cplus.met"
            _ptRes1= MakeTree(IDENT, 1);
#line 2675 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2675 "cplus.met"
            if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 2675 "cplus.met"
                TOKEN_EXIT(type_descr_exit,"IDENT")
#line 2675 "cplus.met"
            ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2675 "cplus.met"
            _ptTree0=_ptRes1;
#line 2675 "cplus.met"
        }
#line 2675 "cplus.met"
        _retValue =_ptTree0;
#line 2675 "cplus.met"
        goto type_descr_ret;
#line 2675 "cplus.met"
    }
#line 2675 "cplus.met"
#line 2676 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2676 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2676 "cplus.met"
return((PPTREE) 0);
#line 2676 "cplus.met"

#line 2676 "cplus.met"
type_descr_exit :
#line 2676 "cplus.met"

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

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

#line 2676 "cplus.met"
#line 2126 "cplus.met"
PPTREE cplus::type_name ( int error_free)
#line 2126 "cplus.met"
{
#line 2126 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2126 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2126 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2126 "cplus.met"
    int _Debug = TRACE_RULE("type_name",TRACE_ENTER,(PPTREE)0);
#line 2126 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2126 "cplus.met"
#line 2126 "cplus.met"
    PPTREE retTree = (PPTREE) 0,valTree = (PPTREE) 0;
#line 2126 "cplus.met"
#line 2128 "cplus.met"
    if ( (retTree=NQUICK_CALL(_Tak(type_specifier)(error_free), 119, cplus))== (PPTREE) -1 ) {
#line 2128 "cplus.met"
        PROG_EXIT(type_name_exit,"type_name")
#line 2128 "cplus.met"
    }
#line 2128 "cplus.met"
#line 2129 "cplus.met"
    if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(abstract_declarator), 1, cplus)){
#line 2129 "cplus.met"
#line 2130 "cplus.met"
        {
#line 2130 "cplus.met"
            PPTREE _ptRes0;
#line 2130 "cplus.met"
            _ptRes0= MakeTree(ABST_DECLARATOR, 2);
#line 2130 "cplus.met"
            ReplaceTree(_ptRes0, 1, retTree );
#line 2130 "cplus.met"
            ReplaceTree(_ptRes0, 2, valTree );
#line 2130 "cplus.met"
            valTree=_ptRes0;
#line 2130 "cplus.met"
        }
#line 2130 "cplus.met"
    } else {
#line 2130 "cplus.met"
#line 2132 "cplus.met"
        valTree = retTree ;
#line 2132 "cplus.met"
    }
#line 2132 "cplus.met"
#line 2133 "cplus.met"
    {
#line 2133 "cplus.met"
        _retValue = valTree ;
#line 2133 "cplus.met"
        goto type_name_ret;
#line 2133 "cplus.met"
        
#line 2133 "cplus.met"
    }
#line 2133 "cplus.met"
#line 2134 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2134 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2134 "cplus.met"
return((PPTREE) 0);
#line 2134 "cplus.met"

#line 2134 "cplus.met"
type_name_exit :
#line 2134 "cplus.met"

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

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

#line 2134 "cplus.met"
#line 1444 "cplus.met"
PPTREE cplus::type_specifier ( int error_free)
#line 1444 "cplus.met"
{
#line 1444 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1444 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1444 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1444 "cplus.met"
    int _Debug = TRACE_RULE("type_specifier",TRACE_ENTER,(PPTREE)0);
#line 1444 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1444 "cplus.met"
#line 1444 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 1444 "cplus.met"
#line 1444 "cplus.met"
    PPTREE ret = (PPTREE) 0,listParam = (PPTREE) 0,exp = (PPTREE) 0;
#line 1444 "cplus.met"
#line 1446 "cplus.met"
    if ( (ret=NQUICK_CALL(_Tak(type_specifier_without_param)(error_free), 120, cplus))== (PPTREE) -1 ) {
#line 1446 "cplus.met"
        PROG_EXIT(type_specifier_exit,"type_specifier")
#line 1446 "cplus.met"
    }
#line 1446 "cplus.met"
#line 1447 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(INFE,"<") && (tokenAhead = 0,CommTerm(),1)){
#line 1447 "cplus.met"
#line 1448 "cplus.met"
#line 1448 "cplus.met"
        _addlist1 = listParam ;
#line 1448 "cplus.met"
#line 1449 "cplus.met"
        do {
#line 1449 "cplus.met"
#line 1450 "cplus.met"
            if (! (NPUSH_CALL_AFF_VERIF(exp = ,_Tak(additive_expression), 2, cplus))){
#line 1450 "cplus.met"
#line 1451 "cplus.met"
                if ( (exp=NQUICK_CALL(_Tak(type_name)(error_free), 118, cplus))== (PPTREE) -1 ) {
#line 1451 "cplus.met"
                    PROG_EXIT(type_specifier_exit,"type_specifier")
#line 1451 "cplus.met"
                }
#line 1451 "cplus.met"
            }
#line 1451 "cplus.met"
#line 1452 "cplus.met"
            _addlist1 =AddList(_addlist1 ,exp );
#line 1452 "cplus.met"
#line 1452 "cplus.met"
            if (listParam){
#line 1452 "cplus.met"
#line 1452 "cplus.met"
                _addlist1 = SonTree (_addlist1 ,2 );
#line 1452 "cplus.met"
            } else {
#line 1452 "cplus.met"
#line 1452 "cplus.met"
                listParam = _addlist1 ;
#line 1452 "cplus.met"
            }
#line 1452 "cplus.met"
#line 1453 "cplus.met"
        } while ( !(! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(VIRG,",") && (tokenAhead = 0,CommTerm(),1)))) ;
#line 1453 "cplus.met"
#line 1454 "cplus.met"
        {
#line 1454 "cplus.met"
            PPTREE _ptRes0;
#line 1454 "cplus.met"
            _ptRes0= MakeTree(PARAM_TYPE, 2);
#line 1454 "cplus.met"
            ReplaceTree(_ptRes0, 1, ret );
#line 1454 "cplus.met"
            ReplaceTree(_ptRes0, 2, listParam );
#line 1454 "cplus.met"
            ret=_ptRes0;
#line 1454 "cplus.met"
        }
#line 1454 "cplus.met"
#line 1455 "cplus.met"
    }
#line 1455 "cplus.met"
#line 1456 "cplus.met"
    {
#line 1456 "cplus.met"
        _retValue = ret ;
#line 1456 "cplus.met"
        goto type_specifier_ret;
#line 1456 "cplus.met"
        
#line 1456 "cplus.met"
    }
#line 1456 "cplus.met"
#line 1457 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1457 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1457 "cplus.met"
return((PPTREE) 0);
#line 1457 "cplus.met"

#line 1457 "cplus.met"
type_specifier_exit :
#line 1457 "cplus.met"

#line 1457 "cplus.met"
    {
#line 1457 "cplus.met"
        MulFreeTree(4,exp,listParam,ret,_addlist1);
#line 1457 "cplus.met"
    }
#line 1457 "cplus.met"
    _Debug = TRACE_RULE("type_specifier",TRACE_EXIT,(PPTREE)0);
#line 1457 "cplus.met"
    _funcLevel--;
#line 1457 "cplus.met"
    return((PPTREE) -1) ;
#line 1457 "cplus.met"

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

#line 1457 "cplus.met"
#line 1415 "cplus.met"
PPTREE cplus::type_specifier_without_param ( int error_free)
#line 1415 "cplus.met"
{
#line 1415 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1415 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1415 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1415 "cplus.met"
    int _Debug = TRACE_RULE("type_specifier_without_param",TRACE_ENTER,(PPTREE)0);
#line 1415 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1415 "cplus.met"
#line 1415 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 1415 "cplus.met"
#line 1415 "cplus.met"
    PPTREE retTree = (PPTREE) 0,valTree = (PPTREE) 0,list = (PPTREE) 0,valTreeR = (PPTREE) 0;
#line 1415 "cplus.met"
#line 1417 "cplus.met"
    if (NPUSH_CALL_AFF_VERIF(valTreeR = ,_Tak(range_modifier), 98, cplus)){
#line 1417 "cplus.met"
#line 1418 "cplus.met"
        {
#line 1418 "cplus.met"
            PPTREE _ptTree0;
#line 1418 "cplus.met"
            {
#line 1418 "cplus.met"
                PPTREE _ptTree1;
#line 1418 "cplus.met"
                if ( (_ptTree1=NQUICK_CALL(_Tak(type_specifier)(error_free), 119, cplus))== (PPTREE) -1 ) {
#line 1418 "cplus.met"
                    PROG_EXIT(type_specifier_without_param_exit,"type_specifier_without_param")
#line 1418 "cplus.met"
                }
#line 1418 "cplus.met"
                _ptTree0=ReplaceTree(valTreeR , 2 , _ptTree1);
#line 1418 "cplus.met"
            }
#line 1418 "cplus.met"
            _retValue =_ptTree0;
#line 1418 "cplus.met"
            goto type_specifier_without_param_ret;
#line 1418 "cplus.met"
        }
#line 1418 "cplus.met"
    }
#line 1418 "cplus.met"
#line 1419 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1419 "cplus.met"
    switch( lexEl.Value) {
#line 1419 "cplus.met"
#line 1420 "cplus.met"
        case ENUM : 
#line 1420 "cplus.met"
            tokenAhead = 0 ;
#line 1420 "cplus.met"
            CommTerm();
#line 1420 "cplus.met"
#line 1421 "cplus.met"
#line 1422 "cplus.met"
            if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( IDENT,"IDENT")){
#line 1422 "cplus.met"
#line 1423 "cplus.met"
                {
#line 1423 "cplus.met"
                    PPTREE _ptTree0,_ptRes0;
#line 1423 "cplus.met"
                    _ptRes0= MakeTree(ENUM, 2);
#line 1423 "cplus.met"
                    {
#line 1423 "cplus.met"
                        PPTREE _ptTree1,_ptRes1;
#line 1423 "cplus.met"
                        _ptRes1= MakeTree(IDENT, 1);
#line 1423 "cplus.met"
                        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1423 "cplus.met"
                        if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 1423 "cplus.met"
                            TOKEN_EXIT(type_specifier_without_param_exit,"IDENT")
#line 1423 "cplus.met"
                        ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1423 "cplus.met"
                        _ptTree0=_ptRes1;
#line 1423 "cplus.met"
                    }
#line 1423 "cplus.met"
                    ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1423 "cplus.met"
                    retTree=_ptRes0;
#line 1423 "cplus.met"
                }
#line 1423 "cplus.met"
            } else {
#line 1423 "cplus.met"
#line 1425 "cplus.met"
                {
#line 1425 "cplus.met"
                    PPTREE _ptRes0;
#line 1425 "cplus.met"
                    _ptRes0= MakeTree(ENUM, 2);
#line 1425 "cplus.met"
                    retTree=_ptRes0;
#line 1425 "cplus.met"
                }
#line 1425 "cplus.met"
            }
#line 1425 "cplus.met"
#line 1426 "cplus.met"
            if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(AOUV,"{") && (tokenAhead = 0,CommTerm(),1)){
#line 1426 "cplus.met"
#line 1427 "cplus.met"
#line 1427 "cplus.met"
                _addlist1 = list ;
#line 1427 "cplus.met"
#line 1428 "cplus.met"
                do {
#line 1428 "cplus.met"
#line 1429 "cplus.met"
                    if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(enum_val), 42, cplus)){
#line 1429 "cplus.met"
#line 1430 "cplus.met"
#line 1430 "cplus.met"
                        _addlist1 =AddList(_addlist1 ,valTree );
#line 1430 "cplus.met"
#line 1430 "cplus.met"
                        if (list){
#line 1430 "cplus.met"
#line 1430 "cplus.met"
                            _addlist1 = SonTree (_addlist1 ,2 );
#line 1430 "cplus.met"
                        } else {
#line 1430 "cplus.met"
#line 1430 "cplus.met"
                            list = _addlist1 ;
#line 1430 "cplus.met"
                        }
#line 1430 "cplus.met"
                    }
#line 1430 "cplus.met"
#line 1431 "cplus.met"
                } while ( !(! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(VIRG,",") && (tokenAhead = 0,CommTerm(),1)))) ;
#line 1431 "cplus.met"
#line 1432 "cplus.met"
                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1432 "cplus.met"
                if (  !SEE_TOKEN( AFER,"}") || !(CommTerm(),1)) 
#line 1432 "cplus.met"
                    TOKEN_EXIT(type_specifier_without_param_exit,"}")
#line 1432 "cplus.met"
#line 1433 "cplus.met"
                ReplaceTree(retTree ,2 ,list );
#line 1433 "cplus.met"
#line 1434 "cplus.met"
            }
#line 1434 "cplus.met"
#line 1435 "cplus.met"
            {
#line 1435 "cplus.met"
                _retValue = retTree ;
#line 1435 "cplus.met"
                goto type_specifier_without_param_ret;
#line 1435 "cplus.met"
                
#line 1435 "cplus.met"
            }
#line 1435 "cplus.met"
            break;
#line 1435 "cplus.met"
#line 1437 "cplus.met"
        case STRUCT : 
#line 1437 "cplus.met"
#line 1437 "cplus.met"
            {
#line 1437 "cplus.met"
                PPTREE _ptTree0;
#line 1437 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(class_declaration)(error_free), 19, cplus))== (PPTREE) -1 ) {
#line 1437 "cplus.met"
                    PROG_EXIT(type_specifier_without_param_exit,"type_specifier_without_param")
#line 1437 "cplus.met"
                }
#line 1437 "cplus.met"
                _retValue =_ptTree0;
#line 1437 "cplus.met"
                goto type_specifier_without_param_ret;
#line 1437 "cplus.met"
            }
#line 1437 "cplus.met"
            break;
#line 1437 "cplus.met"
#line 1438 "cplus.met"
        case UNION : 
#line 1438 "cplus.met"
#line 1438 "cplus.met"
            {
#line 1438 "cplus.met"
                PPTREE _ptTree0;
#line 1438 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(class_declaration)(error_free), 19, cplus))== (PPTREE) -1 ) {
#line 1438 "cplus.met"
                    PROG_EXIT(type_specifier_without_param_exit,"type_specifier_without_param")
#line 1438 "cplus.met"
                }
#line 1438 "cplus.met"
                _retValue =_ptTree0;
#line 1438 "cplus.met"
                goto type_specifier_without_param_ret;
#line 1438 "cplus.met"
            }
#line 1438 "cplus.met"
            break;
#line 1438 "cplus.met"
#line 1439 "cplus.met"
        case CLASS : 
#line 1439 "cplus.met"
#line 1439 "cplus.met"
            {
#line 1439 "cplus.met"
                PPTREE _ptTree0;
#line 1439 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(class_declaration)(error_free), 19, cplus))== (PPTREE) -1 ) {
#line 1439 "cplus.met"
                    PROG_EXIT(type_specifier_without_param_exit,"type_specifier_without_param")
#line 1439 "cplus.met"
                }
#line 1439 "cplus.met"
                _retValue =_ptTree0;
#line 1439 "cplus.met"
                goto type_specifier_without_param_ret;
#line 1439 "cplus.met"
            }
#line 1439 "cplus.met"
            break;
#line 1439 "cplus.met"
#line 1440 "cplus.met"
        default : 
#line 1440 "cplus.met"
#line 1440 "cplus.met"
            {
#line 1440 "cplus.met"
                PPTREE _ptTree0;
#line 1440 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(simple_type)(error_free), 105, cplus))== (PPTREE) -1 ) {
#line 1440 "cplus.met"
                    PROG_EXIT(type_specifier_without_param_exit,"type_specifier_without_param")
#line 1440 "cplus.met"
                }
#line 1440 "cplus.met"
                _retValue =_ptTree0;
#line 1440 "cplus.met"
                goto type_specifier_without_param_ret;
#line 1440 "cplus.met"
            }
#line 1440 "cplus.met"
            break;
#line 1440 "cplus.met"
    }
#line 1440 "cplus.met"
#line 1442 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1442 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1442 "cplus.met"
return((PPTREE) 0);
#line 1442 "cplus.met"

#line 1442 "cplus.met"
type_specifier_without_param_exit :
#line 1442 "cplus.met"

#line 1442 "cplus.met"
    {
#line 1442 "cplus.met"
        MulFreeTree(5,valTreeR,list,valTree,retTree,_addlist1);
#line 1442 "cplus.met"
    }
#line 1442 "cplus.met"
    _Debug = TRACE_RULE("type_specifier_without_param",TRACE_EXIT,(PPTREE)0);
#line 1442 "cplus.met"
    _funcLevel--;
#line 1442 "cplus.met"
    return((PPTREE) -1) ;
#line 1442 "cplus.met"

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

#line 1442 "cplus.met"
#line 1301 "cplus.met"
PPTREE cplus::typedef_and_declarator ( int error_free)
#line 1301 "cplus.met"
{
#line 1301 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1301 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1301 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1301 "cplus.met"
    int _Debug = TRACE_RULE("typedef_and_declarator",TRACE_ENTER,(PPTREE)0);
#line 1301 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1301 "cplus.met"
#line 1301 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 1301 "cplus.met"
#line 1303 "cplus.met"
    {
#line 1303 "cplus.met"
        PPTREE _ptTree0,_ptRes0;
#line 1303 "cplus.met"
        _ptRes0= MakeTree(TYPEDEF, 2);
#line 1303 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(type_specifier)(error_free), 119, cplus))== (PPTREE) -1 ) {
#line 1303 "cplus.met"
            PROG_EXIT(typedef_and_declarator_exit,"typedef_and_declarator")
#line 1303 "cplus.met"
        }
#line 1303 "cplus.met"
        ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1303 "cplus.met"
        retTree=_ptRes0;
#line 1303 "cplus.met"
    }
#line 1303 "cplus.met"
#line 1304 "cplus.met"
    {
#line 1304 "cplus.met"
        PPTREE _ptTree0;
#line 1304 "cplus.met"
        {
#line 1304 "cplus.met"
            PPTREE _ptTree1;
#line 1304 "cplus.met"
            if ( (_ptTree1=NQUICK_CALL(_Tak(declarator_list)(error_free), 36, cplus))== (PPTREE) -1 ) {
#line 1304 "cplus.met"
                PROG_EXIT(typedef_and_declarator_exit,"typedef_and_declarator")
#line 1304 "cplus.met"
            }
#line 1304 "cplus.met"
            _ptTree0=ReplaceTree(retTree , 2 , _ptTree1);
#line 1304 "cplus.met"
        }
#line 1304 "cplus.met"
        _retValue =_ptTree0;
#line 1304 "cplus.met"
        goto typedef_and_declarator_ret;
#line 1304 "cplus.met"
    }
#line 1304 "cplus.met"
#line 1305 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1305 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1305 "cplus.met"
return((PPTREE) 0);
#line 1305 "cplus.met"

#line 1305 "cplus.met"
typedef_and_declarator_exit :
#line 1305 "cplus.met"

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

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

#line 1305 "cplus.met"
#line 2353 "cplus.met"
PPTREE cplus::unary_expression ( int error_free)
#line 2353 "cplus.met"
{
#line 2353 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2353 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2353 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2353 "cplus.met"
    int _Debug = TRACE_RULE("unary_expression",TRACE_ENTER,(PPTREE)0);
#line 2353 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2353 "cplus.met"
#line 2353 "cplus.met"
    PPTREE expTree = (PPTREE) 0,inter = (PPTREE) 0;
#line 2353 "cplus.met"
#line 2355 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2355 "cplus.met"
    switch( lexEl.Value) {
#line 2355 "cplus.met"
#line 2356 "cplus.met"
        case TIRE : 
#line 2356 "cplus.met"
            tokenAhead = 0 ;
#line 2356 "cplus.met"
            CommTerm();
#line 2356 "cplus.met"
#line 2356 "cplus.met"
            {
#line 2356 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2356 "cplus.met"
                _ptRes0= MakeTree(NEG, 1);
#line 2356 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(cast_expression)(error_free), 15, cplus))== (PPTREE) -1 ) {
#line 2356 "cplus.met"
                    PROG_EXIT(unary_expression_exit,"unary_expression")
#line 2356 "cplus.met"
                }
#line 2356 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2356 "cplus.met"
                expTree=_ptRes0;
#line 2356 "cplus.met"
            }
#line 2356 "cplus.met"
            break;
#line 2356 "cplus.met"
#line 2357 "cplus.met"
        case PLUS : 
#line 2357 "cplus.met"
            tokenAhead = 0 ;
#line 2357 "cplus.met"
            CommTerm();
#line 2357 "cplus.met"
#line 2357 "cplus.met"
            {
#line 2357 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2357 "cplus.met"
                _ptRes0= MakeTree(POS, 1);
#line 2357 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(cast_expression)(error_free), 15, cplus))== (PPTREE) -1 ) {
#line 2357 "cplus.met"
                    PROG_EXIT(unary_expression_exit,"unary_expression")
#line 2357 "cplus.met"
                }
#line 2357 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2357 "cplus.met"
                expTree=_ptRes0;
#line 2357 "cplus.met"
            }
#line 2357 "cplus.met"
            break;
#line 2357 "cplus.met"
#line 2358 "cplus.met"
        case TILD : 
#line 2358 "cplus.met"
            tokenAhead = 0 ;
#line 2358 "cplus.met"
            CommTerm();
#line 2358 "cplus.met"
#line 2358 "cplus.met"
            {
#line 2358 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2358 "cplus.met"
                _ptRes0= MakeTree(LNEG, 1);
#line 2358 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(cast_expression)(error_free), 15, cplus))== (PPTREE) -1 ) {
#line 2358 "cplus.met"
                    PROG_EXIT(unary_expression_exit,"unary_expression")
#line 2358 "cplus.met"
                }
#line 2358 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2358 "cplus.met"
                expTree=_ptRes0;
#line 2358 "cplus.met"
            }
#line 2358 "cplus.met"
            break;
#line 2358 "cplus.met"
#line 2359 "cplus.met"
        case EXCL : 
#line 2359 "cplus.met"
            tokenAhead = 0 ;
#line 2359 "cplus.met"
            CommTerm();
#line 2359 "cplus.met"
#line 2359 "cplus.met"
            {
#line 2359 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2359 "cplus.met"
                _ptRes0= MakeTree(NOT, 1);
#line 2359 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(cast_expression)(error_free), 15, cplus))== (PPTREE) -1 ) {
#line 2359 "cplus.met"
                    PROG_EXIT(unary_expression_exit,"unary_expression")
#line 2359 "cplus.met"
                }
#line 2359 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2359 "cplus.met"
                expTree=_ptRes0;
#line 2359 "cplus.met"
            }
#line 2359 "cplus.met"
            break;
#line 2359 "cplus.met"
#line 2360 "cplus.met"
        case ETOI : 
#line 2360 "cplus.met"
            tokenAhead = 0 ;
#line 2360 "cplus.met"
            CommTerm();
#line 2360 "cplus.met"
#line 2360 "cplus.met"
            {
#line 2360 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2360 "cplus.met"
                _ptRes0= MakeTree(POINT, 1);
#line 2360 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(cast_expression)(error_free), 15, cplus))== (PPTREE) -1 ) {
#line 2360 "cplus.met"
                    PROG_EXIT(unary_expression_exit,"unary_expression")
#line 2360 "cplus.met"
                }
#line 2360 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2360 "cplus.met"
                expTree=_ptRes0;
#line 2360 "cplus.met"
            }
#line 2360 "cplus.met"
            break;
#line 2360 "cplus.met"
#line 2361 "cplus.met"
        case ETCO : 
#line 2361 "cplus.met"
            tokenAhead = 0 ;
#line 2361 "cplus.met"
            CommTerm();
#line 2361 "cplus.met"
#line 2361 "cplus.met"
            {
#line 2361 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2361 "cplus.met"
                _ptRes0= MakeTree(ADDR, 1);
#line 2361 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(cast_expression)(error_free), 15, cplus))== (PPTREE) -1 ) {
#line 2361 "cplus.met"
                    PROG_EXIT(unary_expression_exit,"unary_expression")
#line 2361 "cplus.met"
                }
#line 2361 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2361 "cplus.met"
                expTree=_ptRes0;
#line 2361 "cplus.met"
            }
#line 2361 "cplus.met"
            break;
#line 2361 "cplus.met"
#line 2362 "cplus.met"
        case PLUSPLUS : 
#line 2362 "cplus.met"
            tokenAhead = 0 ;
#line 2362 "cplus.met"
            CommTerm();
#line 2362 "cplus.met"
#line 2362 "cplus.met"
            {
#line 2362 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2362 "cplus.met"
                _ptRes0= MakeTree(BINCR, 1);
#line 2362 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(cast_expression)(error_free), 15, cplus))== (PPTREE) -1 ) {
#line 2362 "cplus.met"
                    PROG_EXIT(unary_expression_exit,"unary_expression")
#line 2362 "cplus.met"
                }
#line 2362 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2362 "cplus.met"
                expTree=_ptRes0;
#line 2362 "cplus.met"
            }
#line 2362 "cplus.met"
            break;
#line 2362 "cplus.met"
#line 2363 "cplus.met"
        case TIRETIRE : 
#line 2363 "cplus.met"
            tokenAhead = 0 ;
#line 2363 "cplus.met"
            CommTerm();
#line 2363 "cplus.met"
#line 2363 "cplus.met"
            {
#line 2363 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2363 "cplus.met"
                _ptRes0= MakeTree(BDECR, 1);
#line 2363 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(cast_expression)(error_free), 15, cplus))== (PPTREE) -1 ) {
#line 2363 "cplus.met"
                    PROG_EXIT(unary_expression_exit,"unary_expression")
#line 2363 "cplus.met"
                }
#line 2363 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2363 "cplus.met"
                expTree=_ptRes0;
#line 2363 "cplus.met"
            }
#line 2363 "cplus.met"
            break;
#line 2363 "cplus.met"
#line 2364 "cplus.met"
        case SIZEOF : 
#line 2364 "cplus.met"
            tokenAhead = 0 ;
#line 2364 "cplus.met"
            CommTerm();
#line 2364 "cplus.met"
#line 2365 "cplus.met"
#line 2366 "cplus.met"
            if (! (NPUSH_CALL_AFF_VERIF(expTree = ,_Tak(sizeof_type), 107, cplus))){
#line 2366 "cplus.met"
#line 2367 "cplus.met"
#line 2368 "cplus.met"
                if ( (inter=NQUICK_CALL(_Tak(unary_expression)(error_free), 122, cplus))== (PPTREE) -1 ) {
#line 2368 "cplus.met"
                    PROG_EXIT(unary_expression_exit,"unary_expression")
#line 2368 "cplus.met"
                }
#line 2368 "cplus.met"
#line 2369 "cplus.met"
                                    /* on libere le chapeau : un EXP, sans liberer
#line 2369 "cplus.met"
                                        l'interieur */
#line 2369 "cplus.met"
                                    expTree = SonTree(inter,1);
#line 2369 "cplus.met"
                                    AddRef(expTree);
#line 2369 "cplus.met"
                                    FreeTreeRec(inter);
#line 2369 "cplus.met"
                                    RemRef(expTree);
#line 2369 "cplus.met"
                                
#line 2369 "cplus.met"
#line 2377 "cplus.met"
            }
#line 2377 "cplus.met"
#line 2378 "cplus.met"
            {
#line 2378 "cplus.met"
                PPTREE _ptTree0;
#line 2378 "cplus.met"
                {
#line 2378 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2378 "cplus.met"
                    _ptRes1= MakeTree(EXP_LIST, 2);
#line 2378 "cplus.met"
                    {
#line 2378 "cplus.met"
                        PPTREE _ptRes2;
#line 2378 "cplus.met"
                        _ptRes2= MakeTree(IDENT, 1);
#line 2378 "cplus.met"
                        ReplaceTree(_ptRes2, 1, MakeString ("sizeof"));
#line 2378 "cplus.met"
                        _ptTree1=_ptRes2;
#line 2378 "cplus.met"
                    }
#line 2378 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2378 "cplus.met"
                    ReplaceTree(_ptRes1, 2, expTree );
#line 2378 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2378 "cplus.met"
                }
#line 2378 "cplus.met"
                _retValue =_ptTree0;
#line 2378 "cplus.met"
                goto unary_expression_ret;
#line 2378 "cplus.met"
            }
#line 2378 "cplus.met"
            break;
#line 2378 "cplus.met"
#line 2381 "cplus.met"
        default : 
#line 2381 "cplus.met"
#line 2381 "cplus.met"
            if ((((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( DPOIDPOI,"::")) || 
#line 2381 "cplus.met"
                ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( NEW,"new"))) || 
#line 2381 "cplus.met"
               ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( DELETE,"delete"))){
#line 2381 "cplus.met"
#line 2382 "cplus.met"
#line 2383 "cplus.met"
                if (! (NPUSH_CALL_AFF_VERIF(expTree = ,_Tak(alloc_expression), 3, cplus))){
#line 2383 "cplus.met"
#line 2384 "cplus.met"
                    if ( (expTree=NQUICK_CALL(_Tak(postfix_expression)(error_free), 88, cplus))== (PPTREE) -1 ) {
#line 2384 "cplus.met"
                        PROG_EXIT(unary_expression_exit,"unary_expression")
#line 2384 "cplus.met"
                    }
#line 2384 "cplus.met"
                }
#line 2384 "cplus.met"
#line 2385 "cplus.met"
            } else {
#line 2385 "cplus.met"
#line 2387 "cplus.met"
                if ( (expTree=NQUICK_CALL(_Tak(postfix_expression)(error_free), 88, cplus))== (PPTREE) -1 ) {
#line 2387 "cplus.met"
                    PROG_EXIT(unary_expression_exit,"unary_expression")
#line 2387 "cplus.met"
                }
#line 2387 "cplus.met"
            }
#line 2387 "cplus.met"
            break;
#line 2387 "cplus.met"
    }
#line 2387 "cplus.met"
#line 2389 "cplus.met"
    {
#line 2389 "cplus.met"
        _retValue = expTree ;
#line 2389 "cplus.met"
        goto unary_expression_ret;
#line 2389 "cplus.met"
        
#line 2389 "cplus.met"
    }
#line 2389 "cplus.met"
#line 2390 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2390 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2390 "cplus.met"
return((PPTREE) 0);
#line 2390 "cplus.met"

#line 2390 "cplus.met"
unary_expression_exit :
#line 2390 "cplus.met"

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

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

#line 2390 "cplus.met"
