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

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


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

#line 1642 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1642 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1642 "cplus.met"
    int _Debug = TRACE_RULE("catch_unit",TRACE_ENTER,(PPTREE)0);
#line 1642 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1642 "cplus.met"
#line 1643 "cplus.met"
    (tokenAhead == 13|| (specific(),TRACE_LEX(1)));
#line 1643 "cplus.met"
    switch( lexEl.Value) {
#line 1643 "cplus.met"
#line 1644 "cplus.met"
        case META : 
#line 1644 "cplus.met"
        case CATCH_UPPER : 
#line 1644 "cplus.met"
#line 1644 "cplus.met"
            {
#line 1644 "cplus.met"
                PPTREE _ptTree0;
#line 1644 "cplus.met"
                {
#line 1644 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1644 "cplus.met"
                    _ptRes1= MakeTree(CATCH, 2);
#line 1644 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(macro)(error_free), 72, cplus))== (PPTREE) -1 ) {
#line 1644 "cplus.met"
                        PROG_EXIT(catch_unit_exit,"catch_unit")
#line 1644 "cplus.met"
                    }
#line 1644 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1644 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(compound_statement)(error_free), 22, cplus))== (PPTREE) -1 ) {
#line 1644 "cplus.met"
                        PROG_EXIT(catch_unit_exit,"catch_unit")
#line 1644 "cplus.met"
                    }
#line 1644 "cplus.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 1644 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1644 "cplus.met"
                }
#line 1644 "cplus.met"
                _retValue =_ptTree0;
#line 1644 "cplus.met"
                goto catch_unit_ret;
#line 1644 "cplus.met"
            }
#line 1644 "cplus.met"
            break;
#line 1644 "cplus.met"
#line 1646 "cplus.met"
        case CATCH_ALL : 
#line 1646 "cplus.met"
#line 1646 "cplus.met"
            {
#line 1646 "cplus.met"
                PPTREE _ptTree0;
#line 1646 "cplus.met"
                {
#line 1646 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1646 "cplus.met"
                    _ptRes1= MakeTree(CATCH, 2);
#line 1646 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(macro)(error_free), 72, cplus))== (PPTREE) -1 ) {
#line 1646 "cplus.met"
                        PROG_EXIT(catch_unit_exit,"catch_unit")
#line 1646 "cplus.met"
                    }
#line 1646 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1646 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(compound_statement)(error_free), 22, cplus))== (PPTREE) -1 ) {
#line 1646 "cplus.met"
                        PROG_EXIT(catch_unit_exit,"catch_unit")
#line 1646 "cplus.met"
                    }
#line 1646 "cplus.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 1646 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1646 "cplus.met"
                }
#line 1646 "cplus.met"
                _retValue =_ptTree0;
#line 1646 "cplus.met"
                goto catch_unit_ret;
#line 1646 "cplus.met"
            }
#line 1646 "cplus.met"
            break;
#line 1646 "cplus.met"
#line 1648 "cplus.met"
        case AND_CATCH : 
#line 1648 "cplus.met"
#line 1648 "cplus.met"
            {
#line 1648 "cplus.met"
                PPTREE _ptTree0;
#line 1648 "cplus.met"
                {
#line 1648 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1648 "cplus.met"
                    _ptRes1= MakeTree(CATCH, 2);
#line 1648 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(macro)(error_free), 72, cplus))== (PPTREE) -1 ) {
#line 1648 "cplus.met"
                        PROG_EXIT(catch_unit_exit,"catch_unit")
#line 1648 "cplus.met"
                    }
#line 1648 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1648 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(compound_statement)(error_free), 22, cplus))== (PPTREE) -1 ) {
#line 1648 "cplus.met"
                        PROG_EXIT(catch_unit_exit,"catch_unit")
#line 1648 "cplus.met"
                    }
#line 1648 "cplus.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 1648 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1648 "cplus.met"
                }
#line 1648 "cplus.met"
                _retValue =_ptTree0;
#line 1648 "cplus.met"
                goto catch_unit_ret;
#line 1648 "cplus.met"
            }
#line 1648 "cplus.met"
            break;
#line 1648 "cplus.met"
        default :
#line 1648 "cplus.met"
            CASE_EXIT(catch_unit_exit,"either CATCH_UPPER or CATCH_ALL or AND_CATCH")
#line 1648 "cplus.met"
            break;
#line 1648 "cplus.met"
    }
#line 1648 "cplus.met"
#line 1651 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1651 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1651 "cplus.met"
return((PPTREE) 0);
#line 1651 "cplus.met"

#line 1651 "cplus.met"
catch_unit_exit :
#line 1651 "cplus.met"

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

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

#line 1651 "cplus.met"
#line 1663 "cplus.met"
PPTREE cplus::catch_unit_ansi ( int error_free)
#line 1663 "cplus.met"
{
#line 1663 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1663 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1663 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1663 "cplus.met"
    int _Debug = TRACE_RULE("catch_unit_ansi",TRACE_ENTER,(PPTREE)0);
#line 1663 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1663 "cplus.met"
#line 1663 "cplus.met"
    PPTREE retTree = (PPTREE) 0,valTree = (PPTREE) 0;
#line 1663 "cplus.met"
#line 1665 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1665 "cplus.met"
    if (  !SEE_TOKEN( CATCH,"catch") || !(CommTerm(),1)) 
#line 1665 "cplus.met"
        TOKEN_EXIT(catch_unit_ansi_exit,"catch")
#line 1665 "cplus.met"
#line 1666 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1666 "cplus.met"
    if (  !SEE_TOKEN( POUV,"(") || !(CommTerm(),1)) 
#line 1666 "cplus.met"
        TOKEN_EXIT(catch_unit_ansi_exit,"(")
#line 1666 "cplus.met"
#line 1667 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(POINPOINPOIN,"...") && (tokenAhead = 0,CommTerm(),1)){
#line 1667 "cplus.met"
#line 1668 "cplus.met"
        {
#line 1668 "cplus.met"
            PPTREE _ptRes0;
#line 1668 "cplus.met"
            _ptRes0= MakeTree(EXCEPT_ANSI_ALL, 0);
#line 1668 "cplus.met"
            valTree=_ptRes0;
#line 1668 "cplus.met"
        }
#line 1668 "cplus.met"
    } else {
#line 1668 "cplus.met"
#line 1670 "cplus.met"
#line 1671 "cplus.met"
        if ( (retTree=NQUICK_CALL(_Tak(type_specifier)(error_free), 119, cplus))== (PPTREE) -1 ) {
#line 1671 "cplus.met"
            PROG_EXIT(catch_unit_ansi_exit,"catch_unit_ansi")
#line 1671 "cplus.met"
        }
#line 1671 "cplus.met"
#line 1672 "cplus.met"
        if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(declarator), 34, cplus)){
#line 1672 "cplus.met"
#line 1673 "cplus.met"
            {
#line 1673 "cplus.met"
                PPTREE _ptRes0;
#line 1673 "cplus.met"
                _ptRes0= MakeTree(DECLARATOR, 2);
#line 1673 "cplus.met"
                ReplaceTree(_ptRes0, 1, retTree );
#line 1673 "cplus.met"
                ReplaceTree(_ptRes0, 2, valTree );
#line 1673 "cplus.met"
                valTree=_ptRes0;
#line 1673 "cplus.met"
            }
#line 1673 "cplus.met"
        } else {
#line 1673 "cplus.met"
#line 1675 "cplus.met"
            if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(abstract_declarator), 1, cplus)){
#line 1675 "cplus.met"
#line 1676 "cplus.met"
                {
#line 1676 "cplus.met"
                    PPTREE _ptRes0;
#line 1676 "cplus.met"
                    _ptRes0= MakeTree(ABST_DECLARATOR, 2);
#line 1676 "cplus.met"
                    ReplaceTree(_ptRes0, 1, retTree );
#line 1676 "cplus.met"
                    ReplaceTree(_ptRes0, 2, valTree );
#line 1676 "cplus.met"
                    valTree=_ptRes0;
#line 1676 "cplus.met"
                }
#line 1676 "cplus.met"
            } else {
#line 1676 "cplus.met"
#line 1678 "cplus.met"
                valTree = retTree ;
#line 1678 "cplus.met"
            }
#line 1678 "cplus.met"
        }
#line 1678 "cplus.met"
    }
#line 1678 "cplus.met"
#line 1680 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1680 "cplus.met"
    if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 1680 "cplus.met"
        TOKEN_EXIT(catch_unit_ansi_exit,")")
#line 1680 "cplus.met"
#line 1681 "cplus.met"
    {
#line 1681 "cplus.met"
        PPTREE _ptTree0;
#line 1681 "cplus.met"
        {
#line 1681 "cplus.met"
            PPTREE _ptTree1,_ptRes1;
#line 1681 "cplus.met"
            _ptRes1= MakeTree(CATCH_ANSI, 2);
#line 1681 "cplus.met"
            ReplaceTree(_ptRes1, 1, valTree );
#line 1681 "cplus.met"
            if ( (_ptTree1=NQUICK_CALL(_Tak(compound_statement)(error_free), 22, cplus))== (PPTREE) -1 ) {
#line 1681 "cplus.met"
                PROG_EXIT(catch_unit_ansi_exit,"catch_unit_ansi")
#line 1681 "cplus.met"
            }
#line 1681 "cplus.met"
            ReplaceTree(_ptRes1, 2, _ptTree1);
#line 1681 "cplus.met"
            _ptTree0=_ptRes1;
#line 1681 "cplus.met"
        }
#line 1681 "cplus.met"
        _retValue =_ptTree0;
#line 1681 "cplus.met"
        goto catch_unit_ansi_ret;
#line 1681 "cplus.met"
    }
#line 1681 "cplus.met"
#line 1682 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1682 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1682 "cplus.met"
return((PPTREE) 0);
#line 1682 "cplus.met"

#line 1682 "cplus.met"
catch_unit_ansi_exit :
#line 1682 "cplus.met"

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

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

#line 1682 "cplus.met"
#line 1702 "cplus.met"
PPTREE cplus::class_declaration ( int error_free)
#line 1702 "cplus.met"
{
#line 1702 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1702 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1702 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1702 "cplus.met"
    int _Debug = TRACE_RULE("class_declaration",TRACE_ENTER,(PPTREE)0);
#line 1702 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1702 "cplus.met"
#line 1702 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 1702 "cplus.met"
#line 1702 "cplus.met"
    PPTREE retTree = (PPTREE) 0,inter = (PPTREE) 0,list = (PPTREE) 0;
#line 1702 "cplus.met"
#line 1704 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1704 "cplus.met"
    switch( lexEl.Value) {
#line 1704 "cplus.met"
#line 1705 "cplus.met"
        case STRUCT : 
#line 1705 "cplus.met"
            tokenAhead = 0 ;
#line 1705 "cplus.met"
            CommTerm();
#line 1705 "cplus.met"
#line 1705 "cplus.met"
            {
#line 1705 "cplus.met"
                PPTREE _ptRes0;
#line 1705 "cplus.met"
                _ptRes0= MakeTree(CLASS, 4);
#line 1705 "cplus.met"
                ReplaceTree(_ptRes0, 1, MakeString ("struct"));
#line 1705 "cplus.met"
                retTree=_ptRes0;
#line 1705 "cplus.met"
            }
#line 1705 "cplus.met"
            break;
#line 1705 "cplus.met"
#line 1706 "cplus.met"
        case UNION : 
#line 1706 "cplus.met"
            tokenAhead = 0 ;
#line 1706 "cplus.met"
            CommTerm();
#line 1706 "cplus.met"
#line 1706 "cplus.met"
            {
#line 1706 "cplus.met"
                PPTREE _ptRes0;
#line 1706 "cplus.met"
                _ptRes0= MakeTree(CLASS, 4);
#line 1706 "cplus.met"
                ReplaceTree(_ptRes0, 1, MakeString ("union"));
#line 1706 "cplus.met"
                retTree=_ptRes0;
#line 1706 "cplus.met"
            }
#line 1706 "cplus.met"
            break;
#line 1706 "cplus.met"
#line 1707 "cplus.met"
        case CLASS : 
#line 1707 "cplus.met"
            tokenAhead = 0 ;
#line 1707 "cplus.met"
            CommTerm();
#line 1707 "cplus.met"
#line 1707 "cplus.met"
            {
#line 1707 "cplus.met"
                PPTREE _ptRes0;
#line 1707 "cplus.met"
                _ptRes0= MakeTree(CLASS, 4);
#line 1707 "cplus.met"
                ReplaceTree(_ptRes0, 1, MakeString ("class"));
#line 1707 "cplus.met"
                retTree=_ptRes0;
#line 1707 "cplus.met"
            }
#line 1707 "cplus.met"
            break;
#line 1707 "cplus.met"
        default :
#line 1707 "cplus.met"
            CASE_EXIT(class_declaration_exit,"either struct or union or class")
#line 1707 "cplus.met"
            break;
#line 1707 "cplus.met"
    }
#line 1707 "cplus.met"
#line 1709 "cplus.met"
    {
#line 1709 "cplus.met"
        PPTREE _ptTree0;
#line 1709 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(range_modifier_ident)(error_free), 100, cplus))== (PPTREE) -1 ) {
#line 1709 "cplus.met"
            PROG_EXIT(class_declaration_exit,"class_declaration")
#line 1709 "cplus.met"
        }
#line 1709 "cplus.met"
        ReplaceTree(retTree , 2 , _ptTree0);
#line 1709 "cplus.met"
    }
#line 1709 "cplus.met"
#line 1710 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(DPOI,":") && (tokenAhead = 0,CommTerm(),1)){
#line 1710 "cplus.met"
#line 1711 "cplus.met"
        {
#line 1711 "cplus.met"
            PPTREE _ptTree0;
#line 1711 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(base_specifier)(error_free), 12, cplus))== (PPTREE) -1 ) {
#line 1711 "cplus.met"
                PROG_EXIT(class_declaration_exit,"class_declaration")
#line 1711 "cplus.met"
            }
#line 1711 "cplus.met"
            ReplaceTree(retTree , 3 , _ptTree0);
#line 1711 "cplus.met"
        }
#line 1711 "cplus.met"
#line 1711 "cplus.met"
    }
#line 1711 "cplus.met"
#line 1712 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(AOUV,"{") && (tokenAhead = 0,CommTerm(),1)){
#line 1712 "cplus.met"
#line 1713 "cplus.met"
#line 1714 "cplus.met"
        do {
#line 1714 "cplus.met"
#line 1714 "cplus.met"
            _addlist1 = list ;
#line 1714 "cplus.met"
#line 1715 "cplus.met"
            while (NPUSH_CALL_AFF_VERIF(inter = ,_Tak(inside_declaration), 64, cplus)) { 
#line 1715 "cplus.met"
#line 1716 "cplus.met"
#line 1716 "cplus.met"
                _addlist1 =AddList(_addlist1 ,inter );
#line 1716 "cplus.met"
#line 1716 "cplus.met"
                if (list){
#line 1716 "cplus.met"
#line 1716 "cplus.met"
                    _addlist1 = SonTree (_addlist1 ,2 );
#line 1716 "cplus.met"
                } else {
#line 1716 "cplus.met"
#line 1716 "cplus.met"
                    list = _addlist1 ;
#line 1716 "cplus.met"
                }
#line 1716 "cplus.met"
            } 
#line 1716 "cplus.met"
#line 1717 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1717 "cplus.met"
            switch( lexEl.Value) {
#line 1717 "cplus.met"
#line 1718 "cplus.met"
                case PUBLIC : 
#line 1718 "cplus.met"
#line 1718 "cplus.met"
                    {
#line 1718 "cplus.met"
                        PPTREE _ptTree0;
#line 1718 "cplus.met"
                        if ( (_ptTree0=NQUICK_CALL(_Tak(protect_declare)(error_free), 91, cplus))== (PPTREE) -1 ) {
#line 1718 "cplus.met"
                            PROG_EXIT(class_declaration_exit,"class_declaration")
#line 1718 "cplus.met"
                        }
#line 1718 "cplus.met"
                        list =AddList(list , _ptTree0);
#line 1718 "cplus.met"
                    }
#line 1718 "cplus.met"
                    break;
#line 1718 "cplus.met"
#line 1719 "cplus.met"
                case PRIVATE : 
#line 1719 "cplus.met"
#line 1719 "cplus.met"
                    {
#line 1719 "cplus.met"
                        PPTREE _ptTree0;
#line 1719 "cplus.met"
                        if ( (_ptTree0=NQUICK_CALL(_Tak(protect_declare)(error_free), 91, cplus))== (PPTREE) -1 ) {
#line 1719 "cplus.met"
                            PROG_EXIT(class_declaration_exit,"class_declaration")
#line 1719 "cplus.met"
                        }
#line 1719 "cplus.met"
                        list =AddList(list , _ptTree0);
#line 1719 "cplus.met"
                    }
#line 1719 "cplus.met"
                    break;
#line 1719 "cplus.met"
#line 1720 "cplus.met"
                case PROTECTED : 
#line 1720 "cplus.met"
#line 1720 "cplus.met"
                    {
#line 1720 "cplus.met"
                        PPTREE _ptTree0;
#line 1720 "cplus.met"
                        if ( (_ptTree0=NQUICK_CALL(_Tak(protect_declare)(error_free), 91, cplus))== (PPTREE) -1 ) {
#line 1720 "cplus.met"
                            PROG_EXIT(class_declaration_exit,"class_declaration")
#line 1720 "cplus.met"
                        }
#line 1720 "cplus.met"
                        list =AddList(list , _ptTree0);
#line 1720 "cplus.met"
                    }
#line 1720 "cplus.met"
                    break;
#line 1720 "cplus.met"
#line 1720 "cplus.met"
                case AFER : 
#line 1720 "cplus.met"
#line 1720 "cplus.met"
                    break;
#line 1720 "cplus.met"
#line 1722 "cplus.met"
                default : 
#line 1722 "cplus.met"
#line 1722 "cplus.met"
                    LEX_EXIT ("",0);
#line 1722 "cplus.met"
                    goto class_declaration_exit;
#line 1722 "cplus.met"
                    break;
#line 1722 "cplus.met"
            }
#line 1722 "cplus.met"
#line 1724 "cplus.met"
        } while ( !((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( AFER,"}"))) ;
#line 1724 "cplus.met"
#line 1725 "cplus.met"
        {
#line 1725 "cplus.met"
            PPTREE _ptTree0;
#line 1725 "cplus.met"
            {
#line 1725 "cplus.met"
                PPTREE _ptRes1;
#line 1725 "cplus.met"
                _ptRes1= MakeTree(CLASS_DECL, 1);
#line 1725 "cplus.met"
                ReplaceTree(_ptRes1, 1, list );
#line 1725 "cplus.met"
                _ptTree0=_ptRes1;
#line 1725 "cplus.met"
            }
#line 1725 "cplus.met"
            ReplaceTree(retTree , 4 , _ptTree0);
#line 1725 "cplus.met"
        }
#line 1725 "cplus.met"
#line 1726 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1726 "cplus.met"
        if (  !SEE_TOKEN( AFER,"}") || !(CommTerm(),1)) 
#line 1726 "cplus.met"
            TOKEN_EXIT(class_declaration_exit,"}")
#line 1726 "cplus.met"
#line 1727 "cplus.met"
    }
#line 1727 "cplus.met"
#line 1728 "cplus.met"
    {
#line 1728 "cplus.met"
        _retValue = retTree ;
#line 1728 "cplus.met"
        goto class_declaration_ret;
#line 1728 "cplus.met"
        
#line 1728 "cplus.met"
    }
#line 1728 "cplus.met"
#line 1729 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1729 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1729 "cplus.met"
return((PPTREE) 0);
#line 1729 "cplus.met"

#line 1729 "cplus.met"
class_declaration_exit :
#line 1729 "cplus.met"

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

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

#line 1729 "cplus.met"
#line 677 "cplus.met"
PPTREE cplus::comment_eater ( int error_free)
#line 677 "cplus.met"
{
#line 677 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 677 "cplus.met"
    int _value,_nbPre = 0 ;
#line 677 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 677 "cplus.met"
    int _Debug = TRACE_RULE("comment_eater",TRACE_ENTER,(PPTREE)0);
#line 677 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 677 "cplus.met"
#line 677 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 677 "cplus.met"
#line 679 "cplus.met"
    1;
#line 679 "cplus.met"
    switch( lexEl.Value) {
#line 679 "cplus.met"
#line 680 "cplus.met"
        default : 
#line 680 "cplus.met"
            tokenAhead = 0 ;
#line 680 "cplus.met"
            CommTerm();
#line 680 "cplus.met"
#line 681 "cplus.met"
            if ( lexEl.Value != -1 ){
#line 681 "cplus.met"
#line 682 "cplus.met"
                LEX_EXIT ("",0);
#line 682 "cplus.met"
                goto comment_eater_exit;
#line 682 "cplus.met"
#line 682 "cplus.met"
            } else {
#line 682 "cplus.met"
#line 684 "cplus.met"
                {
#line 684 "cplus.met"
                    _retValue = retTree ;
#line 684 "cplus.met"
                    goto comment_eater_ret;
#line 684 "cplus.met"
                    
#line 684 "cplus.met"
                }
#line 684 "cplus.met"
            }
#line 684 "cplus.met"
            break;
#line 684 "cplus.met"
    }
#line 684 "cplus.met"
#line 686 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 686 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 686 "cplus.met"
return((PPTREE) 0);
#line 686 "cplus.met"

#line 686 "cplus.met"
comment_eater_exit :
#line 686 "cplus.met"

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

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

#line 686 "cplus.met"
#line 1513 "cplus.met"
PPTREE cplus::complete_class_name ( int error_free)
#line 1513 "cplus.met"
{
#line 1513 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1513 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1513 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1513 "cplus.met"
    int _Debug = TRACE_RULE("complete_class_name",TRACE_ENTER,(PPTREE)0);
#line 1513 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1513 "cplus.met"
#line 1513 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 1513 "cplus.met"
#line 1513 "cplus.met"
    PPTREE ret = (PPTREE) 0,listParam = (PPTREE) 0,exp = (PPTREE) 0;
#line 1513 "cplus.met"
#line 1515 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1515 "cplus.met"
    switch( lexEl.Value) {
#line 1515 "cplus.met"
#line 1516 "cplus.met"
        case META : 
#line 1516 "cplus.met"
        case IDENT : 
#line 1516 "cplus.met"
#line 1516 "cplus.met"
            if ( (ret=NQUICK_CALL(_Tak(qualified_name)(error_free), 93, cplus))== (PPTREE) -1 ) {
#line 1516 "cplus.met"
                PROG_EXIT(complete_class_name_exit,"complete_class_name")
#line 1516 "cplus.met"
            }
#line 1516 "cplus.met"
            break;
#line 1516 "cplus.met"
#line 1517 "cplus.met"
        case DPOIDPOI : 
#line 1517 "cplus.met"
            tokenAhead = 0 ;
#line 1517 "cplus.met"
            CommTerm();
#line 1517 "cplus.met"
#line 1517 "cplus.met"
            {
#line 1517 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 1517 "cplus.met"
                _ptRes0= MakeTree(QUALIFIED, 2);
#line 1517 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(qualified_name)(error_free), 93, cplus))== (PPTREE) -1 ) {
#line 1517 "cplus.met"
                    PROG_EXIT(complete_class_name_exit,"complete_class_name")
#line 1517 "cplus.met"
                }
#line 1517 "cplus.met"
                ReplaceTree(_ptRes0, 2, _ptTree0);
#line 1517 "cplus.met"
                ret=_ptRes0;
#line 1517 "cplus.met"
            }
#line 1517 "cplus.met"
            break;
#line 1517 "cplus.met"
        default :
#line 1517 "cplus.met"
            CASE_EXIT(complete_class_name_exit,"either IDENT or ::")
#line 1517 "cplus.met"
            break;
#line 1517 "cplus.met"
    }
#line 1517 "cplus.met"
#line 1519 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(INFE,"<") && (tokenAhead = 0,CommTerm(),1)){
#line 1519 "cplus.met"
#line 1520 "cplus.met"
#line 1520 "cplus.met"
        _addlist1 = listParam ;
#line 1520 "cplus.met"
#line 1521 "cplus.met"
        do {
#line 1521 "cplus.met"
#line 1522 "cplus.met"
            if (! (NPUSH_CALL_AFF_VERIF(exp = ,_Tak(additive_expression), 2, cplus))){
#line 1522 "cplus.met"
#line 1523 "cplus.met"
                if ( (exp=NQUICK_CALL(_Tak(type_name)(error_free), 118, cplus))== (PPTREE) -1 ) {
#line 1523 "cplus.met"
                    PROG_EXIT(complete_class_name_exit,"complete_class_name")
#line 1523 "cplus.met"
                }
#line 1523 "cplus.met"
            }
#line 1523 "cplus.met"
#line 1524 "cplus.met"
            _addlist1 =AddList(_addlist1 ,exp );
#line 1524 "cplus.met"
#line 1524 "cplus.met"
            if (listParam){
#line 1524 "cplus.met"
#line 1524 "cplus.met"
                _addlist1 = SonTree (_addlist1 ,2 );
#line 1524 "cplus.met"
            } else {
#line 1524 "cplus.met"
#line 1524 "cplus.met"
                listParam = _addlist1 ;
#line 1524 "cplus.met"
            }
#line 1524 "cplus.met"
#line 1525 "cplus.met"
        } while ( !(! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(VIRG,",") && (tokenAhead = 0,CommTerm(),1)))) ;
#line 1525 "cplus.met"
#line 1526 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1526 "cplus.met"
        if (  !SEE_TOKEN( SUPE,">") || !(CommTerm(),1)) 
#line 1526 "cplus.met"
            TOKEN_EXIT(complete_class_name_exit,">")
#line 1526 "cplus.met"
#line 1527 "cplus.met"
        {
#line 1527 "cplus.met"
            PPTREE _ptRes0;
#line 1527 "cplus.met"
            _ptRes0= MakeTree(PARAM_TYPE, 2);
#line 1527 "cplus.met"
            ReplaceTree(_ptRes0, 1, ret );
#line 1527 "cplus.met"
            ReplaceTree(_ptRes0, 2, listParam );
#line 1527 "cplus.met"
            ret=_ptRes0;
#line 1527 "cplus.met"
        }
#line 1527 "cplus.met"
#line 1528 "cplus.met"
    }
#line 1528 "cplus.met"
#line 1529 "cplus.met"
    {
#line 1529 "cplus.met"
        _retValue = ret ;
#line 1529 "cplus.met"
        goto complete_class_name_ret;
#line 1529 "cplus.met"
        
#line 1529 "cplus.met"
    }
#line 1529 "cplus.met"
#line 1530 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1530 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1530 "cplus.met"
return((PPTREE) 0);
#line 1530 "cplus.met"

#line 1530 "cplus.met"
complete_class_name_exit :
#line 1530 "cplus.met"

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

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

#line 1530 "cplus.met"
#line 2777 "cplus.met"
PPTREE cplus::compound_statement ( int error_free)
#line 2777 "cplus.met"
{
#line 2777 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2777 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2777 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2777 "cplus.met"
    int _Debug = TRACE_RULE("compound_statement",TRACE_ENTER,(PPTREE)0);
#line 2777 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2777 "cplus.met"
#line 2777 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 2777 "cplus.met"
#line 2777 "cplus.met"
    PPTREE statList = (PPTREE) 0,stat = (PPTREE) 0;
#line 2777 "cplus.met"
#line 2779 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2779 "cplus.met"
    if (  !SEE_TOKEN( AOUV,"{") || !(CommTerm(),1)) 
#line 2779 "cplus.met"
        TOKEN_EXIT(compound_statement_exit,"{")
#line 2779 "cplus.met"
#line 2780 "cplus.met"
     debut :
#line 2780 "cplus.met"
#line 2780 "cplus.met"
    _addlist1 = statList ;
#line 2780 "cplus.met"
#line 2782 "cplus.met"
    while (((((NPUSH_CALL_AFF_VERIF(stat = ,_Tak(statement), 112, cplus)) || 
#line 2782 "cplus.met"
             (NPUSH_CALL_AFF_VERIF(stat = ,_Tak(data_declaration), 30, cplus))) || 
#line 2782 "cplus.met"
            (NPUSH_CALL_AFF_VERIF(stat = ,_Tak(stat_dir), 109, cplus))) || 
#line 2782 "cplus.met"
           (NPUSH_CALL_AFF_VERIF(stat = ,_Tak(exception), 44, cplus))) || 
#line 2782 "cplus.met"
          (NPUSH_CALL_AFF_VERIF(stat = ,_Tak(ext_data_declaration), 54, cplus))) { 
#line 2782 "cplus.met"
#line 2788 "cplus.met"
#line 2788 "cplus.met"
        _addlist1 =AddList(_addlist1 ,stat );
#line 2788 "cplus.met"
#line 2788 "cplus.met"
        if (statList){
#line 2788 "cplus.met"
#line 2788 "cplus.met"
            _addlist1 = SonTree (_addlist1 ,2 );
#line 2788 "cplus.met"
        } else {
#line 2788 "cplus.met"
#line 2788 "cplus.met"
            statList = _addlist1 ;
#line 2788 "cplus.met"
        }
#line 2788 "cplus.met"
    } 
#line 2788 "cplus.met"
#line 2789 "cplus.met"
    if (! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(AFER,"}") && (tokenAhead = 0,CommTerm(),1))){
#line 2789 "cplus.met"
#line 2790 "cplus.met"
#line 2791 "cplus.met"
        dumperror ();
#line 2791 "cplus.met"
#line 2792 "cplus.met"
        (tokenAhead == 5|| (LexEndLine(),TRACE_LEX(1)));
#line 2792 "cplus.met"
        if ( ! TERM_OR_META(END_LINE,"END_LINE") || !(CommTerm(),1)) 
#line 2792 "cplus.met"
            TOKEN_EXIT(compound_statement_exit,"END_LINE")
#line 2792 "cplus.met"
#line 2793 "cplus.met"
         hasGotError = 1 ;
#line 2793 "cplus.met"
#line 2794 "cplus.met"
         goto debut ;
#line 2794 "cplus.met"
#line 2795 "cplus.met"
    }
#line 2795 "cplus.met"
#line 2796 "cplus.met"
    {
#line 2796 "cplus.met"
        PPTREE _ptTree0;
#line 2796 "cplus.met"
        {
#line 2796 "cplus.met"
            PPTREE _ptRes1;
#line 2796 "cplus.met"
            _ptRes1= MakeTree(COMPOUND, 1);
#line 2796 "cplus.met"
            ReplaceTree(_ptRes1, 1, statList );
#line 2796 "cplus.met"
            _ptTree0=_ptRes1;
#line 2796 "cplus.met"
        }
#line 2796 "cplus.met"
        _retValue =_ptTree0;
#line 2796 "cplus.met"
        goto compound_statement_ret;
#line 2796 "cplus.met"
    }
#line 2796 "cplus.met"
#line 2797 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2797 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2797 "cplus.met"
return((PPTREE) 0);
#line 2797 "cplus.met"

#line 2797 "cplus.met"
compound_statement_exit :
#line 2797 "cplus.met"

#line 2797 "cplus.met"
    {
#line 2797 "cplus.met"
        MulFreeTree(3,stat,statList,_addlist1);
#line 2797 "cplus.met"
    }
#line 2797 "cplus.met"
    _Debug = TRACE_RULE("compound_statement",TRACE_EXIT,(PPTREE)0);
#line 2797 "cplus.met"
    _funcLevel--;
#line 2797 "cplus.met"
    return((PPTREE) -1) ;
#line 2797 "cplus.met"

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

#line 2797 "cplus.met"
#line 2195 "cplus.met"
PPTREE cplus::conditional_expression ( int error_free)
#line 2195 "cplus.met"
{
#line 2195 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2195 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2195 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2195 "cplus.met"
    int _Debug = TRACE_RULE("conditional_expression",TRACE_ENTER,(PPTREE)0);
#line 2195 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2195 "cplus.met"
#line 2195 "cplus.met"
    PPTREE expTree = (PPTREE) 0,condTree = (PPTREE) 0;
#line 2195 "cplus.met"
#line 2197 "cplus.met"
    if ( (expTree=NQUICK_CALL(_Tak(logical_or_expression)(error_free), 70, cplus))== (PPTREE) -1 ) {
#line 2197 "cplus.met"
        PROG_EXIT(conditional_expression_exit,"conditional_expression")
#line 2197 "cplus.met"
    }
#line 2197 "cplus.met"
#line 2198 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(INTE,"?") && (tokenAhead = 0,CommTerm(),1)){
#line 2198 "cplus.met"
#line 2199 "cplus.met"
#line 2200 "cplus.met"
        {
#line 2200 "cplus.met"
            PPTREE _ptRes0;
#line 2200 "cplus.met"
            _ptRes0= MakeTree(COND_AFF, 3);
#line 2200 "cplus.met"
            ReplaceTree(_ptRes0, 1, expTree );
#line 2200 "cplus.met"
            condTree=_ptRes0;
#line 2200 "cplus.met"
        }
#line 2200 "cplus.met"
#line 2201 "cplus.met"
        {
#line 2201 "cplus.met"
            PPTREE _ptTree0;
#line 2201 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 2201 "cplus.met"
                PROG_EXIT(conditional_expression_exit,"conditional_expression")
#line 2201 "cplus.met"
            }
#line 2201 "cplus.met"
            ReplaceTree(condTree , 2 , _ptTree0);
#line 2201 "cplus.met"
        }
#line 2201 "cplus.met"
#line 2202 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2202 "cplus.met"
        if (  !SEE_TOKEN( DPOI,":") || !(CommTerm(),1)) 
#line 2202 "cplus.met"
            TOKEN_EXIT(conditional_expression_exit,":")
#line 2202 "cplus.met"
#line 2203 "cplus.met"
        {
#line 2203 "cplus.met"
            PPTREE _ptTree0;
#line 2203 "cplus.met"
            {
#line 2203 "cplus.met"
                PPTREE _ptTree1;
#line 2203 "cplus.met"
                if ( (_ptTree1=NQUICK_CALL(_Tak(conditional_expression)(error_free), 23, cplus))== (PPTREE) -1 ) {
#line 2203 "cplus.met"
                    PROG_EXIT(conditional_expression_exit,"conditional_expression")
#line 2203 "cplus.met"
                }
#line 2203 "cplus.met"
                _ptTree0=ReplaceTree(condTree , 3 , _ptTree1);
#line 2203 "cplus.met"
            }
#line 2203 "cplus.met"
            _retValue =_ptTree0;
#line 2203 "cplus.met"
            goto conditional_expression_ret;
#line 2203 "cplus.met"
        }
#line 2203 "cplus.met"
#line 2204 "cplus.met"
    } else {
#line 2204 "cplus.met"
#line 2206 "cplus.met"
        {
#line 2206 "cplus.met"
            _retValue = expTree ;
#line 2206 "cplus.met"
            goto conditional_expression_ret;
#line 2206 "cplus.met"
            
#line 2206 "cplus.met"
        }
#line 2206 "cplus.met"
    }
#line 2206 "cplus.met"
#line 2207 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2207 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2207 "cplus.met"
return((PPTREE) 0);
#line 2207 "cplus.met"

#line 2207 "cplus.met"
conditional_expression_exit :
#line 2207 "cplus.met"

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

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

#line 2207 "cplus.met"
#line 1788 "cplus.met"
PPTREE cplus::const_or_volatile ( int error_free)
#line 1788 "cplus.met"
{
#line 1788 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1788 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1788 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1788 "cplus.met"
    int _Debug = TRACE_RULE("const_or_volatile",TRACE_ENTER,(PPTREE)0);
#line 1788 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1788 "cplus.met"
#line 1789 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1789 "cplus.met"
    switch( lexEl.Value) {
#line 1789 "cplus.met"
#line 1790 "cplus.met"
        case CONST : 
#line 1790 "cplus.met"
#line 1790 "cplus.met"
            {
#line 1790 "cplus.met"
                PPTREE _ptTree0;
#line 1790 "cplus.met"
                {
#line 1790 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1790 "cplus.met"
                    _ptRes1= MakeTree(RANGE_MODIFIER, 2);
#line 1790 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1790 "cplus.met"
                    if (  !SEE_TOKEN( CONST,"const") || !(_ptTree1 = CommString(lexEl.string))) 
#line 1790 "cplus.met"
                        TOKEN_EXIT(const_or_volatile_exit,"const")
#line 1790 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1790 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1790 "cplus.met"
                }
#line 1790 "cplus.met"
                _retValue =_ptTree0;
#line 1790 "cplus.met"
                goto const_or_volatile_ret;
#line 1790 "cplus.met"
            }
#line 1790 "cplus.met"
            break;
#line 1790 "cplus.met"
#line 1791 "cplus.met"
        case VOLATILE : 
#line 1791 "cplus.met"
#line 1791 "cplus.met"
            {
#line 1791 "cplus.met"
                PPTREE _ptTree0;
#line 1791 "cplus.met"
                {
#line 1791 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1791 "cplus.met"
                    _ptRes1= MakeTree(RANGE_MODIFIER, 2);
#line 1791 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1791 "cplus.met"
                    if (  !SEE_TOKEN( VOLATILE,"volatile") || !(_ptTree1 = CommString(lexEl.string))) 
#line 1791 "cplus.met"
                        TOKEN_EXIT(const_or_volatile_exit,"volatile")
#line 1791 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1791 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1791 "cplus.met"
                }
#line 1791 "cplus.met"
                _retValue =_ptTree0;
#line 1791 "cplus.met"
                goto const_or_volatile_ret;
#line 1791 "cplus.met"
            }
#line 1791 "cplus.met"
            break;
#line 1791 "cplus.met"
        default :
#line 1791 "cplus.met"
            CASE_EXIT(const_or_volatile_exit,"either const or volatile")
#line 1791 "cplus.met"
            break;
#line 1791 "cplus.met"
    }
#line 1791 "cplus.met"
#line 1794 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1794 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1794 "cplus.met"
return((PPTREE) 0);
#line 1794 "cplus.met"

#line 1794 "cplus.met"
const_or_volatile_exit :
#line 1794 "cplus.met"

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

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

#line 1794 "cplus.met"
#line 2646 "cplus.met"
PPTREE cplus::constan ( int error_free)
#line 2646 "cplus.met"
{
#line 2646 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2646 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2646 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2646 "cplus.met"
    int _Debug = TRACE_RULE("constan",TRACE_ENTER,(PPTREE)0);
#line 2646 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2646 "cplus.met"
#line 2647 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2647 "cplus.met"
    switch( lexEl.Value) {
#line 2647 "cplus.met"
#line 2648 "cplus.met"
        case META : 
#line 2648 "cplus.met"
        case INTEGER : 
#line 2648 "cplus.met"
#line 2648 "cplus.met"
            {
#line 2648 "cplus.met"
                PPTREE _ptTree0;
#line 2648 "cplus.met"
                {
#line 2648 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2648 "cplus.met"
                    _ptRes1= MakeTree(INTEGER, 1);
#line 2648 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2648 "cplus.met"
                    if ( ! TERM_OR_META(INTEGER,"INTEGER") || !(BUILD_TERM_META(_ptTree1))) 
#line 2648 "cplus.met"
                        TOKEN_EXIT(constan_exit,"INTEGER")
#line 2648 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2648 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2648 "cplus.met"
                }
#line 2648 "cplus.met"
                _retValue =_ptTree0;
#line 2648 "cplus.met"
                goto constan_ret;
#line 2648 "cplus.met"
            }
#line 2648 "cplus.met"
            break;
#line 2648 "cplus.met"
#line 2649 "cplus.met"
        case LINTEGER : 
#line 2649 "cplus.met"
#line 2649 "cplus.met"
            {
#line 2649 "cplus.met"
                PPTREE _ptTree0;
#line 2649 "cplus.met"
                {
#line 2649 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2649 "cplus.met"
                    _ptRes1= MakeTree(ILONG, 1);
#line 2649 "cplus.met"
                    {
#line 2649 "cplus.met"
                        PPTREE _ptTree2,_ptRes2;
#line 2649 "cplus.met"
                        _ptRes2= MakeTree(INTEGER, 1);
#line 2649 "cplus.met"
                        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2649 "cplus.met"
                        if ( ! TERM_OR_META(LINTEGER,"LINTEGER") || !(BUILD_TERM_META(_ptTree2))) 
#line 2649 "cplus.met"
                            TOKEN_EXIT(constan_exit,"LINTEGER")
#line 2649 "cplus.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 2649 "cplus.met"
                        _ptTree1=_ptRes2;
#line 2649 "cplus.met"
                    }
#line 2649 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2649 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2649 "cplus.met"
                }
#line 2649 "cplus.met"
                _retValue =_ptTree0;
#line 2649 "cplus.met"
                goto constan_ret;
#line 2649 "cplus.met"
            }
#line 2649 "cplus.met"
            break;
#line 2649 "cplus.met"
#line 2651 "cplus.met"
        case ULINTEGER : 
#line 2651 "cplus.met"
#line 2651 "cplus.met"
            {
#line 2651 "cplus.met"
                PPTREE _ptTree0;
#line 2651 "cplus.met"
                {
#line 2651 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2651 "cplus.met"
                    _ptRes1= MakeTree(IUNLONG, 1);
#line 2651 "cplus.met"
                    {
#line 2651 "cplus.met"
                        PPTREE _ptTree2,_ptRes2;
#line 2651 "cplus.met"
                        _ptRes2= MakeTree(INTEGER, 1);
#line 2651 "cplus.met"
                        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2651 "cplus.met"
                        if ( ! TERM_OR_META(ULINTEGER,"ULINTEGER") || !(BUILD_TERM_META(_ptTree2))) 
#line 2651 "cplus.met"
                            TOKEN_EXIT(constan_exit,"ULINTEGER")
#line 2651 "cplus.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 2651 "cplus.met"
                        _ptTree1=_ptRes2;
#line 2651 "cplus.met"
                    }
#line 2651 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2651 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2651 "cplus.met"
                }
#line 2651 "cplus.met"
                _retValue =_ptTree0;
#line 2651 "cplus.met"
                goto constan_ret;
#line 2651 "cplus.met"
            }
#line 2651 "cplus.met"
            break;
#line 2651 "cplus.met"
#line 2653 "cplus.met"
        case UINTEGER : 
#line 2653 "cplus.met"
#line 2653 "cplus.met"
            {
#line 2653 "cplus.met"
                PPTREE _ptTree0;
#line 2653 "cplus.met"
                {
#line 2653 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2653 "cplus.met"
                    _ptRes1= MakeTree(IUN, 1);
#line 2653 "cplus.met"
                    {
#line 2653 "cplus.met"
                        PPTREE _ptTree2,_ptRes2;
#line 2653 "cplus.met"
                        _ptRes2= MakeTree(INTEGER, 1);
#line 2653 "cplus.met"
                        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2653 "cplus.met"
                        if ( ! TERM_OR_META(UINTEGER,"UINTEGER") || !(BUILD_TERM_META(_ptTree2))) 
#line 2653 "cplus.met"
                            TOKEN_EXIT(constan_exit,"UINTEGER")
#line 2653 "cplus.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 2653 "cplus.met"
                        _ptTree1=_ptRes2;
#line 2653 "cplus.met"
                    }
#line 2653 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2653 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2653 "cplus.met"
                }
#line 2653 "cplus.met"
                _retValue =_ptTree0;
#line 2653 "cplus.met"
                goto constan_ret;
#line 2653 "cplus.met"
            }
#line 2653 "cplus.met"
            break;
#line 2653 "cplus.met"
#line 2655 "cplus.met"
        case HEXA : 
#line 2655 "cplus.met"
#line 2655 "cplus.met"
            {
#line 2655 "cplus.met"
                PPTREE _ptTree0;
#line 2655 "cplus.met"
                {
#line 2655 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2655 "cplus.met"
                    _ptRes1= MakeTree(HEXA, 1);
#line 2655 "cplus.met"
                    {
#line 2655 "cplus.met"
                        PPTREE _ptTree2,_ptRes2;
#line 2655 "cplus.met"
                        _ptRes2= MakeTree(INTEGER, 1);
#line 2655 "cplus.met"
                        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2655 "cplus.met"
                        if ( ! TERM_OR_META(HEXA,"HEXA") || !(BUILD_TERM_META(_ptTree2))) 
#line 2655 "cplus.met"
                            TOKEN_EXIT(constan_exit,"HEXA")
#line 2655 "cplus.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 2655 "cplus.met"
                        _ptTree1=_ptRes2;
#line 2655 "cplus.met"
                    }
#line 2655 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2655 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2655 "cplus.met"
                }
#line 2655 "cplus.met"
                _retValue =_ptTree0;
#line 2655 "cplus.met"
                goto constan_ret;
#line 2655 "cplus.met"
            }
#line 2655 "cplus.met"
            break;
#line 2655 "cplus.met"
#line 2656 "cplus.met"
        case LHEXA : 
#line 2656 "cplus.met"
#line 2656 "cplus.met"
            {
#line 2656 "cplus.met"
                PPTREE _ptTree0;
#line 2656 "cplus.met"
                {
#line 2656 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2656 "cplus.met"
                    _ptRes1= MakeTree(LONG, 1);
#line 2656 "cplus.met"
                    {
#line 2656 "cplus.met"
                        PPTREE _ptTree2,_ptRes2;
#line 2656 "cplus.met"
                        _ptRes2= MakeTree(HEXA, 1);
#line 2656 "cplus.met"
                        {
#line 2656 "cplus.met"
                            PPTREE _ptTree3,_ptRes3;
#line 2656 "cplus.met"
                            _ptRes3= MakeTree(INTEGER, 1);
#line 2656 "cplus.met"
                            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2656 "cplus.met"
                            if ( ! TERM_OR_META(LHEXA,"LHEXA") || !(BUILD_TERM_META(_ptTree3))) 
#line 2656 "cplus.met"
                                TOKEN_EXIT(constan_exit,"LHEXA")
#line 2656 "cplus.met"
                            ReplaceTree(_ptRes3, 1, _ptTree3);
#line 2656 "cplus.met"
                            _ptTree2=_ptRes3;
#line 2656 "cplus.met"
                        }
#line 2656 "cplus.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 2656 "cplus.met"
                        _ptTree1=_ptRes2;
#line 2656 "cplus.met"
                    }
#line 2656 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2656 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2656 "cplus.met"
                }
#line 2656 "cplus.met"
                _retValue =_ptTree0;
#line 2656 "cplus.met"
                goto constan_ret;
#line 2656 "cplus.met"
            }
#line 2656 "cplus.met"
            break;
#line 2656 "cplus.met"
#line 2658 "cplus.met"
        case ULHEXA : 
#line 2658 "cplus.met"
#line 2658 "cplus.met"
            {
#line 2658 "cplus.met"
                PPTREE _ptTree0;
#line 2658 "cplus.met"
                {
#line 2658 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2658 "cplus.met"
                    _ptRes1= MakeTree(IUNLONG, 1);
#line 2658 "cplus.met"
                    {
#line 2658 "cplus.met"
                        PPTREE _ptTree2,_ptRes2;
#line 2658 "cplus.met"
                        _ptRes2= MakeTree(HEXA, 1);
#line 2658 "cplus.met"
                        {
#line 2658 "cplus.met"
                            PPTREE _ptTree3,_ptRes3;
#line 2658 "cplus.met"
                            _ptRes3= MakeTree(INTEGER, 1);
#line 2658 "cplus.met"
                            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2658 "cplus.met"
                            if ( ! TERM_OR_META(ULHEXA,"ULHEXA") || !(BUILD_TERM_META(_ptTree3))) 
#line 2658 "cplus.met"
                                TOKEN_EXIT(constan_exit,"ULHEXA")
#line 2658 "cplus.met"
                            ReplaceTree(_ptRes3, 1, _ptTree3);
#line 2658 "cplus.met"
                            _ptTree2=_ptRes3;
#line 2658 "cplus.met"
                        }
#line 2658 "cplus.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 2658 "cplus.met"
                        _ptTree1=_ptRes2;
#line 2658 "cplus.met"
                    }
#line 2658 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2658 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2658 "cplus.met"
                }
#line 2658 "cplus.met"
                _retValue =_ptTree0;
#line 2658 "cplus.met"
                goto constan_ret;
#line 2658 "cplus.met"
            }
#line 2658 "cplus.met"
            break;
#line 2658 "cplus.met"
#line 2660 "cplus.met"
        case UHEXA : 
#line 2660 "cplus.met"
#line 2660 "cplus.met"
            {
#line 2660 "cplus.met"
                PPTREE _ptTree0;
#line 2660 "cplus.met"
                {
#line 2660 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2660 "cplus.met"
                    _ptRes1= MakeTree(IUN, 1);
#line 2660 "cplus.met"
                    {
#line 2660 "cplus.met"
                        PPTREE _ptTree2,_ptRes2;
#line 2660 "cplus.met"
                        _ptRes2= MakeTree(HEXA, 1);
#line 2660 "cplus.met"
                        {
#line 2660 "cplus.met"
                            PPTREE _ptTree3,_ptRes3;
#line 2660 "cplus.met"
                            _ptRes3= MakeTree(INTEGER, 1);
#line 2660 "cplus.met"
                            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2660 "cplus.met"
                            if ( ! TERM_OR_META(UHEXA,"UHEXA") || !(BUILD_TERM_META(_ptTree3))) 
#line 2660 "cplus.met"
                                TOKEN_EXIT(constan_exit,"UHEXA")
#line 2660 "cplus.met"
                            ReplaceTree(_ptRes3, 1, _ptTree3);
#line 2660 "cplus.met"
                            _ptTree2=_ptRes3;
#line 2660 "cplus.met"
                        }
#line 2660 "cplus.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 2660 "cplus.met"
                        _ptTree1=_ptRes2;
#line 2660 "cplus.met"
                    }
#line 2660 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2660 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2660 "cplus.met"
                }
#line 2660 "cplus.met"
                _retValue =_ptTree0;
#line 2660 "cplus.met"
                goto constan_ret;
#line 2660 "cplus.met"
            }
#line 2660 "cplus.met"
            break;
#line 2660 "cplus.met"
#line 2662 "cplus.met"
        case OCTAL : 
#line 2662 "cplus.met"
#line 2662 "cplus.met"
            {
#line 2662 "cplus.met"
                PPTREE _ptTree0;
#line 2662 "cplus.met"
                {
#line 2662 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2662 "cplus.met"
                    _ptRes1= MakeTree(OCTAL, 1);
#line 2662 "cplus.met"
                    {
#line 2662 "cplus.met"
                        PPTREE _ptTree2,_ptRes2;
#line 2662 "cplus.met"
                        _ptRes2= MakeTree(INTEGER, 1);
#line 2662 "cplus.met"
                        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2662 "cplus.met"
                        if ( ! TERM_OR_META(OCTAL,"OCTAL") || !(BUILD_TERM_META(_ptTree2))) 
#line 2662 "cplus.met"
                            TOKEN_EXIT(constan_exit,"OCTAL")
#line 2662 "cplus.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 2662 "cplus.met"
                        _ptTree1=_ptRes2;
#line 2662 "cplus.met"
                    }
#line 2662 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2662 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2662 "cplus.met"
                }
#line 2662 "cplus.met"
                _retValue =_ptTree0;
#line 2662 "cplus.met"
                goto constan_ret;
#line 2662 "cplus.met"
            }
#line 2662 "cplus.met"
            break;
#line 2662 "cplus.met"
#line 2663 "cplus.met"
        case LOCTAL : 
#line 2663 "cplus.met"
#line 2663 "cplus.met"
            {
#line 2663 "cplus.met"
                PPTREE _ptTree0;
#line 2663 "cplus.met"
                {
#line 2663 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2663 "cplus.met"
                    _ptRes1= MakeTree(ILONG, 1);
#line 2663 "cplus.met"
                    {
#line 2663 "cplus.met"
                        PPTREE _ptTree2,_ptRes2;
#line 2663 "cplus.met"
                        _ptRes2= MakeTree(OCTAL, 1);
#line 2663 "cplus.met"
                        {
#line 2663 "cplus.met"
                            PPTREE _ptTree3,_ptRes3;
#line 2663 "cplus.met"
                            _ptRes3= MakeTree(INTEGER, 1);
#line 2663 "cplus.met"
                            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2663 "cplus.met"
                            if ( ! TERM_OR_META(LOCTAL,"LOCTAL") || !(BUILD_TERM_META(_ptTree3))) 
#line 2663 "cplus.met"
                                TOKEN_EXIT(constan_exit,"LOCTAL")
#line 2663 "cplus.met"
                            ReplaceTree(_ptRes3, 1, _ptTree3);
#line 2663 "cplus.met"
                            _ptTree2=_ptRes3;
#line 2663 "cplus.met"
                        }
#line 2663 "cplus.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 2663 "cplus.met"
                        _ptTree1=_ptRes2;
#line 2663 "cplus.met"
                    }
#line 2663 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2663 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2663 "cplus.met"
                }
#line 2663 "cplus.met"
                _retValue =_ptTree0;
#line 2663 "cplus.met"
                goto constan_ret;
#line 2663 "cplus.met"
            }
#line 2663 "cplus.met"
            break;
#line 2663 "cplus.met"
#line 2665 "cplus.met"
        case ULOCTAL : 
#line 2665 "cplus.met"
#line 2665 "cplus.met"
            {
#line 2665 "cplus.met"
                PPTREE _ptTree0;
#line 2665 "cplus.met"
                {
#line 2665 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2665 "cplus.met"
                    _ptRes1= MakeTree(IUNLONG, 1);
#line 2665 "cplus.met"
                    {
#line 2665 "cplus.met"
                        PPTREE _ptTree2,_ptRes2;
#line 2665 "cplus.met"
                        _ptRes2= MakeTree(OCTAL, 1);
#line 2665 "cplus.met"
                        {
#line 2665 "cplus.met"
                            PPTREE _ptTree3,_ptRes3;
#line 2665 "cplus.met"
                            _ptRes3= MakeTree(INTEGER, 1);
#line 2665 "cplus.met"
                            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2665 "cplus.met"
                            if ( ! TERM_OR_META(ULOCTAL,"ULOCTAL") || !(BUILD_TERM_META(_ptTree3))) 
#line 2665 "cplus.met"
                                TOKEN_EXIT(constan_exit,"ULOCTAL")
#line 2665 "cplus.met"
                            ReplaceTree(_ptRes3, 1, _ptTree3);
#line 2665 "cplus.met"
                            _ptTree2=_ptRes3;
#line 2665 "cplus.met"
                        }
#line 2665 "cplus.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 2665 "cplus.met"
                        _ptTree1=_ptRes2;
#line 2665 "cplus.met"
                    }
#line 2665 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2665 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2665 "cplus.met"
                }
#line 2665 "cplus.met"
                _retValue =_ptTree0;
#line 2665 "cplus.met"
                goto constan_ret;
#line 2665 "cplus.met"
            }
#line 2665 "cplus.met"
            break;
#line 2665 "cplus.met"
#line 2667 "cplus.met"
        case UOCTAL : 
#line 2667 "cplus.met"
#line 2667 "cplus.met"
            {
#line 2667 "cplus.met"
                PPTREE _ptTree0;
#line 2667 "cplus.met"
                {
#line 2667 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2667 "cplus.met"
                    _ptRes1= MakeTree(IUN, 1);
#line 2667 "cplus.met"
                    {
#line 2667 "cplus.met"
                        PPTREE _ptTree2,_ptRes2;
#line 2667 "cplus.met"
                        _ptRes2= MakeTree(OCTAL, 1);
#line 2667 "cplus.met"
                        {
#line 2667 "cplus.met"
                            PPTREE _ptTree3,_ptRes3;
#line 2667 "cplus.met"
                            _ptRes3= MakeTree(INTEGER, 1);
#line 2667 "cplus.met"
                            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2667 "cplus.met"
                            if ( ! TERM_OR_META(UOCTAL,"UOCTAL") || !(BUILD_TERM_META(_ptTree3))) 
#line 2667 "cplus.met"
                                TOKEN_EXIT(constan_exit,"UOCTAL")
#line 2667 "cplus.met"
                            ReplaceTree(_ptRes3, 1, _ptTree3);
#line 2667 "cplus.met"
                            _ptTree2=_ptRes3;
#line 2667 "cplus.met"
                        }
#line 2667 "cplus.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 2667 "cplus.met"
                        _ptTree1=_ptRes2;
#line 2667 "cplus.met"
                    }
#line 2667 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2667 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2667 "cplus.met"
                }
#line 2667 "cplus.met"
                _retValue =_ptTree0;
#line 2667 "cplus.met"
                goto constan_ret;
#line 2667 "cplus.met"
            }
#line 2667 "cplus.met"
            break;
#line 2667 "cplus.met"
#line 2669 "cplus.met"
        case FLOAT : 
#line 2669 "cplus.met"
#line 2669 "cplus.met"
            {
#line 2669 "cplus.met"
                PPTREE _ptTree0;
#line 2669 "cplus.met"
                {
#line 2669 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2669 "cplus.met"
                    _ptRes1= MakeTree(FLOAT, 1);
#line 2669 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2669 "cplus.met"
                    if ( ! TERM_OR_META(FLOAT,"FLOAT") || !(BUILD_TERM_META(_ptTree1))) 
#line 2669 "cplus.met"
                        TOKEN_EXIT(constan_exit,"FLOAT")
#line 2669 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2669 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2669 "cplus.met"
                }
#line 2669 "cplus.met"
                _retValue =_ptTree0;
#line 2669 "cplus.met"
                goto constan_ret;
#line 2669 "cplus.met"
            }
#line 2669 "cplus.met"
            break;
#line 2669 "cplus.met"
#line 2670 "cplus.met"
        case CHARACT : 
#line 2670 "cplus.met"
#line 2670 "cplus.met"
            {
#line 2670 "cplus.met"
                PPTREE _ptTree0;
#line 2670 "cplus.met"
                {
#line 2670 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2670 "cplus.met"
                    _ptRes1= MakeTree(CHAR, 1);
#line 2670 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2670 "cplus.met"
                    if ( ! TERM_OR_META(CHARACT,"CHARACT") || !(BUILD_TERM_META(_ptTree1))) 
#line 2670 "cplus.met"
                        TOKEN_EXIT(constan_exit,"CHARACT")
#line 2670 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2670 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2670 "cplus.met"
                }
#line 2670 "cplus.met"
                _retValue =_ptTree0;
#line 2670 "cplus.met"
                goto constan_ret;
#line 2670 "cplus.met"
            }
#line 2670 "cplus.met"
            break;
#line 2670 "cplus.met"
        default :
#line 2670 "cplus.met"
            CASE_EXIT(constan_exit,"either INTEGER or LINTEGER or ULINTEGER or UINTEGER or HEXA or LHEXA or ULHEXA or UHEXA or OCTAL or LOCTAL or ULOCTAL or UOCTAL or FLOAT or CHARACT")
#line 2670 "cplus.met"
            break;
#line 2670 "cplus.met"
    }
#line 2670 "cplus.met"
#line 2672 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2672 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2672 "cplus.met"
return((PPTREE) 0);
#line 2672 "cplus.met"

#line 2672 "cplus.met"
constan_exit :
#line 2672 "cplus.met"

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

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

#line 2672 "cplus.met"
#line 2741 "cplus.met"
PPTREE cplus::ctor_initializer ( int error_free)
#line 2741 "cplus.met"
{
#line 2741 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2741 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2741 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2741 "cplus.met"
    int _Debug = TRACE_RULE("ctor_initializer",TRACE_ENTER,(PPTREE)0);
#line 2741 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2741 "cplus.met"
#line 2741 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 2741 "cplus.met"
#line 2741 "cplus.met"
    PPTREE retTree = (PPTREE) 0,list = (PPTREE) 0,val = (PPTREE) 0;
#line 2741 "cplus.met"
#line 2743 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(DPOI,":") && (tokenAhead = 0,CommTerm(),1)){
#line 2743 "cplus.met"
#line 2744 "cplus.met"
#line 2744 "cplus.met"
        _addlist1 = list ;
#line 2744 "cplus.met"
#line 2745 "cplus.met"
        do {
#line 2745 "cplus.met"
#line 2746 "cplus.met"
            {
#line 2746 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2746 "cplus.met"
                _ptRes0= MakeTree(CTOR_INIT, 2);
#line 2746 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(complete_class_name)(error_free), 21, cplus))== (PPTREE) -1 ) {
#line 2746 "cplus.met"
                    PROG_EXIT(ctor_initializer_exit,"ctor_initializer")
#line 2746 "cplus.met"
                }
#line 2746 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2746 "cplus.met"
                retTree=_ptRes0;
#line 2746 "cplus.met"
            }
#line 2746 "cplus.met"
#line 2747 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2747 "cplus.met"
            if (  !SEE_TOKEN( POUV,"(") || !(CommTerm(),1)) 
#line 2747 "cplus.met"
                TOKEN_EXIT(ctor_initializer_exit,"(")
#line 2747 "cplus.met"
#line 2748 "cplus.met"
            if (NPUSH_CALL_AFF_VERIF(val = ,_Tak(expression), 47, cplus)){
#line 2748 "cplus.met"
#line 2749 "cplus.met"
                ReplaceTree(retTree ,2 ,val );
#line 2749 "cplus.met"
#line 2749 "cplus.met"
            }
#line 2749 "cplus.met"
#line 2750 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2750 "cplus.met"
            if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 2750 "cplus.met"
                TOKEN_EXIT(ctor_initializer_exit,")")
#line 2750 "cplus.met"
#line 2751 "cplus.met"
            _addlist1 =AddList(_addlist1 ,retTree );
#line 2751 "cplus.met"
#line 2751 "cplus.met"
            if (list){
#line 2751 "cplus.met"
#line 2751 "cplus.met"
                _addlist1 = SonTree (_addlist1 ,2 );
#line 2751 "cplus.met"
            } else {
#line 2751 "cplus.met"
#line 2751 "cplus.met"
                list = _addlist1 ;
#line 2751 "cplus.met"
            }
#line 2751 "cplus.met"
#line 2752 "cplus.met"
        } while ( !(! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(VIRG,",") && (tokenAhead = 0,CommTerm(),1)))) ;
#line 2752 "cplus.met"
#line 2753 "cplus.met"
        {
#line 2753 "cplus.met"
            PPTREE _ptTree0;
#line 2753 "cplus.met"
            {
#line 2753 "cplus.met"
                PPTREE _ptRes1;
#line 2753 "cplus.met"
                _ptRes1= MakeTree(CTOR_INITIALIZER, 1);
#line 2753 "cplus.met"
                ReplaceTree(_ptRes1, 1, list );
#line 2753 "cplus.met"
                _ptTree0=_ptRes1;
#line 2753 "cplus.met"
            }
#line 2753 "cplus.met"
            _retValue =_ptTree0;
#line 2753 "cplus.met"
            goto ctor_initializer_ret;
#line 2753 "cplus.met"
        }
#line 2753 "cplus.met"
#line 2754 "cplus.met"
    }
#line 2754 "cplus.met"
#line 2755 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2755 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2755 "cplus.met"
return((PPTREE) 0);
#line 2755 "cplus.met"

#line 2755 "cplus.met"
ctor_initializer_exit :
#line 2755 "cplus.met"

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

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

#line 2755 "cplus.met"
#line 1357 "cplus.met"
PPTREE cplus::data_decl_exotic ( int error_free)
#line 1357 "cplus.met"
{
#line 1357 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1357 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1357 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1357 "cplus.met"
    int _Debug = TRACE_RULE("data_decl_exotic",TRACE_ENTER,(PPTREE)0);
#line 1357 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1357 "cplus.met"
#line 1357 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 1357 "cplus.met"
#line 1360 "cplus.met"
    if (! (NPUSH_CALL_AFF_VERIF(retTree = ,_Tak(message_map), 75, cplus))){
#line 1360 "cplus.met"
#line 1362 "cplus.met"
        if ( (retTree=NQUICK_CALL(_Tak(macro)(error_free), 72, cplus))== (PPTREE) -1 ) {
#line 1362 "cplus.met"
            PROG_EXIT(data_decl_exotic_exit,"data_decl_exotic")
#line 1362 "cplus.met"
        }
#line 1362 "cplus.met"
    }
#line 1362 "cplus.met"
#line 1363 "cplus.met"
    {
#line 1363 "cplus.met"
        _retValue = retTree ;
#line 1363 "cplus.met"
        goto data_decl_exotic_ret;
#line 1363 "cplus.met"
        
#line 1363 "cplus.met"
    }
#line 1363 "cplus.met"
#line 1364 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1364 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1364 "cplus.met"
return((PPTREE) 0);
#line 1364 "cplus.met"

#line 1364 "cplus.met"
data_decl_exotic_exit :
#line 1364 "cplus.met"

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

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

#line 1364 "cplus.met"
#line 1326 "cplus.met"
PPTREE cplus::data_decl_sc_decl ( int error_free)
#line 1326 "cplus.met"
{
#line 1326 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1326 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1326 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1326 "cplus.met"
    int _Debug = TRACE_RULE("data_decl_sc_decl",TRACE_ENTER,(PPTREE)0);
#line 1326 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1326 "cplus.met"
#line 1326 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 1326 "cplus.met"
#line 1328 "cplus.met"
    {
#line 1328 "cplus.met"
        PPTREE _ptRes0;
#line 1328 "cplus.met"
        _ptRes0= MakeTree(DECLARATION, 3);
#line 1328 "cplus.met"
        retTree=_ptRes0;
#line 1328 "cplus.met"
    }
#line 1328 "cplus.met"
#line 1329 "cplus.met"
    {
#line 1329 "cplus.met"
        PPTREE _ptTree0;
#line 1329 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(sc_specifier)(error_free), 103, cplus))== (PPTREE) -1 ) {
#line 1329 "cplus.met"
            PROG_EXIT(data_decl_sc_decl_exit,"data_decl_sc_decl")
#line 1329 "cplus.met"
        }
#line 1329 "cplus.met"
        ReplaceTree(retTree , 1 , _ptTree0);
#line 1329 "cplus.met"
    }
#line 1329 "cplus.met"
#line 1330 "cplus.met"
    {
#line 1330 "cplus.met"
        PPTREE _ptTree0;
#line 1330 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(declarator_list_init)(error_free), 37, cplus))== (PPTREE) -1 ) {
#line 1330 "cplus.met"
            PROG_EXIT(data_decl_sc_decl_exit,"data_decl_sc_decl")
#line 1330 "cplus.met"
        }
#line 1330 "cplus.met"
        ReplaceTree(retTree , 3 , _ptTree0);
#line 1330 "cplus.met"
    }
#line 1330 "cplus.met"
#line 1331 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1331 "cplus.met"
    if (  !SEE_TOKEN( PVIR,";") || !(CommTerm(),1)) 
#line 1331 "cplus.met"
        TOKEN_EXIT(data_decl_sc_decl_exit,";")
#line 1331 "cplus.met"
#line 1332 "cplus.met"
    {
#line 1332 "cplus.met"
        _retValue = retTree ;
#line 1332 "cplus.met"
        goto data_decl_sc_decl_ret;
#line 1332 "cplus.met"
        
#line 1332 "cplus.met"
    }
#line 1332 "cplus.met"
#line 1333 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1333 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1333 "cplus.met"
return((PPTREE) 0);
#line 1333 "cplus.met"

#line 1333 "cplus.met"
data_decl_sc_decl_exit :
#line 1333 "cplus.met"

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

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

#line 1333 "cplus.met"
#line 1345 "cplus.met"
PPTREE cplus::data_decl_sc_ty_decl ( int error_free)
#line 1345 "cplus.met"
{
#line 1345 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1345 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1345 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1345 "cplus.met"
    int _Debug = TRACE_RULE("data_decl_sc_ty_decl",TRACE_ENTER,(PPTREE)0);
#line 1345 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1345 "cplus.met"
#line 1345 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 1345 "cplus.met"
#line 1348 "cplus.met"
    {
#line 1348 "cplus.met"
        PPTREE _ptRes0;
#line 1348 "cplus.met"
        _ptRes0= MakeTree(DECLARATION, 3);
#line 1348 "cplus.met"
        retTree=_ptRes0;
#line 1348 "cplus.met"
    }
#line 1348 "cplus.met"
#line 1350 "cplus.met"
    {
#line 1350 "cplus.met"
        PPTREE _ptTree0;
#line 1350 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(sc_specifier)(error_free), 103, cplus))== (PPTREE) -1 ) {
#line 1350 "cplus.met"
            PROG_EXIT(data_decl_sc_ty_decl_exit,"data_decl_sc_ty_decl")
#line 1350 "cplus.met"
        }
#line 1350 "cplus.met"
        ReplaceTree(retTree , 1 , _ptTree0);
#line 1350 "cplus.met"
    }
#line 1350 "cplus.met"
#line 1351 "cplus.met"
    {
#line 1351 "cplus.met"
        PPTREE _ptTree0;
#line 1351 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(type_specifier)(error_free), 119, cplus))== (PPTREE) -1 ) {
#line 1351 "cplus.met"
            PROG_EXIT(data_decl_sc_ty_decl_exit,"data_decl_sc_ty_decl")
#line 1351 "cplus.met"
        }
#line 1351 "cplus.met"
        ReplaceTree(retTree , 2 , _ptTree0);
#line 1351 "cplus.met"
    }
#line 1351 "cplus.met"
#line 1352 "cplus.met"
    {
#line 1352 "cplus.met"
        PPTREE _ptTree0;
#line 1352 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(declarator_list_init)(error_free), 37, cplus))== (PPTREE) -1 ) {
#line 1352 "cplus.met"
            PROG_EXIT(data_decl_sc_ty_decl_exit,"data_decl_sc_ty_decl")
#line 1352 "cplus.met"
        }
#line 1352 "cplus.met"
        ReplaceTree(retTree , 3 , _ptTree0);
#line 1352 "cplus.met"
    }
#line 1352 "cplus.met"
#line 1353 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1353 "cplus.met"
    if (  !SEE_TOKEN( PVIR,";") || !(CommTerm(),1)) 
#line 1353 "cplus.met"
        TOKEN_EXIT(data_decl_sc_ty_decl_exit,";")
#line 1353 "cplus.met"
#line 1354 "cplus.met"
    {
#line 1354 "cplus.met"
        _retValue = retTree ;
#line 1354 "cplus.met"
        goto data_decl_sc_ty_decl_ret;
#line 1354 "cplus.met"
        
#line 1354 "cplus.met"
    }
#line 1354 "cplus.met"
#line 1355 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1355 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1355 "cplus.met"
return((PPTREE) 0);
#line 1355 "cplus.met"

#line 1355 "cplus.met"
data_decl_sc_ty_decl_exit :
#line 1355 "cplus.met"

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

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

#line 1355 "cplus.met"
#line 1335 "cplus.met"
PPTREE cplus::data_declaration ( int error_free)
#line 1335 "cplus.met"
{
#line 1335 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1335 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1335 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1335 "cplus.met"
    int _Debug = TRACE_RULE("data_declaration",TRACE_ENTER,(PPTREE)0);
#line 1335 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1335 "cplus.met"
#line 1335 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 1335 "cplus.met"
#line 1337 "cplus.met"
    if (! (NPUSH_CALL_AFF_VERIF(retTree = ,_Tak(data_decl_sc_decl), 28, cplus))){
#line 1337 "cplus.met"
#line 1338 "cplus.met"
        if ( (retTree=NQUICK_CALL(_Tak(data_declaration_strict)(error_free), 32, cplus))== (PPTREE) -1 ) {
#line 1338 "cplus.met"
            PROG_EXIT(data_declaration_exit,"data_declaration")
#line 1338 "cplus.met"
        }
#line 1338 "cplus.met"
    }
#line 1338 "cplus.met"
#line 1339 "cplus.met"
    {
#line 1339 "cplus.met"
        _retValue = retTree ;
#line 1339 "cplus.met"
        goto data_declaration_ret;
#line 1339 "cplus.met"
        
#line 1339 "cplus.met"
    }
#line 1339 "cplus.met"
#line 1340 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1340 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1340 "cplus.met"
return((PPTREE) 0);
#line 1340 "cplus.met"

#line 1340 "cplus.met"
data_declaration_exit :
#line 1340 "cplus.met"

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

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

#line 1340 "cplus.met"
#line 1374 "cplus.met"
PPTREE cplus::data_declaration_for ( int error_free)
#line 1374 "cplus.met"
{
#line 1374 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1374 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1374 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1374 "cplus.met"
    int _Debug = TRACE_RULE("data_declaration_for",TRACE_ENTER,(PPTREE)0);
#line 1374 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1374 "cplus.met"
#line 1374 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 1374 "cplus.met"
#line 1376 "cplus.met"
    {
#line 1376 "cplus.met"
        PPTREE _ptRes0;
#line 1376 "cplus.met"
        _ptRes0= MakeTree(FOR_DECLARATION, 3);
#line 1376 "cplus.met"
        retTree=_ptRes0;
#line 1376 "cplus.met"
    }
#line 1376 "cplus.met"
#line 1377 "cplus.met"
    {
#line 1377 "cplus.met"
        PPTREE _ptTree0;
#line 1377 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(sc_specifier)(error_free), 103, cplus))== (PPTREE) -1 ) {
#line 1377 "cplus.met"
            PROG_EXIT(data_declaration_for_exit,"data_declaration_for")
#line 1377 "cplus.met"
        }
#line 1377 "cplus.met"
        ReplaceTree(retTree , 1 , _ptTree0);
#line 1377 "cplus.met"
    }
#line 1377 "cplus.met"
#line 1378 "cplus.met"
    {
#line 1378 "cplus.met"
        PPTREE _ptTree0;
#line 1378 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(type_specifier)(error_free), 119, cplus))== (PPTREE) -1 ) {
#line 1378 "cplus.met"
            PROG_EXIT(data_declaration_for_exit,"data_declaration_for")
#line 1378 "cplus.met"
        }
#line 1378 "cplus.met"
        ReplaceTree(retTree , 2 , _ptTree0);
#line 1378 "cplus.met"
    }
#line 1378 "cplus.met"
#line 1379 "cplus.met"
    {
#line 1379 "cplus.met"
        PPTREE _ptTree0;
#line 1379 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(declarator_list_init)(error_free), 37, cplus))== (PPTREE) -1 ) {
#line 1379 "cplus.met"
            PROG_EXIT(data_declaration_for_exit,"data_declaration_for")
#line 1379 "cplus.met"
        }
#line 1379 "cplus.met"
        ReplaceTree(retTree , 3 , _ptTree0);
#line 1379 "cplus.met"
    }
#line 1379 "cplus.met"
#line 1380 "cplus.met"
    {
#line 1380 "cplus.met"
        _retValue = retTree ;
#line 1380 "cplus.met"
        goto data_declaration_for_ret;
#line 1380 "cplus.met"
        
#line 1380 "cplus.met"
    }
#line 1380 "cplus.met"
#line 1381 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1381 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1381 "cplus.met"
return((PPTREE) 0);
#line 1381 "cplus.met"

#line 1381 "cplus.met"
data_declaration_for_exit :
#line 1381 "cplus.met"

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

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

#line 1381 "cplus.met"
#line 1366 "cplus.met"
PPTREE cplus::data_declaration_strict ( int error_free)
#line 1366 "cplus.met"
{
#line 1366 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1366 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1366 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1366 "cplus.met"
    int _Debug = TRACE_RULE("data_declaration_strict",TRACE_ENTER,(PPTREE)0);
#line 1366 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1366 "cplus.met"
#line 1366 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 1366 "cplus.met"
#line 1368 "cplus.met"
    if (! (NPUSH_CALL_AFF_VERIF(retTree = ,_Tak(data_decl_sc_ty_decl), 29, cplus))){
#line 1368 "cplus.met"
#line 1369 "cplus.met"
        if ( (retTree=NQUICK_CALL(_Tak(data_decl_exotic)(error_free), 27, cplus))== (PPTREE) -1 ) {
#line 1369 "cplus.met"
            PROG_EXIT(data_declaration_strict_exit,"data_declaration_strict")
#line 1369 "cplus.met"
        }
#line 1369 "cplus.met"
    }
#line 1369 "cplus.met"
#line 1370 "cplus.met"
    {
#line 1370 "cplus.met"
        _retValue = retTree ;
#line 1370 "cplus.met"
        goto data_declaration_strict_ret;
#line 1370 "cplus.met"
        
#line 1370 "cplus.met"
    }
#line 1370 "cplus.met"
#line 1371 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1371 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1371 "cplus.met"
return((PPTREE) 0);
#line 1371 "cplus.met"

#line 1371 "cplus.met"
data_declaration_strict_exit :
#line 1371 "cplus.met"

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

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

#line 1371 "cplus.met"
