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

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


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

#line 1684 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1684 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1684 "cplus.met"
    int _Debug = TRACE_RULE("exception_ansi",TRACE_ENTER,(PPTREE)0);
#line 1684 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1684 "cplus.met"
#line 1684 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 1684 "cplus.met"
#line 1684 "cplus.met"
    PPTREE retTree = (PPTREE) 0,list = (PPTREE) 0,elem = (PPTREE) 0;
#line 1684 "cplus.met"
#line 1686 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1686 "cplus.met"
    if (  !SEE_TOKEN( TRY,"try") || !(CommTerm(),1)) 
#line 1686 "cplus.met"
        TOKEN_EXIT(exception_ansi_exit,"try")
#line 1686 "cplus.met"
#line 1687 "cplus.met"
    {
#line 1687 "cplus.met"
        PPTREE _ptTree0,_ptRes0;
#line 1687 "cplus.met"
        _ptRes0= MakeTree(EXCEPTION_ANSI, 2);
#line 1687 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(compound_statement)(error_free), 22, cplus))== (PPTREE) -1 ) {
#line 1687 "cplus.met"
            PROG_EXIT(exception_ansi_exit,"exception_ansi")
#line 1687 "cplus.met"
        }
#line 1687 "cplus.met"
        ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1687 "cplus.met"
        retTree=_ptRes0;
#line 1687 "cplus.met"
    }
#line 1687 "cplus.met"
#line 1687 "cplus.met"
    _addlist1 = list ;
#line 1687 "cplus.met"
#line 1688 "cplus.met"
    while (NPUSH_CALL_AFF_VERIF(elem = ,_Tak(catch_unit_ansi), 18, cplus)) { 
#line 1688 "cplus.met"
#line 1689 "cplus.met"
#line 1689 "cplus.met"
        _addlist1 =AddList(_addlist1 ,elem );
#line 1689 "cplus.met"
#line 1689 "cplus.met"
        if (list){
#line 1689 "cplus.met"
#line 1689 "cplus.met"
            _addlist1 = SonTree (_addlist1 ,2 );
#line 1689 "cplus.met"
        } else {
#line 1689 "cplus.met"
#line 1689 "cplus.met"
            list = _addlist1 ;
#line 1689 "cplus.met"
        }
#line 1689 "cplus.met"
    } 
#line 1689 "cplus.met"
#line 1690 "cplus.met"
    {
#line 1690 "cplus.met"
        PPTREE _ptTree0;
#line 1690 "cplus.met"
        _ptTree0=ReplaceTree(retTree ,2 ,list );
#line 1690 "cplus.met"
        _retValue =_ptTree0;
#line 1690 "cplus.met"
        goto exception_ansi_ret;
#line 1690 "cplus.met"
    }
#line 1690 "cplus.met"
#line 1691 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1691 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1691 "cplus.met"
return((PPTREE) 0);
#line 1691 "cplus.met"

#line 1691 "cplus.met"
exception_ansi_exit :
#line 1691 "cplus.met"

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

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

#line 1691 "cplus.met"
#line 2233 "cplus.met"
PPTREE cplus::exclusive_or_expression ( int error_free)
#line 2233 "cplus.met"
{
#line 2233 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2233 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2233 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2233 "cplus.met"
    int _Debug = TRACE_RULE("exclusive_or_expression",TRACE_ENTER,(PPTREE)0);
#line 2233 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2233 "cplus.met"
#line 2233 "cplus.met"
    PPTREE expTree = (PPTREE) 0;
#line 2233 "cplus.met"
#line 2235 "cplus.met"
    if ( (expTree=NQUICK_CALL(_Tak(and_expression)(error_free), 5, cplus))== (PPTREE) -1 ) {
#line 2235 "cplus.met"
        PROG_EXIT(exclusive_or_expression_exit,"exclusive_or_expression")
#line 2235 "cplus.met"
    }
#line 2235 "cplus.met"
#line 2236 "cplus.met"
    while ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(CHAP,"^") && (tokenAhead = 0,CommTerm(),1)) { 
#line 2236 "cplus.met"
#line 2237 "cplus.met"
        {
#line 2237 "cplus.met"
            PPTREE _ptTree0,_ptRes0;
#line 2237 "cplus.met"
            _ptRes0= MakeTree(LXOR, 2);
#line 2237 "cplus.met"
            ReplaceTree(_ptRes0, 1, expTree );
#line 2237 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(and_expression)(error_free), 5, cplus))== (PPTREE) -1 ) {
#line 2237 "cplus.met"
                PROG_EXIT(exclusive_or_expression_exit,"exclusive_or_expression")
#line 2237 "cplus.met"
            }
#line 2237 "cplus.met"
            ReplaceTree(_ptRes0, 2, _ptTree0);
#line 2237 "cplus.met"
            expTree=_ptRes0;
#line 2237 "cplus.met"
        }
#line 2237 "cplus.met"
    } 
#line 2237 "cplus.met"
#line 2238 "cplus.met"
    {
#line 2238 "cplus.met"
        _retValue = expTree ;
#line 2238 "cplus.met"
        goto exclusive_or_expression_ret;
#line 2238 "cplus.met"
        
#line 2238 "cplus.met"
    }
#line 2238 "cplus.met"
#line 2239 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2239 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2239 "cplus.met"
return((PPTREE) 0);
#line 2239 "cplus.met"

#line 2239 "cplus.met"
exclusive_or_expression_exit :
#line 2239 "cplus.met"

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

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

#line 2239 "cplus.met"
#line 2153 "cplus.met"
PPTREE cplus::expression ( int error_free)
#line 2153 "cplus.met"
{
#line 2153 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2153 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2153 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2153 "cplus.met"
    int _Debug = TRACE_RULE("expression",TRACE_ENTER,(PPTREE)0);
#line 2153 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2153 "cplus.met"
#line 2153 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 2153 "cplus.met"
#line 2153 "cplus.met"
    PPTREE expTree = (PPTREE) 0,list = (PPTREE) 0;
#line 2153 "cplus.met"
#line 2155 "cplus.met"
    if ( (expTree=NQUICK_CALL(_Tak(assignment_expression)(error_free), 11, cplus))== (PPTREE) -1 ) {
#line 2155 "cplus.met"
        PROG_EXIT(expression_exit,"expression")
#line 2155 "cplus.met"
    }
#line 2155 "cplus.met"
#line 2156 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( VIRG,",")){
#line 2156 "cplus.met"
#line 2157 "cplus.met"
#line 2158 "cplus.met"
        list =AddList(list ,expTree );
#line 2158 "cplus.met"
#line 2158 "cplus.met"
        _addlist1 = list ;
#line 2158 "cplus.met"
#line 2159 "cplus.met"
        while ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(VIRG,",") && (tokenAhead = 0,CommTerm(),1)) { 
#line 2159 "cplus.met"
#line 2160 "cplus.met"
#line 2160 "cplus.met"
            {
#line 2160 "cplus.met"
                PPTREE _ptTree0;
#line 2160 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(assignment_expression)(error_free), 11, cplus))== (PPTREE) -1 ) {
#line 2160 "cplus.met"
                    PROG_EXIT(expression_exit,"expression")
#line 2160 "cplus.met"
                }
#line 2160 "cplus.met"
                _addlist1 =AddList(_addlist1 , _ptTree0);
#line 2160 "cplus.met"
            }
#line 2160 "cplus.met"
#line 2160 "cplus.met"
            if (list){
#line 2160 "cplus.met"
#line 2160 "cplus.met"
                _addlist1 = SonTree (_addlist1 ,2 );
#line 2160 "cplus.met"
            } else {
#line 2160 "cplus.met"
#line 2160 "cplus.met"
                list = _addlist1 ;
#line 2160 "cplus.met"
            }
#line 2160 "cplus.met"
        } 
#line 2160 "cplus.met"
#line 2161 "cplus.met"
        {
#line 2161 "cplus.met"
            PPTREE _ptTree0;
#line 2161 "cplus.met"
            {
#line 2161 "cplus.met"
                PPTREE _ptRes1;
#line 2161 "cplus.met"
                _ptRes1= MakeTree(EXP_SEQ, 1);
#line 2161 "cplus.met"
                ReplaceTree(_ptRes1, 1, list );
#line 2161 "cplus.met"
                _ptTree0=_ptRes1;
#line 2161 "cplus.met"
            }
#line 2161 "cplus.met"
            _retValue =_ptTree0;
#line 2161 "cplus.met"
            goto expression_ret;
#line 2161 "cplus.met"
        }
#line 2161 "cplus.met"
#line 2162 "cplus.met"
    } else {
#line 2162 "cplus.met"
#line 2164 "cplus.met"
        {
#line 2164 "cplus.met"
            _retValue = expTree ;
#line 2164 "cplus.met"
            goto expression_ret;
#line 2164 "cplus.met"
            
#line 2164 "cplus.met"
        }
#line 2164 "cplus.met"
    }
#line 2164 "cplus.met"
#line 2165 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2165 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2165 "cplus.met"
return((PPTREE) 0);
#line 2165 "cplus.met"

#line 2165 "cplus.met"
expression_exit :
#line 2165 "cplus.met"

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

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

#line 2165 "cplus.met"
#line 2813 "cplus.met"
PPTREE cplus::expression_for ( int error_free)
#line 2813 "cplus.met"
{
#line 2813 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2813 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2813 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2813 "cplus.met"
    int _Debug = TRACE_RULE("expression_for",TRACE_ENTER,(PPTREE)0);
#line 2813 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2813 "cplus.met"
#line 2813 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 2813 "cplus.met"
#line 2815 "cplus.met"
    if ( (retTree=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 2815 "cplus.met"
        PROG_EXIT(expression_for_exit,"expression_for")
#line 2815 "cplus.met"
    }
#line 2815 "cplus.met"
#line 2816 "cplus.met"
    if (! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( PVIR,";"))){
#line 2816 "cplus.met"
#line 2817 "cplus.met"
        LEX_EXIT ("",0);
#line 2817 "cplus.met"
        goto expression_for_exit;
#line 2817 "cplus.met"
#line 2817 "cplus.met"
    }
#line 2817 "cplus.met"
#line 2818 "cplus.met"
    {
#line 2818 "cplus.met"
        _retValue = retTree ;
#line 2818 "cplus.met"
        goto expression_for_ret;
#line 2818 "cplus.met"
        
#line 2818 "cplus.met"
    }
#line 2818 "cplus.met"
#line 2819 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2819 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2819 "cplus.met"
return((PPTREE) 0);
#line 2819 "cplus.met"

#line 2819 "cplus.met"
expression_for_exit :
#line 2819 "cplus.met"

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

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

#line 2819 "cplus.met"
#line 908 "cplus.met"
PPTREE cplus::ext_all ( int error_free)
#line 908 "cplus.met"
{
#line 908 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 908 "cplus.met"
    int _value,_nbPre = 0 ;
#line 908 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 908 "cplus.met"
    int _Debug = TRACE_RULE("ext_all",TRACE_ENTER,(PPTREE)0);
#line 908 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 908 "cplus.met"
#line 908 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 908 "cplus.met"
#line 910 "cplus.met"
    if (NPUSH_CALL_AFF_VERIF(retTree = ,_Tak(ext_all_no_linkage), 51, cplus)){
#line 910 "cplus.met"
#line 911 "cplus.met"
        {
#line 911 "cplus.met"
            _retValue = retTree ;
#line 911 "cplus.met"
            goto ext_all_ret;
#line 911 "cplus.met"
            
#line 911 "cplus.met"
        }
#line 911 "cplus.met"
    } else {
#line 911 "cplus.met"
#line 913 "cplus.met"
        {
#line 913 "cplus.met"
            PPTREE _ptTree0;
#line 913 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(linkage_specification)(error_free), 68, cplus))== (PPTREE) -1 ) {
#line 913 "cplus.met"
                PROG_EXIT(ext_all_exit,"ext_all")
#line 913 "cplus.met"
            }
#line 913 "cplus.met"
            _retValue =_ptTree0;
#line 913 "cplus.met"
            goto ext_all_ret;
#line 913 "cplus.met"
        }
#line 913 "cplus.met"
    }
#line 913 "cplus.met"
#line 914 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 914 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 914 "cplus.met"
return((PPTREE) 0);
#line 914 "cplus.met"

#line 914 "cplus.met"
ext_all_exit :
#line 914 "cplus.met"

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

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

#line 914 "cplus.met"
#line 916 "cplus.met"
PPTREE cplus::ext_all_ext ( int error_free)
#line 916 "cplus.met"
{
#line 916 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 916 "cplus.met"
    int _value,_nbPre = 0 ;
#line 916 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 916 "cplus.met"
    int _Debug = TRACE_RULE("ext_all_ext",TRACE_ENTER,(PPTREE)0);
#line 916 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 916 "cplus.met"
#line 916 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 916 "cplus.met"
#line 918 "cplus.met"
    if (! (NPUSH_CALL_AFF_VERIF(retTree = ,_Tak(protect_declare), 91, cplus))){
#line 918 "cplus.met"
#line 919 "cplus.met"
        if ( (retTree=NQUICK_CALL(_Tak(ext_all)(error_free), 49, cplus))== (PPTREE) -1 ) {
#line 919 "cplus.met"
            PROG_EXIT(ext_all_ext_exit,"ext_all_ext")
#line 919 "cplus.met"
        }
#line 919 "cplus.met"
    }
#line 919 "cplus.met"
#line 920 "cplus.met"
    {
#line 920 "cplus.met"
        _retValue = retTree ;
#line 920 "cplus.met"
        goto ext_all_ext_ret;
#line 920 "cplus.met"
        
#line 920 "cplus.met"
    }
#line 920 "cplus.met"
#line 921 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 921 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 921 "cplus.met"
return((PPTREE) 0);
#line 921 "cplus.met"

#line 921 "cplus.met"
ext_all_ext_exit :
#line 921 "cplus.met"

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

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

#line 921 "cplus.met"
#line 884 "cplus.met"
PPTREE cplus::ext_all_no_linkage ( int error_free)
#line 884 "cplus.met"
{
#line 884 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 884 "cplus.met"
    int _value,_nbPre = 0 ;
#line 884 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 884 "cplus.met"
    int _Debug = TRACE_RULE("ext_all_no_linkage",TRACE_ENTER,(PPTREE)0);
#line 884 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 884 "cplus.met"
#line 884 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 884 "cplus.met"
#line 884 "cplus.met"
    PPTREE decl = (PPTREE) 0,listTemp = (PPTREE) 0;
#line 884 "cplus.met"
#line 886 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(TEMPLATE,"template") && (tokenAhead = 0,CommTerm(),1)){
#line 886 "cplus.met"
#line 887 "cplus.met"
#line 888 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 888 "cplus.met"
        if (  !SEE_TOKEN( INFE,"<") || !(CommTerm(),1)) 
#line 888 "cplus.met"
            TOKEN_EXIT(ext_all_no_linkage_exit,"<")
#line 888 "cplus.met"
#line 888 "cplus.met"
        _addlist1 = listTemp ;
#line 888 "cplus.met"
#line 889 "cplus.met"
        do {
#line 889 "cplus.met"
#line 890 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 890 "cplus.met"
            switch( lexEl.Value) {
#line 890 "cplus.met"
#line 891 "cplus.met"
                case CLASS : 
#line 891 "cplus.met"
                    tokenAhead = 0 ;
#line 891 "cplus.met"
                    CommTerm();
#line 891 "cplus.met"
#line 891 "cplus.met"
#line 891 "cplus.met"
                    {
#line 891 "cplus.met"
                        PPTREE _ptTree0;
#line 891 "cplus.met"
                        {
#line 891 "cplus.met"
                            PPTREE _ptTree1,_ptRes1;
#line 891 "cplus.met"
                            _ptRes1= MakeTree(CLASS_PARAM, 1);
#line 891 "cplus.met"
                            {
#line 891 "cplus.met"
                                PPTREE _ptTree2,_ptRes2;
#line 891 "cplus.met"
                                _ptRes2= MakeTree(IDENT, 1);
#line 891 "cplus.met"
                                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 891 "cplus.met"
                                if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree2))) 
#line 891 "cplus.met"
                                    TOKEN_EXIT(ext_all_no_linkage_exit,"IDENT")
#line 891 "cplus.met"
                                ReplaceTree(_ptRes2, 1, _ptTree2);
#line 891 "cplus.met"
                                _ptTree1=_ptRes2;
#line 891 "cplus.met"
                            }
#line 891 "cplus.met"
                            ReplaceTree(_ptRes1, 1, _ptTree1);
#line 891 "cplus.met"
                            _ptTree0=_ptRes1;
#line 891 "cplus.met"
                        }
#line 891 "cplus.met"
                        _addlist1 =AddList(_addlist1 , _ptTree0);
#line 891 "cplus.met"
                    }
#line 891 "cplus.met"
#line 891 "cplus.met"
                    if (listTemp){
#line 891 "cplus.met"
#line 891 "cplus.met"
                        _addlist1 = SonTree (_addlist1 ,2 );
#line 891 "cplus.met"
                    } else {
#line 891 "cplus.met"
#line 891 "cplus.met"
                        listTemp = _addlist1 ;
#line 891 "cplus.met"
                    }
#line 891 "cplus.met"
                    break;
#line 891 "cplus.met"
#line 893 "cplus.met"
                default : 
#line 893 "cplus.met"
#line 893 "cplus.met"
#line 893 "cplus.met"
                    {
#line 893 "cplus.met"
                        PPTREE _ptTree0;
#line 893 "cplus.met"
                        if ( (_ptTree0=NQUICK_CALL(_Tak(arg_declarator)(error_free), 6, cplus))== (PPTREE) -1 ) {
#line 893 "cplus.met"
                            PROG_EXIT(ext_all_no_linkage_exit,"ext_all_no_linkage")
#line 893 "cplus.met"
                        }
#line 893 "cplus.met"
                        _addlist1 =AddList(_addlist1 , _ptTree0);
#line 893 "cplus.met"
                    }
#line 893 "cplus.met"
#line 893 "cplus.met"
                    if (listTemp){
#line 893 "cplus.met"
#line 893 "cplus.met"
                        _addlist1 = SonTree (_addlist1 ,2 );
#line 893 "cplus.met"
                    } else {
#line 893 "cplus.met"
#line 893 "cplus.met"
                        listTemp = _addlist1 ;
#line 893 "cplus.met"
                    }
#line 893 "cplus.met"
                    break;
#line 893 "cplus.met"
            }
#line 893 "cplus.met"
#line 895 "cplus.met"
        } while ( !(! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(VIRG,",") && (tokenAhead = 0,CommTerm(),1)))) ;
#line 895 "cplus.met"
#line 896 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 896 "cplus.met"
        if (  !SEE_TOKEN( SUPE,">") || !(CommTerm(),1)) 
#line 896 "cplus.met"
            TOKEN_EXIT(ext_all_no_linkage_exit,">")
#line 896 "cplus.met"
#line 897 "cplus.met"
        {
#line 897 "cplus.met"
            PPTREE _ptTree0;
#line 897 "cplus.met"
            {
#line 897 "cplus.met"
                PPTREE _ptTree1,_ptRes1;
#line 897 "cplus.met"
                _ptRes1= MakeTree(TEMPLATE_DECL, 2);
#line 897 "cplus.met"
                ReplaceTree(_ptRes1, 1, listTemp );
#line 897 "cplus.met"
                if ( (_ptTree1=NQUICK_CALL(_Tak(ext_all_no_linkage)(error_free), 51, cplus))== (PPTREE) -1 ) {
#line 897 "cplus.met"
                    PROG_EXIT(ext_all_no_linkage_exit,"ext_all_no_linkage")
#line 897 "cplus.met"
                }
#line 897 "cplus.met"
                ReplaceTree(_ptRes1, 2, _ptTree1);
#line 897 "cplus.met"
                _ptTree0=_ptRes1;
#line 897 "cplus.met"
            }
#line 897 "cplus.met"
            _retValue =_ptTree0;
#line 897 "cplus.met"
            goto ext_all_no_linkage_ret;
#line 897 "cplus.met"
        }
#line 897 "cplus.met"
#line 898 "cplus.met"
    }
#line 898 "cplus.met"
#line 899 "cplus.met"
    if ((((NPUSH_CALL_AFF_VERIF(decl = ,_Tak(ext_data_declaration), 54, cplus)) || 
#line 899 "cplus.met"
         (NPUSH_CALL_AFF_VERIF(decl = ,_Tak(func_declaration), 58, cplus))) || 
#line 899 "cplus.met"
        (NPUSH_CALL_AFF_VERIF(decl = ,_Tak(ext_decl_dir), 55, cplus))) || 
#line 899 "cplus.met"
       (NPUSH_CALL_AFF_VERIF(decl = ,_Tak(asm_declaration), 9, cplus))){
#line 899 "cplus.met"
#line 903 "cplus.met"
        {
#line 903 "cplus.met"
            _retValue = decl ;
#line 903 "cplus.met"
            goto ext_all_no_linkage_ret;
#line 903 "cplus.met"
            
#line 903 "cplus.met"
        }
#line 903 "cplus.met"
    } else {
#line 903 "cplus.met"
#line 905 "cplus.met"
        {
#line 905 "cplus.met"
            PPTREE _ptTree0;
#line 905 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(func_declaration)(error_free), 58, cplus))== (PPTREE) -1 ) {
#line 905 "cplus.met"
                PROG_EXIT(ext_all_no_linkage_exit,"ext_all_no_linkage")
#line 905 "cplus.met"
            }
#line 905 "cplus.met"
            _retValue =_ptTree0;
#line 905 "cplus.met"
            goto ext_all_no_linkage_ret;
#line 905 "cplus.met"
        }
#line 905 "cplus.met"
    }
#line 905 "cplus.met"
#line 906 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 906 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 906 "cplus.met"
return((PPTREE) 0);
#line 906 "cplus.met"

#line 906 "cplus.met"
ext_all_no_linkage_exit :
#line 906 "cplus.met"

#line 906 "cplus.met"
    {
#line 906 "cplus.met"
        MulFreeTree(3,listTemp,decl,_addlist1);
#line 906 "cplus.met"
    }
#line 906 "cplus.met"
    _Debug = TRACE_RULE("ext_all_no_linkage",TRACE_EXIT,(PPTREE)0);
#line 906 "cplus.met"
    _funcLevel--;
#line 906 "cplus.met"
    return((PPTREE) -1) ;
#line 906 "cplus.met"

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

#line 906 "cplus.met"
#line 1285 "cplus.met"
PPTREE cplus::ext_data_decl_sc_ty ( int error_free)
#line 1285 "cplus.met"
{
#line 1285 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1285 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1285 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1285 "cplus.met"
    int _Debug = TRACE_RULE("ext_data_decl_sc_ty",TRACE_ENTER,(PPTREE)0);
#line 1285 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1285 "cplus.met"
#line 1285 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 1285 "cplus.met"
#line 1287 "cplus.met"
    {
#line 1287 "cplus.met"
        PPTREE _ptRes0;
#line 1287 "cplus.met"
        _ptRes0= MakeTree(DECLARATION, 3);
#line 1287 "cplus.met"
        retTree=_ptRes0;
#line 1287 "cplus.met"
    }
#line 1287 "cplus.met"
#line 1288 "cplus.met"
    {
#line 1288 "cplus.met"
        PPTREE _ptTree0;
#line 1288 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(sc_specifier)(error_free), 103, cplus))== (PPTREE) -1 ) {
#line 1288 "cplus.met"
            PROG_EXIT(ext_data_decl_sc_ty_exit,"ext_data_decl_sc_ty")
#line 1288 "cplus.met"
        }
#line 1288 "cplus.met"
        ReplaceTree(retTree , 1 , _ptTree0);
#line 1288 "cplus.met"
    }
#line 1288 "cplus.met"
#line 1289 "cplus.met"
    {
#line 1289 "cplus.met"
        PPTREE _ptTree0;
#line 1289 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(type_specifier)(error_free), 119, cplus))== (PPTREE) -1 ) {
#line 1289 "cplus.met"
            PROG_EXIT(ext_data_decl_sc_ty_exit,"ext_data_decl_sc_ty")
#line 1289 "cplus.met"
        }
#line 1289 "cplus.met"
        ReplaceTree(retTree , 2 , _ptTree0);
#line 1289 "cplus.met"
    }
#line 1289 "cplus.met"
#line 1290 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1290 "cplus.met"
    if (  !SEE_TOKEN( PVIR,";") || !(CommTerm(),1)) 
#line 1290 "cplus.met"
        TOKEN_EXIT(ext_data_decl_sc_ty_exit,";")
#line 1290 "cplus.met"
#line 1291 "cplus.met"
    {
#line 1291 "cplus.met"
        _retValue = retTree ;
#line 1291 "cplus.met"
        goto ext_data_decl_sc_ty_ret;
#line 1291 "cplus.met"
        
#line 1291 "cplus.met"
    }
#line 1291 "cplus.met"
#line 1292 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1292 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1292 "cplus.met"
return((PPTREE) 0);
#line 1292 "cplus.met"

#line 1292 "cplus.met"
ext_data_decl_sc_ty_exit :
#line 1292 "cplus.met"

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

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

#line 1292 "cplus.met"
#line 1294 "cplus.met"
PPTREE cplus::ext_data_decl_simp ( int error_free)
#line 1294 "cplus.met"
{
#line 1294 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1294 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1294 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1294 "cplus.met"
    int _Debug = TRACE_RULE("ext_data_decl_simp",TRACE_ENTER,(PPTREE)0);
#line 1294 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1294 "cplus.met"
#line 1294 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 1294 "cplus.met"
#line 1296 "cplus.met"
    if (! (NPUSH_CALL_AFF_VERIF(retTree = ,_Tak(data_declaration), 30, cplus))){
#line 1296 "cplus.met"
#line 1297 "cplus.met"
        if ( (retTree=NQUICK_CALL(_Tak(ext_data_decl_sc_ty)(error_free), 52, cplus))== (PPTREE) -1 ) {
#line 1297 "cplus.met"
            PROG_EXIT(ext_data_decl_simp_exit,"ext_data_decl_simp")
#line 1297 "cplus.met"
        }
#line 1297 "cplus.met"
    }
#line 1297 "cplus.met"
#line 1298 "cplus.met"
    {
#line 1298 "cplus.met"
        _retValue = retTree ;
#line 1298 "cplus.met"
        goto ext_data_decl_simp_ret;
#line 1298 "cplus.met"
        
#line 1298 "cplus.met"
    }
#line 1298 "cplus.met"
#line 1299 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1299 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1299 "cplus.met"
return((PPTREE) 0);
#line 1299 "cplus.met"

#line 1299 "cplus.met"
ext_data_decl_simp_exit :
#line 1299 "cplus.met"

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

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

#line 1299 "cplus.met"
#line 1309 "cplus.met"
PPTREE cplus::ext_data_declaration ( int error_free)
#line 1309 "cplus.met"
{
#line 1309 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1309 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1309 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1309 "cplus.met"
    int _Debug = TRACE_RULE("ext_data_declaration",TRACE_ENTER,(PPTREE)0);
#line 1309 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1309 "cplus.met"
#line 1309 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 1309 "cplus.met"
#line 1311 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1311 "cplus.met"
    switch( lexEl.Value) {
#line 1311 "cplus.met"
#line 1312 "cplus.met"
        case TYPEDEF : 
#line 1312 "cplus.met"
            tokenAhead = 0 ;
#line 1312 "cplus.met"
            CommTerm();
#line 1312 "cplus.met"
#line 1313 "cplus.met"
#line 1314 "cplus.met"
            if (! (NPUSH_CALL_AFF_VERIF(retTree = ,_Tak(typedef_and_declarator), 121, cplus))){
#line 1314 "cplus.met"
#line 1315 "cplus.met"
                {
#line 1315 "cplus.met"
                    PPTREE _ptTree0,_ptRes0;
#line 1315 "cplus.met"
                    _ptRes0= MakeTree(TYPEDEF, 2);
#line 1315 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(declarator_list)(error_free), 36, cplus))== (PPTREE) -1 ) {
#line 1315 "cplus.met"
                        PROG_EXIT(ext_data_declaration_exit,"ext_data_declaration")
#line 1315 "cplus.met"
                    }
#line 1315 "cplus.met"
                    ReplaceTree(_ptRes0, 2, _ptTree0);
#line 1315 "cplus.met"
                    retTree=_ptRes0;
#line 1315 "cplus.met"
                }
#line 1315 "cplus.met"
            }
#line 1315 "cplus.met"
#line 1316 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1316 "cplus.met"
            if (  !SEE_TOKEN( PVIR,";") || !(CommTerm(),1)) 
#line 1316 "cplus.met"
                TOKEN_EXIT(ext_data_declaration_exit,";")
#line 1316 "cplus.met"
#line 1317 "cplus.met"
            {
#line 1317 "cplus.met"
                _retValue = retTree ;
#line 1317 "cplus.met"
                goto ext_data_declaration_ret;
#line 1317 "cplus.met"
                
#line 1317 "cplus.met"
            }
#line 1317 "cplus.met"
            break;
#line 1317 "cplus.met"
#line 1319 "cplus.met"
        case PVIR : 
#line 1319 "cplus.met"
            tokenAhead = 0 ;
#line 1319 "cplus.met"
            CommTerm();
#line 1319 "cplus.met"
#line 1319 "cplus.met"
            {
#line 1319 "cplus.met"
                PPTREE _ptTree0;
#line 1319 "cplus.met"
                {
#line 1319 "cplus.met"
                    PPTREE _ptRes1;
#line 1319 "cplus.met"
                    _ptRes1= MakeTree(STAT_VOID, 0);
#line 1319 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1319 "cplus.met"
                }
#line 1319 "cplus.met"
                _retValue =_ptTree0;
#line 1319 "cplus.met"
                goto ext_data_declaration_ret;
#line 1319 "cplus.met"
            }
#line 1319 "cplus.met"
            break;
#line 1319 "cplus.met"
#line 1320 "cplus.met"
        default : 
#line 1320 "cplus.met"
#line 1320 "cplus.met"
            {
#line 1320 "cplus.met"
                PPTREE _ptTree0;
#line 1320 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(ext_data_decl_simp)(error_free), 53, cplus))== (PPTREE) -1 ) {
#line 1320 "cplus.met"
                    PROG_EXIT(ext_data_declaration_exit,"ext_data_declaration")
#line 1320 "cplus.met"
                }
#line 1320 "cplus.met"
                _retValue =_ptTree0;
#line 1320 "cplus.met"
                goto ext_data_declaration_ret;
#line 1320 "cplus.met"
            }
#line 1320 "cplus.met"
            break;
#line 1320 "cplus.met"
    }
#line 1320 "cplus.met"
#line 1322 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1322 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1322 "cplus.met"
return((PPTREE) 0);
#line 1322 "cplus.met"

#line 1322 "cplus.met"
ext_data_declaration_exit :
#line 1322 "cplus.met"

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

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

#line 1322 "cplus.met"
#line 1049 "cplus.met"
PPTREE cplus::ext_decl_dir ( int error_free)
#line 1049 "cplus.met"
{
#line 1049 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1049 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1049 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1049 "cplus.met"
    int _Debug = TRACE_RULE("ext_decl_dir",TRACE_ENTER,(PPTREE)0);
#line 1049 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1049 "cplus.met"
#line 1049 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 1049 "cplus.met"
#line 1051 "cplus.met"
    if (NPUSH_CALL_AFF_VERIF(retTree = ,_Tak(directive), 40, cplus)){
#line 1051 "cplus.met"
#line 1052 "cplus.met"
        {
#line 1052 "cplus.met"
            _retValue = retTree ;
#line 1052 "cplus.met"
            goto ext_decl_dir_ret;
#line 1052 "cplus.met"
            
#line 1052 "cplus.met"
        }
#line 1052 "cplus.met"
    }
#line 1052 "cplus.met"
#line 1053 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1053 "cplus.met"
    switch( lexEl.Value) {
#line 1053 "cplus.met"
#line 1054 "cplus.met"
        case META : 
#line 1054 "cplus.met"
        case IF_DIR : 
#line 1054 "cplus.met"
            tokenAhead = 0 ;
#line 1054 "cplus.met"
            CommTerm();
#line 1054 "cplus.met"
#line 1054 "cplus.met"
            {
#line 1054 "cplus.met"
                PPTREE _ptTree0;
#line 1054 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(ext_decl_if_dir)(error_free), 56, cplus))== (PPTREE) -1 ) {
#line 1054 "cplus.met"
                    PROG_EXIT(ext_decl_dir_exit,"ext_decl_dir")
#line 1054 "cplus.met"
                }
#line 1054 "cplus.met"
                _retValue =_ptTree0;
#line 1054 "cplus.met"
                goto ext_decl_dir_ret;
#line 1054 "cplus.met"
            }
#line 1054 "cplus.met"
            break;
#line 1054 "cplus.met"
#line 1055 "cplus.met"
        case IFDEF_DIR : 
#line 1055 "cplus.met"
#line 1055 "cplus.met"
            {
#line 1055 "cplus.met"
                PPTREE _ptTree0;
#line 1055 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(ext_decl_ifdef_dir)(error_free), 57, cplus))== (PPTREE) -1 ) {
#line 1055 "cplus.met"
                    PROG_EXIT(ext_decl_dir_exit,"ext_decl_dir")
#line 1055 "cplus.met"
                }
#line 1055 "cplus.met"
                _retValue =_ptTree0;
#line 1055 "cplus.met"
                goto ext_decl_dir_ret;
#line 1055 "cplus.met"
            }
#line 1055 "cplus.met"
            break;
#line 1055 "cplus.met"
#line 1056 "cplus.met"
        case IFNDEF_DIR : 
#line 1056 "cplus.met"
#line 1056 "cplus.met"
            {
#line 1056 "cplus.met"
                PPTREE _ptTree0;
#line 1056 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(ext_decl_ifdef_dir)(error_free), 57, cplus))== (PPTREE) -1 ) {
#line 1056 "cplus.met"
                    PROG_EXIT(ext_decl_dir_exit,"ext_decl_dir")
#line 1056 "cplus.met"
                }
#line 1056 "cplus.met"
                _retValue =_ptTree0;
#line 1056 "cplus.met"
                goto ext_decl_dir_ret;
#line 1056 "cplus.met"
            }
#line 1056 "cplus.met"
            break;
#line 1056 "cplus.met"
        default :
#line 1056 "cplus.met"
            CASE_EXIT(ext_decl_dir_exit,"either IF_DIR or IFDEF_DIR or IFNDEF_DIR")
#line 1056 "cplus.met"
            break;
#line 1056 "cplus.met"
    }
#line 1056 "cplus.met"
#line 1058 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1058 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1058 "cplus.met"
return((PPTREE) 0);
#line 1058 "cplus.met"

#line 1058 "cplus.met"
ext_decl_dir_exit :
#line 1058 "cplus.met"

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

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

#line 1058 "cplus.met"
#line 990 "cplus.met"
PPTREE cplus::ext_decl_if_dir ( int error_free)
#line 990 "cplus.met"
{
#line 990 "cplus.met"
    int  _oldkeepCarriage = keepCarriage;
#line 990 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 990 "cplus.met"
    int _value,_nbPre = 0 ;
#line 990 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 990 "cplus.met"
    int _Debug = TRACE_RULE("ext_decl_if_dir",TRACE_ENTER,(PPTREE)0);
#line 990 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 990 "cplus.met"
#line 990 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0,_addlist2 = (PPTREE) 0;
#line 990 "cplus.met"
#line 990 "cplus.met"
    PPTREE retTree = (PPTREE) 0,list = (PPTREE) 0,list2 = (PPTREE) 0;
#line 990 "cplus.met"
#line 992 "cplus.met"
    {
#line 992 "cplus.met"
        keepCarriage = 1 ;
#line 992 "cplus.met"
#line 993 "cplus.met"
#line 994 "cplus.met"
        {
#line 994 "cplus.met"
            PPTREE _ptTree0,_ptRes0;
#line 994 "cplus.met"
            _ptRes0= MakeTree(IF_DIR, 3);
#line 994 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 994 "cplus.met"
                PROG_EXIT(ext_decl_if_dir_exit,"ext_decl_if_dir")
#line 994 "cplus.met"
            }
#line 994 "cplus.met"
            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 994 "cplus.met"
            retTree=_ptRes0;
#line 994 "cplus.met"
        }
#line 994 "cplus.met"
#line 995 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 995 "cplus.met"
        if ( ! TERM_OR_META(CARRIAGE_RETURN,"CARRIAGE_RETURN") || !(CommTerm(),1)) 
#line 995 "cplus.met"
            TOKEN_EXIT(ext_decl_if_dir_exit,"CARRIAGE_RETURN")
#line 995 "cplus.met"
        keepCarriage =  _oldkeepCarriage;
#line 995 "cplus.met"
    }
#line 995 "cplus.met"
#line 995 "cplus.met"
    _addlist1 = list ;
#line 995 "cplus.met"
#line 997 "cplus.met"
    while (((! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( ELSE_DIR,"ELSE_DIR"))) && 
#line 997 "cplus.met"
           (! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( ELIF_DIR,"ELIF_DIR")))) && 
#line 997 "cplus.met"
          (! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( ENDIF_DIR,"ENDIF_DIR")))) { 
#line 997 "cplus.met"
#line 998 "cplus.met"
#line 998 "cplus.met"
        {
#line 998 "cplus.met"
            PPTREE _ptTree0;
#line 998 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(ext_all_ext)(error_free), 50, cplus))== (PPTREE) -1 ) {
#line 998 "cplus.met"
                PROG_EXIT(ext_decl_if_dir_exit,"ext_decl_if_dir")
#line 998 "cplus.met"
            }
#line 998 "cplus.met"
            _addlist1 =AddList(_addlist1 , _ptTree0);
#line 998 "cplus.met"
        }
#line 998 "cplus.met"
#line 998 "cplus.met"
        if (list){
#line 998 "cplus.met"
#line 998 "cplus.met"
            _addlist1 = SonTree (_addlist1 ,2 );
#line 998 "cplus.met"
        } else {
#line 998 "cplus.met"
#line 998 "cplus.met"
            list = _addlist1 ;
#line 998 "cplus.met"
        }
#line 998 "cplus.met"
    } 
#line 998 "cplus.met"
#line 999 "cplus.met"
    ReplaceTree(retTree ,2 ,list );
#line 999 "cplus.met"
#line 1000 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1000 "cplus.met"
    switch( lexEl.Value) {
#line 1000 "cplus.met"
#line 1001 "cplus.met"
        case META : 
#line 1001 "cplus.met"
        case ELSE_DIR : 
#line 1001 "cplus.met"
            tokenAhead = 0 ;
#line 1001 "cplus.met"
            CommTerm();
#line 1001 "cplus.met"
#line 1002 "cplus.met"
#line 1002 "cplus.met"
            _addlist2 = list2 ;
#line 1002 "cplus.met"
#line 1003 "cplus.met"
            while (! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&TERM_OR_META(ENDIF_DIR,"ENDIF_DIR") && (tokenAhead = 0,CommTerm(),1))) { 
#line 1003 "cplus.met"
#line 1004 "cplus.met"
#line 1004 "cplus.met"
                {
#line 1004 "cplus.met"
                    PPTREE _ptTree0;
#line 1004 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(ext_all_ext)(error_free), 50, cplus))== (PPTREE) -1 ) {
#line 1004 "cplus.met"
                        PROG_EXIT(ext_decl_if_dir_exit,"ext_decl_if_dir")
#line 1004 "cplus.met"
                    }
#line 1004 "cplus.met"
                    _addlist2 =AddList(_addlist2 , _ptTree0);
#line 1004 "cplus.met"
                }
#line 1004 "cplus.met"
#line 1004 "cplus.met"
                if (list2){
#line 1004 "cplus.met"
#line 1004 "cplus.met"
                    _addlist2 = SonTree (_addlist2 ,2 );
#line 1004 "cplus.met"
                } else {
#line 1004 "cplus.met"
#line 1004 "cplus.met"
                    list2 = _addlist2 ;
#line 1004 "cplus.met"
                }
#line 1004 "cplus.met"
            } 
#line 1004 "cplus.met"
#line 1005 "cplus.met"
            {
#line 1005 "cplus.met"
                PPTREE _ptTree0;
#line 1005 "cplus.met"
                _ptTree0=ReplaceTree(retTree ,3 ,list2 );
#line 1005 "cplus.met"
                _retValue =_ptTree0;
#line 1005 "cplus.met"
                goto ext_decl_if_dir_ret;
#line 1005 "cplus.met"
            }
#line 1005 "cplus.met"
            break;
#line 1005 "cplus.met"
#line 1007 "cplus.met"
        case ELIF_DIR : 
#line 1007 "cplus.met"
            tokenAhead = 0 ;
#line 1007 "cplus.met"
            CommTerm();
#line 1007 "cplus.met"
#line 1007 "cplus.met"
            {
#line 1007 "cplus.met"
                PPTREE _ptTree0;
#line 1007 "cplus.met"
                {
#line 1007 "cplus.met"
                    PPTREE _ptTree1;
#line 1007 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(ext_decl_if_dir)(error_free), 56, cplus))== (PPTREE) -1 ) {
#line 1007 "cplus.met"
                        PROG_EXIT(ext_decl_if_dir_exit,"ext_decl_if_dir")
#line 1007 "cplus.met"
                    }
#line 1007 "cplus.met"
                    _ptTree0=ReplaceTree(retTree , 3 , _ptTree1);
#line 1007 "cplus.met"
                }
#line 1007 "cplus.met"
                _retValue =_ptTree0;
#line 1007 "cplus.met"
                goto ext_decl_if_dir_ret;
#line 1007 "cplus.met"
            }
#line 1007 "cplus.met"
            break;
#line 1007 "cplus.met"
#line 1008 "cplus.met"
        case ENDIF_DIR : 
#line 1008 "cplus.met"
            tokenAhead = 0 ;
#line 1008 "cplus.met"
            CommTerm();
#line 1008 "cplus.met"
#line 1008 "cplus.met"
            {
#line 1008 "cplus.met"
                _retValue = retTree ;
#line 1008 "cplus.met"
                goto ext_decl_if_dir_ret;
#line 1008 "cplus.met"
                
#line 1008 "cplus.met"
            }
#line 1008 "cplus.met"
            break;
#line 1008 "cplus.met"
        default :
#line 1008 "cplus.met"
            CASE_EXIT(ext_decl_if_dir_exit,"either ELSE_DIR or ELIF_DIR or ENDIF_DIR")
#line 1008 "cplus.met"
            break;
#line 1008 "cplus.met"
    }
#line 1008 "cplus.met"
#line 1010 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1010 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1010 "cplus.met"
keepCarriage =  _oldkeepCarriage;
#line 1010 "cplus.met"
return((PPTREE) 0);
#line 1010 "cplus.met"

#line 1010 "cplus.met"
ext_decl_if_dir_exit :
#line 1010 "cplus.met"

#line 1010 "cplus.met"
    {
#line 1010 "cplus.met"
        MulFreeTree(5,list2,list,retTree,_addlist2,_addlist1);
#line 1010 "cplus.met"
    }
#line 1010 "cplus.met"
    _Debug = TRACE_RULE("ext_decl_if_dir",TRACE_EXIT,(PPTREE)0);
#line 1010 "cplus.met"
    _funcLevel--;
#line 1010 "cplus.met"
    keepCarriage =  _oldkeepCarriage;
#line 1010 "cplus.met"
    return((PPTREE) -1) ;
#line 1010 "cplus.met"

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

#line 1010 "cplus.met"
#line 1012 "cplus.met"
PPTREE cplus::ext_decl_ifdef_dir ( int error_free)
#line 1012 "cplus.met"
{
#line 1012 "cplus.met"
    int  _oldkeepCarriage = keepCarriage;
#line 1012 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1012 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1012 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1012 "cplus.met"
    int _Debug = TRACE_RULE("ext_decl_ifdef_dir",TRACE_ENTER,(PPTREE)0);
#line 1012 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1012 "cplus.met"
#line 1012 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0,_addlist2 = (PPTREE) 0;
#line 1012 "cplus.met"
#line 1012 "cplus.met"
    PPTREE retTree = (PPTREE) 0,list = (PPTREE) 0,list2 = (PPTREE) 0,express = (PPTREE) 0;
#line 1012 "cplus.met"
#line 1014 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&TERM_OR_META(IFDEF_DIR,"IFDEF_DIR") && (tokenAhead = 0,CommTerm(),1)){
#line 1014 "cplus.met"
#line 1015 "cplus.met"
#line 1016 "cplus.met"
        {
#line 1016 "cplus.met"
            keepCarriage = 1 ;
#line 1016 "cplus.met"
#line 1017 "cplus.met"
#line 1018 "cplus.met"
            {
#line 1018 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 1018 "cplus.met"
                _ptRes0= MakeTree(IFDEF_DIR, 3);
#line 1018 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 1018 "cplus.met"
                    PROG_EXIT(ext_decl_ifdef_dir_exit,"ext_decl_ifdef_dir")
#line 1018 "cplus.met"
                }
#line 1018 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1018 "cplus.met"
                retTree=_ptRes0;
#line 1018 "cplus.met"
            }
#line 1018 "cplus.met"
#line 1019 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1019 "cplus.met"
            if ( ! TERM_OR_META(CARRIAGE_RETURN,"CARRIAGE_RETURN") || !(CommTerm(),1)) 
#line 1019 "cplus.met"
                TOKEN_EXIT(ext_decl_ifdef_dir_exit,"CARRIAGE_RETURN")
#line 1019 "cplus.met"
            keepCarriage =  _oldkeepCarriage;
#line 1019 "cplus.met"
        }
#line 1019 "cplus.met"
#line 1021 "cplus.met"
    } else {
#line 1021 "cplus.met"
#line 1023 "cplus.met"
#line 1024 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1024 "cplus.met"
        if ( ! TERM_OR_META(IFNDEF_DIR,"IFNDEF_DIR") || !(CommTerm(),1)) 
#line 1024 "cplus.met"
            TOKEN_EXIT(ext_decl_ifdef_dir_exit,"IFNDEF_DIR")
#line 1024 "cplus.met"
#line 1025 "cplus.met"
        {
#line 1025 "cplus.met"
            keepCarriage = 1 ;
#line 1025 "cplus.met"
#line 1026 "cplus.met"
#line 1027 "cplus.met"
            if ( (express=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 1027 "cplus.met"
                PROG_EXIT(ext_decl_ifdef_dir_exit,"ext_decl_ifdef_dir")
#line 1027 "cplus.met"
            }
#line 1027 "cplus.met"
#line 1028 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1028 "cplus.met"
            if ( ! TERM_OR_META(CARRIAGE_RETURN,"CARRIAGE_RETURN") || !(CommTerm(),1)) 
#line 1028 "cplus.met"
                TOKEN_EXIT(ext_decl_ifdef_dir_exit,"CARRIAGE_RETURN")
#line 1028 "cplus.met"
            keepCarriage =  _oldkeepCarriage;
#line 1028 "cplus.met"
        }
#line 1028 "cplus.met"
#line 1030 "cplus.met"
        {
#line 1030 "cplus.met"
            PPTREE _ptRes0;
#line 1030 "cplus.met"
            _ptRes0= MakeTree(IFNDEF_DIR, 3);
#line 1030 "cplus.met"
            ReplaceTree(_ptRes0, 1, express );
#line 1030 "cplus.met"
            retTree=_ptRes0;
#line 1030 "cplus.met"
        }
#line 1030 "cplus.met"
    }
#line 1030 "cplus.met"
#line 1030 "cplus.met"
    _addlist1 = list ;
#line 1030 "cplus.met"
#line 1034 "cplus.met"
    while ((! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( ELSE_DIR,"ELSE_DIR"))) && 
#line 1034 "cplus.met"
          (! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( ENDIF_DIR,"ENDIF_DIR")))) { 
#line 1034 "cplus.met"
#line 1036 "cplus.met"
#line 1036 "cplus.met"
        {
#line 1036 "cplus.met"
            PPTREE _ptTree0;
#line 1036 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(ext_all_ext)(error_free), 50, cplus))== (PPTREE) -1 ) {
#line 1036 "cplus.met"
                PROG_EXIT(ext_decl_ifdef_dir_exit,"ext_decl_ifdef_dir")
#line 1036 "cplus.met"
            }
#line 1036 "cplus.met"
            _addlist1 =AddList(_addlist1 , _ptTree0);
#line 1036 "cplus.met"
        }
#line 1036 "cplus.met"
#line 1036 "cplus.met"
        if (list){
#line 1036 "cplus.met"
#line 1036 "cplus.met"
            _addlist1 = SonTree (_addlist1 ,2 );
#line 1036 "cplus.met"
        } else {
#line 1036 "cplus.met"
#line 1036 "cplus.met"
            list = _addlist1 ;
#line 1036 "cplus.met"
        }
#line 1036 "cplus.met"
    } 
#line 1036 "cplus.met"
#line 1037 "cplus.met"
    ReplaceTree(retTree ,2 ,list );
#line 1037 "cplus.met"
#line 1038 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1038 "cplus.met"
    switch( lexEl.Value) {
#line 1038 "cplus.met"
#line 1039 "cplus.met"
        case META : 
#line 1039 "cplus.met"
        case ELSE_DIR : 
#line 1039 "cplus.met"
            tokenAhead = 0 ;
#line 1039 "cplus.met"
            CommTerm();
#line 1039 "cplus.met"
#line 1040 "cplus.met"
#line 1040 "cplus.met"
            _addlist2 = list2 ;
#line 1040 "cplus.met"
#line 1041 "cplus.met"
            while (! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&TERM_OR_META(ENDIF_DIR,"ENDIF_DIR") && (tokenAhead = 0,CommTerm(),1))) { 
#line 1041 "cplus.met"
#line 1042 "cplus.met"
#line 1042 "cplus.met"
                {
#line 1042 "cplus.met"
                    PPTREE _ptTree0;
#line 1042 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(ext_all_ext)(error_free), 50, cplus))== (PPTREE) -1 ) {
#line 1042 "cplus.met"
                        PROG_EXIT(ext_decl_ifdef_dir_exit,"ext_decl_ifdef_dir")
#line 1042 "cplus.met"
                    }
#line 1042 "cplus.met"
                    _addlist2 =AddList(_addlist2 , _ptTree0);
#line 1042 "cplus.met"
                }
#line 1042 "cplus.met"
#line 1042 "cplus.met"
                if (list2){
#line 1042 "cplus.met"
#line 1042 "cplus.met"
                    _addlist2 = SonTree (_addlist2 ,2 );
#line 1042 "cplus.met"
                } else {
#line 1042 "cplus.met"
#line 1042 "cplus.met"
                    list2 = _addlist2 ;
#line 1042 "cplus.met"
                }
#line 1042 "cplus.met"
            } 
#line 1042 "cplus.met"
#line 1043 "cplus.met"
            {
#line 1043 "cplus.met"
                PPTREE _ptTree0;
#line 1043 "cplus.met"
                _ptTree0=ReplaceTree(retTree ,3 ,list2 );
#line 1043 "cplus.met"
                _retValue =_ptTree0;
#line 1043 "cplus.met"
                goto ext_decl_ifdef_dir_ret;
#line 1043 "cplus.met"
            }
#line 1043 "cplus.met"
            break;
#line 1043 "cplus.met"
#line 1045 "cplus.met"
        case ENDIF_DIR : 
#line 1045 "cplus.met"
            tokenAhead = 0 ;
#line 1045 "cplus.met"
            CommTerm();
#line 1045 "cplus.met"
#line 1045 "cplus.met"
            {
#line 1045 "cplus.met"
                _retValue = retTree ;
#line 1045 "cplus.met"
                goto ext_decl_ifdef_dir_ret;
#line 1045 "cplus.met"
                
#line 1045 "cplus.met"
            }
#line 1045 "cplus.met"
            break;
#line 1045 "cplus.met"
        default :
#line 1045 "cplus.met"
            CASE_EXIT(ext_decl_ifdef_dir_exit,"either ELSE_DIR or ENDIF_DIR")
#line 1045 "cplus.met"
            break;
#line 1045 "cplus.met"
    }
#line 1045 "cplus.met"
#line 1047 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1047 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1047 "cplus.met"
keepCarriage =  _oldkeepCarriage;
#line 1047 "cplus.met"
return((PPTREE) 0);
#line 1047 "cplus.met"

#line 1047 "cplus.met"
ext_decl_ifdef_dir_exit :
#line 1047 "cplus.met"

#line 1047 "cplus.met"
    {
#line 1047 "cplus.met"
        MulFreeTree(6,express,list2,list,retTree,_addlist2,_addlist1);
#line 1047 "cplus.met"
    }
#line 1047 "cplus.met"
    _Debug = TRACE_RULE("ext_decl_ifdef_dir",TRACE_EXIT,(PPTREE)0);
#line 1047 "cplus.met"
    _funcLevel--;
#line 1047 "cplus.met"
    keepCarriage =  _oldkeepCarriage;
#line 1047 "cplus.met"
    return((PPTREE) -1) ;
#line 1047 "cplus.met"

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

#line 1047 "cplus.met"
#line 2757 "cplus.met"
PPTREE cplus::func_declaration ( int error_free)
#line 2757 "cplus.met"
{
#line 2757 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2757 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2757 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2757 "cplus.met"
    int _Debug = TRACE_RULE("func_declaration",TRACE_ENTER,(PPTREE)0);
#line 2757 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2757 "cplus.met"
#line 2757 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 2757 "cplus.met"
#line 2757 "cplus.met"
    PPTREE funcTree = (PPTREE) 0,opt = (PPTREE) 0,decList = (PPTREE) 0,range = (PPTREE) 0;
#line 2757 "cplus.met"
#line 2761 "cplus.met"
    if (! (NPUSH_CALL_AFF_VERIF(funcTree = ,_Tak(type_and_declarator), 116, cplus))){
#line 2761 "cplus.met"
#line 2763 "cplus.met"
#line 2764 "cplus.met"
        {
#line 2764 "cplus.met"
            PPTREE _ptTree0,_ptRes0;
#line 2764 "cplus.met"
            _ptRes0= MakeTree(FUNC, 8);
#line 2764 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(sc_specifier)(error_free), 103, cplus))== (PPTREE) -1 ) {
#line 2764 "cplus.met"
                PROG_EXIT(func_declaration_exit,"func_declaration")
#line 2764 "cplus.met"
            }
#line 2764 "cplus.met"
            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2764 "cplus.met"
            funcTree=_ptRes0;
#line 2764 "cplus.met"
        }
#line 2764 "cplus.met"
#line 2765 "cplus.met"
        {
#line 2765 "cplus.met"
            PPTREE _ptTree0;
#line 2765 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(func_declarator)(error_free), 59, cplus))== (PPTREE) -1 ) {
#line 2765 "cplus.met"
                PROG_EXIT(func_declaration_exit,"func_declaration")
#line 2765 "cplus.met"
            }
#line 2765 "cplus.met"
            ReplaceTree(funcTree , 3 , _ptTree0);
#line 2765 "cplus.met"
        }
#line 2765 "cplus.met"
#line 2766 "cplus.met"
    }
#line 2766 "cplus.met"
#line 2767 "cplus.met"
    {
#line 2767 "cplus.met"
        PPTREE _ptTree0;
#line 2767 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(parameter_list_extended)(error_free), 84, cplus))== (PPTREE) -1 ) {
#line 2767 "cplus.met"
            PROG_EXIT(func_declaration_exit,"func_declaration")
#line 2767 "cplus.met"
        }
#line 2767 "cplus.met"
        ReplaceTree(funcTree , 4 , _ptTree0);
#line 2767 "cplus.met"
    }
#line 2767 "cplus.met"
#line 2768 "cplus.met"
    if (NPUSH_CALL_AFF_VERIF(range = ,_Tak(range_modifier_function), 99, cplus)){
#line 2768 "cplus.met"
#line 2769 "cplus.met"
        ReplaceTree(funcTree ,5 ,range );
#line 2769 "cplus.met"
#line 2769 "cplus.met"
    }
#line 2769 "cplus.met"
#line 2769 "cplus.met"
    _addlist1 = decList ;
#line 2769 "cplus.met"
#line 2770 "cplus.met"
    while (NPUSH_CALL_AFF_VERIF(opt = ,_Tak(data_declaration), 30, cplus)) { 
#line 2770 "cplus.met"
#line 2771 "cplus.met"
#line 2771 "cplus.met"
        _addlist1 =AddList(_addlist1 ,opt );
#line 2771 "cplus.met"
#line 2771 "cplus.met"
        if (decList){
#line 2771 "cplus.met"
#line 2771 "cplus.met"
            _addlist1 = SonTree (_addlist1 ,2 );
#line 2771 "cplus.met"
        } else {
#line 2771 "cplus.met"
#line 2771 "cplus.met"
            decList = _addlist1 ;
#line 2771 "cplus.met"
        }
#line 2771 "cplus.met"
    } 
#line 2771 "cplus.met"
#line 2772 "cplus.met"
    ReplaceTree(funcTree ,6 ,decList );
#line 2772 "cplus.met"
#line 2773 "cplus.met"
    {
#line 2773 "cplus.met"
        PPTREE _ptTree0;
#line 2773 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(ctor_initializer)(error_free), 26, cplus))== (PPTREE) -1 ) {
#line 2773 "cplus.met"
            PROG_EXIT(func_declaration_exit,"func_declaration")
#line 2773 "cplus.met"
        }
#line 2773 "cplus.met"
        ReplaceTree(funcTree , 7 , _ptTree0);
#line 2773 "cplus.met"
    }
#line 2773 "cplus.met"
#line 2774 "cplus.met"
    {
#line 2774 "cplus.met"
        PPTREE _ptTree0;
#line 2774 "cplus.met"
        {
#line 2774 "cplus.met"
            PPTREE _ptTree1;
#line 2774 "cplus.met"
            if ( (_ptTree1=NQUICK_CALL(_Tak(compound_statement)(error_free), 22, cplus))== (PPTREE) -1 ) {
#line 2774 "cplus.met"
                PROG_EXIT(func_declaration_exit,"func_declaration")
#line 2774 "cplus.met"
            }
#line 2774 "cplus.met"
            _ptTree0=ReplaceTree(funcTree , 8 , _ptTree1);
#line 2774 "cplus.met"
        }
#line 2774 "cplus.met"
        _retValue =_ptTree0;
#line 2774 "cplus.met"
        goto func_declaration_ret;
#line 2774 "cplus.met"
    }
#line 2774 "cplus.met"
#line 2775 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2775 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2775 "cplus.met"
return((PPTREE) 0);
#line 2775 "cplus.met"

#line 2775 "cplus.met"
func_declaration_exit :
#line 2775 "cplus.met"

#line 2775 "cplus.met"
    {
#line 2775 "cplus.met"
        MulFreeTree(5,range,decList,opt,funcTree,_addlist1);
#line 2775 "cplus.met"
    }
#line 2775 "cplus.met"
    _Debug = TRACE_RULE("func_declaration",TRACE_EXIT,(PPTREE)0);
#line 2775 "cplus.met"
    _funcLevel--;
#line 2775 "cplus.met"
    return((PPTREE) -1) ;
#line 2775 "cplus.met"

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

#line 2775 "cplus.met"
#line 1978 "cplus.met"
PPTREE cplus::func_declarator ( int error_free)
#line 1978 "cplus.met"
{
#line 1978 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1978 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1978 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1978 "cplus.met"
    int _Debug = TRACE_RULE("func_declarator",TRACE_ENTER,(PPTREE)0);
#line 1978 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1978 "cplus.met"
#line 1978 "cplus.met"
    PPTREE valTree = (PPTREE) 0;
#line 1978 "cplus.met"
#line 1980 "cplus.met"
    if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(range_modifier), 98, cplus)){
#line 1980 "cplus.met"
#line 1981 "cplus.met"
        {
#line 1981 "cplus.met"
            PPTREE _ptTree0;
#line 1981 "cplus.met"
            {
#line 1981 "cplus.met"
                PPTREE _ptTree1;
#line 1981 "cplus.met"
                if ( (_ptTree1=NQUICK_CALL(_Tak(func_declarator)(error_free), 59, cplus))== (PPTREE) -1 ) {
#line 1981 "cplus.met"
                    PROG_EXIT(func_declarator_exit,"func_declarator")
#line 1981 "cplus.met"
                }
#line 1981 "cplus.met"
                _ptTree0=ReplaceTree(valTree , 2 , _ptTree1);
#line 1981 "cplus.met"
            }
#line 1981 "cplus.met"
            _retValue =_ptTree0;
#line 1981 "cplus.met"
            goto func_declarator_ret;
#line 1981 "cplus.met"
        }
#line 1981 "cplus.met"
    }
#line 1981 "cplus.met"
#line 1982 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1982 "cplus.met"
    switch( lexEl.Value) {
#line 1982 "cplus.met"
#line 1983 "cplus.met"
        case ETOI : 
#line 1983 "cplus.met"
            tokenAhead = 0 ;
#line 1983 "cplus.met"
            CommTerm();
#line 1983 "cplus.met"
#line 1983 "cplus.met"
            {
#line 1983 "cplus.met"
                PPTREE _ptTree0;
#line 1983 "cplus.met"
                {
#line 1983 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1983 "cplus.met"
                    _ptRes1= MakeTree(TYP_ADDR, 1);
#line 1983 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(func_declarator)(error_free), 59, cplus))== (PPTREE) -1 ) {
#line 1983 "cplus.met"
                        PROG_EXIT(func_declarator_exit,"func_declarator")
#line 1983 "cplus.met"
                    }
#line 1983 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1983 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1983 "cplus.met"
                }
#line 1983 "cplus.met"
                _retValue =_ptTree0;
#line 1983 "cplus.met"
                goto func_declarator_ret;
#line 1983 "cplus.met"
            }
#line 1983 "cplus.met"
            break;
#line 1983 "cplus.met"
#line 1984 "cplus.met"
        case ETCO : 
#line 1984 "cplus.met"
            tokenAhead = 0 ;
#line 1984 "cplus.met"
            CommTerm();
#line 1984 "cplus.met"
#line 1984 "cplus.met"
            {
#line 1984 "cplus.met"
                PPTREE _ptTree0;
#line 1984 "cplus.met"
                {
#line 1984 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1984 "cplus.met"
                    _ptRes1= MakeTree(TYP_REF, 1);
#line 1984 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(func_declarator)(error_free), 59, cplus))== (PPTREE) -1 ) {
#line 1984 "cplus.met"
                        PROG_EXIT(func_declarator_exit,"func_declarator")
#line 1984 "cplus.met"
                    }
#line 1984 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1984 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1984 "cplus.met"
                }
#line 1984 "cplus.met"
                _retValue =_ptTree0;
#line 1984 "cplus.met"
                goto func_declarator_ret;
#line 1984 "cplus.met"
            }
#line 1984 "cplus.met"
            break;
#line 1984 "cplus.met"
#line 1985 "cplus.met"
        case TILD : 
#line 1985 "cplus.met"
#line 1985 "cplus.met"
            {
#line 1985 "cplus.met"
                PPTREE _ptTree0;
#line 1985 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(qualified_name)(error_free), 93, cplus))== (PPTREE) -1 ) {
#line 1985 "cplus.met"
                    PROG_EXIT(func_declarator_exit,"func_declarator")
#line 1985 "cplus.met"
                }
#line 1985 "cplus.met"
                _retValue =_ptTree0;
#line 1985 "cplus.met"
                goto func_declarator_ret;
#line 1985 "cplus.met"
            }
#line 1985 "cplus.met"
            break;
#line 1985 "cplus.met"
#line 1986 "cplus.met"
        case META : 
#line 1986 "cplus.met"
        case IDENT : 
#line 1986 "cplus.met"
#line 1986 "cplus.met"
            {
#line 1986 "cplus.met"
                PPTREE _ptTree0;
#line 1986 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(qualified_name)(error_free), 93, cplus))== (PPTREE) -1 ) {
#line 1986 "cplus.met"
                    PROG_EXIT(func_declarator_exit,"func_declarator")
#line 1986 "cplus.met"
                }
#line 1986 "cplus.met"
                _retValue =_ptTree0;
#line 1986 "cplus.met"
                goto func_declarator_ret;
#line 1986 "cplus.met"
            }
#line 1986 "cplus.met"
            break;
#line 1986 "cplus.met"
#line 1987 "cplus.met"
        case OPERATOR : 
#line 1987 "cplus.met"
#line 1987 "cplus.met"
            {
#line 1987 "cplus.met"
                PPTREE _ptTree0;
#line 1987 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(operator_function_name)(error_free), 81, cplus))== (PPTREE) -1 ) {
#line 1987 "cplus.met"
                    PROG_EXIT(func_declarator_exit,"func_declarator")
#line 1987 "cplus.met"
                }
#line 1987 "cplus.met"
                _retValue =_ptTree0;
#line 1987 "cplus.met"
                goto func_declarator_ret;
#line 1987 "cplus.met"
            }
#line 1987 "cplus.met"
            break;
#line 1987 "cplus.met"
        default :
#line 1987 "cplus.met"
            CASE_EXIT(func_declarator_exit,"either * or & or ~ or IDENT or operator")
#line 1987 "cplus.met"
            break;
#line 1987 "cplus.met"
    }
#line 1987 "cplus.met"
#line 1989 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1989 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1989 "cplus.met"
return((PPTREE) 0);
#line 1989 "cplus.met"

#line 1989 "cplus.met"
func_declarator_exit :
#line 1989 "cplus.met"

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

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

#line 1989 "cplus.met"
#line 2804 "cplus.met"
PPTREE cplus::ident_mul ( int error_free)
#line 2804 "cplus.met"
{
#line 2804 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2804 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2804 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2804 "cplus.met"
    int _Debug = TRACE_RULE("ident_mul",TRACE_ENTER,(PPTREE)0);
#line 2804 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2804 "cplus.met"
#line 2805 "cplus.met"
    if ( (NQUICK_CALL(_Tak(complete_class_name)(error_free), 21, cplus))== (PPTREE) -1 ) {
#line 2805 "cplus.met"
        PROG_EXIT(ident_mul_exit,"ident_mul")
#line 2805 "cplus.met"
    }
#line 2805 "cplus.met"
#line 2806 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2806 "cplus.met"
    switch( lexEl.Value) {
#line 2806 "cplus.met"
#line 2806 "cplus.met"
        case ETOI : 
#line 2806 "cplus.met"
#line 2806 "cplus.met"
            break;
#line 2806 "cplus.met"
#line 2808 "cplus.met"
        case META : 
#line 2808 "cplus.met"
        case IDENT : 
#line 2808 "cplus.met"
#line 2808 "cplus.met"
            break;
#line 2808 "cplus.met"
        default :
#line 2808 "cplus.met"
            CASE_EXIT(ident_mul_exit,"either * or IDENT")
#line 2808 "cplus.met"
            break;
#line 2808 "cplus.met"
    }
#line 2808 "cplus.met"
#line 2810 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2810 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2810 "cplus.met"
return((PPTREE) 0);
#line 2810 "cplus.met"

#line 2810 "cplus.met"
ident_mul_exit :
#line 2810 "cplus.met"

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

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

#line 2810 "cplus.met"
#line 1225 "cplus.met"
PPTREE cplus::include_dir ( int error_free)
#line 1225 "cplus.met"
{
#line 1225 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1225 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1225 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1225 "cplus.met"
    int _Debug = TRACE_RULE("include_dir",TRACE_ENTER,(PPTREE)0);
#line 1225 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1225 "cplus.met"
#line 1226 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1226 "cplus.met"
    if ( ! TERM_OR_META(INCLUDE_DIR,"INCLUDE_DIR") || !(CommTerm(),1)) 
#line 1226 "cplus.met"
        TOKEN_EXIT(include_dir_exit,"INCLUDE_DIR")
#line 1226 "cplus.met"
#line 1227 "cplus.met"
    (tokenAhead == 6|| (LexInclude(),TRACE_LEX(1)));
#line 1227 "cplus.met"
    switch( lexEl.Value) {
#line 1227 "cplus.met"
#line 1228 "cplus.met"
        case META : 
#line 1228 "cplus.met"
        case INCLUDE_SYS : 
#line 1228 "cplus.met"
#line 1229 "cplus.met"
#line 1230 "cplus.met"
             /* ReadInclude(stringlex,0)*/;
#line 1230 "cplus.met"
#line 1231 "cplus.met"
            {
#line 1231 "cplus.met"
                PPTREE _ptTree0;
#line 1231 "cplus.met"
                {
#line 1231 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1231 "cplus.met"
                    _ptRes1= MakeTree(INCLUDE_DIR, 1);
#line 1231 "cplus.met"
                    (tokenAhead == 6|| (LexInclude(),TRACE_LEX(1)));
#line 1231 "cplus.met"
                    if ( ! TERM_OR_META(INCLUDE_SYS,"INCLUDE_SYS") || !(BUILD_TERM_META(_ptTree1))) 
#line 1231 "cplus.met"
                        TOKEN_EXIT(include_dir_exit,"INCLUDE_SYS")
#line 1231 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1231 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1231 "cplus.met"
                }
#line 1231 "cplus.met"
                _retValue =_ptTree0;
#line 1231 "cplus.met"
                goto include_dir_ret;
#line 1231 "cplus.met"
            }
#line 1231 "cplus.met"
            break;
#line 1231 "cplus.met"
#line 1233 "cplus.met"
        case INCLUDE_LOCAL : 
#line 1233 "cplus.met"
#line 1234 "cplus.met"
#line 1235 "cplus.met"
             /* ReadInclude(stringlex,1)*/;
#line 1235 "cplus.met"
#line 1236 "cplus.met"
            {
#line 1236 "cplus.met"
                PPTREE _ptTree0;
#line 1236 "cplus.met"
                {
#line 1236 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1236 "cplus.met"
                    _ptRes1= MakeTree(INCLUDE_DIR, 1);
#line 1236 "cplus.met"
                    {
#line 1236 "cplus.met"
                        PPTREE _ptTree2,_ptRes2;
#line 1236 "cplus.met"
                        _ptRes2= MakeTree(STRING, 1);
#line 1236 "cplus.met"
                        (tokenAhead == 6|| (LexInclude(),TRACE_LEX(1)));
#line 1236 "cplus.met"
                        if ( ! TERM_OR_META(INCLUDE_LOCAL,"INCLUDE_LOCAL") || !(BUILD_TERM_META(_ptTree2))) 
#line 1236 "cplus.met"
                            TOKEN_EXIT(include_dir_exit,"INCLUDE_LOCAL")
#line 1236 "cplus.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 1236 "cplus.met"
                        _ptTree1=_ptRes2;
#line 1236 "cplus.met"
                    }
#line 1236 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1236 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1236 "cplus.met"
                }
#line 1236 "cplus.met"
                _retValue =_ptTree0;
#line 1236 "cplus.met"
                goto include_dir_ret;
#line 1236 "cplus.met"
            }
#line 1236 "cplus.met"
            break;
#line 1236 "cplus.met"
        default :
#line 1236 "cplus.met"
            CASE_EXIT(include_dir_exit,"either INCLUDE_SYS or INCLUDE_LOCAL")
#line 1236 "cplus.met"
            break;
#line 1236 "cplus.met"
    }
#line 1236 "cplus.met"
#line 1240 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1240 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1240 "cplus.met"
return((PPTREE) 0);
#line 1240 "cplus.met"

#line 1240 "cplus.met"
include_dir_exit :
#line 1240 "cplus.met"

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

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

#line 1240 "cplus.met"
#line 2225 "cplus.met"
PPTREE cplus::inclusive_or_expression ( int error_free)
#line 2225 "cplus.met"
{
#line 2225 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2225 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2225 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2225 "cplus.met"
    int _Debug = TRACE_RULE("inclusive_or_expression",TRACE_ENTER,(PPTREE)0);
#line 2225 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2225 "cplus.met"
#line 2225 "cplus.met"
    PPTREE expTree = (PPTREE) 0;
#line 2225 "cplus.met"
#line 2227 "cplus.met"
    if ( (expTree=NQUICK_CALL(_Tak(exclusive_or_expression)(error_free), 46, cplus))== (PPTREE) -1 ) {
#line 2227 "cplus.met"
        PROG_EXIT(inclusive_or_expression_exit,"inclusive_or_expression")
#line 2227 "cplus.met"
    }
#line 2227 "cplus.met"
#line 2228 "cplus.met"
    while ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(VBAR,"|") && (tokenAhead = 0,CommTerm(),1)) { 
#line 2228 "cplus.met"
#line 2229 "cplus.met"
        {
#line 2229 "cplus.met"
            PPTREE _ptTree0,_ptRes0;
#line 2229 "cplus.met"
            _ptRes0= MakeTree(LOR, 2);
#line 2229 "cplus.met"
            ReplaceTree(_ptRes0, 1, expTree );
#line 2229 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(exclusive_or_expression)(error_free), 46, cplus))== (PPTREE) -1 ) {
#line 2229 "cplus.met"
                PROG_EXIT(inclusive_or_expression_exit,"inclusive_or_expression")
#line 2229 "cplus.met"
            }
#line 2229 "cplus.met"
            ReplaceTree(_ptRes0, 2, _ptTree0);
#line 2229 "cplus.met"
            expTree=_ptRes0;
#line 2229 "cplus.met"
        }
#line 2229 "cplus.met"
    } 
#line 2229 "cplus.met"
#line 2230 "cplus.met"
    {
#line 2230 "cplus.met"
        _retValue = expTree ;
#line 2230 "cplus.met"
        goto inclusive_or_expression_ret;
#line 2230 "cplus.met"
        
#line 2230 "cplus.met"
    }
#line 2230 "cplus.met"
#line 2231 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2231 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2231 "cplus.met"
return((PPTREE) 0);
#line 2231 "cplus.met"

#line 2231 "cplus.met"
inclusive_or_expression_exit :
#line 2231 "cplus.met"

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

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

#line 2231 "cplus.met"
#line 2069 "cplus.met"
PPTREE cplus::initializer ( int error_free)
#line 2069 "cplus.met"
{
#line 2069 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2069 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2069 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2069 "cplus.met"
    int _Debug = TRACE_RULE("initializer",TRACE_ENTER,(PPTREE)0);
#line 2069 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2069 "cplus.met"
#line 2069 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 2069 "cplus.met"
#line 2069 "cplus.met"
    PPTREE initList = (PPTREE) 0,retTree = (PPTREE) 0;
#line 2069 "cplus.met"
#line 2071 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2071 "cplus.met"
    switch( lexEl.Value) {
#line 2071 "cplus.met"
#line 2075 "cplus.met"
        case AOUV : 
#line 2075 "cplus.met"
            tokenAhead = 0 ;
#line 2075 "cplus.met"
            CommTerm();
#line 2075 "cplus.met"
#line 2073 "cplus.met"
#line 2073 "cplus.met"
            _addlist1 = initList ;
#line 2073 "cplus.met"
#line 2074 "cplus.met"
            do {
#line 2074 "cplus.met"
#line 2075 "cplus.met"
                {
#line 2075 "cplus.met"
                    PPTREE _ptTree0;
#line 2075 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(initializer)(error_free), 63, cplus))== (PPTREE) -1 ) {
#line 2075 "cplus.met"
                        PROG_EXIT(initializer_exit,"initializer")
#line 2075 "cplus.met"
                    }
#line 2075 "cplus.met"
                    _addlist1 =AddList(_addlist1 , _ptTree0);
#line 2075 "cplus.met"
                }
#line 2075 "cplus.met"
#line 2075 "cplus.met"
                if (initList){
#line 2075 "cplus.met"
#line 2075 "cplus.met"
                    _addlist1 = SonTree (_addlist1 ,2 );
#line 2075 "cplus.met"
                } else {
#line 2075 "cplus.met"
#line 2075 "cplus.met"
                    initList = _addlist1 ;
#line 2075 "cplus.met"
                }
#line 2075 "cplus.met"
#line 2076 "cplus.met"
            } while ( !(! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(VIRG,",") && (tokenAhead = 0,CommTerm(),1)))) ;
#line 2076 "cplus.met"
#line 2077 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2077 "cplus.met"
            if (  !SEE_TOKEN( AFER,"}") || !(CommTerm(),1)) 
#line 2077 "cplus.met"
                TOKEN_EXIT(initializer_exit,"}")
#line 2077 "cplus.met"
#line 2078 "cplus.met"
            {
#line 2078 "cplus.met"
                PPTREE _ptTree0;
#line 2078 "cplus.met"
                {
#line 2078 "cplus.met"
                    PPTREE _ptRes1;
#line 2078 "cplus.met"
                    _ptRes1= MakeTree(INITIALIZER, 1);
#line 2078 "cplus.met"
                    ReplaceTree(_ptRes1, 1, initList );
#line 2078 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2078 "cplus.met"
                }
#line 2078 "cplus.met"
                _retValue =_ptTree0;
#line 2078 "cplus.met"
                goto initializer_ret;
#line 2078 "cplus.met"
            }
#line 2078 "cplus.met"
            break;
#line 2078 "cplus.met"
#line 2081 "cplus.met"
        default : 
#line 2081 "cplus.met"
#line 2081 "cplus.met"
            if (NPUSH_CALL_AFF_VERIF(retTree = ,_Tak(assignment_expression), 11, cplus)){
#line 2081 "cplus.met"
#line 2082 "cplus.met"
                {
#line 2082 "cplus.met"
                    PPTREE _ptTree0;
#line 2082 "cplus.met"
                    {
#line 2082 "cplus.met"
                        PPTREE _ptRes1;
#line 2082 "cplus.met"
                        _ptRes1= MakeTree(INITIALIZER, 1);
#line 2082 "cplus.met"
                        ReplaceTree(_ptRes1, 1, retTree );
#line 2082 "cplus.met"
                        _ptTree0=_ptRes1;
#line 2082 "cplus.met"
                    }
#line 2082 "cplus.met"
                    _retValue =_ptTree0;
#line 2082 "cplus.met"
                    goto initializer_ret;
#line 2082 "cplus.met"
                }
#line 2082 "cplus.met"
            } else {
#line 2082 "cplus.met"
#line 2084 "cplus.met"
                {
#line 2084 "cplus.met"
                    PPTREE _ptTree0;
#line 2084 "cplus.met"
                    {
#line 2084 "cplus.met"
                        PPTREE _ptRes1;
#line 2084 "cplus.met"
                        _ptRes1= MakeTree(INITIALIZER, 1);
#line 2084 "cplus.met"
                        _ptTree0=_ptRes1;
#line 2084 "cplus.met"
                    }
#line 2084 "cplus.met"
                    _retValue =_ptTree0;
#line 2084 "cplus.met"
                    goto initializer_ret;
#line 2084 "cplus.met"
                }
#line 2084 "cplus.met"
            }
#line 2084 "cplus.met"
            break;
#line 2084 "cplus.met"
    }
#line 2084 "cplus.met"
#line 2086 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2086 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2086 "cplus.met"
return((PPTREE) 0);
#line 2086 "cplus.met"

#line 2086 "cplus.met"
initializer_exit :
#line 2086 "cplus.met"

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

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

#line 2086 "cplus.met"
