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

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


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

#line 1779 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1779 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1779 "cplus.met"
    int _Debug = TRACE_RULE("range_in_liste",TRACE_ENTER,(PPTREE)0);
#line 1779 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1779 "cplus.met"
#line 1779 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 1779 "cplus.met"
#line 1781 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1781 "cplus.met"
    if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(retTree))) 
#line 1781 "cplus.met"
        TOKEN_EXIT(range_in_liste_exit,"IDENT")
#line 1781 "cplus.met"
#line 1782 "cplus.met"
    if ( IsRange(lexEl.string)){
#line 1782 "cplus.met"
#line 1783 "cplus.met"
        {
#line 1783 "cplus.met"
            _retValue = retTree ;
#line 1783 "cplus.met"
            goto range_in_liste_ret;
#line 1783 "cplus.met"
            
#line 1783 "cplus.met"
        }
#line 1783 "cplus.met"
    } else {
#line 1783 "cplus.met"
#line 1785 "cplus.met"
        LEX_EXIT ("",0);
#line 1785 "cplus.met"
        goto range_in_liste_exit;
#line 1785 "cplus.met"
    }
#line 1785 "cplus.met"
#line 1786 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1786 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1786 "cplus.met"
return((PPTREE) 0);
#line 1786 "cplus.met"

#line 1786 "cplus.met"
range_in_liste_exit :
#line 1786 "cplus.met"

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

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

#line 1786 "cplus.met"
#line 1805 "cplus.met"
PPTREE cplus::range_modifier ( int error_free)
#line 1805 "cplus.met"
{
#line 1805 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1805 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1805 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1805 "cplus.met"
    int _Debug = TRACE_RULE("range_modifier",TRACE_ENTER,(PPTREE)0);
#line 1805 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1805 "cplus.met"
#line 1806 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1806 "cplus.met"
    switch( lexEl.Value) {
#line 1806 "cplus.met"
#line 1807 "cplus.met"
        case META : 
#line 1807 "cplus.met"
        case IDENT : 
#line 1807 "cplus.met"
#line 1807 "cplus.met"
            {
#line 1807 "cplus.met"
                PPTREE _ptTree0;
#line 1807 "cplus.met"
                {
#line 1807 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1807 "cplus.met"
                    _ptRes1= MakeTree(RANGE_MODIFIER, 2);
#line 1807 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(range_in_liste)(error_free), 97, cplus))== (PPTREE) -1 ) {
#line 1807 "cplus.met"
                        PROG_EXIT(range_modifier_exit,"range_modifier")
#line 1807 "cplus.met"
                    }
#line 1807 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1807 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1807 "cplus.met"
                }
#line 1807 "cplus.met"
                _retValue =_ptTree0;
#line 1807 "cplus.met"
                goto range_modifier_ret;
#line 1807 "cplus.met"
            }
#line 1807 "cplus.met"
            break;
#line 1807 "cplus.met"
#line 1808 "cplus.met"
        case VOLATILE : 
#line 1808 "cplus.met"
#line 1808 "cplus.met"
            {
#line 1808 "cplus.met"
                PPTREE _ptTree0;
#line 1808 "cplus.met"
                {
#line 1808 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1808 "cplus.met"
                    _ptRes1= MakeTree(RANGE_MODIFIER, 2);
#line 1808 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1808 "cplus.met"
                    if (  !SEE_TOKEN( VOLATILE,"volatile") || !(_ptTree1 = CommString(lexEl.string))) 
#line 1808 "cplus.met"
                        TOKEN_EXIT(range_modifier_exit,"volatile")
#line 1808 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1808 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1808 "cplus.met"
                }
#line 1808 "cplus.met"
                _retValue =_ptTree0;
#line 1808 "cplus.met"
                goto range_modifier_ret;
#line 1808 "cplus.met"
            }
#line 1808 "cplus.met"
            break;
#line 1808 "cplus.met"
#line 1810 "cplus.met"
        case REGISTER : 
#line 1810 "cplus.met"
#line 1810 "cplus.met"
            {
#line 1810 "cplus.met"
                PPTREE _ptTree0;
#line 1810 "cplus.met"
                {
#line 1810 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1810 "cplus.met"
                    _ptRes1= MakeTree(RANGE_MODIFIER, 2);
#line 1810 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1810 "cplus.met"
                    if (  !SEE_TOKEN( REGISTER,"register") || !(_ptTree1 = CommString(lexEl.string))) 
#line 1810 "cplus.met"
                        TOKEN_EXIT(range_modifier_exit,"register")
#line 1810 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1810 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1810 "cplus.met"
                }
#line 1810 "cplus.met"
                _retValue =_ptTree0;
#line 1810 "cplus.met"
                goto range_modifier_ret;
#line 1810 "cplus.met"
            }
#line 1810 "cplus.met"
            break;
#line 1810 "cplus.met"
#line 1812 "cplus.met"
        default : 
#line 1812 "cplus.met"
#line 1812 "cplus.met"
            {
#line 1812 "cplus.met"
                PPTREE _ptTree0;
#line 1812 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(range_modifier_function)(error_free), 99, cplus))== (PPTREE) -1 ) {
#line 1812 "cplus.met"
                    PROG_EXIT(range_modifier_exit,"range_modifier")
#line 1812 "cplus.met"
                }
#line 1812 "cplus.met"
                _retValue =_ptTree0;
#line 1812 "cplus.met"
                goto range_modifier_ret;
#line 1812 "cplus.met"
            }
#line 1812 "cplus.met"
            break;
#line 1812 "cplus.met"
    }
#line 1812 "cplus.met"
#line 1814 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1814 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1814 "cplus.met"
return((PPTREE) 0);
#line 1814 "cplus.met"

#line 1814 "cplus.met"
range_modifier_exit :
#line 1814 "cplus.met"

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

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

#line 1814 "cplus.met"
#line 1796 "cplus.met"
PPTREE cplus::range_modifier_function ( int error_free)
#line 1796 "cplus.met"
{
#line 1796 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1796 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1796 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1796 "cplus.met"
    int _Debug = TRACE_RULE("range_modifier_function",TRACE_ENTER,(PPTREE)0);
#line 1796 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1796 "cplus.met"
#line 1797 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1797 "cplus.met"
    switch( lexEl.Value) {
#line 1797 "cplus.met"
#line 1798 "cplus.met"
        case INLINE : 
#line 1798 "cplus.met"
#line 1798 "cplus.met"
            {
#line 1798 "cplus.met"
                PPTREE _ptTree0;
#line 1798 "cplus.met"
                {
#line 1798 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1798 "cplus.met"
                    _ptRes1= MakeTree(RANGE_MODIFIER, 2);
#line 1798 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1798 "cplus.met"
                    if (  !SEE_TOKEN( INLINE,"inline") || !(_ptTree1 = CommString(lexEl.string))) 
#line 1798 "cplus.met"
                        TOKEN_EXIT(range_modifier_function_exit,"inline")
#line 1798 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1798 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1798 "cplus.met"
                }
#line 1798 "cplus.met"
                _retValue =_ptTree0;
#line 1798 "cplus.met"
                goto range_modifier_function_ret;
#line 1798 "cplus.met"
            }
#line 1798 "cplus.met"
            break;
#line 1798 "cplus.met"
#line 1799 "cplus.met"
        case VIRTUAL : 
#line 1799 "cplus.met"
#line 1799 "cplus.met"
            {
#line 1799 "cplus.met"
                PPTREE _ptTree0;
#line 1799 "cplus.met"
                {
#line 1799 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1799 "cplus.met"
                    _ptRes1= MakeTree(RANGE_MODIFIER, 2);
#line 1799 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1799 "cplus.met"
                    if (  !SEE_TOKEN( VIRTUAL,"virtual") || !(_ptTree1 = CommString(lexEl.string))) 
#line 1799 "cplus.met"
                        TOKEN_EXIT(range_modifier_function_exit,"virtual")
#line 1799 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1799 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1799 "cplus.met"
                }
#line 1799 "cplus.met"
                _retValue =_ptTree0;
#line 1799 "cplus.met"
                goto range_modifier_function_ret;
#line 1799 "cplus.met"
            }
#line 1799 "cplus.met"
            break;
#line 1799 "cplus.met"
#line 1800 "cplus.met"
        case FRIEND : 
#line 1800 "cplus.met"
#line 1800 "cplus.met"
            {
#line 1800 "cplus.met"
                PPTREE _ptTree0;
#line 1800 "cplus.met"
                {
#line 1800 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1800 "cplus.met"
                    _ptRes1= MakeTree(RANGE_MODIFIER, 2);
#line 1800 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1800 "cplus.met"
                    if (  !SEE_TOKEN( FRIEND,"friend") || !(_ptTree1 = CommString(lexEl.string))) 
#line 1800 "cplus.met"
                        TOKEN_EXIT(range_modifier_function_exit,"friend")
#line 1800 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1800 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1800 "cplus.met"
                }
#line 1800 "cplus.met"
                _retValue =_ptTree0;
#line 1800 "cplus.met"
                goto range_modifier_function_ret;
#line 1800 "cplus.met"
            }
#line 1800 "cplus.met"
            break;
#line 1800 "cplus.met"
#line 1801 "cplus.met"
        case CONST : 
#line 1801 "cplus.met"
#line 1801 "cplus.met"
            {
#line 1801 "cplus.met"
                PPTREE _ptTree0;
#line 1801 "cplus.met"
                {
#line 1801 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1801 "cplus.met"
                    _ptRes1= MakeTree(RANGE_MODIFIER, 2);
#line 1801 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1801 "cplus.met"
                    if (  !SEE_TOKEN( CONST,"const") || !(_ptTree1 = CommString(lexEl.string))) 
#line 1801 "cplus.met"
                        TOKEN_EXIT(range_modifier_function_exit,"const")
#line 1801 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1801 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1801 "cplus.met"
                }
#line 1801 "cplus.met"
                _retValue =_ptTree0;
#line 1801 "cplus.met"
                goto range_modifier_function_ret;
#line 1801 "cplus.met"
            }
#line 1801 "cplus.met"
            break;
#line 1801 "cplus.met"
        default :
#line 1801 "cplus.met"
            CASE_EXIT(range_modifier_function_exit,"either inline or virtual or friend or const")
#line 1801 "cplus.met"
            break;
#line 1801 "cplus.met"
    }
#line 1801 "cplus.met"
#line 1803 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1803 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1803 "cplus.met"
return((PPTREE) 0);
#line 1803 "cplus.met"

#line 1803 "cplus.met"
range_modifier_function_exit :
#line 1803 "cplus.met"

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

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

#line 1803 "cplus.met"
#line 1693 "cplus.met"
PPTREE cplus::range_modifier_ident ( int error_free)
#line 1693 "cplus.met"
{
#line 1693 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1693 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1693 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1693 "cplus.met"
    int _Debug = TRACE_RULE("range_modifier_ident",TRACE_ENTER,(PPTREE)0);
#line 1693 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1693 "cplus.met"
#line 1693 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 1693 "cplus.met"
#line 1695 "cplus.met"
    if (NPUSH_CALL_AFF_VERIF(retTree = ,_Tak(range_modifier), 98, cplus)){
#line 1695 "cplus.met"
#line 1696 "cplus.met"
        {
#line 1696 "cplus.met"
            PPTREE _ptTree0;
#line 1696 "cplus.met"
            {
#line 1696 "cplus.met"
                PPTREE _ptTree1;
#line 1696 "cplus.met"
                if ( (_ptTree1=NQUICK_CALL(_Tak(range_modifier_ident)(error_free), 100, cplus))== (PPTREE) -1 ) {
#line 1696 "cplus.met"
                    PROG_EXIT(range_modifier_ident_exit,"range_modifier_ident")
#line 1696 "cplus.met"
                }
#line 1696 "cplus.met"
                _ptTree0=ReplaceTree(retTree , 2 , _ptTree1);
#line 1696 "cplus.met"
            }
#line 1696 "cplus.met"
            _retValue =_ptTree0;
#line 1696 "cplus.met"
            goto range_modifier_ident_ret;
#line 1696 "cplus.met"
        }
#line 1696 "cplus.met"
    } else {
#line 1696 "cplus.met"
#line 1698 "cplus.met"
        if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( IDENT,"IDENT")){
#line 1698 "cplus.met"
#line 1699 "cplus.met"
            {
#line 1699 "cplus.met"
                PPTREE _ptTree0;
#line 1699 "cplus.met"
                {
#line 1699 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1699 "cplus.met"
                    _ptRes1= MakeTree(IDENT, 1);
#line 1699 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1699 "cplus.met"
                    if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 1699 "cplus.met"
                        TOKEN_EXIT(range_modifier_ident_exit,"IDENT")
#line 1699 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1699 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1699 "cplus.met"
                }
#line 1699 "cplus.met"
                _retValue =_ptTree0;
#line 1699 "cplus.met"
                goto range_modifier_ident_ret;
#line 1699 "cplus.met"
            }
#line 1699 "cplus.met"
        }
#line 1699 "cplus.met"
    }
#line 1699 "cplus.met"
#line 1700 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1700 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1700 "cplus.met"
return((PPTREE) 0);
#line 1700 "cplus.met"

#line 1700 "cplus.met"
range_modifier_ident_exit :
#line 1700 "cplus.met"

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

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

#line 1700 "cplus.met"
#line 701 "cplus.met"
PPTREE cplus::range_pragma ( int error_free)
#line 701 "cplus.met"
{
#line 701 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 701 "cplus.met"
    int _value,_nbPre = 0 ;
#line 701 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 701 "cplus.met"
    int _Debug = TRACE_RULE("range_pragma",TRACE_ENTER,(PPTREE)0);
#line 701 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 701 "cplus.met"
#line 702 "cplus.met"
    (tokenAhead == 8|| (LexPragma(),TRACE_LEX(1)));
#line 702 "cplus.met"
    if ( ! TERM_OR_META(PRAGMA_RANGE,"PRAGMA_RANGE") || !(CommTerm(),1)) 
#line 702 "cplus.met"
        TOKEN_EXIT(range_pragma_exit,"PRAGMA_RANGE")
#line 702 "cplus.met"
#line 703 "cplus.met"
    (tokenAhead == 9|| (LexPragmaSmall(),TRACE_LEX(1)));
#line 703 "cplus.met"
    if ( ! TERM_OR_META(SMALL_PRAGMA_CONTENT,"SMALL_PRAGMA_CONTENT") || !(CommTerm(),1)) 
#line 703 "cplus.met"
        TOKEN_EXIT(range_pragma_exit,"SMALL_PRAGMA_CONTENT")
#line 703 "cplus.met"
#line 704 "cplus.met"
     AnalyseRange(stringlex);
#line 704 "cplus.met"
#line 705 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 705 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 705 "cplus.met"
return((PPTREE) 0);
#line 705 "cplus.met"

#line 705 "cplus.met"
range_pragma_exit :
#line 705 "cplus.met"

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

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

#line 705 "cplus.met"
#line 2263 "cplus.met"
PPTREE cplus::relational_expression ( int error_free)
#line 2263 "cplus.met"
{
#line 2263 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2263 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2263 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2263 "cplus.met"
    int _Debug = TRACE_RULE("relational_expression",TRACE_ENTER,(PPTREE)0);
#line 2263 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2263 "cplus.met"
#line 2263 "cplus.met"
    PPTREE expTree = (PPTREE) 0;
#line 2263 "cplus.met"
#line 2265 "cplus.met"
    if ( (expTree=NQUICK_CALL(_Tak(shift_expression)(error_free), 104, cplus))== (PPTREE) -1 ) {
#line 2265 "cplus.met"
        PROG_EXIT(relational_expression_exit,"relational_expression")
#line 2265 "cplus.met"
    }
#line 2265 "cplus.met"
#line 2266 "cplus.met"
    while (((((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( INFEEGAL,"<=")) || 
#line 2266 "cplus.met"
            ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( SUPEEGAL,">="))) || 
#line 2266 "cplus.met"
           (((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( SUPE,">")))) || 
#line 2266 "cplus.met"
          ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( INFE,"<"))) { 
#line 2266 "cplus.met"
#line 2267 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2267 "cplus.met"
        switch( lexEl.Value) {
#line 2267 "cplus.met"
#line 2268 "cplus.met"
            case INFEEGAL : 
#line 2268 "cplus.met"
                tokenAhead = 0 ;
#line 2268 "cplus.met"
                CommTerm();
#line 2268 "cplus.met"
#line 2268 "cplus.met"
                {
#line 2268 "cplus.met"
                    PPTREE _ptTree0,_ptRes0;
#line 2268 "cplus.met"
                    _ptRes0= MakeTree(LEQU, 2);
#line 2268 "cplus.met"
                    ReplaceTree(_ptRes0, 1, expTree );
#line 2268 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(shift_expression)(error_free), 104, cplus))== (PPTREE) -1 ) {
#line 2268 "cplus.met"
                        PROG_EXIT(relational_expression_exit,"relational_expression")
#line 2268 "cplus.met"
                    }
#line 2268 "cplus.met"
                    ReplaceTree(_ptRes0, 2, _ptTree0);
#line 2268 "cplus.met"
                    expTree=_ptRes0;
#line 2268 "cplus.met"
                }
#line 2268 "cplus.met"
                break;
#line 2268 "cplus.met"
#line 2270 "cplus.met"
            case SUPEEGAL : 
#line 2270 "cplus.met"
                tokenAhead = 0 ;
#line 2270 "cplus.met"
                CommTerm();
#line 2270 "cplus.met"
#line 2270 "cplus.met"
                {
#line 2270 "cplus.met"
                    PPTREE _ptTree0,_ptRes0;
#line 2270 "cplus.met"
                    _ptRes0= MakeTree(GEQU, 2);
#line 2270 "cplus.met"
                    ReplaceTree(_ptRes0, 1, expTree );
#line 2270 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(shift_expression)(error_free), 104, cplus))== (PPTREE) -1 ) {
#line 2270 "cplus.met"
                        PROG_EXIT(relational_expression_exit,"relational_expression")
#line 2270 "cplus.met"
                    }
#line 2270 "cplus.met"
                    ReplaceTree(_ptRes0, 2, _ptTree0);
#line 2270 "cplus.met"
                    expTree=_ptRes0;
#line 2270 "cplus.met"
                }
#line 2270 "cplus.met"
                break;
#line 2270 "cplus.met"
#line 2272 "cplus.met"
            case SUPE : 
#line 2272 "cplus.met"
                tokenAhead = 0 ;
#line 2272 "cplus.met"
                CommTerm();
#line 2272 "cplus.met"
#line 2272 "cplus.met"
                {
#line 2272 "cplus.met"
                    PPTREE _ptTree0,_ptRes0;
#line 2272 "cplus.met"
                    _ptRes0= MakeTree(GT, 2);
#line 2272 "cplus.met"
                    ReplaceTree(_ptRes0, 1, expTree );
#line 2272 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(shift_expression)(error_free), 104, cplus))== (PPTREE) -1 ) {
#line 2272 "cplus.met"
                        PROG_EXIT(relational_expression_exit,"relational_expression")
#line 2272 "cplus.met"
                    }
#line 2272 "cplus.met"
                    ReplaceTree(_ptRes0, 2, _ptTree0);
#line 2272 "cplus.met"
                    expTree=_ptRes0;
#line 2272 "cplus.met"
                }
#line 2272 "cplus.met"
                break;
#line 2272 "cplus.met"
#line 2273 "cplus.met"
            case INFE : 
#line 2273 "cplus.met"
                tokenAhead = 0 ;
#line 2273 "cplus.met"
                CommTerm();
#line 2273 "cplus.met"
#line 2273 "cplus.met"
                {
#line 2273 "cplus.met"
                    PPTREE _ptTree0,_ptRes0;
#line 2273 "cplus.met"
                    _ptRes0= MakeTree(LT, 2);
#line 2273 "cplus.met"
                    ReplaceTree(_ptRes0, 1, expTree );
#line 2273 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(shift_expression)(error_free), 104, cplus))== (PPTREE) -1 ) {
#line 2273 "cplus.met"
                        PROG_EXIT(relational_expression_exit,"relational_expression")
#line 2273 "cplus.met"
                    }
#line 2273 "cplus.met"
                    ReplaceTree(_ptRes0, 2, _ptTree0);
#line 2273 "cplus.met"
                    expTree=_ptRes0;
#line 2273 "cplus.met"
                }
#line 2273 "cplus.met"
                break;
#line 2273 "cplus.met"
            default :
#line 2273 "cplus.met"
                CASE_EXIT(relational_expression_exit,"either <= or >= or > or <")
#line 2273 "cplus.met"
                break;
#line 2273 "cplus.met"
        }
#line 2273 "cplus.met"
    } 
#line 2273 "cplus.met"
#line 2275 "cplus.met"
    {
#line 2275 "cplus.met"
        _retValue = expTree ;
#line 2275 "cplus.met"
        goto relational_expression_ret;
#line 2275 "cplus.met"
        
#line 2275 "cplus.met"
    }
#line 2275 "cplus.met"
#line 2276 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2276 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2276 "cplus.met"
return((PPTREE) 0);
#line 2276 "cplus.met"

#line 2276 "cplus.met"
relational_expression_exit :
#line 2276 "cplus.met"

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

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

#line 2276 "cplus.met"
#line 1242 "cplus.met"
PPTREE cplus::sc_specifier ( int error_free)
#line 1242 "cplus.met"
{
#line 1242 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1242 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1242 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1242 "cplus.met"
    int _Debug = TRACE_RULE("sc_specifier",TRACE_ENTER,(PPTREE)0);
#line 1242 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1242 "cplus.met"
#line 1243 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1243 "cplus.met"
    switch( lexEl.Value) {
#line 1243 "cplus.met"
#line 1244 "cplus.met"
        case AUTO : 
#line 1244 "cplus.met"
#line 1244 "cplus.met"
            {
#line 1244 "cplus.met"
                PPTREE _ptTree0;
#line 1244 "cplus.met"
                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1244 "cplus.met"
                if (  !SEE_TOKEN( AUTO,"auto") || !(_ptTree0 = CommString(lexEl.string))) 
#line 1244 "cplus.met"
                    TOKEN_EXIT(sc_specifier_exit,"auto")
#line 1244 "cplus.met"
                _retValue =_ptTree0;
#line 1244 "cplus.met"
                goto sc_specifier_ret;
#line 1244 "cplus.met"
            }
#line 1244 "cplus.met"
            break;
#line 1244 "cplus.met"
#line 1245 "cplus.met"
        case STATIC : 
#line 1245 "cplus.met"
#line 1245 "cplus.met"
            {
#line 1245 "cplus.met"
                PPTREE _ptTree0;
#line 1245 "cplus.met"
                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1245 "cplus.met"
                if (  !SEE_TOKEN( STATIC,"static") || !(_ptTree0 = CommString(lexEl.string))) 
#line 1245 "cplus.met"
                    TOKEN_EXIT(sc_specifier_exit,"static")
#line 1245 "cplus.met"
                _retValue =_ptTree0;
#line 1245 "cplus.met"
                goto sc_specifier_ret;
#line 1245 "cplus.met"
            }
#line 1245 "cplus.met"
            break;
#line 1245 "cplus.met"
#line 1246 "cplus.met"
        case EXTERN : 
#line 1246 "cplus.met"
#line 1246 "cplus.met"
            {
#line 1246 "cplus.met"
                PPTREE _ptTree0;
#line 1246 "cplus.met"
                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1246 "cplus.met"
                if (  !SEE_TOKEN( EXTERN,"extern") || !(_ptTree0 = CommString(lexEl.string))) 
#line 1246 "cplus.met"
                    TOKEN_EXIT(sc_specifier_exit,"extern")
#line 1246 "cplus.met"
                _retValue =_ptTree0;
#line 1246 "cplus.met"
                goto sc_specifier_ret;
#line 1246 "cplus.met"
            }
#line 1246 "cplus.met"
            break;
#line 1246 "cplus.met"
#line 1247 "cplus.met"
        case REGISTER : 
#line 1247 "cplus.met"
#line 1247 "cplus.met"
            {
#line 1247 "cplus.met"
                PPTREE _ptTree0;
#line 1247 "cplus.met"
                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1247 "cplus.met"
                if (  !SEE_TOKEN( REGISTER,"register") || !(_ptTree0 = CommString(lexEl.string))) 
#line 1247 "cplus.met"
                    TOKEN_EXIT(sc_specifier_exit,"register")
#line 1247 "cplus.met"
                _retValue =_ptTree0;
#line 1247 "cplus.met"
                goto sc_specifier_ret;
#line 1247 "cplus.met"
            }
#line 1247 "cplus.met"
            break;
#line 1247 "cplus.met"
#line 1247 "cplus.met"
        default : 
#line 1247 "cplus.met"
#line 1247 "cplus.met"
            break;
#line 1247 "cplus.met"
    }
#line 1247 "cplus.met"
#line 1250 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1250 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1250 "cplus.met"
return((PPTREE) 0);
#line 1250 "cplus.met"

#line 1250 "cplus.met"
sc_specifier_exit :
#line 1250 "cplus.met"

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

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

#line 1250 "cplus.met"
#line 2278 "cplus.met"
PPTREE cplus::shift_expression ( int error_free)
#line 2278 "cplus.met"
{
#line 2278 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2278 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2278 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2278 "cplus.met"
    int _Debug = TRACE_RULE("shift_expression",TRACE_ENTER,(PPTREE)0);
#line 2278 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2278 "cplus.met"
#line 2278 "cplus.met"
    PPTREE expTree = (PPTREE) 0;
#line 2278 "cplus.met"
#line 2280 "cplus.met"
    if ( (expTree=NQUICK_CALL(_Tak(additive_expression)(error_free), 2, cplus))== (PPTREE) -1 ) {
#line 2280 "cplus.met"
        PROG_EXIT(shift_expression_exit,"shift_expression")
#line 2280 "cplus.met"
    }
#line 2280 "cplus.met"
#line 2281 "cplus.met"
    while (((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( INFEINFE,"<<")) || 
#line 2281 "cplus.met"
          ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( SUPESUPE,">>"))) { 
#line 2281 "cplus.met"
#line 2282 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2282 "cplus.met"
        switch( lexEl.Value) {
#line 2282 "cplus.met"
#line 2283 "cplus.met"
            case INFEINFE : 
#line 2283 "cplus.met"
                tokenAhead = 0 ;
#line 2283 "cplus.met"
                CommTerm();
#line 2283 "cplus.met"
#line 2283 "cplus.met"
                {
#line 2283 "cplus.met"
                    PPTREE _ptTree0,_ptRes0;
#line 2283 "cplus.met"
                    _ptRes0= MakeTree(LSHI, 2);
#line 2283 "cplus.met"
                    ReplaceTree(_ptRes0, 1, expTree );
#line 2283 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(additive_expression)(error_free), 2, cplus))== (PPTREE) -1 ) {
#line 2283 "cplus.met"
                        PROG_EXIT(shift_expression_exit,"shift_expression")
#line 2283 "cplus.met"
                    }
#line 2283 "cplus.met"
                    ReplaceTree(_ptRes0, 2, _ptTree0);
#line 2283 "cplus.met"
                    expTree=_ptRes0;
#line 2283 "cplus.met"
                }
#line 2283 "cplus.met"
                break;
#line 2283 "cplus.met"
#line 2285 "cplus.met"
            case SUPESUPE : 
#line 2285 "cplus.met"
                tokenAhead = 0 ;
#line 2285 "cplus.met"
                CommTerm();
#line 2285 "cplus.met"
#line 2285 "cplus.met"
                {
#line 2285 "cplus.met"
                    PPTREE _ptTree0,_ptRes0;
#line 2285 "cplus.met"
                    _ptRes0= MakeTree(RSHI, 2);
#line 2285 "cplus.met"
                    ReplaceTree(_ptRes0, 1, expTree );
#line 2285 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(additive_expression)(error_free), 2, cplus))== (PPTREE) -1 ) {
#line 2285 "cplus.met"
                        PROG_EXIT(shift_expression_exit,"shift_expression")
#line 2285 "cplus.met"
                    }
#line 2285 "cplus.met"
                    ReplaceTree(_ptRes0, 2, _ptTree0);
#line 2285 "cplus.met"
                    expTree=_ptRes0;
#line 2285 "cplus.met"
                }
#line 2285 "cplus.met"
                break;
#line 2285 "cplus.met"
            default :
#line 2285 "cplus.met"
                CASE_EXIT(shift_expression_exit,"either << or >>")
#line 2285 "cplus.met"
                break;
#line 2285 "cplus.met"
        }
#line 2285 "cplus.met"
    } 
#line 2285 "cplus.met"
#line 2288 "cplus.met"
    {
#line 2288 "cplus.met"
        _retValue = expTree ;
#line 2288 "cplus.met"
        goto shift_expression_ret;
#line 2288 "cplus.met"
        
#line 2288 "cplus.met"
    }
#line 2288 "cplus.met"
#line 2289 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2289 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2289 "cplus.met"
return((PPTREE) 0);
#line 2289 "cplus.met"

#line 2289 "cplus.met"
shift_expression_exit :
#line 2289 "cplus.met"

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

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

#line 2289 "cplus.met"
#line 1731 "cplus.met"
PPTREE cplus::simple_type ( int error_free)
#line 1731 "cplus.met"
{
#line 1731 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1731 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1731 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1731 "cplus.met"
    int _Debug = TRACE_RULE("simple_type",TRACE_ENTER,(PPTREE)0);
#line 1731 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1731 "cplus.met"
#line 1731 "cplus.met"
    PPTREE valTree = (PPTREE) 0;
#line 1731 "cplus.met"
#line 1733 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1733 "cplus.met"
    switch( lexEl.Value) {
#line 1733 "cplus.met"
#line 1734 "cplus.met"
        case DOUBLE : 
#line 1734 "cplus.met"
            tokenAhead = 0 ;
#line 1734 "cplus.met"
            CommTerm();
#line 1734 "cplus.met"
#line 1734 "cplus.met"
            {
#line 1734 "cplus.met"
                PPTREE _ptTree0;
#line 1734 "cplus.met"
                {
#line 1734 "cplus.met"
                    PPTREE _ptRes1;
#line 1734 "cplus.met"
                    _ptRes1= MakeTree(TDOUBLE, 0);
#line 1734 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1734 "cplus.met"
                }
#line 1734 "cplus.met"
                _retValue =_ptTree0;
#line 1734 "cplus.met"
                goto simple_type_ret;
#line 1734 "cplus.met"
            }
#line 1734 "cplus.met"
            break;
#line 1734 "cplus.met"
#line 1735 "cplus.met"
        case INT : 
#line 1735 "cplus.met"
            tokenAhead = 0 ;
#line 1735 "cplus.met"
            CommTerm();
#line 1735 "cplus.met"
#line 1735 "cplus.met"
            {
#line 1735 "cplus.met"
                PPTREE _ptTree0;
#line 1735 "cplus.met"
                {
#line 1735 "cplus.met"
                    PPTREE _ptRes1;
#line 1735 "cplus.met"
                    _ptRes1= MakeTree(TINT, 0);
#line 1735 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1735 "cplus.met"
                }
#line 1735 "cplus.met"
                _retValue =_ptTree0;
#line 1735 "cplus.met"
                goto simple_type_ret;
#line 1735 "cplus.met"
            }
#line 1735 "cplus.met"
            break;
#line 1735 "cplus.met"
#line 1736 "cplus.met"
        case CHAR : 
#line 1736 "cplus.met"
            tokenAhead = 0 ;
#line 1736 "cplus.met"
            CommTerm();
#line 1736 "cplus.met"
#line 1736 "cplus.met"
            {
#line 1736 "cplus.met"
                PPTREE _ptTree0;
#line 1736 "cplus.met"
                {
#line 1736 "cplus.met"
                    PPTREE _ptRes1;
#line 1736 "cplus.met"
                    _ptRes1= MakeTree(TCHAR, 0);
#line 1736 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1736 "cplus.met"
                }
#line 1736 "cplus.met"
                _retValue =_ptTree0;
#line 1736 "cplus.met"
                goto simple_type_ret;
#line 1736 "cplus.met"
            }
#line 1736 "cplus.met"
            break;
#line 1736 "cplus.met"
#line 1737 "cplus.met"
        case FLOAT : 
#line 1737 "cplus.met"
            tokenAhead = 0 ;
#line 1737 "cplus.met"
            CommTerm();
#line 1737 "cplus.met"
#line 1737 "cplus.met"
            {
#line 1737 "cplus.met"
                PPTREE _ptTree0;
#line 1737 "cplus.met"
                {
#line 1737 "cplus.met"
                    PPTREE _ptRes1;
#line 1737 "cplus.met"
                    _ptRes1= MakeTree(TFLOAT, 0);
#line 1737 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1737 "cplus.met"
                }
#line 1737 "cplus.met"
                _retValue =_ptTree0;
#line 1737 "cplus.met"
                goto simple_type_ret;
#line 1737 "cplus.met"
            }
#line 1737 "cplus.met"
            break;
#line 1737 "cplus.met"
#line 1738 "cplus.met"
        case VOID : 
#line 1738 "cplus.met"
            tokenAhead = 0 ;
#line 1738 "cplus.met"
            CommTerm();
#line 1738 "cplus.met"
#line 1738 "cplus.met"
            {
#line 1738 "cplus.met"
                PPTREE _ptTree0;
#line 1738 "cplus.met"
                {
#line 1738 "cplus.met"
                    PPTREE _ptRes1;
#line 1738 "cplus.met"
                    _ptRes1= MakeTree(VOID, 0);
#line 1738 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1738 "cplus.met"
                }
#line 1738 "cplus.met"
                _retValue =_ptTree0;
#line 1738 "cplus.met"
                goto simple_type_ret;
#line 1738 "cplus.met"
            }
#line 1738 "cplus.met"
            break;
#line 1738 "cplus.met"
#line 1739 "cplus.met"
        case DPOIDPOI : 
#line 1739 "cplus.met"
#line 1739 "cplus.met"
            {
#line 1739 "cplus.met"
                PPTREE _ptTree0;
#line 1739 "cplus.met"
                {
#line 1739 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1739 "cplus.met"
                    _ptRes1= MakeTree(TIDENT, 1);
#line 1739 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(complete_class_name)(error_free), 21, cplus))== (PPTREE) -1 ) {
#line 1739 "cplus.met"
                        PROG_EXIT(simple_type_exit,"simple_type")
#line 1739 "cplus.met"
                    }
#line 1739 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1739 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1739 "cplus.met"
                }
#line 1739 "cplus.met"
                _retValue =_ptTree0;
#line 1739 "cplus.met"
                goto simple_type_ret;
#line 1739 "cplus.met"
            }
#line 1739 "cplus.met"
            break;
#line 1739 "cplus.met"
#line 1740 "cplus.met"
        case META : 
#line 1740 "cplus.met"
        case IDENT : 
#line 1740 "cplus.met"
#line 1740 "cplus.met"
            {
#line 1740 "cplus.met"
                PPTREE _ptTree0;
#line 1740 "cplus.met"
                {
#line 1740 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1740 "cplus.met"
                    _ptRes1= MakeTree(TIDENT, 1);
#line 1740 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(complete_class_name)(error_free), 21, cplus))== (PPTREE) -1 ) {
#line 1740 "cplus.met"
                        PROG_EXIT(simple_type_exit,"simple_type")
#line 1740 "cplus.met"
                    }
#line 1740 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1740 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1740 "cplus.met"
                }
#line 1740 "cplus.met"
                _retValue =_ptTree0;
#line 1740 "cplus.met"
                goto simple_type_ret;
#line 1740 "cplus.met"
            }
#line 1740 "cplus.met"
            break;
#line 1740 "cplus.met"
#line 1741 "cplus.met"
        case LONG : 
#line 1741 "cplus.met"
            tokenAhead = 0 ;
#line 1741 "cplus.met"
            CommTerm();
#line 1741 "cplus.met"
#line 1742 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1742 "cplus.met"
            switch( lexEl.Value) {
#line 1742 "cplus.met"
#line 1743 "cplus.met"
                case FLOAT : 
#line 1743 "cplus.met"
                    tokenAhead = 0 ;
#line 1743 "cplus.met"
                    CommTerm();
#line 1743 "cplus.met"
#line 1743 "cplus.met"
                    {
#line 1743 "cplus.met"
                        PPTREE _ptTree0;
#line 1743 "cplus.met"
                        {
#line 1743 "cplus.met"
                            PPTREE _ptTree1,_ptRes1;
#line 1743 "cplus.met"
                            _ptRes1= MakeTree(TLONG, 1);
#line 1743 "cplus.met"
                            {
#line 1743 "cplus.met"
                                PPTREE _ptRes2;
#line 1743 "cplus.met"
                                _ptRes2= MakeTree(TFLOAT, 0);
#line 1743 "cplus.met"
                                _ptTree1=_ptRes2;
#line 1743 "cplus.met"
                            }
#line 1743 "cplus.met"
                            ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1743 "cplus.met"
                            _ptTree0=_ptRes1;
#line 1743 "cplus.met"
                        }
#line 1743 "cplus.met"
                        _retValue =_ptTree0;
#line 1743 "cplus.met"
                        goto simple_type_ret;
#line 1743 "cplus.met"
                    }
#line 1743 "cplus.met"
                    break;
#line 1743 "cplus.met"
#line 1744 "cplus.met"
                case DOUBLE : 
#line 1744 "cplus.met"
                    tokenAhead = 0 ;
#line 1744 "cplus.met"
                    CommTerm();
#line 1744 "cplus.met"
#line 1744 "cplus.met"
                    {
#line 1744 "cplus.met"
                        PPTREE _ptTree0;
#line 1744 "cplus.met"
                        {
#line 1744 "cplus.met"
                            PPTREE _ptTree1,_ptRes1;
#line 1744 "cplus.met"
                            _ptRes1= MakeTree(TLONG, 1);
#line 1744 "cplus.met"
                            {
#line 1744 "cplus.met"
                                PPTREE _ptRes2;
#line 1744 "cplus.met"
                                _ptRes2= MakeTree(TDOUBLE, 0);
#line 1744 "cplus.met"
                                _ptTree1=_ptRes2;
#line 1744 "cplus.met"
                            }
#line 1744 "cplus.met"
                            ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1744 "cplus.met"
                            _ptTree0=_ptRes1;
#line 1744 "cplus.met"
                        }
#line 1744 "cplus.met"
                        _retValue =_ptTree0;
#line 1744 "cplus.met"
                        goto simple_type_ret;
#line 1744 "cplus.met"
                    }
#line 1744 "cplus.met"
                    break;
#line 1744 "cplus.met"
#line 1745 "cplus.met"
                case INT : 
#line 1745 "cplus.met"
                    tokenAhead = 0 ;
#line 1745 "cplus.met"
                    CommTerm();
#line 1745 "cplus.met"
#line 1745 "cplus.met"
                    {
#line 1745 "cplus.met"
                        PPTREE _ptTree0;
#line 1745 "cplus.met"
                        {
#line 1745 "cplus.met"
                            PPTREE _ptTree1,_ptRes1;
#line 1745 "cplus.met"
                            _ptRes1= MakeTree(TLONG, 1);
#line 1745 "cplus.met"
                            {
#line 1745 "cplus.met"
                                PPTREE _ptRes2;
#line 1745 "cplus.met"
                                _ptRes2= MakeTree(TINT, 0);
#line 1745 "cplus.met"
                                _ptTree1=_ptRes2;
#line 1745 "cplus.met"
                            }
#line 1745 "cplus.met"
                            ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1745 "cplus.met"
                            _ptTree0=_ptRes1;
#line 1745 "cplus.met"
                        }
#line 1745 "cplus.met"
                        _retValue =_ptTree0;
#line 1745 "cplus.met"
                        goto simple_type_ret;
#line 1745 "cplus.met"
                    }
#line 1745 "cplus.met"
                    break;
#line 1745 "cplus.met"
#line 1746 "cplus.met"
                default : 
#line 1746 "cplus.met"
#line 1746 "cplus.met"
                    {
#line 1746 "cplus.met"
                        PPTREE _ptTree0;
#line 1746 "cplus.met"
                        {
#line 1746 "cplus.met"
                            PPTREE _ptRes1;
#line 1746 "cplus.met"
                            _ptRes1= MakeTree(TLONG, 1);
#line 1746 "cplus.met"
                            _ptTree0=_ptRes1;
#line 1746 "cplus.met"
                        }
#line 1746 "cplus.met"
                        _retValue =_ptTree0;
#line 1746 "cplus.met"
                        goto simple_type_ret;
#line 1746 "cplus.met"
                    }
#line 1746 "cplus.met"
                    break;
#line 1746 "cplus.met"
            }
#line 1746 "cplus.met"
            break;
#line 1746 "cplus.met"
#line 1748 "cplus.met"
        case SIGNED : 
#line 1748 "cplus.met"
            tokenAhead = 0 ;
#line 1748 "cplus.met"
            CommTerm();
#line 1748 "cplus.met"
#line 1749 "cplus.met"
            if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(long_short_int_char), 71, cplus)){
#line 1749 "cplus.met"
#line 1750 "cplus.met"
                {
#line 1750 "cplus.met"
                    PPTREE _ptTree0;
#line 1750 "cplus.met"
                    {
#line 1750 "cplus.met"
                        PPTREE _ptRes1;
#line 1750 "cplus.met"
                        _ptRes1= MakeTree(TSIGNED, 1);
#line 1750 "cplus.met"
                        ReplaceTree(_ptRes1, 1, valTree );
#line 1750 "cplus.met"
                        _ptTree0=_ptRes1;
#line 1750 "cplus.met"
                    }
#line 1750 "cplus.met"
                    _retValue =_ptTree0;
#line 1750 "cplus.met"
                    goto simple_type_ret;
#line 1750 "cplus.met"
                }
#line 1750 "cplus.met"
            } else {
#line 1750 "cplus.met"
#line 1752 "cplus.met"
                {
#line 1752 "cplus.met"
                    PPTREE _ptTree0;
#line 1752 "cplus.met"
                    {
#line 1752 "cplus.met"
                        PPTREE _ptRes1;
#line 1752 "cplus.met"
                        _ptRes1= MakeTree(TSIGNED, 1);
#line 1752 "cplus.met"
                        _ptTree0=_ptRes1;
#line 1752 "cplus.met"
                    }
#line 1752 "cplus.met"
                    _retValue =_ptTree0;
#line 1752 "cplus.met"
                    goto simple_type_ret;
#line 1752 "cplus.met"
                }
#line 1752 "cplus.met"
            }
#line 1752 "cplus.met"
            break;
#line 1752 "cplus.met"
#line 1753 "cplus.met"
        case UNSIGNED : 
#line 1753 "cplus.met"
            tokenAhead = 0 ;
#line 1753 "cplus.met"
            CommTerm();
#line 1753 "cplus.met"
#line 1754 "cplus.met"
            if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(long_short_int_char), 71, cplus)){
#line 1754 "cplus.met"
#line 1755 "cplus.met"
                {
#line 1755 "cplus.met"
                    PPTREE _ptTree0;
#line 1755 "cplus.met"
                    {
#line 1755 "cplus.met"
                        PPTREE _ptRes1;
#line 1755 "cplus.met"
                        _ptRes1= MakeTree(TUNSIGNED, 1);
#line 1755 "cplus.met"
                        ReplaceTree(_ptRes1, 1, valTree );
#line 1755 "cplus.met"
                        _ptTree0=_ptRes1;
#line 1755 "cplus.met"
                    }
#line 1755 "cplus.met"
                    _retValue =_ptTree0;
#line 1755 "cplus.met"
                    goto simple_type_ret;
#line 1755 "cplus.met"
                }
#line 1755 "cplus.met"
            } else {
#line 1755 "cplus.met"
#line 1757 "cplus.met"
                {
#line 1757 "cplus.met"
                    PPTREE _ptTree0;
#line 1757 "cplus.met"
                    {
#line 1757 "cplus.met"
                        PPTREE _ptRes1;
#line 1757 "cplus.met"
                        _ptRes1= MakeTree(TUNSIGNED, 1);
#line 1757 "cplus.met"
                        _ptTree0=_ptRes1;
#line 1757 "cplus.met"
                    }
#line 1757 "cplus.met"
                    _retValue =_ptTree0;
#line 1757 "cplus.met"
                    goto simple_type_ret;
#line 1757 "cplus.met"
                }
#line 1757 "cplus.met"
            }
#line 1757 "cplus.met"
            break;
#line 1757 "cplus.met"
#line 1758 "cplus.met"
        default : 
#line 1758 "cplus.met"
#line 1758 "cplus.met"
            {
#line 1758 "cplus.met"
                PPTREE _ptTree0;
#line 1758 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(long_short_int_char)(error_free), 71, cplus))== (PPTREE) -1 ) {
#line 1758 "cplus.met"
                    PROG_EXIT(simple_type_exit,"simple_type")
#line 1758 "cplus.met"
                }
#line 1758 "cplus.met"
                _retValue =_ptTree0;
#line 1758 "cplus.met"
                goto simple_type_ret;
#line 1758 "cplus.met"
            }
#line 1758 "cplus.met"
            break;
#line 1758 "cplus.met"
    }
#line 1758 "cplus.met"
#line 1760 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1760 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1760 "cplus.met"
return((PPTREE) 0);
#line 1760 "cplus.met"

#line 1760 "cplus.met"
simple_type_exit :
#line 1760 "cplus.met"

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

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

#line 1760 "cplus.met"
#line 2476 "cplus.met"
PPTREE cplus::simple_type_name ( int error_free)
#line 2476 "cplus.met"
{
#line 2476 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2476 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2476 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2476 "cplus.met"
    int _Debug = TRACE_RULE("simple_type_name",TRACE_ENTER,(PPTREE)0);
#line 2476 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2476 "cplus.met"
#line 2477 "cplus.met"
    if (! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( IDENT,"IDENT"))){
#line 2477 "cplus.met"
#line 2478 "cplus.met"
        {
#line 2478 "cplus.met"
            PPTREE _ptTree0;
#line 2478 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(simple_type)(error_free), 105, cplus))== (PPTREE) -1 ) {
#line 2478 "cplus.met"
                PROG_EXIT(simple_type_name_exit,"simple_type_name")
#line 2478 "cplus.met"
            }
#line 2478 "cplus.met"
            _retValue =_ptTree0;
#line 2478 "cplus.met"
            goto simple_type_name_ret;
#line 2478 "cplus.met"
        }
#line 2478 "cplus.met"
    } else {
#line 2478 "cplus.met"
#line 2480 "cplus.met"
        LEX_EXIT ("",0);
#line 2480 "cplus.met"
        goto simple_type_name_exit;
#line 2480 "cplus.met"
    }
#line 2480 "cplus.met"
#line 2481 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2481 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2481 "cplus.met"
return((PPTREE) 0);
#line 2481 "cplus.met"

#line 2481 "cplus.met"
simple_type_name_exit :
#line 2481 "cplus.met"

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

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

#line 2481 "cplus.met"
#line 2345 "cplus.met"
PPTREE cplus::sizeof_type ( int error_free)
#line 2345 "cplus.met"
{
#line 2345 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2345 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2345 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2345 "cplus.met"
    int _Debug = TRACE_RULE("sizeof_type",TRACE_ENTER,(PPTREE)0);
#line 2345 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2345 "cplus.met"
#line 2345 "cplus.met"
    PPTREE expTree = (PPTREE) 0;
#line 2345 "cplus.met"
#line 2347 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2347 "cplus.met"
    if (  !SEE_TOKEN( POUV,"(") || !(CommTerm(),1)) 
#line 2347 "cplus.met"
        TOKEN_EXIT(sizeof_type_exit,"(")
#line 2347 "cplus.met"
#line 2348 "cplus.met"
    if ( (expTree=NQUICK_CALL(_Tak(type_name)(error_free), 118, cplus))== (PPTREE) -1 ) {
#line 2348 "cplus.met"
        PROG_EXIT(sizeof_type_exit,"sizeof_type")
#line 2348 "cplus.met"
    }
#line 2348 "cplus.met"
#line 2349 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2349 "cplus.met"
    if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 2349 "cplus.met"
        TOKEN_EXIT(sizeof_type_exit,")")
#line 2349 "cplus.met"
#line 2350 "cplus.met"
    {
#line 2350 "cplus.met"
        _retValue = expTree ;
#line 2350 "cplus.met"
        goto sizeof_type_ret;
#line 2350 "cplus.met"
        
#line 2350 "cplus.met"
    }
#line 2350 "cplus.met"
#line 2351 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2351 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2351 "cplus.met"
return((PPTREE) 0);
#line 2351 "cplus.met"

#line 2351 "cplus.met"
sizeof_type_exit :
#line 2351 "cplus.met"

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

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

#line 2351 "cplus.met"
#line 847 "cplus.met"
PPTREE cplus::stat_all ( int error_free)
#line 847 "cplus.met"
{
#line 847 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 847 "cplus.met"
    int _value,_nbPre = 0 ;
#line 847 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 847 "cplus.met"
    int _Debug = TRACE_RULE("stat_all",TRACE_ENTER,(PPTREE)0);
#line 847 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 847 "cplus.met"
#line 847 "cplus.met"
    PPTREE stat = (PPTREE) 0;
#line 847 "cplus.met"
#line 849 "cplus.met"
    if (((((NPUSH_CALL_AFF_VERIF(stat = ,_Tak(statement), 112, cplus)) || 
#line 849 "cplus.met"
          (NPUSH_CALL_AFF_VERIF(stat = ,_Tak(data_declaration), 30, cplus))) || 
#line 849 "cplus.met"
         (NPUSH_CALL_AFF_VERIF(stat = ,_Tak(stat_dir), 109, cplus))) || 
#line 849 "cplus.met"
        (NPUSH_CALL_AFF_VERIF(stat = ,_Tak(exception), 44, cplus))) || 
#line 849 "cplus.met"
       (NPUSH_CALL_AFF_VERIF(stat = ,_Tak(ext_data_declaration), 54, cplus))){
#line 849 "cplus.met"
#line 854 "cplus.met"
        {
#line 854 "cplus.met"
            _retValue = stat ;
#line 854 "cplus.met"
            goto stat_all_ret;
#line 854 "cplus.met"
            
#line 854 "cplus.met"
        }
#line 854 "cplus.met"
    } else {
#line 854 "cplus.met"
#line 856 "cplus.met"
        {
#line 856 "cplus.met"
            PPTREE _ptTree0;
#line 856 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(statement)(error_free), 112, cplus))== (PPTREE) -1 ) {
#line 856 "cplus.met"
                PROG_EXIT(stat_all_exit,"stat_all")
#line 856 "cplus.met"
            }
#line 856 "cplus.met"
            _retValue =_ptTree0;
#line 856 "cplus.met"
            goto stat_all_ret;
#line 856 "cplus.met"
        }
#line 856 "cplus.met"
    }
#line 856 "cplus.met"
#line 857 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 857 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 857 "cplus.met"
return((PPTREE) 0);
#line 857 "cplus.met"

#line 857 "cplus.met"
stat_all_exit :
#line 857 "cplus.met"

#line 857 "cplus.met"
    {
#line 857 "cplus.met"
        MulFreeTree(1,stat);
#line 857 "cplus.met"
    }
#line 857 "cplus.met"
    _Debug = TRACE_RULE("stat_all",TRACE_EXIT,(PPTREE)0);
#line 857 "cplus.met"
    _funcLevel--;
#line 857 "cplus.met"
    return((PPTREE) -1) ;
#line 857 "cplus.met"

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

#line 857 "cplus.met"
#line 979 "cplus.met"
PPTREE cplus::stat_dir ( int error_free)
#line 979 "cplus.met"
{
#line 979 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 979 "cplus.met"
    int _value,_nbPre = 0 ;
#line 979 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 979 "cplus.met"
    int _Debug = TRACE_RULE("stat_dir",TRACE_ENTER,(PPTREE)0);
#line 979 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 979 "cplus.met"
#line 979 "cplus.met"
    PPTREE retTree = (PPTREE) 0;
#line 979 "cplus.met"
#line 981 "cplus.met"
    if (NPUSH_CALL_AFF_VERIF(retTree = ,_Tak(directive), 40, cplus)){
#line 981 "cplus.met"
#line 982 "cplus.met"
        {
#line 982 "cplus.met"
            _retValue = retTree ;
#line 982 "cplus.met"
            goto stat_dir_ret;
#line 982 "cplus.met"
            
#line 982 "cplus.met"
        }
#line 982 "cplus.met"
    }
#line 982 "cplus.met"
#line 983 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 983 "cplus.met"
    switch( lexEl.Value) {
#line 983 "cplus.met"
#line 984 "cplus.met"
        case META : 
#line 984 "cplus.met"
        case IF_DIR : 
#line 984 "cplus.met"
            tokenAhead = 0 ;
#line 984 "cplus.met"
            CommTerm();
#line 984 "cplus.met"
#line 984 "cplus.met"
            {
#line 984 "cplus.met"
                PPTREE _ptTree0;
#line 984 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(stat_if_dir)(error_free), 110, cplus))== (PPTREE) -1 ) {
#line 984 "cplus.met"
                    PROG_EXIT(stat_dir_exit,"stat_dir")
#line 984 "cplus.met"
                }
#line 984 "cplus.met"
                _retValue =_ptTree0;
#line 984 "cplus.met"
                goto stat_dir_ret;
#line 984 "cplus.met"
            }
#line 984 "cplus.met"
            break;
#line 984 "cplus.met"
#line 985 "cplus.met"
        case IFDEF_DIR : 
#line 985 "cplus.met"
#line 985 "cplus.met"
            {
#line 985 "cplus.met"
                PPTREE _ptTree0;
#line 985 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(stat_ifdef_dir)(error_free), 111, cplus))== (PPTREE) -1 ) {
#line 985 "cplus.met"
                    PROG_EXIT(stat_dir_exit,"stat_dir")
#line 985 "cplus.met"
                }
#line 985 "cplus.met"
                _retValue =_ptTree0;
#line 985 "cplus.met"
                goto stat_dir_ret;
#line 985 "cplus.met"
            }
#line 985 "cplus.met"
            break;
#line 985 "cplus.met"
#line 986 "cplus.met"
        case IFNDEF_DIR : 
#line 986 "cplus.met"
#line 986 "cplus.met"
            {
#line 986 "cplus.met"
                PPTREE _ptTree0;
#line 986 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(stat_ifdef_dir)(error_free), 111, cplus))== (PPTREE) -1 ) {
#line 986 "cplus.met"
                    PROG_EXIT(stat_dir_exit,"stat_dir")
#line 986 "cplus.met"
                }
#line 986 "cplus.met"
                _retValue =_ptTree0;
#line 986 "cplus.met"
                goto stat_dir_ret;
#line 986 "cplus.met"
            }
#line 986 "cplus.met"
            break;
#line 986 "cplus.met"
        default :
#line 986 "cplus.met"
            CASE_EXIT(stat_dir_exit,"either IF_DIR or IFDEF_DIR or IFNDEF_DIR")
#line 986 "cplus.met"
            break;
#line 986 "cplus.met"
    }
#line 986 "cplus.met"
#line 988 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 988 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 988 "cplus.met"
return((PPTREE) 0);
#line 988 "cplus.met"

#line 988 "cplus.met"
stat_dir_exit :
#line 988 "cplus.met"

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

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

#line 988 "cplus.met"
#line 923 "cplus.met"
PPTREE cplus::stat_if_dir ( int error_free)
#line 923 "cplus.met"
{
#line 923 "cplus.met"
    int  _oldkeepCarriage = keepCarriage;
#line 923 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 923 "cplus.met"
    int _value,_nbPre = 0 ;
#line 923 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 923 "cplus.met"
    int _Debug = TRACE_RULE("stat_if_dir",TRACE_ENTER,(PPTREE)0);
#line 923 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 923 "cplus.met"
#line 923 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0,_addlist2 = (PPTREE) 0;
#line 923 "cplus.met"
#line 923 "cplus.met"
    PPTREE retTree = (PPTREE) 0,list = (PPTREE) 0,list2 = (PPTREE) 0;
#line 923 "cplus.met"
#line 925 "cplus.met"
    {
#line 925 "cplus.met"
        keepCarriage = 1 ;
#line 925 "cplus.met"
#line 926 "cplus.met"
#line 927 "cplus.met"
        {
#line 927 "cplus.met"
            PPTREE _ptTree0,_ptRes0;
#line 927 "cplus.met"
            _ptRes0= MakeTree(IF_DIR, 3);
#line 927 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 927 "cplus.met"
                PROG_EXIT(stat_if_dir_exit,"stat_if_dir")
#line 927 "cplus.met"
            }
#line 927 "cplus.met"
            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 927 "cplus.met"
            retTree=_ptRes0;
#line 927 "cplus.met"
        }
#line 927 "cplus.met"
#line 928 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 928 "cplus.met"
        if ( ! TERM_OR_META(CARRIAGE_RETURN,"CARRIAGE_RETURN") || !(CommTerm(),1)) 
#line 928 "cplus.met"
            TOKEN_EXIT(stat_if_dir_exit,"CARRIAGE_RETURN")
#line 928 "cplus.met"
        keepCarriage =  _oldkeepCarriage;
#line 928 "cplus.met"
    }
#line 928 "cplus.met"
#line 928 "cplus.met"
    _addlist1 = list ;
#line 928 "cplus.met"
#line 930 "cplus.met"
    while (((! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( ELSE_DIR,"ELSE_DIR"))) && 
#line 930 "cplus.met"
           (! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( ELIF_DIR,"ELIF_DIR")))) && 
#line 930 "cplus.met"
          (! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( ENDIF_DIR,"ENDIF_DIR")))) { 
#line 930 "cplus.met"
#line 931 "cplus.met"
#line 931 "cplus.met"
        {
#line 931 "cplus.met"
            PPTREE _ptTree0;
#line 931 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(stat_all)(error_free), 108, cplus))== (PPTREE) -1 ) {
#line 931 "cplus.met"
                PROG_EXIT(stat_if_dir_exit,"stat_if_dir")
#line 931 "cplus.met"
            }
#line 931 "cplus.met"
            _addlist1 =AddList(_addlist1 , _ptTree0);
#line 931 "cplus.met"
        }
#line 931 "cplus.met"
#line 931 "cplus.met"
        if (list){
#line 931 "cplus.met"
#line 931 "cplus.met"
            _addlist1 = SonTree (_addlist1 ,2 );
#line 931 "cplus.met"
        } else {
#line 931 "cplus.met"
#line 931 "cplus.met"
            list = _addlist1 ;
#line 931 "cplus.met"
        }
#line 931 "cplus.met"
    } 
#line 931 "cplus.met"
#line 932 "cplus.met"
    ReplaceTree(retTree ,2 ,list );
#line 932 "cplus.met"
#line 933 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 933 "cplus.met"
    switch( lexEl.Value) {
#line 933 "cplus.met"
#line 934 "cplus.met"
        case META : 
#line 934 "cplus.met"
        case ELSE_DIR : 
#line 934 "cplus.met"
            tokenAhead = 0 ;
#line 934 "cplus.met"
            CommTerm();
#line 934 "cplus.met"
#line 935 "cplus.met"
#line 935 "cplus.met"
            _addlist2 = list2 ;
#line 935 "cplus.met"
#line 936 "cplus.met"
            while (! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&TERM_OR_META(ENDIF_DIR,"ENDIF_DIR") && (tokenAhead = 0,CommTerm(),1))) { 
#line 936 "cplus.met"
#line 937 "cplus.met"
#line 937 "cplus.met"
                {
#line 937 "cplus.met"
                    PPTREE _ptTree0;
#line 937 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(stat_all)(error_free), 108, cplus))== (PPTREE) -1 ) {
#line 937 "cplus.met"
                        PROG_EXIT(stat_if_dir_exit,"stat_if_dir")
#line 937 "cplus.met"
                    }
#line 937 "cplus.met"
                    _addlist2 =AddList(_addlist2 , _ptTree0);
#line 937 "cplus.met"
                }
#line 937 "cplus.met"
#line 937 "cplus.met"
                if (list2){
#line 937 "cplus.met"
#line 937 "cplus.met"
                    _addlist2 = SonTree (_addlist2 ,2 );
#line 937 "cplus.met"
                } else {
#line 937 "cplus.met"
#line 937 "cplus.met"
                    list2 = _addlist2 ;
#line 937 "cplus.met"
                }
#line 937 "cplus.met"
            } 
#line 937 "cplus.met"
#line 938 "cplus.met"
            {
#line 938 "cplus.met"
                PPTREE _ptTree0;
#line 938 "cplus.met"
                _ptTree0=ReplaceTree(retTree ,3 ,list2 );
#line 938 "cplus.met"
                _retValue =_ptTree0;
#line 938 "cplus.met"
                goto stat_if_dir_ret;
#line 938 "cplus.met"
            }
#line 938 "cplus.met"
            break;
#line 938 "cplus.met"
#line 940 "cplus.met"
        case ELIF_DIR : 
#line 940 "cplus.met"
            tokenAhead = 0 ;
#line 940 "cplus.met"
            CommTerm();
#line 940 "cplus.met"
#line 940 "cplus.met"
            {
#line 940 "cplus.met"
                PPTREE _ptTree0;
#line 940 "cplus.met"
                {
#line 940 "cplus.met"
                    PPTREE _ptTree1;
#line 940 "cplus.met"
                    if ( (_ptTree1=NQUICK_CALL(_Tak(stat_if_dir)(error_free), 110, cplus))== (PPTREE) -1 ) {
#line 940 "cplus.met"
                        PROG_EXIT(stat_if_dir_exit,"stat_if_dir")
#line 940 "cplus.met"
                    }
#line 940 "cplus.met"
                    _ptTree0=ReplaceTree(retTree , 3 , _ptTree1);
#line 940 "cplus.met"
                }
#line 940 "cplus.met"
                _retValue =_ptTree0;
#line 940 "cplus.met"
                goto stat_if_dir_ret;
#line 940 "cplus.met"
            }
#line 940 "cplus.met"
            break;
#line 940 "cplus.met"
#line 941 "cplus.met"
        case ENDIF_DIR : 
#line 941 "cplus.met"
            tokenAhead = 0 ;
#line 941 "cplus.met"
            CommTerm();
#line 941 "cplus.met"
#line 941 "cplus.met"
            {
#line 941 "cplus.met"
                _retValue = retTree ;
#line 941 "cplus.met"
                goto stat_if_dir_ret;
#line 941 "cplus.met"
                
#line 941 "cplus.met"
            }
#line 941 "cplus.met"
            break;
#line 941 "cplus.met"
        default :
#line 941 "cplus.met"
            CASE_EXIT(stat_if_dir_exit,"either ELSE_DIR or ELIF_DIR or ENDIF_DIR")
#line 941 "cplus.met"
            break;
#line 941 "cplus.met"
    }
#line 941 "cplus.met"
#line 943 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 943 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 943 "cplus.met"
keepCarriage =  _oldkeepCarriage;
#line 943 "cplus.met"
return((PPTREE) 0);
#line 943 "cplus.met"

#line 943 "cplus.met"
stat_if_dir_exit :
#line 943 "cplus.met"

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

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

#line 943 "cplus.met"
#line 945 "cplus.met"
PPTREE cplus::stat_ifdef_dir ( int error_free)
#line 945 "cplus.met"
{
#line 945 "cplus.met"
    int  _oldkeepCarriage = keepCarriage;
#line 945 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 945 "cplus.met"
    int _value,_nbPre = 0 ;
#line 945 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 945 "cplus.met"
    int _Debug = TRACE_RULE("stat_ifdef_dir",TRACE_ENTER,(PPTREE)0);
#line 945 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 945 "cplus.met"
#line 945 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0,_addlist2 = (PPTREE) 0;
#line 945 "cplus.met"
#line 945 "cplus.met"
    PPTREE retTree = (PPTREE) 0,list = (PPTREE) 0,list2 = (PPTREE) 0,express = (PPTREE) 0;
#line 945 "cplus.met"
#line 947 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&TERM_OR_META(IFDEF_DIR,"IFDEF_DIR") && (tokenAhead = 0,CommTerm(),1)){
#line 947 "cplus.met"
#line 948 "cplus.met"
#line 949 "cplus.met"
        {
#line 949 "cplus.met"
            keepCarriage = 1 ;
#line 949 "cplus.met"
#line 950 "cplus.met"
#line 951 "cplus.met"
            {
#line 951 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 951 "cplus.met"
                _ptRes0= MakeTree(IFDEF_DIR, 3);
#line 951 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 951 "cplus.met"
                    PROG_EXIT(stat_ifdef_dir_exit,"stat_ifdef_dir")
#line 951 "cplus.met"
                }
#line 951 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 951 "cplus.met"
                retTree=_ptRes0;
#line 951 "cplus.met"
            }
#line 951 "cplus.met"
#line 952 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 952 "cplus.met"
            if ( ! TERM_OR_META(CARRIAGE_RETURN,"CARRIAGE_RETURN") || !(CommTerm(),1)) 
#line 952 "cplus.met"
                TOKEN_EXIT(stat_ifdef_dir_exit,"CARRIAGE_RETURN")
#line 952 "cplus.met"
            keepCarriage =  _oldkeepCarriage;
#line 952 "cplus.met"
        }
#line 952 "cplus.met"
#line 954 "cplus.met"
    } else {
#line 954 "cplus.met"
#line 956 "cplus.met"
#line 957 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 957 "cplus.met"
        if ( ! TERM_OR_META(IFNDEF_DIR,"IFNDEF_DIR") || !(CommTerm(),1)) 
#line 957 "cplus.met"
            TOKEN_EXIT(stat_ifdef_dir_exit,"IFNDEF_DIR")
#line 957 "cplus.met"
#line 958 "cplus.met"
        {
#line 958 "cplus.met"
            keepCarriage = 1 ;
#line 958 "cplus.met"
#line 959 "cplus.met"
#line 960 "cplus.met"
            if ( (express=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 960 "cplus.met"
                PROG_EXIT(stat_ifdef_dir_exit,"stat_ifdef_dir")
#line 960 "cplus.met"
            }
#line 960 "cplus.met"
#line 961 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 961 "cplus.met"
            if ( ! TERM_OR_META(CARRIAGE_RETURN,"CARRIAGE_RETURN") || !(CommTerm(),1)) 
#line 961 "cplus.met"
                TOKEN_EXIT(stat_ifdef_dir_exit,"CARRIAGE_RETURN")
#line 961 "cplus.met"
            keepCarriage =  _oldkeepCarriage;
#line 961 "cplus.met"
        }
#line 961 "cplus.met"
#line 963 "cplus.met"
        {
#line 963 "cplus.met"
            PPTREE _ptRes0;
#line 963 "cplus.met"
            _ptRes0= MakeTree(IFNDEF_DIR, 3);
#line 963 "cplus.met"
            ReplaceTree(_ptRes0, 1, express );
#line 963 "cplus.met"
            retTree=_ptRes0;
#line 963 "cplus.met"
        }
#line 963 "cplus.met"
    }
#line 963 "cplus.met"
#line 963 "cplus.met"
    _addlist1 = list ;
#line 963 "cplus.met"
#line 965 "cplus.met"
    while ((! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( ELSE_DIR,"ELSE_DIR"))) && 
#line 965 "cplus.met"
          (! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( ENDIF_DIR,"ENDIF_DIR")))) { 
#line 965 "cplus.met"
#line 966 "cplus.met"
#line 966 "cplus.met"
        {
#line 966 "cplus.met"
            PPTREE _ptTree0;
#line 966 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(stat_all)(error_free), 108, cplus))== (PPTREE) -1 ) {
#line 966 "cplus.met"
                PROG_EXIT(stat_ifdef_dir_exit,"stat_ifdef_dir")
#line 966 "cplus.met"
            }
#line 966 "cplus.met"
            _addlist1 =AddList(_addlist1 , _ptTree0);
#line 966 "cplus.met"
        }
#line 966 "cplus.met"
#line 966 "cplus.met"
        if (list){
#line 966 "cplus.met"
#line 966 "cplus.met"
            _addlist1 = SonTree (_addlist1 ,2 );
#line 966 "cplus.met"
        } else {
#line 966 "cplus.met"
#line 966 "cplus.met"
            list = _addlist1 ;
#line 966 "cplus.met"
        }
#line 966 "cplus.met"
    } 
#line 966 "cplus.met"
#line 967 "cplus.met"
    ReplaceTree(retTree ,2 ,list );
#line 967 "cplus.met"
#line 968 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 968 "cplus.met"
    switch( lexEl.Value) {
#line 968 "cplus.met"
#line 969 "cplus.met"
        case META : 
#line 969 "cplus.met"
        case ELSE_DIR : 
#line 969 "cplus.met"
            tokenAhead = 0 ;
#line 969 "cplus.met"
            CommTerm();
#line 969 "cplus.met"
#line 970 "cplus.met"
#line 970 "cplus.met"
            _addlist2 = list2 ;
#line 970 "cplus.met"
#line 971 "cplus.met"
            while (! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&TERM_OR_META(ENDIF_DIR,"ENDIF_DIR") && (tokenAhead = 0,CommTerm(),1))) { 
#line 971 "cplus.met"
#line 972 "cplus.met"
#line 972 "cplus.met"
                {
#line 972 "cplus.met"
                    PPTREE _ptTree0;
#line 972 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(stat_all)(error_free), 108, cplus))== (PPTREE) -1 ) {
#line 972 "cplus.met"
                        PROG_EXIT(stat_ifdef_dir_exit,"stat_ifdef_dir")
#line 972 "cplus.met"
                    }
#line 972 "cplus.met"
                    _addlist2 =AddList(_addlist2 , _ptTree0);
#line 972 "cplus.met"
                }
#line 972 "cplus.met"
#line 972 "cplus.met"
                if (list2){
#line 972 "cplus.met"
#line 972 "cplus.met"
                    _addlist2 = SonTree (_addlist2 ,2 );
#line 972 "cplus.met"
                } else {
#line 972 "cplus.met"
#line 972 "cplus.met"
                    list2 = _addlist2 ;
#line 972 "cplus.met"
                }
#line 972 "cplus.met"
            } 
#line 972 "cplus.met"
#line 973 "cplus.met"
            {
#line 973 "cplus.met"
                PPTREE _ptTree0;
#line 973 "cplus.met"
                _ptTree0=ReplaceTree(retTree ,3 ,list2 );
#line 973 "cplus.met"
                _retValue =_ptTree0;
#line 973 "cplus.met"
                goto stat_ifdef_dir_ret;
#line 973 "cplus.met"
            }
#line 973 "cplus.met"
            break;
#line 973 "cplus.met"
#line 975 "cplus.met"
        case ENDIF_DIR : 
#line 975 "cplus.met"
            tokenAhead = 0 ;
#line 975 "cplus.met"
            CommTerm();
#line 975 "cplus.met"
#line 975 "cplus.met"
            {
#line 975 "cplus.met"
                _retValue = retTree ;
#line 975 "cplus.met"
                goto stat_ifdef_dir_ret;
#line 975 "cplus.met"
                
#line 975 "cplus.met"
            }
#line 975 "cplus.met"
            break;
#line 975 "cplus.met"
        default :
#line 975 "cplus.met"
            CASE_EXIT(stat_ifdef_dir_exit,"either ELSE_DIR or ENDIF_DIR")
#line 975 "cplus.met"
            break;
#line 975 "cplus.met"
    }
#line 975 "cplus.met"
#line 977 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 977 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 977 "cplus.met"
keepCarriage =  _oldkeepCarriage;
#line 977 "cplus.met"
return((PPTREE) 0);
#line 977 "cplus.met"

#line 977 "cplus.met"
stat_ifdef_dir_exit :
#line 977 "cplus.met"

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

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

#line 977 "cplus.met"
#line 2821 "cplus.met"
PPTREE cplus::statement ( int error_free)
#line 2821 "cplus.met"
{
#line 2821 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2821 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2821 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2821 "cplus.met"
    int _Debug = TRACE_RULE("statement",TRACE_ENTER,(PPTREE)0);
#line 2821 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2821 "cplus.met"
#line 2821 "cplus.met"
    PPTREE statTree = (PPTREE) 0,opt = (PPTREE) 0,stat = (PPTREE) 0;
#line 2821 "cplus.met"
#line 2823 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2823 "cplus.met"
    switch( lexEl.Value) {
#line 2823 "cplus.met"
#line 2824 "cplus.met"
        case BREAK : 
#line 2824 "cplus.met"
            tokenAhead = 0 ;
#line 2824 "cplus.met"
            CommTerm();
#line 2824 "cplus.met"
#line 2825 "cplus.met"
#line 2826 "cplus.met"
            {
#line 2826 "cplus.met"
                PPTREE _ptRes0;
#line 2826 "cplus.met"
                _ptRes0= MakeTree(BREAK, 0);
#line 2826 "cplus.met"
                statTree=_ptRes0;
#line 2826 "cplus.met"
            }
#line 2826 "cplus.met"
#line 2827 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2827 "cplus.met"
            if (  !SEE_TOKEN( PVIR,";") || !(CommTerm(),1)) 
#line 2827 "cplus.met"
                TOKEN_EXIT(statement_exit,";")
#line 2827 "cplus.met"
            break;
#line 2827 "cplus.met"
#line 2829 "cplus.met"
        case CONTINUE : 
#line 2829 "cplus.met"
            tokenAhead = 0 ;
#line 2829 "cplus.met"
            CommTerm();
#line 2829 "cplus.met"
#line 2830 "cplus.met"
#line 2831 "cplus.met"
            {
#line 2831 "cplus.met"
                PPTREE _ptRes0;
#line 2831 "cplus.met"
                _ptRes0= MakeTree(CONTINUE, 0);
#line 2831 "cplus.met"
                statTree=_ptRes0;
#line 2831 "cplus.met"
            }
#line 2831 "cplus.met"
#line 2832 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2832 "cplus.met"
            if (  !SEE_TOKEN( PVIR,";") || !(CommTerm(),1)) 
#line 2832 "cplus.met"
                TOKEN_EXIT(statement_exit,";")
#line 2832 "cplus.met"
            break;
#line 2832 "cplus.met"
#line 2834 "cplus.met"
        case DO : 
#line 2834 "cplus.met"
            tokenAhead = 0 ;
#line 2834 "cplus.met"
            CommTerm();
#line 2834 "cplus.met"
#line 2835 "cplus.met"
#line 2836 "cplus.met"
            {
#line 2836 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2836 "cplus.met"
                _ptRes0= MakeTree(DO, 2);
#line 2836 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(statement)(error_free), 112, cplus))== (PPTREE) -1 ) {
#line 2836 "cplus.met"
                    PROG_EXIT(statement_exit,"statement")
#line 2836 "cplus.met"
                }
#line 2836 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2836 "cplus.met"
                statTree=_ptRes0;
#line 2836 "cplus.met"
            }
#line 2836 "cplus.met"
#line 2837 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2837 "cplus.met"
            if (  !SEE_TOKEN( WHILE,"while") || !(CommTerm(),1)) 
#line 2837 "cplus.met"
                TOKEN_EXIT(statement_exit,"while")
#line 2837 "cplus.met"
#line 2838 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2838 "cplus.met"
            if (  !SEE_TOKEN( POUV,"(") || !(CommTerm(),1)) 
#line 2838 "cplus.met"
                TOKEN_EXIT(statement_exit,"(")
#line 2838 "cplus.met"
#line 2839 "cplus.met"
            {
#line 2839 "cplus.met"
                PPTREE _ptTree0;
#line 2839 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 2839 "cplus.met"
                    PROG_EXIT(statement_exit,"statement")
#line 2839 "cplus.met"
                }
#line 2839 "cplus.met"
                ReplaceTree(statTree , 2 , _ptTree0);
#line 2839 "cplus.met"
            }
#line 2839 "cplus.met"
#line 2840 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2840 "cplus.met"
            if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 2840 "cplus.met"
                TOKEN_EXIT(statement_exit,")")
#line 2840 "cplus.met"
#line 2841 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2841 "cplus.met"
            if (  !SEE_TOKEN( PVIR,";") || !(CommTerm(),1)) 
#line 2841 "cplus.met"
                TOKEN_EXIT(statement_exit,";")
#line 2841 "cplus.met"
            break;
#line 2841 "cplus.met"
#line 2843 "cplus.met"
        case AOUV : 
#line 2843 "cplus.met"
#line 2843 "cplus.met"
            if ( (statTree=NQUICK_CALL(_Tak(compound_statement)(error_free), 22, cplus))== (PPTREE) -1 ) {
#line 2843 "cplus.met"
                PROG_EXIT(statement_exit,"statement")
#line 2843 "cplus.met"
            }
#line 2843 "cplus.met"
            break;
#line 2843 "cplus.met"
#line 2844 "cplus.met"
        case FOR : 
#line 2844 "cplus.met"
            tokenAhead = 0 ;
#line 2844 "cplus.met"
            CommTerm();
#line 2844 "cplus.met"
#line 2845 "cplus.met"
#line 2846 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2846 "cplus.met"
            if (  !SEE_TOKEN( POUV,"(") || !(CommTerm(),1)) 
#line 2846 "cplus.met"
                TOKEN_EXIT(statement_exit,"(")
#line 2846 "cplus.met"
#line 2847 "cplus.met"
            {
#line 2847 "cplus.met"
                PPTREE _ptRes0;
#line 2847 "cplus.met"
                _ptRes0= MakeTree(FOR, 4);
#line 2847 "cplus.met"
                statTree=_ptRes0;
#line 2847 "cplus.met"
            }
#line 2847 "cplus.met"
#line 2848 "cplus.met"
            if (NPUSH_CALL_AFF_VERIF(opt = ,_Tak(expression_for), 48, cplus)){
#line 2848 "cplus.met"
#line 2849 "cplus.met"
                ReplaceTree(statTree ,1 ,opt );
#line 2849 "cplus.met"
#line 2849 "cplus.met"
            } else {
#line 2849 "cplus.met"
#line 2851 "cplus.met"
                if (NPUSH_CALL_AFF_VERIF(opt = ,_Tak(data_declaration_for), 31, cplus)){
#line 2851 "cplus.met"
#line 2852 "cplus.met"
                    ReplaceTree(statTree ,1 ,opt );
#line 2852 "cplus.met"
#line 2852 "cplus.met"
                }
#line 2852 "cplus.met"
            }
#line 2852 "cplus.met"
#line 2853 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2853 "cplus.met"
            if (  !SEE_TOKEN( PVIR,";") || !(CommTerm(),1)) 
#line 2853 "cplus.met"
                TOKEN_EXIT(statement_exit,";")
#line 2853 "cplus.met"
#line 2854 "cplus.met"
            if (NPUSH_CALL_AFF_VERIF(opt = ,_Tak(expression), 47, cplus)){
#line 2854 "cplus.met"
#line 2855 "cplus.met"
                ReplaceTree(statTree ,2 ,opt );
#line 2855 "cplus.met"
#line 2855 "cplus.met"
            }
#line 2855 "cplus.met"
#line 2856 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2856 "cplus.met"
            if (  !SEE_TOKEN( PVIR,";") || !(CommTerm(),1)) 
#line 2856 "cplus.met"
                TOKEN_EXIT(statement_exit,";")
#line 2856 "cplus.met"
#line 2857 "cplus.met"
            if (NPUSH_CALL_AFF_VERIF(opt = ,_Tak(expression), 47, cplus)){
#line 2857 "cplus.met"
#line 2858 "cplus.met"
                ReplaceTree(statTree ,3 ,opt );
#line 2858 "cplus.met"
#line 2858 "cplus.met"
            }
#line 2858 "cplus.met"
#line 2859 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2859 "cplus.met"
            if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 2859 "cplus.met"
                TOKEN_EXIT(statement_exit,")")
#line 2859 "cplus.met"
#line 2860 "cplus.met"
            {
#line 2860 "cplus.met"
                PPTREE _ptTree0;
#line 2860 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(statement)(error_free), 112, cplus))== (PPTREE) -1 ) {
#line 2860 "cplus.met"
                    PROG_EXIT(statement_exit,"statement")
#line 2860 "cplus.met"
                }
#line 2860 "cplus.met"
                ReplaceTree(statTree , 4 , _ptTree0);
#line 2860 "cplus.met"
            }
#line 2860 "cplus.met"
            break;
#line 2860 "cplus.met"
#line 2862 "cplus.met"
        case GOTO : 
#line 2862 "cplus.met"
            tokenAhead = 0 ;
#line 2862 "cplus.met"
            CommTerm();
#line 2862 "cplus.met"
#line 2863 "cplus.met"
#line 2864 "cplus.met"
            {
#line 2864 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2864 "cplus.met"
                _ptRes0= MakeTree(GOTO, 1);
#line 2864 "cplus.met"
                {
#line 2864 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2864 "cplus.met"
                    _ptRes1= MakeTree(IDENT, 1);
#line 2864 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2864 "cplus.met"
                    if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 2864 "cplus.met"
                        TOKEN_EXIT(statement_exit,"IDENT")
#line 2864 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2864 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2864 "cplus.met"
                }
#line 2864 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2864 "cplus.met"
                statTree=_ptRes0;
#line 2864 "cplus.met"
            }
#line 2864 "cplus.met"
#line 2865 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2865 "cplus.met"
            if (  !SEE_TOKEN( PVIR,";") || !(CommTerm(),1)) 
#line 2865 "cplus.met"
                TOKEN_EXIT(statement_exit,";")
#line 2865 "cplus.met"
            break;
#line 2865 "cplus.met"
#line 2867 "cplus.met"
        case IF : 
#line 2867 "cplus.met"
            tokenAhead = 0 ;
#line 2867 "cplus.met"
            CommTerm();
#line 2867 "cplus.met"
#line 2868 "cplus.met"
#line 2869 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2869 "cplus.met"
            if (  !SEE_TOKEN( POUV,"(") || !(CommTerm(),1)) 
#line 2869 "cplus.met"
                TOKEN_EXIT(statement_exit,"(")
#line 2869 "cplus.met"
#line 2870 "cplus.met"
            {
#line 2870 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2870 "cplus.met"
                _ptRes0= MakeTree(IF, 3);
#line 2870 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 2870 "cplus.met"
                    PROG_EXIT(statement_exit,"statement")
#line 2870 "cplus.met"
                }
#line 2870 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2870 "cplus.met"
                statTree=_ptRes0;
#line 2870 "cplus.met"
            }
#line 2870 "cplus.met"
#line 2871 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2871 "cplus.met"
            if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 2871 "cplus.met"
                TOKEN_EXIT(statement_exit,")")
#line 2871 "cplus.met"
#line 2872 "cplus.met"
            {
#line 2872 "cplus.met"
                PPTREE _ptTree0;
#line 2872 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(statement)(error_free), 112, cplus))== (PPTREE) -1 ) {
#line 2872 "cplus.met"
                    PROG_EXIT(statement_exit,"statement")
#line 2872 "cplus.met"
                }
#line 2872 "cplus.met"
                ReplaceTree(statTree , 2 , _ptTree0);
#line 2872 "cplus.met"
            }
#line 2872 "cplus.met"
#line 2873 "cplus.met"
            if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(ELSE,"else") && (tokenAhead = 0,CommTerm(),1)){
#line 2873 "cplus.met"
#line 2874 "cplus.met"
                {
#line 2874 "cplus.met"
                    PPTREE _ptTree0;
#line 2874 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(statement)(error_free), 112, cplus))== (PPTREE) -1 ) {
#line 2874 "cplus.met"
                        PROG_EXIT(statement_exit,"statement")
#line 2874 "cplus.met"
                    }
#line 2874 "cplus.met"
                    ReplaceTree(statTree , 3 , _ptTree0);
#line 2874 "cplus.met"
                }
#line 2874 "cplus.met"
#line 2874 "cplus.met"
            }
#line 2874 "cplus.met"
            break;
#line 2874 "cplus.met"
#line 2876 "cplus.met"
        case PVIR : 
#line 2876 "cplus.met"
            tokenAhead = 0 ;
#line 2876 "cplus.met"
            CommTerm();
#line 2876 "cplus.met"
#line 2876 "cplus.met"
            {
#line 2876 "cplus.met"
                PPTREE _ptRes0;
#line 2876 "cplus.met"
                _ptRes0= MakeTree(STAT_VOID, 0);
#line 2876 "cplus.met"
                statTree=_ptRes0;
#line 2876 "cplus.met"
            }
#line 2876 "cplus.met"
            break;
#line 2876 "cplus.met"
#line 2877 "cplus.met"
        case RETURN : 
#line 2877 "cplus.met"
            tokenAhead = 0 ;
#line 2877 "cplus.met"
            CommTerm();
#line 2877 "cplus.met"
#line 2878 "cplus.met"
#line 2879 "cplus.met"
            {
#line 2879 "cplus.met"
                PPTREE _ptRes0;
#line 2879 "cplus.met"
                _ptRes0= MakeTree(RETURN, 1);
#line 2879 "cplus.met"
                statTree=_ptRes0;
#line 2879 "cplus.met"
            }
#line 2879 "cplus.met"
#line 2880 "cplus.met"
            if (NPUSH_CALL_AFF_VERIF(opt = ,_Tak(expression), 47, cplus)){
#line 2880 "cplus.met"
#line 2881 "cplus.met"
                ReplaceTree(statTree ,1 ,opt );
#line 2881 "cplus.met"
#line 2881 "cplus.met"
            }
#line 2881 "cplus.met"
#line 2882 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2882 "cplus.met"
            if (  !SEE_TOKEN( PVIR,";") || !(CommTerm(),1)) 
#line 2882 "cplus.met"
                TOKEN_EXIT(statement_exit,";")
#line 2882 "cplus.met"
            break;
#line 2882 "cplus.met"
#line 2884 "cplus.met"
        case SWITCH : 
#line 2884 "cplus.met"
            tokenAhead = 0 ;
#line 2884 "cplus.met"
            CommTerm();
#line 2884 "cplus.met"
#line 2885 "cplus.met"
#line 2886 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2886 "cplus.met"
            if (  !SEE_TOKEN( POUV,"(") || !(CommTerm(),1)) 
#line 2886 "cplus.met"
                TOKEN_EXIT(statement_exit,"(")
#line 2886 "cplus.met"
#line 2887 "cplus.met"
            {
#line 2887 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2887 "cplus.met"
                _ptRes0= MakeTree(SWITCH, 2);
#line 2887 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 2887 "cplus.met"
                    PROG_EXIT(statement_exit,"statement")
#line 2887 "cplus.met"
                }
#line 2887 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2887 "cplus.met"
                statTree=_ptRes0;
#line 2887 "cplus.met"
            }
#line 2887 "cplus.met"
#line 2888 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2888 "cplus.met"
            if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 2888 "cplus.met"
                TOKEN_EXIT(statement_exit,")")
#line 2888 "cplus.met"
#line 2889 "cplus.met"
            {
#line 2889 "cplus.met"
                PPTREE _ptTree0;
#line 2889 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(switch_list)(error_free), 115, cplus))== (PPTREE) -1 ) {
#line 2889 "cplus.met"
                    PROG_EXIT(statement_exit,"statement")
#line 2889 "cplus.met"
                }
#line 2889 "cplus.met"
                ReplaceTree(statTree , 2 , _ptTree0);
#line 2889 "cplus.met"
            }
#line 2889 "cplus.met"
            break;
#line 2889 "cplus.met"
#line 2891 "cplus.met"
        case WHILE : 
#line 2891 "cplus.met"
            tokenAhead = 0 ;
#line 2891 "cplus.met"
            CommTerm();
#line 2891 "cplus.met"
#line 2892 "cplus.met"
#line 2893 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2893 "cplus.met"
            if (  !SEE_TOKEN( POUV,"(") || !(CommTerm(),1)) 
#line 2893 "cplus.met"
                TOKEN_EXIT(statement_exit,"(")
#line 2893 "cplus.met"
#line 2894 "cplus.met"
            {
#line 2894 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2894 "cplus.met"
                _ptRes0= MakeTree(WHILE, 2);
#line 2894 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 2894 "cplus.met"
                    PROG_EXIT(statement_exit,"statement")
#line 2894 "cplus.met"
                }
#line 2894 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2894 "cplus.met"
                statTree=_ptRes0;
#line 2894 "cplus.met"
            }
#line 2894 "cplus.met"
#line 2895 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2895 "cplus.met"
            if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 2895 "cplus.met"
                TOKEN_EXIT(statement_exit,")")
#line 2895 "cplus.met"
#line 2896 "cplus.met"
            {
#line 2896 "cplus.met"
                PPTREE _ptTree0;
#line 2896 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(statement)(error_free), 112, cplus))== (PPTREE) -1 ) {
#line 2896 "cplus.met"
                    PROG_EXIT(statement_exit,"statement")
#line 2896 "cplus.met"
                }
#line 2896 "cplus.met"
                ReplaceTree(statTree , 2 , _ptTree0);
#line 2896 "cplus.met"
            }
#line 2896 "cplus.met"
            break;
#line 2896 "cplus.met"
#line 2898 "cplus.met"
        case FORALLSONS : 
#line 2898 "cplus.met"
            tokenAhead = 0 ;
#line 2898 "cplus.met"
            CommTerm();
#line 2898 "cplus.met"
#line 2899 "cplus.met"
#line 2900 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2900 "cplus.met"
            if (  !SEE_TOKEN( POUV,"(") || !(CommTerm(),1)) 
#line 2900 "cplus.met"
                TOKEN_EXIT(statement_exit,"(")
#line 2900 "cplus.met"
#line 2901 "cplus.met"
            {
#line 2901 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2901 "cplus.met"
                _ptRes0= MakeTree(FORALLSONS, 2);
#line 2901 "cplus.met"
                {
#line 2901 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 2901 "cplus.met"
                    _ptRes1= MakeTree(IDENT, 1);
#line 2901 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2901 "cplus.met"
                    if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 2901 "cplus.met"
                        TOKEN_EXIT(statement_exit,"IDENT")
#line 2901 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2901 "cplus.met"
                    _ptTree0=_ptRes1;
#line 2901 "cplus.met"
                }
#line 2901 "cplus.met"
                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2901 "cplus.met"
                statTree=_ptRes0;
#line 2901 "cplus.met"
            }
#line 2901 "cplus.met"
#line 2902 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2902 "cplus.met"
            if (  !SEE_TOKEN( VIRG,",") || !(CommTerm(),1)) 
#line 2902 "cplus.met"
                TOKEN_EXIT(statement_exit,",")
#line 2902 "cplus.met"
#line 2903 "cplus.met"
            if (! (NPUSH_CALL_AFF_VERIF(stat = ,_Tak(statement), 112, cplus))){
#line 2903 "cplus.met"
#line 2904 "cplus.met"
                if ( (stat=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 2904 "cplus.met"
                    PROG_EXIT(statement_exit,"statement")
#line 2904 "cplus.met"
                }
#line 2904 "cplus.met"
            }
#line 2904 "cplus.met"
#line 2905 "cplus.met"
            ReplaceTree(statTree ,2 ,stat );
#line 2905 "cplus.met"
#line 2906 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2906 "cplus.met"
            if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 2906 "cplus.met"
                TOKEN_EXIT(statement_exit,")")
#line 2906 "cplus.met"
            break;
#line 2906 "cplus.met"
#line 2908 "cplus.met"
        case THROW : 
#line 2908 "cplus.met"
            tokenAhead = 0 ;
#line 2908 "cplus.met"
            CommTerm();
#line 2908 "cplus.met"
#line 2909 "cplus.met"
#line 2910 "cplus.met"
            {
#line 2910 "cplus.met"
                PPTREE _ptRes0;
#line 2910 "cplus.met"
                _ptRes0= MakeTree(THROW_ANSI, 1);
#line 2910 "cplus.met"
                statTree=_ptRes0;
#line 2910 "cplus.met"
            }
#line 2910 "cplus.met"
#line 2911 "cplus.met"
            if (NPUSH_CALL_AFF_VERIF(opt = ,_Tak(expression), 47, cplus)){
#line 2911 "cplus.met"
#line 2912 "cplus.met"
                ReplaceTree(statTree ,1 ,opt );
#line 2912 "cplus.met"
#line 2912 "cplus.met"
            }
#line 2912 "cplus.met"
            break;
#line 2912 "cplus.met"
#line 2914 "cplus.met"
        case TRY : 
#line 2914 "cplus.met"
#line 2914 "cplus.met"
            if ( (statTree=NQUICK_CALL(_Tak(exception_ansi)(error_free), 45, cplus))== (PPTREE) -1 ) {
#line 2914 "cplus.met"
                PROG_EXIT(statement_exit,"statement")
#line 2914 "cplus.met"
            }
#line 2914 "cplus.met"
            break;
#line 2914 "cplus.met"
#line 2915 "cplus.met"
        case META : 
#line 2915 "cplus.met"
#line 2916 "cplus.met"
            if (NPUSH_CALL_VERIF(_Tak(label_beg), 67, cplus)){
#line 2916 "cplus.met"
#line 2917 "cplus.met"
#line 2918 "cplus.met"
                {
#line 2918 "cplus.met"
                    PPTREE _ptTree0,_ptRes0;
#line 2918 "cplus.met"
                    _ptRes0= MakeTree(LABEL, 2);
#line 2918 "cplus.met"
                    {
#line 2918 "cplus.met"
                        PPTREE _ptTree1,_ptRes1;
#line 2918 "cplus.met"
                        _ptRes1= MakeTree(IDENT, 1);
#line 2918 "cplus.met"
                        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2918 "cplus.met"
                        if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 2918 "cplus.met"
                            TOKEN_EXIT(statement_exit,"IDENT")
#line 2918 "cplus.met"
                        ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2918 "cplus.met"
                        _ptTree0=_ptRes1;
#line 2918 "cplus.met"
                    }
#line 2918 "cplus.met"
                    ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2918 "cplus.met"
                    statTree=_ptRes0;
#line 2918 "cplus.met"
                }
#line 2918 "cplus.met"
#line 2919 "cplus.met"
                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2919 "cplus.met"
                if (  !SEE_TOKEN( DPOI,":") || !(CommTerm(),1)) 
#line 2919 "cplus.met"
                    TOKEN_EXIT(statement_exit,":")
#line 2919 "cplus.met"
#line 2920 "cplus.met"
                {
#line 2920 "cplus.met"
                    PPTREE _ptTree0;
#line 2920 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(statement)(error_free), 112, cplus))== (PPTREE) -1 ) {
#line 2920 "cplus.met"
                        PROG_EXIT(statement_exit,"statement")
#line 2920 "cplus.met"
                    }
#line 2920 "cplus.met"
                    ReplaceTree(statTree , 2 , _ptTree0);
#line 2920 "cplus.met"
                }
#line 2920 "cplus.met"
#line 2921 "cplus.met"
            } else {
#line 2921 "cplus.met"
#line 2923 "cplus.met"
                if (NPUSH_CALL_VERIF(_Tak(ident_mul), 60, cplus)){
#line 2923 "cplus.met"
#line 2925 "cplus.met"
                    LEX_EXIT ("",0);
#line 2925 "cplus.met"
                    goto statement_exit;
#line 2925 "cplus.met"
#line 2926 "cplus.met"
                } else {
#line 2926 "cplus.met"
#line 2928 "cplus.met"
#line 2929 "cplus.met"
                    if ( (statTree=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 2929 "cplus.met"
                        PROG_EXIT(statement_exit,"statement")
#line 2929 "cplus.met"
                    }
#line 2929 "cplus.met"
#line 2930 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2930 "cplus.met"
                    if (  !SEE_TOKEN( PVIR,";") || !(CommTerm(),1)) 
#line 2930 "cplus.met"
                        TOKEN_EXIT(statement_exit,";")
#line 2930 "cplus.met"
                }
#line 2930 "cplus.met"
            }
#line 2930 "cplus.met"
            break;
#line 2930 "cplus.met"
#line 2932 "cplus.met"
        case IDENT : 
#line 2932 "cplus.met"
#line 2933 "cplus.met"
            (tokenAhead == 14|| (the_exit(),TRACE_LEX(1)));
#line 2933 "cplus.met"
            switch( lexEl.Value) {
#line 2933 "cplus.met"
#line 2934 "cplus.met"
                case META : 
#line 2934 "cplus.met"
                case FUNC_SPEC : 
#line 2934 "cplus.met"
#line 2935 "cplus.met"
#line 2936 "cplus.met"
                    {
#line 2936 "cplus.met"
                        PPTREE _ptTree0,_ptRes0;
#line 2936 "cplus.met"
                        _ptRes0= MakeTree(FUNC_SPEC, 2);
#line 2936 "cplus.met"
                        {
#line 2936 "cplus.met"
                            PPTREE _ptTree1,_ptRes1;
#line 2936 "cplus.met"
                            _ptRes1= MakeTree(IDENT, 1);
#line 2936 "cplus.met"
                            (tokenAhead == 14|| (the_exit(),TRACE_LEX(1)));
#line 2936 "cplus.met"
                            if ( ! TERM_OR_META(FUNC_SPEC,"FUNC_SPEC") || !(BUILD_TERM_META(_ptTree1))) 
#line 2936 "cplus.met"
                                TOKEN_EXIT(statement_exit,"FUNC_SPEC")
#line 2936 "cplus.met"
                            ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2936 "cplus.met"
                            _ptTree0=_ptRes1;
#line 2936 "cplus.met"
                        }
#line 2936 "cplus.met"
                        ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2936 "cplus.met"
                        statTree=_ptRes0;
#line 2936 "cplus.met"
                    }
#line 2936 "cplus.met"
#line 2939 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2939 "cplus.met"
                    if (  !SEE_TOKEN( POUV,"(") || !(CommTerm(),1)) 
#line 2939 "cplus.met"
                        TOKEN_EXIT(statement_exit,"(")
#line 2939 "cplus.met"
#line 2940 "cplus.met"
                    {
#line 2940 "cplus.met"
                        PPTREE _ptTree0;
#line 2940 "cplus.met"
                        if ( (_ptTree0=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 2940 "cplus.met"
                            PROG_EXIT(statement_exit,"statement")
#line 2940 "cplus.met"
                        }
#line 2940 "cplus.met"
                        ReplaceTree(statTree , 2 , _ptTree0);
#line 2940 "cplus.met"
                    }
#line 2940 "cplus.met"
#line 2941 "cplus.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2941 "cplus.met"
                    if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 2941 "cplus.met"
                        TOKEN_EXIT(statement_exit,")")
#line 2941 "cplus.met"
                    break;
#line 2941 "cplus.met"
#line 2946 "cplus.met"
                default : 
#line 2946 "cplus.met"
#line 2944 "cplus.met"
                    if (NPUSH_CALL_VERIF(_Tak(label_beg), 67, cplus)){
#line 2944 "cplus.met"
#line 2945 "cplus.met"
#line 2946 "cplus.met"
                        {
#line 2946 "cplus.met"
                            PPTREE _ptTree0,_ptRes0;
#line 2946 "cplus.met"
                            _ptRes0= MakeTree(LABEL, 2);
#line 2946 "cplus.met"
                            {
#line 2946 "cplus.met"
                                PPTREE _ptTree1,_ptRes1;
#line 2946 "cplus.met"
                                _ptRes1= MakeTree(IDENT, 1);
#line 2946 "cplus.met"
                                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2946 "cplus.met"
                                if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 2946 "cplus.met"
                                    TOKEN_EXIT(statement_exit,"IDENT")
#line 2946 "cplus.met"
                                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 2946 "cplus.met"
                                _ptTree0=_ptRes1;
#line 2946 "cplus.met"
                            }
#line 2946 "cplus.met"
                            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 2946 "cplus.met"
                            statTree=_ptRes0;
#line 2946 "cplus.met"
                        }
#line 2946 "cplus.met"
#line 2949 "cplus.met"
                        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2949 "cplus.met"
                        if (  !SEE_TOKEN( DPOI,":") || !(CommTerm(),1)) 
#line 2949 "cplus.met"
                            TOKEN_EXIT(statement_exit,":")
#line 2949 "cplus.met"
#line 2950 "cplus.met"
                        {
#line 2950 "cplus.met"
                            PPTREE _ptTree0;
#line 2950 "cplus.met"
                            if ( (_ptTree0=NQUICK_CALL(_Tak(statement)(error_free), 112, cplus))== (PPTREE) -1 ) {
#line 2950 "cplus.met"
                                PROG_EXIT(statement_exit,"statement")
#line 2950 "cplus.met"
                            }
#line 2950 "cplus.met"
                            ReplaceTree(statTree , 2 , _ptTree0);
#line 2950 "cplus.met"
                        }
#line 2950 "cplus.met"
#line 2951 "cplus.met"
                    } else {
#line 2951 "cplus.met"
#line 2953 "cplus.met"
                        if (NPUSH_CALL_VERIF(_Tak(ident_mul), 60, cplus)){
#line 2953 "cplus.met"
#line 2956 "cplus.met"
                            LEX_EXIT ("",0);
#line 2956 "cplus.met"
                            goto statement_exit;
#line 2956 "cplus.met"
#line 2957 "cplus.met"
                        } else {
#line 2957 "cplus.met"
#line 2959 "cplus.met"
#line 2960 "cplus.met"
                            if ( (statTree=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 2960 "cplus.met"
                                PROG_EXIT(statement_exit,"statement")
#line 2960 "cplus.met"
                            }
#line 2960 "cplus.met"
#line 2961 "cplus.met"
                            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2961 "cplus.met"
                            if (  !SEE_TOKEN( PVIR,";") || !(CommTerm(),1)) 
#line 2961 "cplus.met"
                                TOKEN_EXIT(statement_exit,";")
#line 2961 "cplus.met"
                        }
#line 2961 "cplus.met"
                    }
#line 2961 "cplus.met"
                    break;
#line 2961 "cplus.met"
            }
#line 2961 "cplus.met"
            break;
#line 2961 "cplus.met"
#line 2967 "cplus.met"
        default : 
#line 2967 "cplus.met"
#line 2965 "cplus.met"
#line 2966 "cplus.met"
            if (NPUSH_CALL_VERIF(_Tak(ident_mul), 60, cplus)){
#line 2966 "cplus.met"
#line 2967 "cplus.met"
                LEX_EXIT ("",0);
#line 2967 "cplus.met"
                goto statement_exit;
#line 2967 "cplus.met"
#line 2967 "cplus.met"
            } else {
#line 2967 "cplus.met"
#line 2969 "cplus.met"
#line 2970 "cplus.met"
                if ( (statTree=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 2970 "cplus.met"
                    PROG_EXIT(statement_exit,"statement")
#line 2970 "cplus.met"
                }
#line 2970 "cplus.met"
#line 2971 "cplus.met"
                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2971 "cplus.met"
                if (  !SEE_TOKEN( PVIR,";") || !(CommTerm(),1)) 
#line 2971 "cplus.met"
                    TOKEN_EXIT(statement_exit,";")
#line 2971 "cplus.met"
            }
#line 2971 "cplus.met"
            break;
#line 2971 "cplus.met"
    }
#line 2971 "cplus.met"
#line 2975 "cplus.met"
    {
#line 2975 "cplus.met"
        _retValue = statTree ;
#line 2975 "cplus.met"
        goto statement_ret;
#line 2975 "cplus.met"
        
#line 2975 "cplus.met"
    }
#line 2975 "cplus.met"
#line 2976 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2976 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2976 "cplus.met"
return((PPTREE) 0);
#line 2976 "cplus.met"

#line 2976 "cplus.met"
statement_exit :
#line 2976 "cplus.met"

#line 2976 "cplus.met"
    {
#line 2976 "cplus.met"
        MulFreeTree(3,stat,opt,statTree);
#line 2976 "cplus.met"
    }
#line 2976 "cplus.met"
    _Debug = TRACE_RULE("statement",TRACE_EXIT,(PPTREE)0);
#line 2976 "cplus.met"
    _funcLevel--;
#line 2976 "cplus.met"
    return((PPTREE) -1) ;
#line 2976 "cplus.met"

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

#line 2976 "cplus.met"
