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

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


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

#line 712 "cplus.met"
    int _value,_nbPre = 0 ;
#line 712 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 712 "cplus.met"
    int _Debug = TRACE_RULE("other_config",TRACE_ENTER,(PPTREE)0);
#line 712 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 712 "cplus.met"
#line 713 "cplus.met"
    {
#line 713 "cplus.met"
        PPTREE _ptTree0;
#line 713 "cplus.met"
        {
#line 713 "cplus.met"
            PPTREE _ptTree1,_ptRes1;
#line 713 "cplus.met"
            _ptRes1= MakeTree(PRAGMA, 1);
#line 713 "cplus.met"
            (tokenAhead == 8|| (LexPragma(),TRACE_LEX(1)));
#line 713 "cplus.met"
            if ( ! TERM_OR_META(PRAGMA_CONTENT,"PRAGMA_CONTENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 713 "cplus.met"
                TOKEN_EXIT(other_config_exit,"PRAGMA_CONTENT")
#line 713 "cplus.met"
            ReplaceTree(_ptRes1, 1, _ptTree1);
#line 713 "cplus.met"
            _ptTree0=_ptRes1;
#line 713 "cplus.met"
        }
#line 713 "cplus.met"
        _retValue =_ptTree0;
#line 713 "cplus.met"
        goto other_config_ret;
#line 713 "cplus.met"
    }
#line 713 "cplus.met"
#line 714 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 714 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 714 "cplus.met"
return((PPTREE) 0);
#line 714 "cplus.met"

#line 714 "cplus.met"
other_config_exit :
#line 714 "cplus.met"

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

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

#line 714 "cplus.met"
#line 2678 "cplus.met"
PPTREE cplus::parameter_list ( int error_free)
#line 2678 "cplus.met"
{
#line 2678 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2678 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2678 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2678 "cplus.met"
    int _Debug = TRACE_RULE("parameter_list",TRACE_ENTER,(PPTREE)0);
#line 2678 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2678 "cplus.met"
#line 2678 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 2678 "cplus.met"
#line 2678 "cplus.met"
    PPTREE paramList = (PPTREE) 0;
#line 2678 "cplus.met"
#line 2680 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2680 "cplus.met"
    if (  !SEE_TOKEN( POUV,"(") || !(CommTerm(),1)) 
#line 2680 "cplus.met"
        TOKEN_EXIT(parameter_list_exit,"(")
#line 2680 "cplus.met"
#line 2681 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( IDENT,"IDENT")){
#line 2681 "cplus.met"
#line 2682 "cplus.met"
#line 2683 "cplus.met"
         { int exit = 0 ;
#line 2683 "cplus.met"
#line 2684 "cplus.met"
        {
#line 2684 "cplus.met"
            PPTREE _ptTree0;
#line 2684 "cplus.met"
            {
#line 2684 "cplus.met"
                PPTREE _ptTree1,_ptRes1;
#line 2684 "cplus.met"
                _ptRes1= MakeTree(IDENT, 1);
#line 2684 "cplus.met"
                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2684 "cplus.met"
                if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 2684 "cplus.met"
                    TOKEN_EXIT(parameter_list_exit,"IDENT")
#line 2684 "cplus.met"
                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2684 "cplus.met"
                _ptTree0=_ptRes1;
#line 2684 "cplus.met"
            }
#line 2684 "cplus.met"
            paramList =AddList(paramList , _ptTree0);
#line 2684 "cplus.met"
        }
#line 2684 "cplus.met"
#line 2684 "cplus.met"
        _addlist1 = paramList ;
#line 2684 "cplus.met"
#line 2685 "cplus.met"
        while ((! ( exit )) && 
#line 2685 "cplus.met"
              ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(VIRG,",") && (tokenAhead = 0,CommTerm(),1))) { 
#line 2685 "cplus.met"
#line 2686 "cplus.met"
            if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( IDENT,"IDENT")){
#line 2686 "cplus.met"
#line 2687 "cplus.met"
#line 2687 "cplus.met"
                {
#line 2687 "cplus.met"
                    PPTREE _ptTree0;
#line 2687 "cplus.met"
                    {
#line 2687 "cplus.met"
                        PPTREE _ptTree1,_ptRes1;
#line 2687 "cplus.met"
                        _ptRes1= MakeTree(IDENT, 1);
#line 2687 "cplus.met"
                        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2687 "cplus.met"
                        if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 2687 "cplus.met"
                            TOKEN_EXIT(parameter_list_exit,"IDENT")
#line 2687 "cplus.met"
                        ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2687 "cplus.met"
                        _ptTree0=_ptRes1;
#line 2687 "cplus.met"
                    }
#line 2687 "cplus.met"
                    _addlist1 =AddList(_addlist1 , _ptTree0);
#line 2687 "cplus.met"
                }
#line 2687 "cplus.met"
#line 2687 "cplus.met"
                if (paramList){
#line 2687 "cplus.met"
#line 2687 "cplus.met"
                    _addlist1 = SonTree (_addlist1 ,2 );
#line 2687 "cplus.met"
                } else {
#line 2687 "cplus.met"
#line 2687 "cplus.met"
                    paramList = _addlist1 ;
#line 2687 "cplus.met"
                }
#line 2687 "cplus.met"
            } else {
#line 2687 "cplus.met"
#line 2689 "cplus.met"
#line 2690 "cplus.met"
                {
#line 2690 "cplus.met"
                    PPTREE _ptTree0;
#line 2690 "cplus.met"
                    {
#line 2690 "cplus.met"
                        PPTREE _ptRes1;
#line 2690 "cplus.met"
                        _ptRes1= MakeTree(VAR_LIST, 0);
#line 2690 "cplus.met"
                        _ptTree0=_ptRes1;
#line 2690 "cplus.met"
                    }
#line 2690 "cplus.met"
                    _addlist1 =AddList(_addlist1 , _ptTree0);
#line 2690 "cplus.met"
                }
#line 2690 "cplus.met"
#line 2690 "cplus.met"
                if (paramList){
#line 2690 "cplus.met"
#line 2690 "cplus.met"
                    _addlist1 = SonTree (_addlist1 ,2 );
#line 2690 "cplus.met"
                } else {
#line 2690 "cplus.met"
#line 2690 "cplus.met"
                    paramList = _addlist1 ;
#line 2690 "cplus.met"
                }
#line 2690 "cplus.met"
#line 2691 "cplus.met"
                 exit = 1 ;
#line 2691 "cplus.met"
#line 2692 "cplus.met"
                if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(POINPOINPOIN,"...") && (tokenAhead = 0,CommTerm(),1)){
#line 2692 "cplus.met"
#line 2692 "cplus.met"
                }
#line 2692 "cplus.met"
            }
#line 2692 "cplus.met"
        } 
#line 2692 "cplus.met"
#line 2694 "cplus.met"
        if ((! ( exit )) && 
#line 2694 "cplus.met"
           ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(POINPOINPOIN,"...") && (tokenAhead = 0,CommTerm(),1))){
#line 2694 "cplus.met"
#line 2695 "cplus.met"
            {
#line 2695 "cplus.met"
                PPTREE _ptTree0;
#line 2695 "cplus.met"
                {
#line 2695 "cplus.met"
                    PPTREE _ptRes1;
#line 2695 "cplus.met"
                    _ptRes1= MakeTree(VAR_LIST, 0);
#line 2695 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2695 "cplus.met"
                }
#line 2695 "cplus.met"
                paramList =AddList(paramList , _ptTree0);
#line 2695 "cplus.met"
            }
#line 2695 "cplus.met"
#line 2695 "cplus.met"
        }
#line 2695 "cplus.met"
#line 2696 "cplus.met"
         } 
#line 2696 "cplus.met"
#line 2697 "cplus.met"
    }
#line 2697 "cplus.met"
#line 2698 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2698 "cplus.met"
    if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 2698 "cplus.met"
        TOKEN_EXIT(parameter_list_exit,")")
#line 2698 "cplus.met"
#line 2699 "cplus.met"
    {
#line 2699 "cplus.met"
        _retValue = paramList ;
#line 2699 "cplus.met"
        goto parameter_list_ret;
#line 2699 "cplus.met"
        
#line 2699 "cplus.met"
    }
#line 2699 "cplus.met"
#line 2700 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2700 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2700 "cplus.met"
return((PPTREE) 0);
#line 2700 "cplus.met"

#line 2700 "cplus.met"
parameter_list_exit :
#line 2700 "cplus.met"

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

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

#line 2700 "cplus.met"
#line 2702 "cplus.met"
PPTREE cplus::parameter_list_extended ( int error_free)
#line 2702 "cplus.met"
{
#line 2702 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2702 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2702 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2702 "cplus.met"
    int _Debug = TRACE_RULE("parameter_list_extended",TRACE_ENTER,(PPTREE)0);
#line 2702 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2702 "cplus.met"
#line 2702 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 2702 "cplus.met"
#line 2702 "cplus.met"
    PPTREE paramList = (PPTREE) 0,valTree = (PPTREE) 0;
#line 2702 "cplus.met"
#line 2704 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2704 "cplus.met"
    if (  !SEE_TOKEN( POUV,"(") || !(CommTerm(),1)) 
#line 2704 "cplus.met"
        TOKEN_EXIT(parameter_list_extended_exit,"(")
#line 2704 "cplus.met"
#line 2705 "cplus.met"
    if (! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( PFER,")"))){
#line 2705 "cplus.met"
#line 2706 "cplus.met"
#line 2707 "cplus.met"
         { int exit = 0 ;
#line 2707 "cplus.met"
#line 2708 "cplus.met"
        if ((NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(arg_declarator), 6, cplus))){
#line 2708 "cplus.met"
#line 2709 "cplus.met"
            paramList =AddList(paramList ,valTree );
#line 2709 "cplus.met"
#line 2709 "cplus.met"
        } else {
#line 2709 "cplus.met"
#line 2711 "cplus.met"
            if (((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&TERM_OR_META(IDENT,"IDENT") && !(tokenAhead = 0) && ( BUILD_TERM_META(valTree))) ){
#line 2711 "cplus.met"
#line 2712 "cplus.met"
                {
#line 2712 "cplus.met"
                    PPTREE _ptTree0;
#line 2712 "cplus.met"
                    {
#line 2712 "cplus.met"
                        PPTREE _ptRes1;
#line 2712 "cplus.met"
                        _ptRes1= MakeTree(IDENT, 1);
#line 2712 "cplus.met"
                        ReplaceTree(_ptRes1, 1, valTree );
#line 2712 "cplus.met"
                        _ptTree0=_ptRes1;
#line 2712 "cplus.met"
                    }
#line 2712 "cplus.met"
                    paramList =AddList(paramList , _ptTree0);
#line 2712 "cplus.met"
                }
#line 2712 "cplus.met"
#line 2712 "cplus.met"
            }
#line 2712 "cplus.met"
        }
#line 2712 "cplus.met"
#line 2712 "cplus.met"
        _addlist1 = paramList ;
#line 2712 "cplus.met"
#line 2713 "cplus.met"
        while ((! ( exit )) && 
#line 2713 "cplus.met"
              ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(VIRG,",") && (tokenAhead = 0,CommTerm(),1))) { 
#line 2713 "cplus.met"
#line 2714 "cplus.met"
            if ((NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(arg_declarator), 6, cplus))){
#line 2714 "cplus.met"
#line 2715 "cplus.met"
#line 2715 "cplus.met"
                _addlist1 =AddList(_addlist1 ,valTree );
#line 2715 "cplus.met"
#line 2715 "cplus.met"
                if (paramList){
#line 2715 "cplus.met"
#line 2715 "cplus.met"
                    _addlist1 = SonTree (_addlist1 ,2 );
#line 2715 "cplus.met"
                } else {
#line 2715 "cplus.met"
#line 2715 "cplus.met"
                    paramList = _addlist1 ;
#line 2715 "cplus.met"
                }
#line 2715 "cplus.met"
            } else {
#line 2715 "cplus.met"
#line 2717 "cplus.met"
                if (((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&TERM_OR_META(IDENT,"IDENT") && !(tokenAhead = 0) && ( BUILD_TERM_META(valTree))) ){
#line 2717 "cplus.met"
#line 2718 "cplus.met"
#line 2718 "cplus.met"
                    {
#line 2718 "cplus.met"
                        PPTREE _ptTree0;
#line 2718 "cplus.met"
                        {
#line 2718 "cplus.met"
                            PPTREE _ptRes1;
#line 2718 "cplus.met"
                            _ptRes1= MakeTree(IDENT, 1);
#line 2718 "cplus.met"
                            ReplaceTree(_ptRes1, 1, valTree );
#line 2718 "cplus.met"
                            _ptTree0=_ptRes1;
#line 2718 "cplus.met"
                        }
#line 2718 "cplus.met"
                        _addlist1 =AddList(_addlist1 , _ptTree0);
#line 2718 "cplus.met"
                    }
#line 2718 "cplus.met"
#line 2718 "cplus.met"
                    if (paramList){
#line 2718 "cplus.met"
#line 2718 "cplus.met"
                        _addlist1 = SonTree (_addlist1 ,2 );
#line 2718 "cplus.met"
                    } else {
#line 2718 "cplus.met"
#line 2718 "cplus.met"
                        paramList = _addlist1 ;
#line 2718 "cplus.met"
                    }
#line 2718 "cplus.met"
                } else {
#line 2718 "cplus.met"
#line 2720 "cplus.met"
#line 2721 "cplus.met"
                    {
#line 2721 "cplus.met"
                        PPTREE _ptTree0;
#line 2721 "cplus.met"
                        {
#line 2721 "cplus.met"
                            PPTREE _ptRes1;
#line 2721 "cplus.met"
                            _ptRes1= MakeTree(VAR_LIST, 0);
#line 2721 "cplus.met"
                            _ptTree0=_ptRes1;
#line 2721 "cplus.met"
                        }
#line 2721 "cplus.met"
                        _addlist1 =AddList(_addlist1 , _ptTree0);
#line 2721 "cplus.met"
                    }
#line 2721 "cplus.met"
#line 2721 "cplus.met"
                    if (paramList){
#line 2721 "cplus.met"
#line 2721 "cplus.met"
                        _addlist1 = SonTree (_addlist1 ,2 );
#line 2721 "cplus.met"
                    } else {
#line 2721 "cplus.met"
#line 2721 "cplus.met"
                        paramList = _addlist1 ;
#line 2721 "cplus.met"
                    }
#line 2721 "cplus.met"
#line 2722 "cplus.met"
                     exit = 1 ;
#line 2722 "cplus.met"
#line 2723 "cplus.met"
                    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(POINPOINPOIN,"...") && (tokenAhead = 0,CommTerm(),1)){
#line 2723 "cplus.met"
#line 2723 "cplus.met"
                    }
#line 2723 "cplus.met"
                }
#line 2723 "cplus.met"
            }
#line 2723 "cplus.met"
        } 
#line 2723 "cplus.met"
#line 2725 "cplus.met"
        if ((! ( exit )) && 
#line 2725 "cplus.met"
           ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(POINPOINPOIN,"...") && (tokenAhead = 0,CommTerm(),1))){
#line 2725 "cplus.met"
#line 2726 "cplus.met"
            {
#line 2726 "cplus.met"
                PPTREE _ptTree0;
#line 2726 "cplus.met"
                {
#line 2726 "cplus.met"
                    PPTREE _ptRes1;
#line 2726 "cplus.met"
                    _ptRes1= MakeTree(VAR_LIST, 0);
#line 2726 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2726 "cplus.met"
                }
#line 2726 "cplus.met"
                paramList =AddList(paramList , _ptTree0);
#line 2726 "cplus.met"
            }
#line 2726 "cplus.met"
#line 2726 "cplus.met"
        }
#line 2726 "cplus.met"
#line 2727 "cplus.met"
         } 
#line 2727 "cplus.met"
#line 2728 "cplus.met"
    }
#line 2728 "cplus.met"
#line 2729 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2729 "cplus.met"
    if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 2729 "cplus.met"
        TOKEN_EXIT(parameter_list_extended_exit,")")
#line 2729 "cplus.met"
#line 2730 "cplus.met"
    {
#line 2730 "cplus.met"
        _retValue = paramList ;
#line 2730 "cplus.met"
        goto parameter_list_extended_ret;
#line 2730 "cplus.met"
        
#line 2730 "cplus.met"
    }
#line 2730 "cplus.met"
#line 2731 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2731 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2731 "cplus.met"
return((PPTREE) 0);
#line 2731 "cplus.met"

#line 2731 "cplus.met"
parameter_list_extended_exit :
#line 2731 "cplus.met"

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

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

#line 2731 "cplus.met"
#line 1468 "cplus.met"
PPTREE cplus::parametrized_class ( int error_free)
#line 1468 "cplus.met"
{
#line 1468 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1468 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1468 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1468 "cplus.met"
    int _Debug = TRACE_RULE("parametrized_class",TRACE_ENTER,(PPTREE)0);
#line 1468 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1468 "cplus.met"
#line 1468 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 1468 "cplus.met"
#line 1468 "cplus.met"
    PPTREE retTree = (PPTREE) 0,listParam = (PPTREE) 0,exp = (PPTREE) 0;
#line 1468 "cplus.met"
#line 1470 "cplus.met"
    {
#line 1470 "cplus.met"
        PPTREE _ptTree0,_ptRes0;
#line 1470 "cplus.met"
        _ptRes0= MakeTree(IDENT, 1);
#line 1470 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1470 "cplus.met"
        if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree0))) 
#line 1470 "cplus.met"
            TOKEN_EXIT(parametrized_class_exit,"IDENT")
#line 1470 "cplus.met"
        ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1470 "cplus.met"
        retTree=_ptRes0;
#line 1470 "cplus.met"
    }
#line 1470 "cplus.met"
#line 1471 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(INFE,"<") && (tokenAhead = 0,CommTerm(),1)){
#line 1471 "cplus.met"
#line 1472 "cplus.met"
#line 1472 "cplus.met"
        _addlist1 = listParam ;
#line 1472 "cplus.met"
#line 1473 "cplus.met"
        do {
#line 1473 "cplus.met"
#line 1474 "cplus.met"
            if (! (NPUSH_CALL_AFF_VERIF(exp = ,_Tak(additive_expression), 2, cplus))){
#line 1474 "cplus.met"
#line 1475 "cplus.met"
                if ( (exp=NQUICK_CALL(_Tak(type_name)(error_free), 118, cplus))== (PPTREE) -1 ) {
#line 1475 "cplus.met"
                    PROG_EXIT(parametrized_class_exit,"parametrized_class")
#line 1475 "cplus.met"
                }
#line 1475 "cplus.met"
            }
#line 1475 "cplus.met"
#line 1476 "cplus.met"
            _addlist1 =AddList(_addlist1 ,exp );
#line 1476 "cplus.met"
#line 1476 "cplus.met"
            if (listParam){
#line 1476 "cplus.met"
#line 1476 "cplus.met"
                _addlist1 = SonTree (_addlist1 ,2 );
#line 1476 "cplus.met"
            } else {
#line 1476 "cplus.met"
#line 1476 "cplus.met"
                listParam = _addlist1 ;
#line 1476 "cplus.met"
            }
#line 1476 "cplus.met"
#line 1477 "cplus.met"
        } while ( !(! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(VIRG,",") && (tokenAhead = 0,CommTerm(),1)))) ;
#line 1477 "cplus.met"
#line 1478 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1478 "cplus.met"
        if (  !SEE_TOKEN( SUPE,">") || !(CommTerm(),1)) 
#line 1478 "cplus.met"
            TOKEN_EXIT(parametrized_class_exit,">")
#line 1478 "cplus.met"
#line 1479 "cplus.met"
        {
#line 1479 "cplus.met"
            PPTREE _ptRes0;
#line 1479 "cplus.met"
            _ptRes0= MakeTree(PARAM_TYPE, 2);
#line 1479 "cplus.met"
            ReplaceTree(_ptRes0, 1, retTree );
#line 1479 "cplus.met"
            ReplaceTree(_ptRes0, 2, listParam );
#line 1479 "cplus.met"
            retTree=_ptRes0;
#line 1479 "cplus.met"
        }
#line 1479 "cplus.met"
#line 1482 "cplus.met"
        {
#line 1482 "cplus.met"
            _retValue = retTree ;
#line 1482 "cplus.met"
            goto parametrized_class_ret;
#line 1482 "cplus.met"
            
#line 1482 "cplus.met"
        }
#line 1482 "cplus.met"
#line 1484 "cplus.met"
    } else {
#line 1484 "cplus.met"
#line 1486 "cplus.met"
        LEX_EXIT ("",0);
#line 1486 "cplus.met"
        goto parametrized_class_exit;
#line 1486 "cplus.met"
    }
#line 1486 "cplus.met"
#line 1487 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1487 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1487 "cplus.met"
return((PPTREE) 0);
#line 1487 "cplus.met"

#line 1487 "cplus.met"
parametrized_class_exit :
#line 1487 "cplus.met"

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

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

#line 1487 "cplus.met"
#line 3009 "cplus.met"
PPTREE cplus::parse_entry ( int error_free)
#line 3009 "cplus.met"
{
#line 3009 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 3009 "cplus.met"
    int _value,_nbPre = 0 ;
#line 3009 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 3009 "cplus.met"
    int _Debug = TRACE_RULE("parse_entry",TRACE_ENTER,(PPTREE)0);
#line 3009 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 3009 "cplus.met"
#line 3009 "cplus.met"
    PPTREE retValue = (PPTREE) 0;
#line 3009 "cplus.met"
#line 3011 "cplus.met"
    if ((((((NPUSH_CALL_AFF_VERIF(retValue = ,_Tak(func_declaration), 58, cplus)) || 
#line 3011 "cplus.met"
           (NPUSH_CALL_AFF_VERIF(retValue = ,_Tak(statement), 112, cplus))) || 
#line 3011 "cplus.met"
          (NPUSH_CALL_AFF_VERIF(retValue = ,_Tak(data_declaration), 30, cplus))) || 
#line 3011 "cplus.met"
         (NPUSH_CALL_AFF_VERIF(retValue = ,_Tak(switch_list), 115, cplus))) || 
#line 3011 "cplus.met"
        (NPUSH_CALL_AFF_VERIF(retValue = ,_Tak(switch_elem), 114, cplus))) || 
#line 3011 "cplus.met"
       (NPUSH_CALL_AFF_VERIF(retValue = ,_Tak(expression), 47, cplus))){
#line 3011 "cplus.met"
#line 3017 "cplus.met"
        {
#line 3017 "cplus.met"
            _retValue = retValue ;
#line 3017 "cplus.met"
            goto parse_entry_ret;
#line 3017 "cplus.met"
            
#line 3017 "cplus.met"
        }
#line 3017 "cplus.met"
    } else {
#line 3017 "cplus.met"
#line 3019 "cplus.met"
        if ( (NQUICK_CALL(_Tak(statement)(error_free), 112, cplus))== (PPTREE) -1 ) {
#line 3019 "cplus.met"
            PROG_EXIT(parse_entry_exit,"parse_entry")
#line 3019 "cplus.met"
        }
#line 3019 "cplus.met"
    }
#line 3019 "cplus.met"
#line 3020 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 3020 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 3020 "cplus.met"
return((PPTREE) 0);
#line 3020 "cplus.met"

#line 3020 "cplus.met"
parse_entry_exit :
#line 3020 "cplus.met"

#line 3020 "cplus.met"
    {
#line 3020 "cplus.met"
        MulFreeTree(1,retValue);
#line 3020 "cplus.met"
    }
#line 3020 "cplus.met"
    _Debug = TRACE_RULE("parse_entry",TRACE_EXIT,(PPTREE)0);
#line 3020 "cplus.met"
    _funcLevel--;
#line 3020 "cplus.met"
    return((PPTREE) -1) ;
#line 3020 "cplus.met"

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

#line 3020 "cplus.met"
#line 2316 "cplus.met"
PPTREE cplus::pm_expression ( int error_free)
#line 2316 "cplus.met"
{
#line 2316 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2316 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2316 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2316 "cplus.met"
    int _Debug = TRACE_RULE("pm_expression",TRACE_ENTER,(PPTREE)0);
#line 2316 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2316 "cplus.met"
#line 2316 "cplus.met"
    PPTREE expTree = (PPTREE) 0;
#line 2316 "cplus.met"
#line 2318 "cplus.met"
    if ( (expTree=NQUICK_CALL(_Tak(cast_expression)(error_free), 15, cplus))== (PPTREE) -1 ) {
#line 2318 "cplus.met"
        PROG_EXIT(pm_expression_exit,"pm_expression")
#line 2318 "cplus.met"
    }
#line 2318 "cplus.met"
#line 2319 "cplus.met"
    while (((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( POINETOI,".*")) || 
#line 2319 "cplus.met"
          ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( TIRESUPEETOI,"->*"))) { 
#line 2319 "cplus.met"
#line 2320 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2320 "cplus.met"
        switch( lexEl.Value) {
#line 2320 "cplus.met"
#line 2321 "cplus.met"
            case POINETOI : 
#line 2321 "cplus.met"
                tokenAhead = 0 ;
#line 2321 "cplus.met"
                CommTerm();
#line 2321 "cplus.met"
#line 2321 "cplus.met"
                {
#line 2321 "cplus.met"
                    PPTREE _ptTree0,_ptRes0;
#line 2321 "cplus.met"
                    _ptRes0= MakeTree(DOT_MEMB, 2);
#line 2321 "cplus.met"
                    ReplaceTree(_ptRes0, 1, expTree );
#line 2321 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(cast_expression)(error_free), 15, cplus))== (PPTREE) -1 ) {
#line 2321 "cplus.met"
                        PROG_EXIT(pm_expression_exit,"pm_expression")
#line 2321 "cplus.met"
                    }
#line 2321 "cplus.met"
                    ReplaceTree(_ptRes0, 2, _ptTree0);
#line 2321 "cplus.met"
                    expTree=_ptRes0;
#line 2321 "cplus.met"
                }
#line 2321 "cplus.met"
                break;
#line 2321 "cplus.met"
#line 2323 "cplus.met"
            case TIRESUPEETOI : 
#line 2323 "cplus.met"
                tokenAhead = 0 ;
#line 2323 "cplus.met"
                CommTerm();
#line 2323 "cplus.met"
#line 2323 "cplus.met"
                {
#line 2323 "cplus.met"
                    PPTREE _ptTree0,_ptRes0;
#line 2323 "cplus.met"
                    _ptRes0= MakeTree(ARROW_MEMB, 2);
#line 2323 "cplus.met"
                    ReplaceTree(_ptRes0, 1, expTree );
#line 2323 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(cast_expression)(error_free), 15, cplus))== (PPTREE) -1 ) {
#line 2323 "cplus.met"
                        PROG_EXIT(pm_expression_exit,"pm_expression")
#line 2323 "cplus.met"
                    }
#line 2323 "cplus.met"
                    ReplaceTree(_ptRes0, 2, _ptTree0);
#line 2323 "cplus.met"
                    expTree=_ptRes0;
#line 2323 "cplus.met"
                }
#line 2323 "cplus.met"
                break;
#line 2323 "cplus.met"
            default :
#line 2323 "cplus.met"
                CASE_EXIT(pm_expression_exit,"either .* or ->*")
#line 2323 "cplus.met"
                break;
#line 2323 "cplus.met"
        }
#line 2323 "cplus.met"
    } 
#line 2323 "cplus.met"
#line 2326 "cplus.met"
    {
#line 2326 "cplus.met"
        _retValue = expTree ;
#line 2326 "cplus.met"
        goto pm_expression_ret;
#line 2326 "cplus.met"
        
#line 2326 "cplus.met"
    }
#line 2326 "cplus.met"
#line 2327 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2327 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2327 "cplus.met"
return((PPTREE) 0);
#line 2327 "cplus.met"

#line 2327 "cplus.met"
pm_expression_exit :
#line 2327 "cplus.met"

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

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

#line 2327 "cplus.met"
#line 2483 "cplus.met"
PPTREE cplus::postfix_expression ( int error_free)
#line 2483 "cplus.met"
{
#line 2483 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2483 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2483 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2483 "cplus.met"
    int _Debug = TRACE_RULE("postfix_expression",TRACE_ENTER,(PPTREE)0);
#line 2483 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2483 "cplus.met"
#line 2483 "cplus.met"
    PPTREE expTree = (PPTREE) 0,expList = (PPTREE) 0;
#line 2483 "cplus.met"
#line 2485 "cplus.met"
    if (! (NPUSH_CALL_AFF_VERIF(expTree = ,_Tak(primary_expression), 89, cplus))){
#line 2485 "cplus.met"
#line 2486 "cplus.met"
#line 2487 "cplus.met"
        if ( (expTree=NQUICK_CALL(_Tak(simple_type_name)(error_free), 106, cplus))== (PPTREE) -1 ) {
#line 2487 "cplus.met"
            PROG_EXIT(postfix_expression_exit,"postfix_expression")
#line 2487 "cplus.met"
        }
#line 2487 "cplus.met"
#line 2488 "cplus.met"
        if (! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( POUV,"("))){
#line 2488 "cplus.met"
#line 2489 "cplus.met"
            LEX_EXIT ("",0);
#line 2489 "cplus.met"
            goto postfix_expression_exit;
#line 2489 "cplus.met"
#line 2489 "cplus.met"
        }
#line 2489 "cplus.met"
#line 2490 "cplus.met"
    }
#line 2490 "cplus.met"
#line 2491 "cplus.met"
    while (((((((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( POUV,"(")) || 
#line 2491 "cplus.met"
              ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( COUV,"["))) || 
#line 2491 "cplus.met"
             ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( POINT,"POINT"))) || 
#line 2491 "cplus.met"
            ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( TIRESUPE,"->"))) || 
#line 2491 "cplus.met"
           ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( PLUSPLUS,"++"))) || 
#line 2491 "cplus.met"
          ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( TIRETIRE,"--"))) { 
#line 2491 "cplus.met"
#line 2497 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2497 "cplus.met"
        switch( lexEl.Value) {
#line 2497 "cplus.met"
#line 2500 "cplus.met"
            case POUV : 
#line 2500 "cplus.met"
                tokenAhead = 0 ;
#line 2500 "cplus.met"
                CommTerm();
#line 2500 "cplus.met"
#line 2499 "cplus.met"
#line 2500 "cplus.met"
                if (NPUSH_CALL_AFF_VERIF(expList = ,_Tak(expression), 47, cplus)){
#line 2500 "cplus.met"
#line 2501 "cplus.met"
                    {
#line 2501 "cplus.met"
                        PPTREE _ptRes0;
#line 2501 "cplus.met"
                        _ptRes0= MakeTree(EXP_LIST, 2);
#line 2501 "cplus.met"
                        ReplaceTree(_ptRes0, 1, expTree );
#line 2501 "cplus.met"
                        ReplaceTree(_ptRes0, 2, expList );
#line 2501 "cplus.met"
                        expTree=_ptRes0;
#line 2501 "cplus.met"
                    }
#line 2501 "cplus.met"
                } else {
#line 2501 "cplus.met"
#line 2503 "cplus.met"
                    {
#line 2503 "cplus.met"
                        PPTREE _ptRes0;
#line 2503 "cplus.met"
                        _ptRes0= MakeTree(EXP_LIST, 2);
#line 2503 "cplus.met"
                        ReplaceTree(_ptRes0, 1, expTree );
#line 2503 "cplus.met"
                        expTree=_ptRes0;
#line 2503 "cplus.met"
                    }
#line 2503 "cplus.met"
                }
#line 2503 "cplus.met"
#line 2504 "cplus.met"
                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2504 "cplus.met"
                if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 2504 "cplus.met"
                    TOKEN_EXIT(postfix_expression_exit,")")
#line 2504 "cplus.met"
                break;
#line 2504 "cplus.met"
#line 2508 "cplus.met"
            case COUV : 
#line 2508 "cplus.met"
                tokenAhead = 0 ;
#line 2508 "cplus.met"
                CommTerm();
#line 2508 "cplus.met"
#line 2507 "cplus.met"
#line 2508 "cplus.met"
                if (NPUSH_CALL_AFF_VERIF(expList = ,_Tak(expression), 47, cplus)){
#line 2508 "cplus.met"
#line 2509 "cplus.met"
                    {
#line 2509 "cplus.met"
                        PPTREE _ptRes0;
#line 2509 "cplus.met"
                        _ptRes0= MakeTree(EXP_ARRAY, 2);
#line 2509 "cplus.met"
                        ReplaceTree(_ptRes0, 1, expTree );
#line 2509 "cplus.met"
                        ReplaceTree(_ptRes0, 2, expList );
#line 2509 "cplus.met"
                        expTree=_ptRes0;
#line 2509 "cplus.met"
                    }
#line 2509 "cplus.met"
                } else {
#line 2509 "cplus.met"
#line 2511 "cplus.met"
                    {
#line 2511 "cplus.met"
                        PPTREE _ptRes0;
#line 2511 "cplus.met"
                        _ptRes0= MakeTree(EXP_ARRAY, 2);
#line 2511 "cplus.met"
                        ReplaceTree(_ptRes0, 1, expTree );
#line 2511 "cplus.met"
                        expTree=_ptRes0;
#line 2511 "cplus.met"
                    }
#line 2511 "cplus.met"
                }
#line 2511 "cplus.met"
#line 2512 "cplus.met"
                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2512 "cplus.met"
                if (  !SEE_TOKEN( CFER,"]") || !(CommTerm(),1)) 
#line 2512 "cplus.met"
                    TOKEN_EXIT(postfix_expression_exit,"]")
#line 2512 "cplus.met"
                break;
#line 2512 "cplus.met"
#line 2514 "cplus.met"
            case META : 
#line 2514 "cplus.met"
            case POINT : 
#line 2514 "cplus.met"
                tokenAhead = 0 ;
#line 2514 "cplus.met"
                CommTerm();
#line 2514 "cplus.met"
#line 2514 "cplus.met"
                {
#line 2514 "cplus.met"
                    PPTREE _ptTree0,_ptRes0;
#line 2514 "cplus.met"
                    _ptRes0= MakeTree(REF, 2);
#line 2514 "cplus.met"
                    ReplaceTree(_ptRes0, 1, expTree );
#line 2514 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(primary_expression)(error_free), 89, cplus))== (PPTREE) -1 ) {
#line 2514 "cplus.met"
                        PROG_EXIT(postfix_expression_exit,"postfix_expression")
#line 2514 "cplus.met"
                    }
#line 2514 "cplus.met"
                    ReplaceTree(_ptRes0, 2, _ptTree0);
#line 2514 "cplus.met"
                    expTree=_ptRes0;
#line 2514 "cplus.met"
                }
#line 2514 "cplus.met"
                break;
#line 2514 "cplus.met"
#line 2516 "cplus.met"
            case TIRESUPE : 
#line 2516 "cplus.met"
                tokenAhead = 0 ;
#line 2516 "cplus.met"
                CommTerm();
#line 2516 "cplus.met"
#line 2516 "cplus.met"
                {
#line 2516 "cplus.met"
                    PPTREE _ptTree0,_ptRes0;
#line 2516 "cplus.met"
                    _ptRes0= MakeTree(ARROW, 2);
#line 2516 "cplus.met"
                    ReplaceTree(_ptRes0, 1, expTree );
#line 2516 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(primary_expression)(error_free), 89, cplus))== (PPTREE) -1 ) {
#line 2516 "cplus.met"
                        PROG_EXIT(postfix_expression_exit,"postfix_expression")
#line 2516 "cplus.met"
                    }
#line 2516 "cplus.met"
                    ReplaceTree(_ptRes0, 2, _ptTree0);
#line 2516 "cplus.met"
                    expTree=_ptRes0;
#line 2516 "cplus.met"
                }
#line 2516 "cplus.met"
                break;
#line 2516 "cplus.met"
#line 2518 "cplus.met"
            case PLUSPLUS : 
#line 2518 "cplus.met"
                tokenAhead = 0 ;
#line 2518 "cplus.met"
                CommTerm();
#line 2518 "cplus.met"
#line 2518 "cplus.met"
                {
#line 2518 "cplus.met"
                    PPTREE _ptRes0;
#line 2518 "cplus.met"
                    _ptRes0= MakeTree(AINCR, 1);
#line 2518 "cplus.met"
                    ReplaceTree(_ptRes0, 1, expTree );
#line 2518 "cplus.met"
                    expTree=_ptRes0;
#line 2518 "cplus.met"
                }
#line 2518 "cplus.met"
                break;
#line 2518 "cplus.met"
#line 2519 "cplus.met"
            case TIRETIRE : 
#line 2519 "cplus.met"
                tokenAhead = 0 ;
#line 2519 "cplus.met"
                CommTerm();
#line 2519 "cplus.met"
#line 2519 "cplus.met"
                {
#line 2519 "cplus.met"
                    PPTREE _ptRes0;
#line 2519 "cplus.met"
                    _ptRes0= MakeTree(ADECR, 1);
#line 2519 "cplus.met"
                    ReplaceTree(_ptRes0, 1, expTree );
#line 2519 "cplus.met"
                    expTree=_ptRes0;
#line 2519 "cplus.met"
                }
#line 2519 "cplus.met"
                break;
#line 2519 "cplus.met"
            default :
#line 2519 "cplus.met"
                CASE_EXIT(postfix_expression_exit,"either ( or [ or POINT or -> or ++ or --")
#line 2519 "cplus.met"
                break;
#line 2519 "cplus.met"
        }
#line 2519 "cplus.met"
    } 
#line 2519 "cplus.met"
#line 2521 "cplus.met"
    {
#line 2521 "cplus.met"
        _retValue = expTree ;
#line 2521 "cplus.met"
        goto postfix_expression_ret;
#line 2521 "cplus.met"
        
#line 2521 "cplus.met"
    }
#line 2521 "cplus.met"
#line 2522 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2522 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2522 "cplus.met"
return((PPTREE) 0);
#line 2522 "cplus.met"

#line 2522 "cplus.met"
postfix_expression_exit :
#line 2522 "cplus.met"

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

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

#line 2522 "cplus.met"
#line 2537 "cplus.met"
PPTREE cplus::primary_expression ( int error_free)
#line 2537 "cplus.met"
{
#line 2537 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2537 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2537 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2537 "cplus.met"
    int _Debug = TRACE_RULE("primary_expression",TRACE_ENTER,(PPTREE)0);
#line 2537 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2537 "cplus.met"
#line 2537 "cplus.met"
    PPTREE result = (PPTREE) 0,expTree = (PPTREE) 0,list = (PPTREE) 0;
#line 2537 "cplus.met"
#line 2539 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2539 "cplus.met"
    switch( lexEl.Value) {
#line 2539 "cplus.met"
#line 2542 "cplus.met"
        case POUV : 
#line 2542 "cplus.met"
            tokenAhead = 0 ;
#line 2542 "cplus.met"
            CommTerm();
#line 2542 "cplus.met"
#line 2541 "cplus.met"
#line 2542 "cplus.met"
            if ( (expTree=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 2542 "cplus.met"
                PROG_EXIT(primary_expression_exit,"primary_expression")
#line 2542 "cplus.met"
            }
#line 2542 "cplus.met"
#line 2543 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2543 "cplus.met"
            if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 2543 "cplus.met"
                TOKEN_EXIT(primary_expression_exit,")")
#line 2543 "cplus.met"
#line 2544 "cplus.met"
            {
#line 2544 "cplus.met"
                PPTREE _ptTree0;
#line 2544 "cplus.met"
                {
#line 2544 "cplus.met"
                    PPTREE _ptRes1;
#line 2544 "cplus.met"
                    _ptRes1= MakeTree(EXP, 1);
#line 2544 "cplus.met"
                    ReplaceTree(_ptRes1, 1, expTree );
#line 2544 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2544 "cplus.met"
                }
#line 2544 "cplus.met"
                _retValue =_ptTree0;
#line 2544 "cplus.met"
                goto primary_expression_ret;
#line 2544 "cplus.met"
            }
#line 2544 "cplus.met"
            break;
#line 2544 "cplus.met"
#line 2546 "cplus.met"
        case OPERATOR : 
#line 2546 "cplus.met"
#line 2546 "cplus.met"
            {
#line 2546 "cplus.met"
                PPTREE _ptTree0;
#line 2546 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(operator_function_name)(error_free), 81, cplus))== (PPTREE) -1 ) {
#line 2546 "cplus.met"
                    PROG_EXIT(primary_expression_exit,"primary_expression")
#line 2546 "cplus.met"
                }
#line 2546 "cplus.met"
                _retValue =_ptTree0;
#line 2546 "cplus.met"
                goto primary_expression_ret;
#line 2546 "cplus.met"
            }
#line 2546 "cplus.met"
            break;
#line 2546 "cplus.met"
#line 2547 "cplus.met"
        case TILD : 
#line 2547 "cplus.met"
#line 2547 "cplus.met"
            {
#line 2547 "cplus.met"
                PPTREE _ptTree0;
#line 2547 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(qualified_name)(error_free), 93, cplus))== (PPTREE) -1 ) {
#line 2547 "cplus.met"
                    PROG_EXIT(primary_expression_exit,"primary_expression")
#line 2547 "cplus.met"
                }
#line 2547 "cplus.met"
                _retValue =_ptTree0;
#line 2547 "cplus.met"
                goto primary_expression_ret;
#line 2547 "cplus.met"
            }
#line 2547 "cplus.met"
            break;
#line 2547 "cplus.met"
#line 2548 "cplus.met"
        case META : 
#line 2548 "cplus.met"
#line 2549 "cplus.met"
#line 2550 "cplus.met"
            {
#line 2550 "cplus.met"
                PPTREE _ptTree0;
#line 2550 "cplus.met"
                {
#line 2550 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2550 "cplus.met"
                    _ptRes1= MakeTree(META, 1);
#line 2550 "cplus.met"
                    (tokenAhead == 7|| (LexMeta(),TRACE_LEX(1)));
#line 2550 "cplus.met"
                    if ( ! TERM_OR_META(META,"META") || !(BUILD_TERM_META(_ptTree1))) 
#line 2550 "cplus.met"
                        TOKEN_EXIT(primary_expression_exit,"META")
#line 2550 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2550 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2550 "cplus.met"
                }
#line 2550 "cplus.met"
                _retValue =_ptTree0;
#line 2550 "cplus.met"
                goto primary_expression_ret;
#line 2550 "cplus.met"
            }
#line 2550 "cplus.met"
            break;
#line 2550 "cplus.met"
#line 2552 "cplus.met"
        case IDENT : 
#line 2552 "cplus.met"
#line 2553 "cplus.met"
            if ((tokenAhead == 12|| (PushFunction(),TRACE_LEX(1)))&&TERM_OR_META(PUSH_FUNCTION,"PUSH_FUNCTION") && !(tokenAhead = 0) && ( BUILD_TERM_META(result))) {
#line 2553 "cplus.met"
#line 2554 "cplus.met"
#line 2555 "cplus.met"
                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2555 "cplus.met"
                if (  !SEE_TOKEN( POUV,"(") || !(CommTerm(),1)) 
#line 2555 "cplus.met"
                    TOKEN_EXIT(primary_expression_exit,"(")
#line 2555 "cplus.met"
#line 2556 "cplus.met"
                {
#line 2556 "cplus.met"
                    PPTREE _ptTree0;
#line 2556 "cplus.met"
                    {
#line 2556 "cplus.met"
                        PPTREE _ptTree1,_ptRes1;
#line 2556 "cplus.met"
                        _ptRes1= MakeTree(IDENT, 1);
#line 2556 "cplus.met"
                        (tokenAhead == 11|| (PushArgument(),TRACE_LEX(1)));
#line 2556 "cplus.met"
                        if ( ! TERM_OR_META(PUSH_ARGUMENT,"PUSH_ARGUMENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 2556 "cplus.met"
                            TOKEN_EXIT(primary_expression_exit,"PUSH_ARGUMENT")
#line 2556 "cplus.met"
                        ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2556 "cplus.met"
                        _ptTree0=_ptRes1;
#line 2556 "cplus.met"
                    }
#line 2556 "cplus.met"
                    list =AddList(list , _ptTree0);
#line 2556 "cplus.met"
                }
#line 2556 "cplus.met"
#line 2557 "cplus.met"
                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2557 "cplus.met"
                if (  !SEE_TOKEN( VIRG,",") || !(CommTerm(),1)) 
#line 2557 "cplus.met"
                    TOKEN_EXIT(primary_expression_exit,",")
#line 2557 "cplus.met"
#line 2558 "cplus.met"
                {
#line 2558 "cplus.met"
                    PPTREE _ptTree0;
#line 2558 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 2558 "cplus.met"
                        PROG_EXIT(primary_expression_exit,"primary_expression")
#line 2558 "cplus.met"
                    }
#line 2558 "cplus.met"
                    list =AddList(list , _ptTree0);
#line 2558 "cplus.met"
                }
#line 2558 "cplus.met"
#line 2559 "cplus.met"
                {
#line 2559 "cplus.met"
                    PPTREE _ptRes0;
#line 2559 "cplus.met"
                    _ptRes0= MakeTree(EXP_SEQ, 1);
#line 2559 "cplus.met"
                    ReplaceTree(_ptRes0, 1, list );
#line 2559 "cplus.met"
                    expTree=_ptRes0;
#line 2559 "cplus.met"
                }
#line 2559 "cplus.met"
#line 2560 "cplus.met"
                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2560 "cplus.met"
                if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 2560 "cplus.met"
                    TOKEN_EXIT(primary_expression_exit,")")
#line 2560 "cplus.met"
#line 2561 "cplus.met"
                {
#line 2561 "cplus.met"
                    PPTREE _ptTree0;
#line 2561 "cplus.met"
                    {
#line 2561 "cplus.met"
                        PPTREE _ptTree1,_ptRes1;
#line 2561 "cplus.met"
                        _ptRes1= MakeTree(EXP_LIST, 2);
#line 2561 "cplus.met"
                        {
#line 2561 "cplus.met"
                            PPTREE _ptRes2;
#line 2561 "cplus.met"
                            _ptRes2= MakeTree(IDENT, 1);
#line 2561 "cplus.met"
                            ReplaceTree(_ptRes2, 1, result );
#line 2561 "cplus.met"
                            _ptTree1=_ptRes2;
#line 2561 "cplus.met"
                        }
#line 2561 "cplus.met"
                        ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2561 "cplus.met"
                        ReplaceTree(_ptRes1, 2, expTree );
#line 2561 "cplus.met"
                        _ptTree0=_ptRes1;
#line 2561 "cplus.met"
                    }
#line 2561 "cplus.met"
                    _retValue =_ptTree0;
#line 2561 "cplus.met"
                    goto primary_expression_ret;
#line 2561 "cplus.met"
                }
#line 2561 "cplus.met"
#line 2562 "cplus.met"
            } else {
#line 2562 "cplus.met"
#line 2564 "cplus.met"
                {
#line 2564 "cplus.met"
                    PPTREE _ptTree0;
#line 2564 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(qualified_name)(error_free), 93, cplus))== (PPTREE) -1 ) {
#line 2564 "cplus.met"
                        PROG_EXIT(primary_expression_exit,"primary_expression")
#line 2564 "cplus.met"
                    }
#line 2564 "cplus.met"
                    _retValue =_ptTree0;
#line 2564 "cplus.met"
                    goto primary_expression_ret;
#line 2564 "cplus.met"
                }
#line 2564 "cplus.met"
            }
#line 2564 "cplus.met"
            break;
#line 2564 "cplus.met"
#line 2565 "cplus.met"
        case STRING : 
#line 2565 "cplus.met"
#line 2565 "cplus.met"
            {
#line 2565 "cplus.met"
                PPTREE _ptTree0;
#line 2565 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(string_list)(error_free), 113, cplus))== (PPTREE) -1 ) {
#line 2565 "cplus.met"
                    PROG_EXIT(primary_expression_exit,"primary_expression")
#line 2565 "cplus.met"
                }
#line 2565 "cplus.met"
                _retValue =_ptTree0;
#line 2565 "cplus.met"
                goto primary_expression_ret;
#line 2565 "cplus.met"
            }
#line 2565 "cplus.met"
            break;
#line 2565 "cplus.met"
#line 2566 "cplus.met"
        case VA_ARG : 
#line 2566 "cplus.met"
            tokenAhead = 0 ;
#line 2566 "cplus.met"
            CommTerm();
#line 2566 "cplus.met"
#line 2567 "cplus.met"
#line 2568 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2568 "cplus.met"
            if (  !SEE_TOKEN( POUV,"(") || !(CommTerm(),1)) 
#line 2568 "cplus.met"
                TOKEN_EXIT(primary_expression_exit,"(")
#line 2568 "cplus.met"
#line 2569 "cplus.met"
            {
#line 2569 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2569 "cplus.met"
                _ptRes0= MakeTree(VA_ARG, 2);
#line 2569 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(assignment_expression)(error_free), 11, cplus))== (PPTREE) -1 ) {
#line 2569 "cplus.met"
                    PROG_EXIT(primary_expression_exit,"primary_expression")
#line 2569 "cplus.met"
                }
#line 2569 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2569 "cplus.met"
                expTree=_ptRes0;
#line 2569 "cplus.met"
            }
#line 2569 "cplus.met"
#line 2570 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2570 "cplus.met"
            if (  !SEE_TOKEN( VIRG,",") || !(CommTerm(),1)) 
#line 2570 "cplus.met"
                TOKEN_EXIT(primary_expression_exit,",")
#line 2570 "cplus.met"
#line 2571 "cplus.met"
            {
#line 2571 "cplus.met"
                PPTREE _ptTree0;
#line 2571 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(type_name)(error_free), 118, cplus))== (PPTREE) -1 ) {
#line 2571 "cplus.met"
                    PROG_EXIT(primary_expression_exit,"primary_expression")
#line 2571 "cplus.met"
                }
#line 2571 "cplus.met"
                ReplaceTree(expTree , 2 , _ptTree0);
#line 2571 "cplus.met"
            }
#line 2571 "cplus.met"
#line 2572 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2572 "cplus.met"
            if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 2572 "cplus.met"
                TOKEN_EXIT(primary_expression_exit,")")
#line 2572 "cplus.met"
#line 2573 "cplus.met"
            {
#line 2573 "cplus.met"
                _retValue = expTree ;
#line 2573 "cplus.met"
                goto primary_expression_ret;
#line 2573 "cplus.met"
                
#line 2573 "cplus.met"
            }
#line 2573 "cplus.met"
            break;
#line 2573 "cplus.met"
#line 2575 "cplus.met"
        default : 
#line 2575 "cplus.met"
#line 2575 "cplus.met"
            {
#line 2575 "cplus.met"
                PPTREE _ptTree0;
#line 2575 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(constan)(error_free), 25, cplus))== (PPTREE) -1 ) {
#line 2575 "cplus.met"
                    PROG_EXIT(primary_expression_exit,"primary_expression")
#line 2575 "cplus.met"
                }
#line 2575 "cplus.met"
                _retValue =_ptTree0;
#line 2575 "cplus.met"
                goto primary_expression_ret;
#line 2575 "cplus.met"
            }
#line 2575 "cplus.met"
            break;
#line 2575 "cplus.met"
    }
#line 2575 "cplus.met"
#line 2577 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2577 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2577 "cplus.met"
return((PPTREE) 0);
#line 2577 "cplus.met"

#line 2577 "cplus.met"
primary_expression_exit :
#line 2577 "cplus.met"

#line 2577 "cplus.met"
    {
#line 2577 "cplus.met"
        MulFreeTree(3,list,expTree,result);
#line 2577 "cplus.met"
    }
#line 2577 "cplus.met"
    _Debug = TRACE_RULE("primary_expression",TRACE_EXIT,(PPTREE)0);
#line 2577 "cplus.met"
    _funcLevel--;
#line 2577 "cplus.met"
    return((PPTREE) -1) ;
#line 2577 "cplus.met"

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

#line 2577 "cplus.met"
#line 656 "cplus.met"
PPTREE cplus::program ( int error_free)
#line 656 "cplus.met"
{
#line 656 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 656 "cplus.met"
    int _value,_nbPre = 0 ;
#line 656 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 656 "cplus.met"
    int _Debug = TRACE_RULE("program",TRACE_ENTER,(PPTREE)0);
#line 656 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 656 "cplus.met"
#line 656 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 656 "cplus.met"
#line 656 "cplus.met"
    PPTREE list = (PPTREE) 0,valTree = (PPTREE) 0;
#line 656 "cplus.met"
#line 658 "cplus.met"
     debut : 
#line 658 "cplus.met"
#line 658 "cplus.met"
    _addlist1 = list ;
#line 658 "cplus.met"
#line 659 "cplus.met"
    while (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(ext_all), 49, cplus)) { 
#line 659 "cplus.met"
#line 660 "cplus.met"
#line 660 "cplus.met"
        _addlist1 =AddList(_addlist1 ,valTree );
#line 660 "cplus.met"
#line 660 "cplus.met"
        if (list){
#line 660 "cplus.met"
#line 660 "cplus.met"
            _addlist1 = SonTree (_addlist1 ,2 );
#line 660 "cplus.met"
        } else {
#line 660 "cplus.met"
#line 660 "cplus.met"
            list = _addlist1 ;
#line 660 "cplus.met"
        }
#line 660 "cplus.met"
    } 
#line 660 "cplus.met"
#line 661 "cplus.met"
    if (NPUSH_CALL_AFF_VERIF(NOTHING,_Tak(comment_eater), 20, cplus)){
#line 661 "cplus.met"
#line 661 "cplus.met"
    }
#line 661 "cplus.met"
#line 663 "cplus.met"
    if ((tokenAhead && tokenAhead != -1)|| (c != EOF)){
#line 663 "cplus.met"
#line 664 "cplus.met"
#line 666 "cplus.met"
        dumperror ();
#line 666 "cplus.met"
#line 668 "cplus.met"
        (tokenAhead == 5|| (LexEndLine(),TRACE_LEX(1)));
#line 668 "cplus.met"
        if ( ! TERM_OR_META(END_LINE,"END_LINE") || !(CommTerm(),1)) 
#line 668 "cplus.met"
            TOKEN_EXIT(program_exit,"END_LINE")
#line 668 "cplus.met"
#line 669 "cplus.met"
         hasGotError = 1 ;
#line 669 "cplus.met"
#line 670 "cplus.met"
         goto debut ;
#line 670 "cplus.met"
#line 671 "cplus.met"
    }
#line 671 "cplus.met"
#line 672 "cplus.met"
    if ( hasGotError ){
#line 672 "cplus.met"
#line 673 "cplus.met"
         exit (-1);
#line 673 "cplus.met"
    }
#line 673 "cplus.met"
#line 674 "cplus.met"
    {
#line 674 "cplus.met"
        PPTREE _ptTree0;
#line 674 "cplus.met"
        {
#line 674 "cplus.met"
            PPTREE _ptRes1;
#line 674 "cplus.met"
            _ptRes1= MakeTree(LANGUAGE, 1);
#line 674 "cplus.met"
            ReplaceTree(_ptRes1, 1, list );
#line 674 "cplus.met"
            _ptTree0=_ptRes1;
#line 674 "cplus.met"
        }
#line 674 "cplus.met"
        _retValue =_ptTree0;
#line 674 "cplus.met"
        goto program_ret;
#line 674 "cplus.met"
    }
#line 674 "cplus.met"
#line 675 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 675 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 675 "cplus.met"
return((PPTREE) 0);
#line 675 "cplus.met"

#line 675 "cplus.met"
program_exit :
#line 675 "cplus.met"

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

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

#line 675 "cplus.met"
#line 1557 "cplus.met"
PPTREE cplus::protect_declare ( int error_free)
#line 1557 "cplus.met"
{
#line 1557 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1557 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1557 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1557 "cplus.met"
    int _Debug = TRACE_RULE("protect_declare",TRACE_ENTER,(PPTREE)0);
#line 1557 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1557 "cplus.met"
#line 1557 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 1557 "cplus.met"
#line 1557 "cplus.met"
    PPTREE retTree = (PPTREE) 0,inter = (PPTREE) 0,list = (PPTREE) 0;
#line 1557 "cplus.met"
#line 1559 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1559 "cplus.met"
    switch( lexEl.Value) {
#line 1559 "cplus.met"
#line 1560 "cplus.met"
        case PUBLIC : 
#line 1560 "cplus.met"
            tokenAhead = 0 ;
#line 1560 "cplus.met"
            CommTerm();
#line 1560 "cplus.met"
#line 1560 "cplus.met"
            {
#line 1560 "cplus.met"
                PPTREE _ptRes0;
#line 1560 "cplus.met"
                _ptRes0= MakeTree(PROTECT_MEMB, 2);
#line 1560 "cplus.met"
                ReplaceTree(_ptRes0, 1, MakeString ("public"));
#line 1560 "cplus.met"
                retTree=_ptRes0;
#line 1560 "cplus.met"
            }
#line 1560 "cplus.met"
            break;
#line 1560 "cplus.met"
#line 1561 "cplus.met"
        case PROTECTED : 
#line 1561 "cplus.met"
            tokenAhead = 0 ;
#line 1561 "cplus.met"
            CommTerm();
#line 1561 "cplus.met"
#line 1561 "cplus.met"
            {
#line 1561 "cplus.met"
                PPTREE _ptRes0;
#line 1561 "cplus.met"
                _ptRes0= MakeTree(PROTECT_MEMB, 2);
#line 1561 "cplus.met"
                ReplaceTree(_ptRes0, 1, MakeString ("protected"));
#line 1561 "cplus.met"
                retTree=_ptRes0;
#line 1561 "cplus.met"
            }
#line 1561 "cplus.met"
            break;
#line 1561 "cplus.met"
#line 1562 "cplus.met"
        case PRIVATE : 
#line 1562 "cplus.met"
            tokenAhead = 0 ;
#line 1562 "cplus.met"
            CommTerm();
#line 1562 "cplus.met"
#line 1562 "cplus.met"
            {
#line 1562 "cplus.met"
                PPTREE _ptRes0;
#line 1562 "cplus.met"
                _ptRes0= MakeTree(PROTECT_MEMB, 2);
#line 1562 "cplus.met"
                ReplaceTree(_ptRes0, 1, MakeString ("private"));
#line 1562 "cplus.met"
                retTree=_ptRes0;
#line 1562 "cplus.met"
            }
#line 1562 "cplus.met"
            break;
#line 1562 "cplus.met"
        default :
#line 1562 "cplus.met"
            CASE_EXIT(protect_declare_exit,"either public or protected or private")
#line 1562 "cplus.met"
            break;
#line 1562 "cplus.met"
    }
#line 1562 "cplus.met"
#line 1564 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1564 "cplus.met"
    if (  !SEE_TOKEN( DPOI,":") || !(CommTerm(),1)) 
#line 1564 "cplus.met"
        TOKEN_EXIT(protect_declare_exit,":")
#line 1564 "cplus.met"
#line 1564 "cplus.met"
    _addlist1 = list ;
#line 1564 "cplus.met"
#line 1565 "cplus.met"
    while (NPUSH_CALL_AFF_VERIF(inter = ,_Tak(inside_declaration), 64, cplus)) { 
#line 1565 "cplus.met"
#line 1566 "cplus.met"
#line 1566 "cplus.met"
        _addlist1 =AddList(_addlist1 ,inter );
#line 1566 "cplus.met"
#line 1566 "cplus.met"
        if (list){
#line 1566 "cplus.met"
#line 1566 "cplus.met"
            _addlist1 = SonTree (_addlist1 ,2 );
#line 1566 "cplus.met"
        } else {
#line 1566 "cplus.met"
#line 1566 "cplus.met"
            list = _addlist1 ;
#line 1566 "cplus.met"
        }
#line 1566 "cplus.met"
    } 
#line 1566 "cplus.met"
#line 1567 "cplus.met"
    {
#line 1567 "cplus.met"
        PPTREE _ptTree0;
#line 1567 "cplus.met"
        _ptTree0=ReplaceTree(retTree ,2 ,list );
#line 1567 "cplus.met"
        _retValue =_ptTree0;
#line 1567 "cplus.met"
        goto protect_declare_ret;
#line 1567 "cplus.met"
    }
#line 1567 "cplus.met"
#line 1568 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1568 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1568 "cplus.met"
return((PPTREE) 0);
#line 1568 "cplus.met"

#line 1568 "cplus.met"
protect_declare_exit :
#line 1568 "cplus.met"

#line 1568 "cplus.met"
    {
#line 1568 "cplus.met"
        MulFreeTree(4,list,inter,retTree,_addlist1);
#line 1568 "cplus.met"
    }
#line 1568 "cplus.met"
    _Debug = TRACE_RULE("protect_declare",TRACE_EXIT,(PPTREE)0);
#line 1568 "cplus.met"
    _funcLevel--;
#line 1568 "cplus.met"
    return((PPTREE) -1) ;
#line 1568 "cplus.met"

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

#line 1568 "cplus.met"
#line 1824 "cplus.met"
PPTREE cplus::ptr_operator ( int error_free)
#line 1824 "cplus.met"
{
#line 1824 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1824 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1824 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1824 "cplus.met"
    int _Debug = TRACE_RULE("ptr_operator",TRACE_ENTER,(PPTREE)0);
#line 1824 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1824 "cplus.met"
#line 1824 "cplus.met"
    PPTREE retTree = (PPTREE) 0,valTree = (PPTREE) 0,retour = (PPTREE) 0;
#line 1824 "cplus.met"
#line 1826 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1826 "cplus.met"
    switch( lexEl.Value) {
#line 1826 "cplus.met"
#line 1829 "cplus.met"
        case ETOI : 
#line 1829 "cplus.met"
            tokenAhead = 0 ;
#line 1829 "cplus.met"
            CommTerm();
#line 1829 "cplus.met"
#line 1828 "cplus.met"
#line 1829 "cplus.met"
            {
#line 1829 "cplus.met"
                PPTREE _ptRes0;
#line 1829 "cplus.met"
                _ptRes0= MakeTree(TYP_ADDR, 1);
#line 1829 "cplus.met"
                retTree=_ptRes0;
#line 1829 "cplus.met"
            }
#line 1829 "cplus.met"
#line 1830 "cplus.met"
            if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(const_or_volatile), 24, cplus)){
#line 1830 "cplus.met"
#line 1831 "cplus.met"
                ReplaceTree(retTree ,1 ,valTree );
#line 1831 "cplus.met"
#line 1831 "cplus.met"
            }
#line 1831 "cplus.met"
#line 1832 "cplus.met"
            {
#line 1832 "cplus.met"
                _retValue = retTree ;
#line 1832 "cplus.met"
                goto ptr_operator_ret;
#line 1832 "cplus.met"
                
#line 1832 "cplus.met"
            }
#line 1832 "cplus.met"
            break;
#line 1832 "cplus.met"
#line 1836 "cplus.met"
        case ETCO : 
#line 1836 "cplus.met"
            tokenAhead = 0 ;
#line 1836 "cplus.met"
            CommTerm();
#line 1836 "cplus.met"
#line 1835 "cplus.met"
#line 1836 "cplus.met"
            {
#line 1836 "cplus.met"
                PPTREE _ptRes0;
#line 1836 "cplus.met"
                _ptRes0= MakeTree(TYP_REF, 1);
#line 1836 "cplus.met"
                retTree=_ptRes0;
#line 1836 "cplus.met"
            }
#line 1836 "cplus.met"
#line 1837 "cplus.met"
            if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(const_or_volatile), 24, cplus)){
#line 1837 "cplus.met"
#line 1838 "cplus.met"
                ReplaceTree(retTree ,1 ,valTree );
#line 1838 "cplus.met"
#line 1838 "cplus.met"
            }
#line 1838 "cplus.met"
#line 1839 "cplus.met"
            {
#line 1839 "cplus.met"
                _retValue = retTree ;
#line 1839 "cplus.met"
                goto ptr_operator_ret;
#line 1839 "cplus.met"
                
#line 1839 "cplus.met"
            }
#line 1839 "cplus.met"
            break;
#line 1839 "cplus.met"
#line 1843 "cplus.met"
        case DPOIDPOI : 
#line 1843 "cplus.met"
#line 1842 "cplus.met"
#line 1843 "cplus.met"
            if ( (retour=NQUICK_CALL(_Tak(member_declarator)(error_free), 74, cplus))== (PPTREE) -1 ) {
#line 1843 "cplus.met"
                PROG_EXIT(ptr_operator_exit,"ptr_operator")
#line 1843 "cplus.met"
            }
#line 1843 "cplus.met"
            break;
#line 1843 "cplus.met"
#line 1845 "cplus.met"
        case META : 
#line 1845 "cplus.met"
        case IDENT : 
#line 1845 "cplus.met"
#line 1846 "cplus.met"
#line 1847 "cplus.met"
            if ( (retour=NQUICK_CALL(_Tak(member_declarator)(error_free), 74, cplus))== (PPTREE) -1 ) {
#line 1847 "cplus.met"
                PROG_EXIT(ptr_operator_exit,"ptr_operator")
#line 1847 "cplus.met"
            }
#line 1847 "cplus.met"
            break;
#line 1847 "cplus.met"
        default :
#line 1847 "cplus.met"
            CASE_EXIT(ptr_operator_exit,"either * or & or :: or IDENT")
#line 1847 "cplus.met"
            break;
#line 1847 "cplus.met"
    }
#line 1847 "cplus.met"
#line 1850 "cplus.met"
    if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(const_or_volatile), 24, cplus)){
#line 1850 "cplus.met"
#line 1851 "cplus.met"
        ReplaceTree(retour ,2 ,valTree );
#line 1851 "cplus.met"
#line 1851 "cplus.met"
    }
#line 1851 "cplus.met"
#line 1852 "cplus.met"
    {
#line 1852 "cplus.met"
        _retValue = retour ;
#line 1852 "cplus.met"
        goto ptr_operator_ret;
#line 1852 "cplus.met"
        
#line 1852 "cplus.met"
    }
#line 1852 "cplus.met"
#line 1853 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1853 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1853 "cplus.met"
return((PPTREE) 0);
#line 1853 "cplus.met"

#line 1853 "cplus.met"
ptr_operator_exit :
#line 1853 "cplus.met"

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

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

#line 1853 "cplus.met"
#line 1489 "cplus.met"
PPTREE cplus::qualified_name ( int error_free)
#line 1489 "cplus.met"
{
#line 1489 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1489 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1489 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1489 "cplus.met"
    int _Debug = TRACE_RULE("qualified_name",TRACE_ENTER,(PPTREE)0);
#line 1489 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1489 "cplus.met"
#line 1489 "cplus.met"
    PPTREE retTree = (PPTREE) 0,inter = (PPTREE) 0,val = (PPTREE) 0;
#line 1489 "cplus.met"
#line 1491 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(TILD,"~") && (tokenAhead = 0,CommTerm(),1)){
#line 1491 "cplus.met"
#line 1492 "cplus.met"
        {
#line 1492 "cplus.met"
            PPTREE _ptTree0,_ptRes0;
#line 1492 "cplus.met"
            _ptRes0= MakeTree(DESTRUCT, 1);
#line 1492 "cplus.met"
            {
#line 1492 "cplus.met"
                PPTREE _ptTree1,_ptRes1;
#line 1492 "cplus.met"
                _ptRes1= MakeTree(IDENT, 1);
#line 1492 "cplus.met"
                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1492 "cplus.met"
                if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 1492 "cplus.met"
                    TOKEN_EXIT(qualified_name_exit,"IDENT")
#line 1492 "cplus.met"
                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1492 "cplus.met"
                _ptTree0=_ptRes1;
#line 1492 "cplus.met"
            }
#line 1492 "cplus.met"
            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1492 "cplus.met"
            retTree=_ptRes0;
#line 1492 "cplus.met"
        }
#line 1492 "cplus.met"
    } else {
#line 1492 "cplus.met"
#line 1494 "cplus.met"
#line 1495 "cplus.met"
        if (! (NPUSH_CALL_AFF_VERIF(retTree = ,_Tak(parametrized_class), 85, cplus))){
#line 1495 "cplus.met"
#line 1496 "cplus.met"
            {
#line 1496 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 1496 "cplus.met"
                _ptRes0= MakeTree(IDENT, 1);
#line 1496 "cplus.met"
                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1496 "cplus.met"
                if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree0))) 
#line 1496 "cplus.met"
                    TOKEN_EXIT(qualified_name_exit,"IDENT")
#line 1496 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1496 "cplus.met"
                retTree=_ptRes0;
#line 1496 "cplus.met"
            }
#line 1496 "cplus.met"
        }
#line 1496 "cplus.met"
    }
#line 1496 "cplus.met"
#line 1498 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( DPOIDPOI,"::")){
#line 1498 "cplus.met"
#line 1499 "cplus.met"
#line 1500 "cplus.met"
        {
#line 1500 "cplus.met"
            PPTREE _ptRes0;
#line 1500 "cplus.met"
            _ptRes0= MakeTree(QUALIFIED, 2);
#line 1500 "cplus.met"
            ReplaceTree(_ptRes0, 1, retTree );
#line 1500 "cplus.met"
            retTree=_ptRes0;
#line 1500 "cplus.met"
        }
#line 1500 "cplus.met"
#line 1501 "cplus.met"
        inter = retTree ;
#line 1501 "cplus.met"
#line 1502 "cplus.met"
        while (((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( DPOIDPOI,"::")) && 
#line 1502 "cplus.met"
              (NPUSH_CALL_AFF_VERIF(val = ,_Tak(qualified_name_elem), 94, cplus))) { 
#line 1502 "cplus.met"
#line 1503 "cplus.met"
#line 1504 "cplus.met"
            if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( DPOIDPOI,"::")){
#line 1504 "cplus.met"
#line 1505 "cplus.met"
                {
#line 1505 "cplus.met"
                    PPTREE _ptRes0;
#line 1505 "cplus.met"
                    _ptRes0= MakeTree(QUALIFIED, 2);
#line 1505 "cplus.met"
                    ReplaceTree(_ptRes0, 1, val );
#line 1505 "cplus.met"
                    val=_ptRes0;
#line 1505 "cplus.met"
                }
#line 1505 "cplus.met"
            }
#line 1505 "cplus.met"
#line 1506 "cplus.met"
            ReplaceTree(inter ,2 ,val );
#line 1506 "cplus.met"
#line 1507 "cplus.met"
            inter = val ;
#line 1507 "cplus.met"
        } 
#line 1507 "cplus.met"
#line 1509 "cplus.met"
    }
#line 1509 "cplus.met"
#line 1510 "cplus.met"
    {
#line 1510 "cplus.met"
        _retValue = retTree ;
#line 1510 "cplus.met"
        goto qualified_name_ret;
#line 1510 "cplus.met"
        
#line 1510 "cplus.met"
    }
#line 1510 "cplus.met"
#line 1511 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1511 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1511 "cplus.met"
return((PPTREE) 0);
#line 1511 "cplus.met"

#line 1511 "cplus.met"
qualified_name_exit :
#line 1511 "cplus.met"

#line 1511 "cplus.met"
    {
#line 1511 "cplus.met"
        MulFreeTree(3,val,inter,retTree);
#line 1511 "cplus.met"
    }
#line 1511 "cplus.met"
    _Debug = TRACE_RULE("qualified_name",TRACE_EXIT,(PPTREE)0);
#line 1511 "cplus.met"
    _funcLevel--;
#line 1511 "cplus.met"
    return((PPTREE) -1) ;
#line 1511 "cplus.met"

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

#line 1511 "cplus.met"
#line 1459 "cplus.met"
PPTREE cplus::qualified_name_elem ( int error_free)
#line 1459 "cplus.met"
{
#line 1459 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1459 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1459 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1459 "cplus.met"
    int _Debug = TRACE_RULE("qualified_name_elem",TRACE_ENTER,(PPTREE)0);
#line 1459 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1459 "cplus.met"
#line 1460 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1460 "cplus.met"
    if (  !SEE_TOKEN( DPOIDPOI,"::") || !(CommTerm(),1)) 
#line 1460 "cplus.met"
        TOKEN_EXIT(qualified_name_elem_exit,"::")
#line 1460 "cplus.met"
#line 1461 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1461 "cplus.met"
    switch( lexEl.Value) {
#line 1461 "cplus.met"
#line 1462 "cplus.met"
        case TILD : 
#line 1462 "cplus.met"
            tokenAhead = 0 ;
#line 1462 "cplus.met"
            CommTerm();
#line 1462 "cplus.met"
#line 1462 "cplus.met"
            {
#line 1462 "cplus.met"
                PPTREE _ptTree0;
#line 1462 "cplus.met"
                {
#line 1462 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1462 "cplus.met"
                    _ptRes1= MakeTree(DESTRUCT, 1);
#line 1462 "cplus.met"
                    {
#line 1462 "cplus.met"
                        PPTREE _ptTree2,_ptRes2;
#line 1462 "cplus.met"
                        _ptRes2= MakeTree(IDENT, 1);
#line 1462 "cplus.met"
                        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1462 "cplus.met"
                        if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree2))) 
#line 1462 "cplus.met"
                            TOKEN_EXIT(qualified_name_elem_exit,"IDENT")
#line 1462 "cplus.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 1462 "cplus.met"
                        _ptTree1=_ptRes2;
#line 1462 "cplus.met"
                    }
#line 1462 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1462 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1462 "cplus.met"
                }
#line 1462 "cplus.met"
                _retValue =_ptTree0;
#line 1462 "cplus.met"
                goto qualified_name_elem_ret;
#line 1462 "cplus.met"
            }
#line 1462 "cplus.met"
            break;
#line 1462 "cplus.met"
#line 1463 "cplus.met"
        case META : 
#line 1463 "cplus.met"
        case IDENT : 
#line 1463 "cplus.met"
#line 1463 "cplus.met"
            {
#line 1463 "cplus.met"
                PPTREE _ptTree0;
#line 1463 "cplus.met"
                {
#line 1463 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1463 "cplus.met"
                    _ptRes1= MakeTree(IDENT, 1);
#line 1463 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1463 "cplus.met"
                    if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 1463 "cplus.met"
                        TOKEN_EXIT(qualified_name_elem_exit,"IDENT")
#line 1463 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1463 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1463 "cplus.met"
                }
#line 1463 "cplus.met"
                _retValue =_ptTree0;
#line 1463 "cplus.met"
                goto qualified_name_elem_ret;
#line 1463 "cplus.met"
            }
#line 1463 "cplus.met"
            break;
#line 1463 "cplus.met"
#line 1464 "cplus.met"
        case OPERATOR : 
#line 1464 "cplus.met"
#line 1464 "cplus.met"
            {
#line 1464 "cplus.met"
                PPTREE _ptTree0;
#line 1464 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(operator_function_name)(error_free), 81, cplus))== (PPTREE) -1 ) {
#line 1464 "cplus.met"
                    PROG_EXIT(qualified_name_elem_exit,"qualified_name_elem")
#line 1464 "cplus.met"
                }
#line 1464 "cplus.met"
                _retValue =_ptTree0;
#line 1464 "cplus.met"
                goto qualified_name_elem_ret;
#line 1464 "cplus.met"
            }
#line 1464 "cplus.met"
            break;
#line 1464 "cplus.met"
        default :
#line 1464 "cplus.met"
            CASE_EXIT(qualified_name_elem_exit,"either ~ or IDENT or operator")
#line 1464 "cplus.met"
            break;
#line 1464 "cplus.met"
    }
#line 1464 "cplus.met"
#line 1466 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1466 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1466 "cplus.met"
return((PPTREE) 0);
#line 1466 "cplus.met"

#line 1466 "cplus.met"
qualified_name_elem_exit :
#line 1466 "cplus.met"

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

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

#line 1466 "cplus.met"
#line 688 "cplus.met"
PPTREE cplus::quick_prog ( int error_free)
#line 688 "cplus.met"
{
#line 688 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 688 "cplus.met"
    int _value,_nbPre = 0 ;
#line 688 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 688 "cplus.met"
    int _Debug = TRACE_RULE("quick_prog",TRACE_ENTER,(PPTREE)0);
#line 688 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 688 "cplus.met"
#line 688 "cplus.met"
    PPTREE list = (PPTREE) 0,valTree = (PPTREE) 0;
#line 688 "cplus.met"
#line 690 "cplus.met"
    while ((NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(quick_prog_elem), 96, cplus)) && 
#line 690 "cplus.met"
          (! (valTree == (PPTREE) 0))) { 
#line 690 "cplus.met"
#line 691 "cplus.met"
#line 692 "cplus.met"
        FreeTree (valTree );
#line 692 "cplus.met"
#line 693 "cplus.met"
         _lastTree = (PPTREE) 0;
#line 693 "cplus.met"
    } 
#line 693 "cplus.met"
#line 695 "cplus.met"
    ExtUnputBuf();
#line 695 "cplus.met"
    while ((c == ' ')||(c == '\n')||(c == '\t')||(c == '\r')||(c == ''))
#line 695 "cplus.met"
        NextChar() ;
#line 695 "cplus.met"
    ptStockBuf = -1;
#line 695 "cplus.met"
    *lexEl.string = '\0';
#line 695 "cplus.met"
    _nbCharact = 0;
#line 695 "cplus.met"
    tokenAhead = 0;
#line 695 "cplus.met"
    _ptString = lexEl.string ;
#line 695 "cplus.met"
    oldLine=line,oldCol=col;
#line 695 "cplus.met"
    if ( !lexCallLex) {
#line 695 "cplus.met"
        PUT_COORD_CALL;
#line 695 "cplus.met"
    }
#line 695 "cplus.met"
#line 696 "cplus.met"
    if ((tokenAhead && tokenAhead != -1)|| (c != EOF)){
#line 696 "cplus.met"
#line 697 "cplus.met"
        if ( (NQUICK_CALL(_Tak(quick_prog_elem)(error_free), 96, cplus))== (PPTREE) -1 ) {
#line 697 "cplus.met"
            PROG_EXIT(quick_prog_exit,"quick_prog")
#line 697 "cplus.met"
        }
#line 697 "cplus.met"
    }
#line 697 "cplus.met"
#line 698 "cplus.met"
    {
#line 698 "cplus.met"
        _retValue = list ;
#line 698 "cplus.met"
        goto quick_prog_ret;
#line 698 "cplus.met"
        
#line 698 "cplus.met"
    }
#line 698 "cplus.met"
#line 699 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 699 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 699 "cplus.met"
return((PPTREE) 0);
#line 699 "cplus.met"

#line 699 "cplus.met"
quick_prog_exit :
#line 699 "cplus.met"

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

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

#line 699 "cplus.met"
#line 716 "cplus.met"
PPTREE cplus::quick_prog_elem ( int error_free)
#line 716 "cplus.met"
{
#line 716 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 716 "cplus.met"
    int _value,_nbPre = 0 ;
#line 716 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 716 "cplus.met"
    int _Debug = TRACE_RULE("quick_prog_elem",TRACE_ENTER,(PPTREE)0);
#line 716 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 716 "cplus.met"
#line 716 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 716 "cplus.met"
#line 718 "cplus.met"
     debut :
#line 718 "cplus.met"
#line 719 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 719 "cplus.met"
    switch( lexEl.Value) {
#line 719 "cplus.met"
#line 720 "cplus.met"
        case META : 
#line 720 "cplus.met"
        case INCLUDE_DIR : 
#line 720 "cplus.met"
#line 720 "cplus.met"
            {
#line 720 "cplus.met"
                PPTREE _ptTree0;
#line 720 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(include_dir)(error_free), 61, cplus))== (PPTREE) -1 ) {
#line 720 "cplus.met"
                    PROG_EXIT(quick_prog_elem_exit,"quick_prog_elem")
#line 720 "cplus.met"
                }
#line 720 "cplus.met"
                _retValue =_ptTree0;
#line 720 "cplus.met"
                goto quick_prog_elem_ret;
#line 720 "cplus.met"
            }
#line 720 "cplus.met"
            break;
#line 720 "cplus.met"
#line 721 "cplus.met"
        case PRAGMA_DIR : 
#line 721 "cplus.met"
            tokenAhead = 0 ;
#line 721 "cplus.met"
            CommTerm();
#line 721 "cplus.met"
#line 722 "cplus.met"
#line 723 "cplus.met"
            if (NPUSH_CALL_VERIF(_Tak(range_pragma), 101, cplus)){
#line 723 "cplus.met"
#line 723 "cplus.met"
            }
#line 723 "cplus.met"
#line 725 "cplus.met"
            (tokenAhead == 8|| (LexPragma(),TRACE_LEX(1)));
#line 725 "cplus.met"
            switch( lexEl.Value) {
#line 725 "cplus.met"
#line 726 "cplus.met"
                case META : 
#line 726 "cplus.met"
                case PRAGMA_CONFIG : 
#line 726 "cplus.met"
                    tokenAhead = 0 ;
#line 726 "cplus.met"
                    CommTerm();
#line 726 "cplus.met"
#line 727 "cplus.met"
#line 728 "cplus.met"
                    (tokenAhead == 8|| (LexPragma(),TRACE_LEX(1)));
#line 728 "cplus.met"
                    switch( lexEl.Value) {
#line 728 "cplus.met"
#line 729 "cplus.met"
                        case META : 
#line 729 "cplus.met"
                        case PRAGMA_TAB : 
#line 729 "cplus.met"
                            tokenAhead = 0 ;
#line 729 "cplus.met"
                            CommTerm();
#line 729 "cplus.met"
#line 730 "cplus.met"
#line 731 "cplus.met"
                            {
#line 731 "cplus.met"
                                PPTREE _ptTree0,_ptRes0;
#line 731 "cplus.met"
                                _ptRes0= MakeTree(CONFIG, 1);
#line 731 "cplus.met"
                                {
#line 731 "cplus.met"
                                    PPTREE _ptTree1,_ptRes1;
#line 731 "cplus.met"
                                    _ptRes1= MakeTree(TAB_VALUE, 1);
#line 731 "cplus.met"
                                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 731 "cplus.met"
                                    if ( ! TERM_OR_META(INTEGER,"INTEGER") || !(BUILD_TERM_META(_ptTree1))) 
#line 731 "cplus.met"
                                        TOKEN_EXIT(quick_prog_elem_exit,"INTEGER")
#line 731 "cplus.met"
                                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 731 "cplus.met"
                                    _ptTree0=_ptRes1;
#line 731 "cplus.met"
                                }
#line 731 "cplus.met"
                                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 731 "cplus.met"
                                retTree=_ptRes0;
#line 731 "cplus.met"
                            }
#line 731 "cplus.met"
#line 734 "cplus.met"
                            AnalyzeTab (retTree );
#line 734 "cplus.met"
#line 735 "cplus.met"
                            {
#line 735 "cplus.met"
                                _retValue = retTree ;
#line 735 "cplus.met"
                                goto quick_prog_elem_ret;
#line 735 "cplus.met"
                                
#line 735 "cplus.met"
                            }
#line 735 "cplus.met"
                            break;
#line 735 "cplus.met"
#line 737 "cplus.met"
                        case PRAGMA_MODE : 
#line 737 "cplus.met"
                            tokenAhead = 0 ;
#line 737 "cplus.met"
                            CommTerm();
#line 737 "cplus.met"
#line 738 "cplus.met"
#line 739 "cplus.met"
                            {
#line 739 "cplus.met"
                                PPTREE _ptTree0,_ptRes0;
#line 739 "cplus.met"
                                _ptRes0= MakeTree(CONFIG, 1);
#line 739 "cplus.met"
                                {
#line 739 "cplus.met"
                                    PPTREE _ptTree1,_ptRes1;
#line 739 "cplus.met"
                                    _ptRes1= MakeTree(MODE_VALUE, 1);
#line 739 "cplus.met"
                                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 739 "cplus.met"
                                    if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 739 "cplus.met"
                                        TOKEN_EXIT(quick_prog_elem_exit,"IDENT")
#line 739 "cplus.met"
                                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 739 "cplus.met"
                                    _ptTree0=_ptRes1;
#line 739 "cplus.met"
                                }
#line 739 "cplus.met"
                                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 739 "cplus.met"
                                retTree=_ptRes0;
#line 739 "cplus.met"
                            }
#line 739 "cplus.met"
#line 742 "cplus.met"
                            AnalyzeMode (retTree );
#line 742 "cplus.met"
#line 743 "cplus.met"
                            {
#line 743 "cplus.met"
                                _retValue = retTree ;
#line 743 "cplus.met"
                                goto quick_prog_elem_ret;
#line 743 "cplus.met"
                                
#line 743 "cplus.met"
                            }
#line 743 "cplus.met"
                            break;
#line 743 "cplus.met"
#line 745 "cplus.met"
                        case PRAGMA_BRACE_ALIGN : 
#line 745 "cplus.met"
                            tokenAhead = 0 ;
#line 745 "cplus.met"
                            CommTerm();
#line 745 "cplus.met"
#line 746 "cplus.met"
#line 747 "cplus.met"
                            {
#line 747 "cplus.met"
                                PPTREE _ptTree0,_ptRes0;
#line 747 "cplus.met"
                                _ptRes0= MakeTree(CONFIG, 1);
#line 747 "cplus.met"
                                {
#line 747 "cplus.met"
                                    PPTREE _ptTree1,_ptRes1;
#line 747 "cplus.met"
                                    _ptRes1= MakeTree(BRACE_ALIGN_VALUE, 1);
#line 747 "cplus.met"
                                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 747 "cplus.met"
                                    if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 747 "cplus.met"
                                        TOKEN_EXIT(quick_prog_elem_exit,"IDENT")
#line 747 "cplus.met"
                                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 747 "cplus.met"
                                    _ptTree0=_ptRes1;
#line 747 "cplus.met"
                                }
#line 747 "cplus.met"
                                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 747 "cplus.met"
                                retTree=_ptRes0;
#line 747 "cplus.met"
                            }
#line 747 "cplus.met"
#line 750 "cplus.met"
                            AnalyzeBraceAlign (retTree );
#line 750 "cplus.met"
#line 751 "cplus.met"
                            {
#line 751 "cplus.met"
                                _retValue = retTree ;
#line 751 "cplus.met"
                                goto quick_prog_elem_ret;
#line 751 "cplus.met"
                                
#line 751 "cplus.met"
                            }
#line 751 "cplus.met"
                            break;
#line 751 "cplus.met"
#line 753 "cplus.met"
                        case PRAGMA_SIMPLIFY : 
#line 753 "cplus.met"
                            tokenAhead = 0 ;
#line 753 "cplus.met"
                            CommTerm();
#line 753 "cplus.met"
#line 754 "cplus.met"
#line 755 "cplus.met"
                            {
#line 755 "cplus.met"
                                PPTREE _ptTree0,_ptRes0;
#line 755 "cplus.met"
                                _ptRes0= MakeTree(SIMPLIFY, 1);
#line 755 "cplus.met"
                                {
#line 755 "cplus.met"
                                    PPTREE _ptTree1,_ptRes1;
#line 755 "cplus.met"
                                    _ptRes1= MakeTree(SIMPLIFY_VALUE, 1);
#line 755 "cplus.met"
                                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 755 "cplus.met"
                                    if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 755 "cplus.met"
                                        TOKEN_EXIT(quick_prog_elem_exit,"IDENT")
#line 755 "cplus.met"
                                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 755 "cplus.met"
                                    _ptTree0=_ptRes1;
#line 755 "cplus.met"
                                }
#line 755 "cplus.met"
                                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 755 "cplus.met"
                                retTree=_ptRes0;
#line 755 "cplus.met"
                            }
#line 755 "cplus.met"
#line 758 "cplus.met"
                            AnalyzeSimplify (retTree );
#line 758 "cplus.met"
#line 759 "cplus.met"
                            {
#line 759 "cplus.met"
                                _retValue = retTree ;
#line 759 "cplus.met"
                                goto quick_prog_elem_ret;
#line 759 "cplus.met"
                                
#line 759 "cplus.met"
                            }
#line 759 "cplus.met"
                            break;
#line 759 "cplus.met"
#line 761 "cplus.met"
                        case PRAGMA_SINGLE_SWITCH_INDENT : 
#line 761 "cplus.met"
                            tokenAhead = 0 ;
#line 761 "cplus.met"
                            CommTerm();
#line 761 "cplus.met"
#line 762 "cplus.met"
#line 763 "cplus.met"
                            {
#line 763 "cplus.met"
                                PPTREE _ptTree0,_ptRes0;
#line 763 "cplus.met"
                                _ptRes0= MakeTree(CONFIG, 1);
#line 763 "cplus.met"
                                {
#line 763 "cplus.met"
                                    PPTREE _ptTree1,_ptRes1;
#line 763 "cplus.met"
                                    _ptRes1= MakeTree(SINGLE_SWITCH_INDENT_VALUE, 1);
#line 763 "cplus.met"
                                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 763 "cplus.met"
                                    if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 763 "cplus.met"
                                        TOKEN_EXIT(quick_prog_elem_exit,"IDENT")
#line 763 "cplus.met"
                                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 763 "cplus.met"
                                    _ptTree0=_ptRes1;
#line 763 "cplus.met"
                                }
#line 763 "cplus.met"
                                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 763 "cplus.met"
                                retTree=_ptRes0;
#line 763 "cplus.met"
                            }
#line 763 "cplus.met"
#line 767 "cplus.met"
                            AnalyzeSingleSwitchIndent (retTree );
#line 767 "cplus.met"
#line 768 "cplus.met"
                            {
#line 768 "cplus.met"
                                _retValue = retTree ;
#line 768 "cplus.met"
                                goto quick_prog_elem_ret;
#line 768 "cplus.met"
                                
#line 768 "cplus.met"
                            }
#line 768 "cplus.met"
                            break;
#line 768 "cplus.met"
#line 770 "cplus.met"
                        case PRAGMA_ASSIGN_ALIGN : 
#line 770 "cplus.met"
                            tokenAhead = 0 ;
#line 770 "cplus.met"
                            CommTerm();
#line 770 "cplus.met"
#line 771 "cplus.met"
#line 772 "cplus.met"
                            {
#line 772 "cplus.met"
                                PPTREE _ptTree0,_ptRes0;
#line 772 "cplus.met"
                                _ptRes0= MakeTree(CONFIG, 1);
#line 772 "cplus.met"
                                {
#line 772 "cplus.met"
                                    PPTREE _ptTree1,_ptRes1;
#line 772 "cplus.met"
                                    _ptRes1= MakeTree(ASSIGN_ALIGN, 1);
#line 772 "cplus.met"
                                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 772 "cplus.met"
                                    if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 772 "cplus.met"
                                        TOKEN_EXIT(quick_prog_elem_exit,"IDENT")
#line 772 "cplus.met"
                                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 772 "cplus.met"
                                    _ptTree0=_ptRes1;
#line 772 "cplus.met"
                                }
#line 772 "cplus.met"
                                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 772 "cplus.met"
                                retTree=_ptRes0;
#line 772 "cplus.met"
                            }
#line 772 "cplus.met"
#line 775 "cplus.met"
                            AnalyzeAssignAlign (retTree );
#line 775 "cplus.met"
#line 776 "cplus.met"
                            {
#line 776 "cplus.met"
                                _retValue = retTree ;
#line 776 "cplus.met"
                                goto quick_prog_elem_ret;
#line 776 "cplus.met"
                                
#line 776 "cplus.met"
                            }
#line 776 "cplus.met"
                            break;
#line 776 "cplus.met"
#line 778 "cplus.met"
                        case PRAGMA_MARGIN : 
#line 778 "cplus.met"
                            tokenAhead = 0 ;
#line 778 "cplus.met"
                            CommTerm();
#line 778 "cplus.met"
#line 779 "cplus.met"
#line 780 "cplus.met"
                            {
#line 780 "cplus.met"
                                PPTREE _ptTree0,_ptRes0;
#line 780 "cplus.met"
                                _ptRes0= MakeTree(CONFIG, 1);
#line 780 "cplus.met"
                                {
#line 780 "cplus.met"
                                    PPTREE _ptTree1,_ptRes1;
#line 780 "cplus.met"
                                    _ptRes1= MakeTree(MARGIN_VALUE, 1);
#line 780 "cplus.met"
                                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 780 "cplus.met"
                                    if ( ! TERM_OR_META(INTEGER,"INTEGER") || !(BUILD_TERM_META(_ptTree1))) 
#line 780 "cplus.met"
                                        TOKEN_EXIT(quick_prog_elem_exit,"INTEGER")
#line 780 "cplus.met"
                                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 780 "cplus.met"
                                    _ptTree0=_ptRes1;
#line 780 "cplus.met"
                                }
#line 780 "cplus.met"
                                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 780 "cplus.met"
                                retTree=_ptRes0;
#line 780 "cplus.met"
                            }
#line 780 "cplus.met"
#line 783 "cplus.met"
                            AnalyzeMargin (retTree );
#line 783 "cplus.met"
#line 784 "cplus.met"
                            {
#line 784 "cplus.met"
                                _retValue = retTree ;
#line 784 "cplus.met"
                                goto quick_prog_elem_ret;
#line 784 "cplus.met"
                                
#line 784 "cplus.met"
                            }
#line 784 "cplus.met"
                            break;
#line 784 "cplus.met"
#line 786 "cplus.met"
                        case PRAGMA_COMMENT_START : 
#line 786 "cplus.met"
                            tokenAhead = 0 ;
#line 786 "cplus.met"
                            CommTerm();
#line 786 "cplus.met"
#line 787 "cplus.met"
#line 788 "cplus.met"
                            {
#line 788 "cplus.met"
                                PPTREE _ptTree0,_ptRes0;
#line 788 "cplus.met"
                                _ptRes0= MakeTree(CONFIG, 1);
#line 788 "cplus.met"
                                {
#line 788 "cplus.met"
                                    PPTREE _ptTree1,_ptRes1;
#line 788 "cplus.met"
                                    _ptRes1= MakeTree(COMMENT_START, 1);
#line 788 "cplus.met"
                                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 788 "cplus.met"
                                    if ( ! TERM_OR_META(STRING,"STRING") || !(BUILD_TERM_META(_ptTree1))) 
#line 788 "cplus.met"
                                        TOKEN_EXIT(quick_prog_elem_exit,"STRING")
#line 788 "cplus.met"
                                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 788 "cplus.met"
                                    _ptTree0=_ptRes1;
#line 788 "cplus.met"
                                }
#line 788 "cplus.met"
                                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 788 "cplus.met"
                                retTree=_ptRes0;
#line 788 "cplus.met"
                            }
#line 788 "cplus.met"
#line 791 "cplus.met"
                            AnalyzeComment (retTree );
#line 791 "cplus.met"
#line 792 "cplus.met"
                            {
#line 792 "cplus.met"
                                _retValue = retTree ;
#line 792 "cplus.met"
                                goto quick_prog_elem_ret;
#line 792 "cplus.met"
                                
#line 792 "cplus.met"
                            }
#line 792 "cplus.met"
                            break;
#line 792 "cplus.met"
#line 794 "cplus.met"
                        case PRAGMA_COMMENT_MIDDLE : 
#line 794 "cplus.met"
                            tokenAhead = 0 ;
#line 794 "cplus.met"
                            CommTerm();
#line 794 "cplus.met"
#line 795 "cplus.met"
#line 796 "cplus.met"
                            {
#line 796 "cplus.met"
                                PPTREE _ptTree0,_ptRes0;
#line 796 "cplus.met"
                                _ptRes0= MakeTree(CONFIG, 1);
#line 796 "cplus.met"
                                {
#line 796 "cplus.met"
                                    PPTREE _ptTree1,_ptRes1;
#line 796 "cplus.met"
                                    _ptRes1= MakeTree(COMMENT_MIDDLE, 1);
#line 796 "cplus.met"
                                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 796 "cplus.met"
                                    if ( ! TERM_OR_META(STRING,"STRING") || !(BUILD_TERM_META(_ptTree1))) 
#line 796 "cplus.met"
                                        TOKEN_EXIT(quick_prog_elem_exit,"STRING")
#line 796 "cplus.met"
                                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 796 "cplus.met"
                                    _ptTree0=_ptRes1;
#line 796 "cplus.met"
                                }
#line 796 "cplus.met"
                                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 796 "cplus.met"
                                retTree=_ptRes0;
#line 796 "cplus.met"
                            }
#line 796 "cplus.met"
#line 799 "cplus.met"
                            AnalyzeComment (retTree );
#line 799 "cplus.met"
#line 800 "cplus.met"
                            {
#line 800 "cplus.met"
                                _retValue = retTree ;
#line 800 "cplus.met"
                                goto quick_prog_elem_ret;
#line 800 "cplus.met"
                                
#line 800 "cplus.met"
                            }
#line 800 "cplus.met"
                            break;
#line 800 "cplus.met"
#line 802 "cplus.met"
                        case PRAGMA_COMMENT_END : 
#line 802 "cplus.met"
                            tokenAhead = 0 ;
#line 802 "cplus.met"
                            CommTerm();
#line 802 "cplus.met"
#line 803 "cplus.met"
#line 804 "cplus.met"
                            {
#line 804 "cplus.met"
                                PPTREE _ptTree0,_ptRes0;
#line 804 "cplus.met"
                                _ptRes0= MakeTree(CONFIG, 1);
#line 804 "cplus.met"
                                {
#line 804 "cplus.met"
                                    PPTREE _ptTree1,_ptRes1;
#line 804 "cplus.met"
                                    _ptRes1= MakeTree(COMMENT_END, 1);
#line 804 "cplus.met"
                                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 804 "cplus.met"
                                    if ( ! TERM_OR_META(STRING,"STRING") || !(BUILD_TERM_META(_ptTree1))) 
#line 804 "cplus.met"
                                        TOKEN_EXIT(quick_prog_elem_exit,"STRING")
#line 804 "cplus.met"
                                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 804 "cplus.met"
                                    _ptTree0=_ptRes1;
#line 804 "cplus.met"
                                }
#line 804 "cplus.met"
                                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 804 "cplus.met"
                                retTree=_ptRes0;
#line 804 "cplus.met"
                            }
#line 804 "cplus.met"
#line 807 "cplus.met"
                            AnalyzeComment (retTree );
#line 807 "cplus.met"
#line 808 "cplus.met"
                            {
#line 808 "cplus.met"
                                _retValue = retTree ;
#line 808 "cplus.met"
                                goto quick_prog_elem_ret;
#line 808 "cplus.met"
                                
#line 808 "cplus.met"
                            }
#line 808 "cplus.met"
                            break;
#line 808 "cplus.met"
#line 810 "cplus.met"
                        case PRAGMA_COMMENT_PLUS : 
#line 810 "cplus.met"
                            tokenAhead = 0 ;
#line 810 "cplus.met"
                            CommTerm();
#line 810 "cplus.met"
#line 811 "cplus.met"
#line 812 "cplus.met"
                            {
#line 812 "cplus.met"
                                PPTREE _ptTree0,_ptRes0;
#line 812 "cplus.met"
                                _ptRes0= MakeTree(CONFIG, 1);
#line 812 "cplus.met"
                                {
#line 812 "cplus.met"
                                    PPTREE _ptTree1,_ptRes1;
#line 812 "cplus.met"
                                    _ptRes1= MakeTree(COMMENT_PLUS, 1);
#line 812 "cplus.met"
                                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 812 "cplus.met"
                                    if ( ! TERM_OR_META(STRING,"STRING") || !(BUILD_TERM_META(_ptTree1))) 
#line 812 "cplus.met"
                                        TOKEN_EXIT(quick_prog_elem_exit,"STRING")
#line 812 "cplus.met"
                                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 812 "cplus.met"
                                    _ptTree0=_ptRes1;
#line 812 "cplus.met"
                                }
#line 812 "cplus.met"
                                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 812 "cplus.met"
                                retTree=_ptRes0;
#line 812 "cplus.met"
                            }
#line 812 "cplus.met"
#line 815 "cplus.met"
                            AnalyzeComment (retTree );
#line 815 "cplus.met"
#line 816 "cplus.met"
                            {
#line 816 "cplus.met"
                                _retValue = retTree ;
#line 816 "cplus.met"
                                goto quick_prog_elem_ret;
#line 816 "cplus.met"
                                
#line 816 "cplus.met"
                            }
#line 816 "cplus.met"
                            break;
#line 816 "cplus.met"
#line 818 "cplus.met"
                        case PRAGMA_INDENT_FUNCTION_TYPE : 
#line 818 "cplus.met"
                            tokenAhead = 0 ;
#line 818 "cplus.met"
                            CommTerm();
#line 818 "cplus.met"
#line 819 "cplus.met"
#line 820 "cplus.met"
                            {
#line 820 "cplus.met"
                                PPTREE _ptTree0,_ptRes0;
#line 820 "cplus.met"
                                _ptRes0= MakeTree(CONFIG, 1);
#line 820 "cplus.met"
                                {
#line 820 "cplus.met"
                                    PPTREE _ptTree1,_ptRes1;
#line 820 "cplus.met"
                                    _ptRes1= MakeTree(INDENT_FUNCTION_TYPE, 1);
#line 820 "cplus.met"
                                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 820 "cplus.met"
                                    if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 820 "cplus.met"
                                        TOKEN_EXIT(quick_prog_elem_exit,"IDENT")
#line 820 "cplus.met"
                                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 820 "cplus.met"
                                    _ptTree0=_ptRes1;
#line 820 "cplus.met"
                                }
#line 820 "cplus.met"
                                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 820 "cplus.met"
                                retTree=_ptRes0;
#line 820 "cplus.met"
                            }
#line 820 "cplus.met"
#line 824 "cplus.met"
                            AnalyzeIndentFunctionType (retTree );
#line 824 "cplus.met"
#line 825 "cplus.met"
                            {
#line 825 "cplus.met"
                                _retValue = retTree ;
#line 825 "cplus.met"
                                goto quick_prog_elem_ret;
#line 825 "cplus.met"
                                
#line 825 "cplus.met"
                            }
#line 825 "cplus.met"
                            break;
#line 825 "cplus.met"
#line 827 "cplus.met"
                        default : 
#line 827 "cplus.met"
#line 827 "cplus.met"
                            {
#line 827 "cplus.met"
                                PPTREE _ptTree0;
#line 827 "cplus.met"
                                if ( (_ptTree0=NQUICK_CALL(_Tak(other_config)(error_free), 82, cplus))== (PPTREE) -1 ) {
#line 827 "cplus.met"
                                    PROG_EXIT(quick_prog_elem_exit,"quick_prog_elem")
#line 827 "cplus.met"
                                }
#line 827 "cplus.met"
                                _retValue =_ptTree0;
#line 827 "cplus.met"
                                goto quick_prog_elem_ret;
#line 827 "cplus.met"
                            }
#line 827 "cplus.met"
                            break;
#line 827 "cplus.met"
                    }
#line 827 "cplus.met"
                    break;
#line 827 "cplus.met"
#line 827 "cplus.met"
                default : 
#line 827 "cplus.met"
#line 827 "cplus.met"
                    break;
#line 827 "cplus.met"
            }
#line 827 "cplus.met"
#line 832 "cplus.met"
            {
#line 832 "cplus.met"
                PPTREE _ptTree0;
#line 832 "cplus.met"
                {
#line 832 "cplus.met"
                    PPTREE _ptRes1;
#line 832 "cplus.met"
                    _ptRes1= MakeTree(IDENT, 1);
#line 832 "cplus.met"
                    _ptTree0=_ptRes1;
#line 832 "cplus.met"
                }
#line 832 "cplus.met"
                _retValue =_ptTree0;
#line 832 "cplus.met"
                goto quick_prog_elem_ret;
#line 832 "cplus.met"
            }
#line 832 "cplus.met"
            break;
#line 832 "cplus.met"
#line 834 "cplus.met"
        default : 
#line 834 "cplus.met"
            tokenAhead = 0 ;
#line 834 "cplus.met"
            CommTerm();
#line 834 "cplus.met"
#line 835 "cplus.met"
#line 836 "cplus.met"
            if ((tokenAhead && tokenAhead != -1)|| (c != EOF)){
#line 836 "cplus.met"
#line 837 "cplus.met"
#line 838 "cplus.met"
                (tokenAhead == 5|| (LexEndLine(),TRACE_LEX(1)));
#line 838 "cplus.met"
                if ( ! TERM_OR_META(END_LINE,"END_LINE") || !(CommTerm(),1)) 
#line 838 "cplus.met"
                    TOKEN_EXIT(quick_prog_elem_exit,"END_LINE")
#line 838 "cplus.met"
#line 839 "cplus.met"
                 goto debut;
#line 839 "cplus.met"
#line 840 "cplus.met"
            } else {
#line 840 "cplus.met"
#line 842 "cplus.met"
                {
#line 842 "cplus.met"
                    _retValue = retTree ;
#line 842 "cplus.met"
                    goto quick_prog_elem_ret;
#line 842 "cplus.met"
                    
#line 842 "cplus.met"
                }
#line 842 "cplus.met"
            }
#line 842 "cplus.met"
            break;
#line 842 "cplus.met"
    }
#line 842 "cplus.met"
#line 845 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 845 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 845 "cplus.met"
return((PPTREE) 0);
#line 845 "cplus.met"

#line 845 "cplus.met"
quick_prog_elem_exit :
#line 845 "cplus.met"

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

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

#line 845 "cplus.met"
