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

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


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

#line 2459 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2459 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2459 "cplus.met"
    int _Debug = TRACE_RULE("deallocation_expression",TRACE_ENTER,(PPTREE)0);
#line 2459 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2459 "cplus.met"
#line 2459 "cplus.met"
    PPTREE retTree = (PPTREE) 0,expr = (PPTREE) 0;
#line 2459 "cplus.met"
#line 2461 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2461 "cplus.met"
    if (  !SEE_TOKEN( DELETE,"delete") || !(CommTerm(),1)) 
#line 2461 "cplus.met"
        TOKEN_EXIT(deallocation_expression_exit,"delete")
#line 2461 "cplus.met"
#line 2462 "cplus.met"
    {
#line 2462 "cplus.met"
        PPTREE _ptRes0;
#line 2462 "cplus.met"
        _ptRes0= MakeTree(DELETE, 2);
#line 2462 "cplus.met"
        retTree=_ptRes0;
#line 2462 "cplus.met"
    }
#line 2462 "cplus.met"
#line 2463 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(COUV,"[") && (tokenAhead = 0,CommTerm(),1)){
#line 2463 "cplus.met"
#line 2464 "cplus.met"
#line 2467 "cplus.met"
        if (NPUSH_CALL_AFF_VERIF(expr = ,_Tak(expression), 47, cplus)){
#line 2467 "cplus.met"
#line 2467 "cplus.met"
        }
#line 2467 "cplus.met"
#line 2470 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2470 "cplus.met"
        if (  !SEE_TOKEN( CFER,"]") || !(CommTerm(),1)) 
#line 2470 "cplus.met"
            TOKEN_EXIT(deallocation_expression_exit,"]")
#line 2470 "cplus.met"
#line 2471 "cplus.met"
        {
#line 2471 "cplus.met"
            PPTREE _ptTree0;
#line 2471 "cplus.met"
            {
#line 2471 "cplus.met"
                PPTREE _ptRes1;
#line 2471 "cplus.met"
                _ptRes1= MakeTree(TYP_ARRAY, 2);
#line 2471 "cplus.met"
                ReplaceTree(_ptRes1, 2, expr );
#line 2471 "cplus.met"
                _ptTree0=_ptRes1;
#line 2471 "cplus.met"
            }
#line 2471 "cplus.met"
            ReplaceTree(retTree , 1 , _ptTree0);
#line 2471 "cplus.met"
        }
#line 2471 "cplus.met"
#line 2472 "cplus.met"
    }
#line 2472 "cplus.met"
#line 2473 "cplus.met"
    {
#line 2473 "cplus.met"
        PPTREE _ptTree0;
#line 2473 "cplus.met"
        {
#line 2473 "cplus.met"
            PPTREE _ptTree1;
#line 2473 "cplus.met"
            if ( (_ptTree1=NQUICK_CALL(_Tak(cast_expression)(error_free), 15, cplus))== (PPTREE) -1 ) {
#line 2473 "cplus.met"
                PROG_EXIT(deallocation_expression_exit,"deallocation_expression")
#line 2473 "cplus.met"
            }
#line 2473 "cplus.met"
            _ptTree0=ReplaceTree(retTree , 2 , _ptTree1);
#line 2473 "cplus.met"
        }
#line 2473 "cplus.met"
        _retValue =_ptTree0;
#line 2473 "cplus.met"
        goto deallocation_expression_ret;
#line 2473 "cplus.met"
    }
#line 2473 "cplus.met"
#line 2474 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2474 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2474 "cplus.met"
return((PPTREE) 0);
#line 2474 "cplus.met"

#line 2474 "cplus.met"
deallocation_expression_exit :
#line 2474 "cplus.met"

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

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

#line 2474 "cplus.met"
#line 1898 "cplus.met"
PPTREE cplus::declarator ( int error_free)
#line 1898 "cplus.met"
{
#line 1898 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1898 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1898 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1898 "cplus.met"
    int _Debug = TRACE_RULE("declarator",TRACE_ENTER,(PPTREE)0);
#line 1898 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1898 "cplus.met"
#line 1898 "cplus.met"
    PPTREE retTree = (PPTREE) 0,valTree = (PPTREE) 0;
#line 1898 "cplus.met"
#line 1900 "cplus.met"
    if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(range_modifier), 98, cplus)){
#line 1900 "cplus.met"
#line 1901 "cplus.met"
        {
#line 1901 "cplus.met"
            PPTREE _ptTree0;
#line 1901 "cplus.met"
            {
#line 1901 "cplus.met"
                PPTREE _ptTree1;
#line 1901 "cplus.met"
                if ( (_ptTree1=NQUICK_CALL(_Tak(declarator)(error_free), 34, cplus))== (PPTREE) -1 ) {
#line 1901 "cplus.met"
                    PROG_EXIT(declarator_exit,"declarator")
#line 1901 "cplus.met"
                }
#line 1901 "cplus.met"
                _ptTree0=ReplaceTree(valTree , 2 , _ptTree1);
#line 1901 "cplus.met"
            }
#line 1901 "cplus.met"
            _retValue =_ptTree0;
#line 1901 "cplus.met"
            goto declarator_ret;
#line 1901 "cplus.met"
        }
#line 1901 "cplus.met"
    } else {
#line 1901 "cplus.met"
#line 1903 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1903 "cplus.met"
        switch( lexEl.Value) {
#line 1903 "cplus.met"
#line 1904 "cplus.met"
            case ETOI : 
#line 1904 "cplus.met"
                tokenAhead = 0 ;
#line 1904 "cplus.met"
                CommTerm();
#line 1904 "cplus.met"
#line 1904 "cplus.met"
                {
#line 1904 "cplus.met"
                    PPTREE _ptTree0;
#line 1904 "cplus.met"
                    {
#line 1904 "cplus.met"
                        PPTREE _ptTree1,_ptRes1;
#line 1904 "cplus.met"
                        _ptRes1= MakeTree(TYP_ADDR, 1);
#line 1904 "cplus.met"
                        if ( (_ptTree1=NQUICK_CALL(_Tak(declarator)(error_free), 34, cplus))== (PPTREE) -1 ) {
#line 1904 "cplus.met"
                            PROG_EXIT(declarator_exit,"declarator")
#line 1904 "cplus.met"
                        }
#line 1904 "cplus.met"
                        ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1904 "cplus.met"
                        _ptTree0=_ptRes1;
#line 1904 "cplus.met"
                    }
#line 1904 "cplus.met"
                    _retValue =_ptTree0;
#line 1904 "cplus.met"
                    goto declarator_ret;
#line 1904 "cplus.met"
                }
#line 1904 "cplus.met"
                break;
#line 1904 "cplus.met"
#line 1905 "cplus.met"
            case ETCO : 
#line 1905 "cplus.met"
                tokenAhead = 0 ;
#line 1905 "cplus.met"
                CommTerm();
#line 1905 "cplus.met"
#line 1905 "cplus.met"
                {
#line 1905 "cplus.met"
                    PPTREE _ptTree0;
#line 1905 "cplus.met"
                    {
#line 1905 "cplus.met"
                        PPTREE _ptTree1,_ptRes1;
#line 1905 "cplus.met"
                        _ptRes1= MakeTree(TYP_REF, 1);
#line 1905 "cplus.met"
                        if ( (_ptTree1=NQUICK_CALL(_Tak(declarator)(error_free), 34, cplus))== (PPTREE) -1 ) {
#line 1905 "cplus.met"
                            PROG_EXIT(declarator_exit,"declarator")
#line 1905 "cplus.met"
                        }
#line 1905 "cplus.met"
                        ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1905 "cplus.met"
                        _ptTree0=_ptRes1;
#line 1905 "cplus.met"
                    }
#line 1905 "cplus.met"
                    _retValue =_ptTree0;
#line 1905 "cplus.met"
                    goto declarator_ret;
#line 1905 "cplus.met"
                }
#line 1905 "cplus.met"
                break;
#line 1905 "cplus.met"
#line 1906 "cplus.met"
            case TILD : 
#line 1906 "cplus.met"
                tokenAhead = 0 ;
#line 1906 "cplus.met"
                CommTerm();
#line 1906 "cplus.met"
#line 1906 "cplus.met"
                {
#line 1906 "cplus.met"
                    PPTREE _ptTree0;
#line 1906 "cplus.met"
                    {
#line 1906 "cplus.met"
                        PPTREE _ptTree1,_ptRes1;
#line 1906 "cplus.met"
                        _ptRes1= MakeTree(DESTRUCT, 1);
#line 1906 "cplus.met"
                        if ( (_ptTree1=NQUICK_CALL(_Tak(declarator)(error_free), 34, cplus))== (PPTREE) -1 ) {
#line 1906 "cplus.met"
                            PROG_EXIT(declarator_exit,"declarator")
#line 1906 "cplus.met"
                        }
#line 1906 "cplus.met"
                        ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1906 "cplus.met"
                        _ptTree0=_ptRes1;
#line 1906 "cplus.met"
                    }
#line 1906 "cplus.met"
                    _retValue =_ptTree0;
#line 1906 "cplus.met"
                    goto declarator_ret;
#line 1906 "cplus.met"
                }
#line 1906 "cplus.met"
                break;
#line 1906 "cplus.met"
#line 1909 "cplus.met"
            case POUV : 
#line 1909 "cplus.met"
                tokenAhead = 0 ;
#line 1909 "cplus.met"
                CommTerm();
#line 1909 "cplus.met"
#line 1908 "cplus.met"
#line 1909 "cplus.met"
                {
#line 1909 "cplus.met"
                    PPTREE _ptTree0,_ptRes0;
#line 1909 "cplus.met"
                    _ptRes0= MakeTree(TYP, 1);
#line 1909 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(declarator)(error_free), 34, cplus))== (PPTREE) -1 ) {
#line 1909 "cplus.met"
                        PROG_EXIT(declarator_exit,"declarator")
#line 1909 "cplus.met"
                    }
#line 1909 "cplus.met"
                    ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1909 "cplus.met"
                    retTree=_ptRes0;
#line 1909 "cplus.met"
                }
#line 1909 "cplus.met"
#line 1910 "cplus.met"
                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1910 "cplus.met"
                if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 1910 "cplus.met"
                    TOKEN_EXIT(declarator_exit,")")
#line 1910 "cplus.met"
#line 1911 "cplus.met"
                if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(declarator_follow), 35, cplus)){
#line 1911 "cplus.met"
#line 1912 "cplus.met"
                        { PPTREE theTree ;
#line 1912 "cplus.met"
                                               theTree = valTree ;
#line 1912 "cplus.met"
                                               if (theTree) {
#line 1912 "cplus.met"
                                                   while (SonTree(theTree,1))
#line 1912 "cplus.met"
                                                       if (NumberTree(theTree)
#line 1912 "cplus.met"
                                                               != RANGE_MODIFIER)
#line 1912 "cplus.met"
                                                           theTree = SonTree(theTree,1);
#line 1912 "cplus.met"
                                                       else
#line 1912 "cplus.met"
                                                           theTree = SonTree(theTree,2);
#line 1912 "cplus.met"
                                                   ReplaceTree(theTree,1,retTree);
#line 1912 "cplus.met"
                                                   /* modif portage sun */
#line 1912 "cplus.met"
                                                   retTree = valTree;
#line 1912 "cplus.met"
                                               }
#line 1912 "cplus.met"
                                           }
#line 1912 "cplus.met"
                      
#line 1912 "cplus.met"
                }
#line 1912 "cplus.met"
                break;
#line 1912 "cplus.met"
#line 1929 "cplus.met"
            case META : 
#line 1929 "cplus.met"
            case IDENT : 
#line 1929 "cplus.met"
#line 1930 "cplus.met"
#line 1931 "cplus.met"
                if ( (retTree=NQUICK_CALL(_Tak(qualified_name)(error_free), 93, cplus))== (PPTREE) -1 ) {
#line 1931 "cplus.met"
                    PROG_EXIT(declarator_exit,"declarator")
#line 1931 "cplus.met"
                }
#line 1931 "cplus.met"
#line 1932 "cplus.met"
                if (((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(DPOIDPOI,"::") && (tokenAhead = 0,CommTerm(),1)) && 
#line 1932 "cplus.met"
                   ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(ETOI,"*") && (tokenAhead = 0,CommTerm(),1))){
#line 1932 "cplus.met"
#line 1933 "cplus.met"
                    {
#line 1933 "cplus.met"
                        PPTREE _ptTree0;
#line 1933 "cplus.met"
                        {
#line 1933 "cplus.met"
                            PPTREE _ptTree1,_ptRes1;
#line 1933 "cplus.met"
                            _ptRes1= MakeTree(MEMBER_DECLARATOR, 2);
#line 1933 "cplus.met"
                            ReplaceTree(_ptRes1, 1, retTree );
#line 1933 "cplus.met"
                            if ( (_ptTree1=NQUICK_CALL(_Tak(declarator)(error_free), 34, cplus))== (PPTREE) -1 ) {
#line 1933 "cplus.met"
                                PROG_EXIT(declarator_exit,"declarator")
#line 1933 "cplus.met"
                            }
#line 1933 "cplus.met"
                            ReplaceTree(_ptRes1, 2, _ptTree1);
#line 1933 "cplus.met"
                            _ptTree0=_ptRes1;
#line 1933 "cplus.met"
                        }
#line 1933 "cplus.met"
                        _retValue =_ptTree0;
#line 1933 "cplus.met"
                        goto declarator_ret;
#line 1933 "cplus.met"
                    }
#line 1933 "cplus.met"
                }
#line 1933 "cplus.met"
#line 1935 "cplus.met"
                if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(declarator_follow), 35, cplus)){
#line 1935 "cplus.met"
#line 1936 "cplus.met"
                        { PPTREE theTree ;
#line 1936 "cplus.met"
                                               theTree = valTree ;
#line 1936 "cplus.met"
                                               if (theTree) {
#line 1936 "cplus.met"
                                                   while (SonTree(theTree,1))
#line 1936 "cplus.met"
                                                       if (NumberTree(theTree)
#line 1936 "cplus.met"
                                                               != RANGE_MODIFIER)
#line 1936 "cplus.met"
                                                           theTree = SonTree(theTree,1);
#line 1936 "cplus.met"
                                                       else
#line 1936 "cplus.met"
                                                           theTree = SonTree(theTree,2);
#line 1936 "cplus.met"
                                                   ReplaceTree(theTree,1,retTree);
#line 1936 "cplus.met"
                                                   /* modif portage sun */
#line 1936 "cplus.met"
                                                   retTree = valTree;
#line 1936 "cplus.met"
                                               }
#line 1936 "cplus.met"
                                           }
#line 1936 "cplus.met"
                      
#line 1936 "cplus.met"
                }
#line 1936 "cplus.met"
                break;
#line 1936 "cplus.met"
#line 1953 "cplus.met"
            case OPERATOR : 
#line 1953 "cplus.met"
#line 1954 "cplus.met"
#line 1955 "cplus.met"
                if ( (retTree=NQUICK_CALL(_Tak(operator_function_name)(error_free), 81, cplus))== (PPTREE) -1 ) {
#line 1955 "cplus.met"
                    PROG_EXIT(declarator_exit,"declarator")
#line 1955 "cplus.met"
                }
#line 1955 "cplus.met"
#line 1956 "cplus.met"
                if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(declarator_follow), 35, cplus)){
#line 1956 "cplus.met"
#line 1957 "cplus.met"
                        { PPTREE theTree ;
#line 1957 "cplus.met"
                                               theTree = valTree ;
#line 1957 "cplus.met"
                                               if (theTree) {
#line 1957 "cplus.met"
                                                   while (SonTree(theTree,1))
#line 1957 "cplus.met"
                                                       if (NumberTree(theTree)
#line 1957 "cplus.met"
                                                               != RANGE_MODIFIER)
#line 1957 "cplus.met"
                                                           theTree = SonTree(theTree,1);
#line 1957 "cplus.met"
                                                       else
#line 1957 "cplus.met"
                                                           theTree = SonTree(theTree,2);
#line 1957 "cplus.met"
                                                   ReplaceTree(theTree,1,retTree);
#line 1957 "cplus.met"
                                                   /* modif portage sun */
#line 1957 "cplus.met"
                                                   retTree = valTree;
#line 1957 "cplus.met"
                                               }
#line 1957 "cplus.met"
                                           }
#line 1957 "cplus.met"
                      
#line 1957 "cplus.met"
                }
#line 1957 "cplus.met"
                break;
#line 1957 "cplus.met"
            default :
#line 1957 "cplus.met"
                CASE_EXIT(declarator_exit,"either * or & or ~ or ( or IDENT or operator")
#line 1957 "cplus.met"
                break;
#line 1957 "cplus.met"
        }
#line 1957 "cplus.met"
    }
#line 1957 "cplus.met"
#line 1975 "cplus.met"
    {
#line 1975 "cplus.met"
        _retValue = retTree ;
#line 1975 "cplus.met"
        goto declarator_ret;
#line 1975 "cplus.met"
        
#line 1975 "cplus.met"
    }
#line 1975 "cplus.met"
#line 1976 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1976 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1976 "cplus.met"
return((PPTREE) 0);
#line 1976 "cplus.met"

#line 1976 "cplus.met"
declarator_exit :
#line 1976 "cplus.met"

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

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

#line 1976 "cplus.met"
#line 1866 "cplus.met"
PPTREE cplus::declarator_follow ( int error_free)
#line 1866 "cplus.met"
{
#line 1866 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1866 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1866 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1866 "cplus.met"
    int _Debug = TRACE_RULE("declarator_follow",TRACE_ENTER,(PPTREE)0);
#line 1866 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1866 "cplus.met"
#line 1866 "cplus.met"
    PPTREE retTree = (PPTREE) 0,expList = (PPTREE) 0,valTree = (PPTREE) 0;
#line 1866 "cplus.met"
#line 1868 "cplus.met"
    if ((! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( POUV,"("))) && 
#line 1868 "cplus.met"
       (! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( COUV,"[")))){
#line 1868 "cplus.met"
#line 1869 "cplus.met"
        LEX_EXIT ("",0);
#line 1869 "cplus.met"
        goto declarator_follow_exit;
#line 1869 "cplus.met"
#line 1869 "cplus.met"
    }
#line 1869 "cplus.met"
#line 1870 "cplus.met"
    while (((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( POUV,"(")) || 
#line 1870 "cplus.met"
          ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( COUV,"["))) { 
#line 1870 "cplus.met"
#line 1871 "cplus.met"
        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1871 "cplus.met"
        switch( lexEl.Value) {
#line 1871 "cplus.met"
#line 1874 "cplus.met"
            case COUV : 
#line 1874 "cplus.met"
                tokenAhead = 0 ;
#line 1874 "cplus.met"
                CommTerm();
#line 1874 "cplus.met"
#line 1873 "cplus.met"
#line 1874 "cplus.met"
                if (NPUSH_CALL_AFF_VERIF(expList = ,_Tak(expression), 47, cplus)){
#line 1874 "cplus.met"
#line 1875 "cplus.met"
                    {
#line 1875 "cplus.met"
                        PPTREE _ptRes0;
#line 1875 "cplus.met"
                        _ptRes0= MakeTree(TYP_ARRAY, 2);
#line 1875 "cplus.met"
                        ReplaceTree(_ptRes0, 1, retTree );
#line 1875 "cplus.met"
                        ReplaceTree(_ptRes0, 2, expList );
#line 1875 "cplus.met"
                        retTree=_ptRes0;
#line 1875 "cplus.met"
                    }
#line 1875 "cplus.met"
                } else {
#line 1875 "cplus.met"
#line 1877 "cplus.met"
                    {
#line 1877 "cplus.met"
                        PPTREE _ptRes0;
#line 1877 "cplus.met"
                        _ptRes0= MakeTree(TYP_ARRAY, 2);
#line 1877 "cplus.met"
                        ReplaceTree(_ptRes0, 1, retTree );
#line 1877 "cplus.met"
                        retTree=_ptRes0;
#line 1877 "cplus.met"
                    }
#line 1877 "cplus.met"
                }
#line 1877 "cplus.met"
#line 1878 "cplus.met"
                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1878 "cplus.met"
                if (  !SEE_TOKEN( CFER,"]") || !(CommTerm(),1)) 
#line 1878 "cplus.met"
                    TOKEN_EXIT(declarator_follow_exit,"]")
#line 1878 "cplus.met"
                break;
#line 1878 "cplus.met"
#line 1885 "cplus.met"
            case POUV : 
#line 1885 "cplus.met"
#line 1881 "cplus.met"
#line 1884 "cplus.met"
                if (NPUSH_CALL_AFF_VERIF(valTree = ,_Tak(arg_typ_declarator), 7, cplus)){
#line 1884 "cplus.met"
#line 1886 "cplus.met"
#line 1887 "cplus.met"
                    ReplaceTree(valTree ,1 ,retTree );
#line 1887 "cplus.met"
#line 1888 "cplus.met"
                    {
#line 1888 "cplus.met"
                        PPTREE _ptTree0;
#line 1888 "cplus.met"
                        if ( (_ptTree0=NQUICK_CALL(_Tak(range_modifier_ident)(error_free), 100, cplus))== (PPTREE) -1 ) {
#line 1888 "cplus.met"
                            PROG_EXIT(declarator_follow_exit,"declarator_follow")
#line 1888 "cplus.met"
                        }
#line 1888 "cplus.met"
                        ReplaceTree(valTree , 3 , _ptTree0);
#line 1888 "cplus.met"
                    }
#line 1888 "cplus.met"
#line 1889 "cplus.met"
                    retTree = valTree ;
#line 1889 "cplus.met"
#line 1890 "cplus.met"
                } else {
#line 1890 "cplus.met"
#line 1892 "cplus.met"
                    {
#line 1892 "cplus.met"
                        _retValue = retTree ;
#line 1892 "cplus.met"
                        goto declarator_follow_ret;
#line 1892 "cplus.met"
                        
#line 1892 "cplus.met"
                    }
#line 1892 "cplus.met"
                }
#line 1892 "cplus.met"
                break;
#line 1892 "cplus.met"
            default :
#line 1892 "cplus.met"
                CASE_EXIT(declarator_follow_exit,"either [ or (")
#line 1892 "cplus.met"
                break;
#line 1892 "cplus.met"
        }
#line 1892 "cplus.met"
    } 
#line 1892 "cplus.met"
#line 1895 "cplus.met"
    {
#line 1895 "cplus.met"
        _retValue = retTree ;
#line 1895 "cplus.met"
        goto declarator_follow_ret;
#line 1895 "cplus.met"
        
#line 1895 "cplus.met"
    }
#line 1895 "cplus.met"
#line 1896 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1896 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1896 "cplus.met"
return((PPTREE) 0);
#line 1896 "cplus.met"

#line 1896 "cplus.met"
declarator_follow_exit :
#line 1896 "cplus.met"

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

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

#line 1896 "cplus.met"
#line 1276 "cplus.met"
PPTREE cplus::declarator_list ( int error_free)
#line 1276 "cplus.met"
{
#line 1276 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1276 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1276 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1276 "cplus.met"
    int _Debug = TRACE_RULE("declarator_list",TRACE_ENTER,(PPTREE)0);
#line 1276 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1276 "cplus.met"
#line 1276 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 1276 "cplus.met"
#line 1276 "cplus.met"
    PPTREE list = (PPTREE) 0;
#line 1276 "cplus.met"
#line 1276 "cplus.met"
    _addlist1 = list ;
#line 1276 "cplus.met"
#line 1278 "cplus.met"
    do {
#line 1278 "cplus.met"
#line 1279 "cplus.met"
        {
#line 1279 "cplus.met"
            PPTREE _ptTree0;
#line 1279 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(declarator)(error_free), 34, cplus))== (PPTREE) -1 ) {
#line 1279 "cplus.met"
                PROG_EXIT(declarator_list_exit,"declarator_list")
#line 1279 "cplus.met"
            }
#line 1279 "cplus.met"
            _addlist1 =AddList(_addlist1 , _ptTree0);
#line 1279 "cplus.met"
        }
#line 1279 "cplus.met"
#line 1279 "cplus.met"
        if (list){
#line 1279 "cplus.met"
#line 1279 "cplus.met"
            _addlist1 = SonTree (_addlist1 ,2 );
#line 1279 "cplus.met"
        } else {
#line 1279 "cplus.met"
#line 1279 "cplus.met"
            list = _addlist1 ;
#line 1279 "cplus.met"
        }
#line 1279 "cplus.met"
#line 1280 "cplus.met"
    } while ( !(! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(VIRG,",") && (tokenAhead = 0,CommTerm(),1)))) ;
#line 1280 "cplus.met"
#line 1281 "cplus.met"
    {
#line 1281 "cplus.met"
        _retValue = list ;
#line 1281 "cplus.met"
        goto declarator_list_ret;
#line 1281 "cplus.met"
        
#line 1281 "cplus.met"
    }
#line 1281 "cplus.met"
#line 1282 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1282 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1282 "cplus.met"
return((PPTREE) 0);
#line 1282 "cplus.met"

#line 1282 "cplus.met"
declarator_list_exit :
#line 1282 "cplus.met"

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

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

#line 1282 "cplus.met"
#line 1267 "cplus.met"
PPTREE cplus::declarator_list_init ( int error_free)
#line 1267 "cplus.met"
{
#line 1267 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1267 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1267 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1267 "cplus.met"
    int _Debug = TRACE_RULE("declarator_list_init",TRACE_ENTER,(PPTREE)0);
#line 1267 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1267 "cplus.met"
#line 1267 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 1267 "cplus.met"
#line 1267 "cplus.met"
    PPTREE list = (PPTREE) 0;
#line 1267 "cplus.met"
#line 1267 "cplus.met"
    _addlist1 = list ;
#line 1267 "cplus.met"
#line 1269 "cplus.met"
    do {
#line 1269 "cplus.met"
#line 1270 "cplus.met"
        {
#line 1270 "cplus.met"
            PPTREE _ptTree0;
#line 1270 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(declarator_value)(error_free), 38, cplus))== (PPTREE) -1 ) {
#line 1270 "cplus.met"
                PROG_EXIT(declarator_list_init_exit,"declarator_list_init")
#line 1270 "cplus.met"
            }
#line 1270 "cplus.met"
            _addlist1 =AddList(_addlist1 , _ptTree0);
#line 1270 "cplus.met"
        }
#line 1270 "cplus.met"
#line 1270 "cplus.met"
        if (list){
#line 1270 "cplus.met"
#line 1270 "cplus.met"
            _addlist1 = SonTree (_addlist1 ,2 );
#line 1270 "cplus.met"
        } else {
#line 1270 "cplus.met"
#line 1270 "cplus.met"
            list = _addlist1 ;
#line 1270 "cplus.met"
        }
#line 1270 "cplus.met"
#line 1271 "cplus.met"
    } while ( !(! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(VIRG,",") && (tokenAhead = 0,CommTerm(),1)))) ;
#line 1271 "cplus.met"
#line 1272 "cplus.met"
    {
#line 1272 "cplus.met"
        _retValue = list ;
#line 1272 "cplus.met"
        goto declarator_list_init_ret;
#line 1272 "cplus.met"
        
#line 1272 "cplus.met"
    }
#line 1272 "cplus.met"
#line 1273 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1273 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1273 "cplus.met"
return((PPTREE) 0);
#line 1273 "cplus.met"

#line 1273 "cplus.met"
declarator_list_init_exit :
#line 1273 "cplus.met"

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

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

#line 1273 "cplus.met"
#line 1252 "cplus.met"
PPTREE cplus::declarator_value ( int error_free)
#line 1252 "cplus.met"
{
#line 1252 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1252 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1252 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1252 "cplus.met"
    int _Debug = TRACE_RULE("declarator_value",TRACE_ENTER,(PPTREE)0);
#line 1252 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1252 "cplus.met"
#line 1252 "cplus.met"
    PPTREE valTree = (PPTREE) 0;
#line 1252 "cplus.met"
#line 1254 "cplus.met"
    if ( (valTree=NQUICK_CALL(_Tak(declarator)(error_free), 34, cplus))== (PPTREE) -1 ) {
#line 1254 "cplus.met"
        PROG_EXIT(declarator_value_exit,"declarator_value")
#line 1254 "cplus.met"
    }
#line 1254 "cplus.met"
#line 1255 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1255 "cplus.met"
    switch( lexEl.Value) {
#line 1255 "cplus.met"
#line 1256 "cplus.met"
        case EGAL : 
#line 1256 "cplus.met"
            tokenAhead = 0 ;
#line 1256 "cplus.met"
            CommTerm();
#line 1256 "cplus.met"
#line 1256 "cplus.met"
            {
#line 1256 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 1256 "cplus.met"
                _ptRes0= MakeTree(TYP_AFF, 2);
#line 1256 "cplus.met"
                ReplaceTree(_ptRes0, 1, valTree );
#line 1256 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(initializer)(error_free), 63, cplus))== (PPTREE) -1 ) {
#line 1256 "cplus.met"
                    PROG_EXIT(declarator_value_exit,"declarator_value")
#line 1256 "cplus.met"
                }
#line 1256 "cplus.met"
                ReplaceTree(_ptRes0, 2, _ptTree0);
#line 1256 "cplus.met"
                valTree=_ptRes0;
#line 1256 "cplus.met"
            }
#line 1256 "cplus.met"
            break;
#line 1256 "cplus.met"
#line 1259 "cplus.met"
        case POUV : 
#line 1259 "cplus.met"
            tokenAhead = 0 ;
#line 1259 "cplus.met"
            CommTerm();
#line 1259 "cplus.met"
#line 1258 "cplus.met"
#line 1259 "cplus.met"
            {
#line 1259 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 1259 "cplus.met"
                _ptRes0= MakeTree(TYP_AFF_CALL, 2);
#line 1259 "cplus.met"
                ReplaceTree(_ptRes0, 1, valTree );
#line 1259 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 1259 "cplus.met"
                    PROG_EXIT(declarator_value_exit,"declarator_value")
#line 1259 "cplus.met"
                }
#line 1259 "cplus.met"
                ReplaceTree(_ptRes0, 2, _ptTree0);
#line 1259 "cplus.met"
                valTree=_ptRes0;
#line 1259 "cplus.met"
            }
#line 1259 "cplus.met"
#line 1260 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1260 "cplus.met"
            if (  !SEE_TOKEN( PFER,")") || !(CommTerm(),1)) 
#line 1260 "cplus.met"
                TOKEN_EXIT(declarator_value_exit,")")
#line 1260 "cplus.met"
            break;
#line 1260 "cplus.met"
#line 1260 "cplus.met"
        default : 
#line 1260 "cplus.met"
#line 1260 "cplus.met"
            break;
#line 1260 "cplus.met"
    }
#line 1260 "cplus.met"
#line 1264 "cplus.met"
    {
#line 1264 "cplus.met"
        _retValue = valTree ;
#line 1264 "cplus.met"
        goto declarator_value_ret;
#line 1264 "cplus.met"
        
#line 1264 "cplus.met"
    }
#line 1264 "cplus.met"
#line 1265 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1265 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1265 "cplus.met"
return((PPTREE) 0);
#line 1265 "cplus.met"

#line 1265 "cplus.met"
declarator_value_exit :
#line 1265 "cplus.met"

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

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

#line 1265 "cplus.met"
#line 1206 "cplus.met"
PPTREE cplus::define_dir ( int error_free)
#line 1206 "cplus.met"
{
#line 1206 "cplus.met"
    int  _oldkeepCarriage = keepCarriage;
#line 1206 "cplus.met"
    int  _oldkeepAll = keepAll;
#line 1206 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1206 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1206 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1206 "cplus.met"
    int _Debug = TRACE_RULE("define_dir",TRACE_ENTER,(PPTREE)0);
#line 1206 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1206 "cplus.met"
#line 1206 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 1206 "cplus.met"
#line 1206 "cplus.met"
    PPTREE retTree = (PPTREE) 0,listDefine = (PPTREE) 0,defineContent = (PPTREE) 0;
#line 1206 "cplus.met"
#line 1208 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1208 "cplus.met"
    if ( ! TERM_OR_META(DEFINE_DIR,"DEFINE_DIR") || !(CommTerm(),1)) 
#line 1208 "cplus.met"
        TOKEN_EXIT(define_dir_exit,"DEFINE_DIR")
#line 1208 "cplus.met"
#line 1209 "cplus.met"
    {
#line 1209 "cplus.met"
        PPTREE _ptTree0,_ptRes0;
#line 1209 "cplus.met"
        _ptRes0= MakeTree(DEFINE_DIR, 3);
#line 1209 "cplus.met"
        {
#line 1209 "cplus.met"
            PPTREE _ptTree1,_ptRes1;
#line 1209 "cplus.met"
            _ptRes1= MakeTree(IDENT, 1);
#line 1209 "cplus.met"
            (tokenAhead == 4|| (LexDefineName(),TRACE_LEX(1)));
#line 1209 "cplus.met"
            if ( ! TERM_OR_META(DEFINE_NAME,"DEFINE_NAME") || !(BUILD_TERM_META(_ptTree1))) 
#line 1209 "cplus.met"
                TOKEN_EXIT(define_dir_exit,"DEFINE_NAME")
#line 1209 "cplus.met"
            ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1209 "cplus.met"
            _ptTree0=_ptRes1;
#line 1209 "cplus.met"
        }
#line 1209 "cplus.met"
        ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1209 "cplus.met"
        retTree=_ptRes0;
#line 1209 "cplus.met"
    }
#line 1209 "cplus.met"
#line 1210 "cplus.met"
    {
#line 1210 "cplus.met"
        keepCarriage = 1 ;
#line 1210 "cplus.met"
#line 1211 "cplus.met"
#line 1212 "cplus.met"
        if ((!tokenAhead || ExtUnputBuf ()) && (GetString("(",0))){
#line 1212 "cplus.met"
#line 1213 "cplus.met"
            {
#line 1213 "cplus.met"
                PPTREE _ptTree0;
#line 1213 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(parameter_list)(error_free), 83, cplus))== (PPTREE) -1 ) {
#line 1213 "cplus.met"
                    PROG_EXIT(define_dir_exit,"define_dir")
#line 1213 "cplus.met"
                }
#line 1213 "cplus.met"
                ReplaceTree(retTree , 2 , _ptTree0);
#line 1213 "cplus.met"
            }
#line 1213 "cplus.met"
#line 1213 "cplus.met"
        }
#line 1213 "cplus.met"
#line 1214 "cplus.met"
        ExtUnputBuf();
#line 1214 "cplus.met"
        while ((c == ' ')||(c == '\t'))
#line 1214 "cplus.met"
            NextChar() ;
#line 1214 "cplus.met"
        ptStockBuf = -1;
#line 1214 "cplus.met"
        *lexEl.string = '\0';
#line 1214 "cplus.met"
        _nbCharact = 0;
#line 1214 "cplus.met"
        tokenAhead = 0;
#line 1214 "cplus.met"
        _ptString = lexEl.string ;
#line 1214 "cplus.met"
        oldLine=line,oldCol=col;
#line 1214 "cplus.met"
        if ( !lexCallLex) {
#line 1214 "cplus.met"
            PUT_COORD_CALL;
#line 1214 "cplus.met"
        }
#line 1214 "cplus.met"
#line 1215 "cplus.met"
        {
#line 1215 "cplus.met"
            keepAll = 1 ;
#line 1215 "cplus.met"
#line 1216 "cplus.met"
#line 1216 "cplus.met"
            _addlist1 = listDefine ;
#line 1216 "cplus.met"
#line 1217 "cplus.met"
            while ((tokenAhead == 3|| (LexDefine(),TRACE_LEX(1)))&&TERM_OR_META(DEFINED_CONTINUED,"DEFINED_CONTINUED") && !(tokenAhead = 0) && ( BUILD_TERM_META(defineContent)))  { 
#line 1217 "cplus.met"
#line 1218 "cplus.met"
#line 1218 "cplus.met"
                _addlist1 =AddList(_addlist1 ,defineContent );
#line 1218 "cplus.met"
#line 1218 "cplus.met"
                if (listDefine){
#line 1218 "cplus.met"
#line 1218 "cplus.met"
                    _addlist1 = SonTree (_addlist1 ,2 );
#line 1218 "cplus.met"
                } else {
#line 1218 "cplus.met"
#line 1218 "cplus.met"
                    listDefine = _addlist1 ;
#line 1218 "cplus.met"
                }
#line 1218 "cplus.met"
            } 
#line 1218 "cplus.met"
#line 1219 "cplus.met"
            {
#line 1219 "cplus.met"
                PPTREE _ptTree0;
#line 1219 "cplus.met"
                (tokenAhead == 3|| (LexDefine(),TRACE_LEX(1)));
#line 1219 "cplus.met"
                if ( ! TERM_OR_META(DEFINED_NOT_CONTINUED,"DEFINED_NOT_CONTINUED") || !(BUILD_TERM_META(_ptTree0))) 
#line 1219 "cplus.met"
                    TOKEN_EXIT(define_dir_exit,"DEFINED_NOT_CONTINUED")
#line 1219 "cplus.met"
                listDefine =AddList(listDefine , _ptTree0);
#line 1219 "cplus.met"
            }
#line 1219 "cplus.met"
            keepAll =  _oldkeepAll;
#line 1219 "cplus.met"
        }
#line 1219 "cplus.met"
        keepCarriage =  _oldkeepCarriage;
#line 1219 "cplus.met"
    }
#line 1219 "cplus.met"
#line 1222 "cplus.met"
    {
#line 1222 "cplus.met"
        PPTREE _ptTree0;
#line 1222 "cplus.met"
        _ptTree0=ReplaceTree(retTree ,3 ,listDefine );
#line 1222 "cplus.met"
        _retValue =_ptTree0;
#line 1222 "cplus.met"
        goto define_dir_ret;
#line 1222 "cplus.met"
    }
#line 1222 "cplus.met"
#line 1223 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1223 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1223 "cplus.met"
keepCarriage =  _oldkeepCarriage;
#line 1223 "cplus.met"
keepAll =  _oldkeepAll;
#line 1223 "cplus.met"
return((PPTREE) 0);
#line 1223 "cplus.met"

#line 1223 "cplus.met"
define_dir_exit :
#line 1223 "cplus.met"

#line 1223 "cplus.met"
    {
#line 1223 "cplus.met"
        MulFreeTree(4,defineContent,listDefine,retTree,_addlist1);
#line 1223 "cplus.met"
    }
#line 1223 "cplus.met"
    _Debug = TRACE_RULE("define_dir",TRACE_EXIT,(PPTREE)0);
#line 1223 "cplus.met"
    _funcLevel--;
#line 1223 "cplus.met"
    keepCarriage =  _oldkeepCarriage;
#line 1223 "cplus.met"
    keepAll =  _oldkeepAll;
#line 1223 "cplus.met"
    return((PPTREE) -1) ;
#line 1223 "cplus.met"

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

#line 1223 "cplus.met"
#line 1060 "cplus.met"
PPTREE cplus::directive ( int error_free)
#line 1060 "cplus.met"
{
#line 1060 "cplus.met"
    int  _oldkeepCarriage = keepCarriage;
#line 1060 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1060 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1060 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1060 "cplus.met"
    int _Debug = TRACE_RULE("directive",TRACE_ENTER,(PPTREE)0);
#line 1060 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1060 "cplus.met"
#line 1060 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 1060 "cplus.met"
#line 1060 "cplus.met"
    PPTREE retTree = (PPTREE) 0,interTree = (PPTREE) 0,list = (PPTREE) 0;
#line 1060 "cplus.met"
#line 1062 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1062 "cplus.met"
    switch( lexEl.Value) {
#line 1062 "cplus.met"
#line 1063 "cplus.met"
        case META : 
#line 1063 "cplus.met"
        case DEFINE_DIR : 
#line 1063 "cplus.met"
#line 1063 "cplus.met"
            {
#line 1063 "cplus.met"
                PPTREE _ptTree0;
#line 1063 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(define_dir)(error_free), 39, cplus))== (PPTREE) -1 ) {
#line 1063 "cplus.met"
                    PROG_EXIT(directive_exit,"directive")
#line 1063 "cplus.met"
                }
#line 1063 "cplus.met"
                _retValue =_ptTree0;
#line 1063 "cplus.met"
                goto directive_ret;
#line 1063 "cplus.met"
            }
#line 1063 "cplus.met"
            break;
#line 1063 "cplus.met"
#line 1064 "cplus.met"
        case INCLUDE_DIR : 
#line 1064 "cplus.met"
#line 1064 "cplus.met"
            {
#line 1064 "cplus.met"
                PPTREE _ptTree0;
#line 1064 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(include_dir)(error_free), 61, cplus))== (PPTREE) -1 ) {
#line 1064 "cplus.met"
                    PROG_EXIT(directive_exit,"directive")
#line 1064 "cplus.met"
                }
#line 1064 "cplus.met"
                _retValue =_ptTree0;
#line 1064 "cplus.met"
                goto directive_ret;
#line 1064 "cplus.met"
            }
#line 1064 "cplus.met"
            break;
#line 1064 "cplus.met"
#line 1065 "cplus.met"
        case LINE_DIR : 
#line 1065 "cplus.met"
            tokenAhead = 0 ;
#line 1065 "cplus.met"
            CommTerm();
#line 1065 "cplus.met"
#line 1066 "cplus.met"
#line 1067 "cplus.met"
            {
#line 1067 "cplus.met"
                keepCarriage = 1 ;
#line 1067 "cplus.met"
#line 1068 "cplus.met"
#line 1069 "cplus.met"
                {
#line 1069 "cplus.met"
                    PPTREE _ptTree0,_ptRes0;
#line 1069 "cplus.met"
                    _ptRes0= MakeTree(LINE_DIR, 2);
#line 1069 "cplus.met"
                    if ( (_ptTree0=NQUICK_CALL(_Tak(expression)(error_free), 47, cplus))== (PPTREE) -1 ) {
#line 1069 "cplus.met"
                        PROG_EXIT(directive_exit,"directive")
#line 1069 "cplus.met"
                    }
#line 1069 "cplus.met"
                    ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1069 "cplus.met"
                    retTree=_ptRes0;
#line 1069 "cplus.met"
                }
#line 1069 "cplus.met"
#line 1070 "cplus.met"
                if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&TERM_OR_META(STRING,"STRING") && !(tokenAhead = 0) && ( BUILD_TERM_META(interTree))) {
#line 1070 "cplus.met"
#line 1071 "cplus.met"
                    {
#line 1071 "cplus.met"
                        PPTREE _ptTree0;
#line 1071 "cplus.met"
                        {
#line 1071 "cplus.met"
                            PPTREE _ptRes1;
#line 1071 "cplus.met"
                            _ptRes1= MakeTree(STRING, 1);
#line 1071 "cplus.met"
                            ReplaceTree(_ptRes1, 1, interTree );
#line 1071 "cplus.met"
                            _ptTree0=_ptRes1;
#line 1071 "cplus.met"
                        }
#line 1071 "cplus.met"
                        ReplaceTree(retTree , 2 , _ptTree0);
#line 1071 "cplus.met"
                    }
#line 1071 "cplus.met"
#line 1071 "cplus.met"
                }
#line 1071 "cplus.met"
#line 1072 "cplus.met"
                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1072 "cplus.met"
                if ( ! TERM_OR_META(CARRIAGE_RETURN,"CARRIAGE_RETURN") || !(CommTerm(),1)) 
#line 1072 "cplus.met"
                    TOKEN_EXIT(directive_exit,"CARRIAGE_RETURN")
#line 1072 "cplus.met"
                keepCarriage =  _oldkeepCarriage;
#line 1072 "cplus.met"
            }
#line 1072 "cplus.met"
#line 1074 "cplus.met"
            {
#line 1074 "cplus.met"
                _retValue = retTree ;
#line 1074 "cplus.met"
                goto directive_ret;
#line 1074 "cplus.met"
                
#line 1074 "cplus.met"
            }
#line 1074 "cplus.met"
            break;
#line 1074 "cplus.met"
#line 1076 "cplus.met"
        case UNDEF_DIR : 
#line 1076 "cplus.met"
            tokenAhead = 0 ;
#line 1076 "cplus.met"
            CommTerm();
#line 1076 "cplus.met"
#line 1076 "cplus.met"
            {
#line 1076 "cplus.met"
                PPTREE _ptTree0;
#line 1076 "cplus.met"
                {
#line 1076 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1076 "cplus.met"
                    _ptRes1= MakeTree(UNDEF, 1);
#line 1076 "cplus.met"
                    (tokenAhead == 10|| (LexUndef(),TRACE_LEX(1)));
#line 1076 "cplus.met"
                    if ( ! TERM_OR_META(UNDEF_CONTENT,"UNDEF_CONTENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 1076 "cplus.met"
                        TOKEN_EXIT(directive_exit,"UNDEF_CONTENT")
#line 1076 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1076 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1076 "cplus.met"
                }
#line 1076 "cplus.met"
                _retValue =_ptTree0;
#line 1076 "cplus.met"
                goto directive_ret;
#line 1076 "cplus.met"
            }
#line 1076 "cplus.met"
            break;
#line 1076 "cplus.met"
#line 1077 "cplus.met"
        case ERROR_DIR : 
#line 1077 "cplus.met"
            tokenAhead = 0 ;
#line 1077 "cplus.met"
            CommTerm();
#line 1077 "cplus.met"
#line 1077 "cplus.met"
            {
#line 1077 "cplus.met"
                PPTREE _ptTree0;
#line 1077 "cplus.met"
                {
#line 1077 "cplus.met"
                    PPTREE _ptTree1,_ptRes1;
#line 1077 "cplus.met"
                    _ptRes1= MakeTree(ERROR, 1);
#line 1077 "cplus.met"
                    (tokenAhead == 5|| (LexEndLine(),TRACE_LEX(1)));
#line 1077 "cplus.met"
                    if ( ! TERM_OR_META(END_LINE,"END_LINE") || !(BUILD_TERM_META(_ptTree1))) 
#line 1077 "cplus.met"
                        TOKEN_EXIT(directive_exit,"END_LINE")
#line 1077 "cplus.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1077 "cplus.met"
                    _ptTree0=_ptRes1;
#line 1077 "cplus.met"
                }
#line 1077 "cplus.met"
                _retValue =_ptTree0;
#line 1077 "cplus.met"
                goto directive_ret;
#line 1077 "cplus.met"
            }
#line 1077 "cplus.met"
            break;
#line 1077 "cplus.met"
#line 1078 "cplus.met"
        case PRAGMA_DIR : 
#line 1078 "cplus.met"
            tokenAhead = 0 ;
#line 1078 "cplus.met"
            CommTerm();
#line 1078 "cplus.met"
#line 1079 "cplus.met"
#line 1080 "cplus.met"
#line 1081 "cplus.met"
            if(((tokenAhead == 8|| (LexPragma(),TRACE_LEX(1)))&&TERM_OR_META(PRAGMA_NOPRETTY,"PRAGMA_NOPRETTY") && (tokenAhead = 0,CommTerm(),1))){
#line 1081 "cplus.met"
#line 1081 "cplus.met"
                {
#line 1081 "cplus.met"
                    keepCarriage = 1 ;
#line 1081 "cplus.met"
#line 1082 "cplus.met"
#line 1083 "cplus.met"
                    (tokenAhead == 5|| (LexEndLine(),TRACE_LEX(1)));
#line 1083 "cplus.met"
                    if ( ! TERM_OR_META(END_LINE,"END_LINE") || !(CommTerm(),1)) 
#line 1083 "cplus.met"
                        TOKEN_EXIT(directive_exit,"END_LINE")
#line 1083 "cplus.met"
#line 1083 "cplus.met"
                    _addlist1 = list ;
#line 1083 "cplus.met"
#line 1084 "cplus.met"
                    while (! (NPUSH_CALL_VERIF(_Tak(end_pragma), 41, cplus))) { 
#line 1084 "cplus.met"
#line 1085 "cplus.met"
#line 1085 "cplus.met"
                        {
#line 1085 "cplus.met"
                            PPTREE _ptTree0;
#line 1085 "cplus.met"
                            (tokenAhead == 5|| (LexEndLine(),TRACE_LEX(1)));
#line 1085 "cplus.met"
                            if ( ! TERM_OR_META(END_LINE,"END_LINE") || !(BUILD_TERM_META(_ptTree0))) 
#line 1085 "cplus.met"
                                TOKEN_EXIT(directive_exit,"END_LINE")
#line 1085 "cplus.met"
                            _addlist1 =AddList(_addlist1 , _ptTree0);
#line 1085 "cplus.met"
                        }
#line 1085 "cplus.met"
#line 1085 "cplus.met"
                        if (list){
#line 1085 "cplus.met"
#line 1085 "cplus.met"
                            _addlist1 = SonTree (_addlist1 ,2 );
#line 1085 "cplus.met"
                        } else {
#line 1085 "cplus.met"
#line 1085 "cplus.met"
                            list = _addlist1 ;
#line 1085 "cplus.met"
                        }
#line 1085 "cplus.met"
                    } 
#line 1085 "cplus.met"
#line 1086 "cplus.met"
                    if ( (NQUICK_CALL(_Tak(end_pragma)(error_free), 41, cplus))== (PPTREE) -1 ) {
#line 1086 "cplus.met"
                        PROG_EXIT(directive_exit,"directive")
#line 1086 "cplus.met"
                    }
#line 1086 "cplus.met"
#line 1087 "cplus.met"
                    {
#line 1087 "cplus.met"
                        PPTREE _ptTree0;
#line 1087 "cplus.met"
                        {
#line 1087 "cplus.met"
                            PPTREE _ptRes1;
#line 1087 "cplus.met"
                            _ptRes1= MakeTree(NO_PRETTY, 1);
#line 1087 "cplus.met"
                            ReplaceTree(_ptRes1, 1, list );
#line 1087 "cplus.met"
                            _ptTree0=_ptRes1;
#line 1087 "cplus.met"
                        }
#line 1087 "cplus.met"
                        _retValue =_ptTree0;
#line 1087 "cplus.met"
                        goto directive_ret;
#line 1087 "cplus.met"
                    }
#line 1087 "cplus.met"
                    keepCarriage =  _oldkeepCarriage;
#line 1087 "cplus.met"
                }
#line 1087 "cplus.met"
            } else 
#line 1087 "cplus.met"
#line 1089 "cplus.met"
            if(((tokenAhead == 8|| (LexPragma(),TRACE_LEX(1)))&&TERM_OR_META(PRAGMA_CONFIG,"PRAGMA_CONFIG") && (tokenAhead = 0,CommTerm(),1))){
#line 1089 "cplus.met"
#line 1090 "cplus.met"
#line 1091 "cplus.met"
                (tokenAhead == 8|| (LexPragma(),TRACE_LEX(1)));
#line 1091 "cplus.met"
                switch( lexEl.Value) {
#line 1091 "cplus.met"
#line 1092 "cplus.met"
                    case META : 
#line 1092 "cplus.met"
                    case PRAGMA_TAB : 
#line 1092 "cplus.met"
                        tokenAhead = 0 ;
#line 1092 "cplus.met"
                        CommTerm();
#line 1092 "cplus.met"
#line 1093 "cplus.met"
#line 1094 "cplus.met"
                        {
#line 1094 "cplus.met"
                            PPTREE _ptTree0,_ptRes0;
#line 1094 "cplus.met"
                            _ptRes0= MakeTree(CONFIG, 1);
#line 1094 "cplus.met"
                            {
#line 1094 "cplus.met"
                                PPTREE _ptTree1,_ptRes1;
#line 1094 "cplus.met"
                                _ptRes1= MakeTree(TAB_VALUE, 1);
#line 1094 "cplus.met"
                                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1094 "cplus.met"
                                if ( ! TERM_OR_META(INTEGER,"INTEGER") || !(BUILD_TERM_META(_ptTree1))) 
#line 1094 "cplus.met"
                                    TOKEN_EXIT(directive_exit,"INTEGER")
#line 1094 "cplus.met"
                                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1094 "cplus.met"
                                _ptTree0=_ptRes1;
#line 1094 "cplus.met"
                            }
#line 1094 "cplus.met"
                            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1094 "cplus.met"
                            retTree=_ptRes0;
#line 1094 "cplus.met"
                        }
#line 1094 "cplus.met"
#line 1097 "cplus.met"
                        AnalyzeTab (retTree );
#line 1097 "cplus.met"
#line 1098 "cplus.met"
                        {
#line 1098 "cplus.met"
                            _retValue = retTree ;
#line 1098 "cplus.met"
                            goto directive_ret;
#line 1098 "cplus.met"
                            
#line 1098 "cplus.met"
                        }
#line 1098 "cplus.met"
                        break;
#line 1098 "cplus.met"
#line 1100 "cplus.met"
                    case PRAGMA_MODE : 
#line 1100 "cplus.met"
                        tokenAhead = 0 ;
#line 1100 "cplus.met"
                        CommTerm();
#line 1100 "cplus.met"
#line 1101 "cplus.met"
#line 1102 "cplus.met"
                        {
#line 1102 "cplus.met"
                            PPTREE _ptTree0,_ptRes0;
#line 1102 "cplus.met"
                            _ptRes0= MakeTree(CONFIG, 1);
#line 1102 "cplus.met"
                            {
#line 1102 "cplus.met"
                                PPTREE _ptTree1,_ptRes1;
#line 1102 "cplus.met"
                                _ptRes1= MakeTree(MODE_VALUE, 1);
#line 1102 "cplus.met"
                                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1102 "cplus.met"
                                if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 1102 "cplus.met"
                                    TOKEN_EXIT(directive_exit,"IDENT")
#line 1102 "cplus.met"
                                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1102 "cplus.met"
                                _ptTree0=_ptRes1;
#line 1102 "cplus.met"
                            }
#line 1102 "cplus.met"
                            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1102 "cplus.met"
                            retTree=_ptRes0;
#line 1102 "cplus.met"
                        }
#line 1102 "cplus.met"
#line 1105 "cplus.met"
                        AnalyzeMode (retTree );
#line 1105 "cplus.met"
#line 1106 "cplus.met"
                        {
#line 1106 "cplus.met"
                            _retValue = retTree ;
#line 1106 "cplus.met"
                            goto directive_ret;
#line 1106 "cplus.met"
                            
#line 1106 "cplus.met"
                        }
#line 1106 "cplus.met"
                        break;
#line 1106 "cplus.met"
#line 1108 "cplus.met"
                    case PRAGMA_SIMPLIFY : 
#line 1108 "cplus.met"
                        tokenAhead = 0 ;
#line 1108 "cplus.met"
                        CommTerm();
#line 1108 "cplus.met"
#line 1109 "cplus.met"
#line 1110 "cplus.met"
                        {
#line 1110 "cplus.met"
                            PPTREE _ptTree0,_ptRes0;
#line 1110 "cplus.met"
                            _ptRes0= MakeTree(SIMPLIFY, 1);
#line 1110 "cplus.met"
                            {
#line 1110 "cplus.met"
                                PPTREE _ptTree1,_ptRes1;
#line 1110 "cplus.met"
                                _ptRes1= MakeTree(SIMPLIFY_VALUE, 1);
#line 1110 "cplus.met"
                                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1110 "cplus.met"
                                if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 1110 "cplus.met"
                                    TOKEN_EXIT(directive_exit,"IDENT")
#line 1110 "cplus.met"
                                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1110 "cplus.met"
                                _ptTree0=_ptRes1;
#line 1110 "cplus.met"
                            }
#line 1110 "cplus.met"
                            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1110 "cplus.met"
                            retTree=_ptRes0;
#line 1110 "cplus.met"
                        }
#line 1110 "cplus.met"
#line 1113 "cplus.met"
                        AnalyzeSimplify (retTree );
#line 1113 "cplus.met"
#line 1114 "cplus.met"
                        {
#line 1114 "cplus.met"
                            _retValue = retTree ;
#line 1114 "cplus.met"
                            goto directive_ret;
#line 1114 "cplus.met"
                            
#line 1114 "cplus.met"
                        }
#line 1114 "cplus.met"
                        break;
#line 1114 "cplus.met"
#line 1116 "cplus.met"
                    case PRAGMA_SINGLE_SWITCH_INDENT : 
#line 1116 "cplus.met"
                        tokenAhead = 0 ;
#line 1116 "cplus.met"
                        CommTerm();
#line 1116 "cplus.met"
#line 1117 "cplus.met"
#line 1118 "cplus.met"
                        {
#line 1118 "cplus.met"
                            PPTREE _ptTree0,_ptRes0;
#line 1118 "cplus.met"
                            _ptRes0= MakeTree(CONFIG, 1);
#line 1118 "cplus.met"
                            {
#line 1118 "cplus.met"
                                PPTREE _ptTree1,_ptRes1;
#line 1118 "cplus.met"
                                _ptRes1= MakeTree(SINGLE_SWITCH_INDENT_VALUE, 1);
#line 1118 "cplus.met"
                                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1118 "cplus.met"
                                if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 1118 "cplus.met"
                                    TOKEN_EXIT(directive_exit,"IDENT")
#line 1118 "cplus.met"
                                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1118 "cplus.met"
                                _ptTree0=_ptRes1;
#line 1118 "cplus.met"
                            }
#line 1118 "cplus.met"
                            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1118 "cplus.met"
                            retTree=_ptRes0;
#line 1118 "cplus.met"
                        }
#line 1118 "cplus.met"
#line 1122 "cplus.met"
                        AnalyzeSingleSwitchIndent (retTree );
#line 1122 "cplus.met"
#line 1123 "cplus.met"
                        {
#line 1123 "cplus.met"
                            _retValue = retTree ;
#line 1123 "cplus.met"
                            goto directive_ret;
#line 1123 "cplus.met"
                            
#line 1123 "cplus.met"
                        }
#line 1123 "cplus.met"
                        break;
#line 1123 "cplus.met"
#line 1125 "cplus.met"
                    case PRAGMA_ASSIGN_ALIGN : 
#line 1125 "cplus.met"
                        tokenAhead = 0 ;
#line 1125 "cplus.met"
                        CommTerm();
#line 1125 "cplus.met"
#line 1126 "cplus.met"
#line 1127 "cplus.met"
                        {
#line 1127 "cplus.met"
                            PPTREE _ptTree0,_ptRes0;
#line 1127 "cplus.met"
                            _ptRes0= MakeTree(CONFIG, 1);
#line 1127 "cplus.met"
                            {
#line 1127 "cplus.met"
                                PPTREE _ptTree1,_ptRes1;
#line 1127 "cplus.met"
                                _ptRes1= MakeTree(ASSIGN_ALIGN, 1);
#line 1127 "cplus.met"
                                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1127 "cplus.met"
                                if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 1127 "cplus.met"
                                    TOKEN_EXIT(directive_exit,"IDENT")
#line 1127 "cplus.met"
                                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1127 "cplus.met"
                                _ptTree0=_ptRes1;
#line 1127 "cplus.met"
                            }
#line 1127 "cplus.met"
                            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1127 "cplus.met"
                            retTree=_ptRes0;
#line 1127 "cplus.met"
                        }
#line 1127 "cplus.met"
#line 1130 "cplus.met"
                        AnalyzeAssignAlign (retTree );
#line 1130 "cplus.met"
#line 1131 "cplus.met"
                        {
#line 1131 "cplus.met"
                            _retValue = retTree ;
#line 1131 "cplus.met"
                            goto directive_ret;
#line 1131 "cplus.met"
                            
#line 1131 "cplus.met"
                        }
#line 1131 "cplus.met"
                        break;
#line 1131 "cplus.met"
#line 1133 "cplus.met"
                    case PRAGMA_BRACE_ALIGN : 
#line 1133 "cplus.met"
                        tokenAhead = 0 ;
#line 1133 "cplus.met"
                        CommTerm();
#line 1133 "cplus.met"
#line 1134 "cplus.met"
#line 1135 "cplus.met"
                        {
#line 1135 "cplus.met"
                            PPTREE _ptTree0,_ptRes0;
#line 1135 "cplus.met"
                            _ptRes0= MakeTree(CONFIG, 1);
#line 1135 "cplus.met"
                            {
#line 1135 "cplus.met"
                                PPTREE _ptTree1,_ptRes1;
#line 1135 "cplus.met"
                                _ptRes1= MakeTree(BRACE_ALIGN_VALUE, 1);
#line 1135 "cplus.met"
                                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1135 "cplus.met"
                                if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 1135 "cplus.met"
                                    TOKEN_EXIT(directive_exit,"IDENT")
#line 1135 "cplus.met"
                                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1135 "cplus.met"
                                _ptTree0=_ptRes1;
#line 1135 "cplus.met"
                            }
#line 1135 "cplus.met"
                            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1135 "cplus.met"
                            retTree=_ptRes0;
#line 1135 "cplus.met"
                        }
#line 1135 "cplus.met"
#line 1138 "cplus.met"
                        AnalyzeBraceAlign (retTree );
#line 1138 "cplus.met"
#line 1139 "cplus.met"
                        {
#line 1139 "cplus.met"
                            _retValue = retTree ;
#line 1139 "cplus.met"
                            goto directive_ret;
#line 1139 "cplus.met"
                            
#line 1139 "cplus.met"
                        }
#line 1139 "cplus.met"
                        break;
#line 1139 "cplus.met"
#line 1141 "cplus.met"
                    case PRAGMA_MARGIN : 
#line 1141 "cplus.met"
                        tokenAhead = 0 ;
#line 1141 "cplus.met"
                        CommTerm();
#line 1141 "cplus.met"
#line 1142 "cplus.met"
#line 1143 "cplus.met"
                        {
#line 1143 "cplus.met"
                            PPTREE _ptTree0,_ptRes0;
#line 1143 "cplus.met"
                            _ptRes0= MakeTree(CONFIG, 1);
#line 1143 "cplus.met"
                            {
#line 1143 "cplus.met"
                                PPTREE _ptTree1,_ptRes1;
#line 1143 "cplus.met"
                                _ptRes1= MakeTree(MARGIN_VALUE, 1);
#line 1143 "cplus.met"
                                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1143 "cplus.met"
                                if ( ! TERM_OR_META(INTEGER,"INTEGER") || !(BUILD_TERM_META(_ptTree1))) 
#line 1143 "cplus.met"
                                    TOKEN_EXIT(directive_exit,"INTEGER")
#line 1143 "cplus.met"
                                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1143 "cplus.met"
                                _ptTree0=_ptRes1;
#line 1143 "cplus.met"
                            }
#line 1143 "cplus.met"
                            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1143 "cplus.met"
                            retTree=_ptRes0;
#line 1143 "cplus.met"
                        }
#line 1143 "cplus.met"
#line 1146 "cplus.met"
                        AnalyzeMargin (retTree );
#line 1146 "cplus.met"
#line 1147 "cplus.met"
                        {
#line 1147 "cplus.met"
                            _retValue = retTree ;
#line 1147 "cplus.met"
                            goto directive_ret;
#line 1147 "cplus.met"
                            
#line 1147 "cplus.met"
                        }
#line 1147 "cplus.met"
                        break;
#line 1147 "cplus.met"
#line 1149 "cplus.met"
                    case PRAGMA_COMMENT_START : 
#line 1149 "cplus.met"
                        tokenAhead = 0 ;
#line 1149 "cplus.met"
                        CommTerm();
#line 1149 "cplus.met"
#line 1150 "cplus.met"
#line 1151 "cplus.met"
                        {
#line 1151 "cplus.met"
                            PPTREE _ptTree0,_ptRes0;
#line 1151 "cplus.met"
                            _ptRes0= MakeTree(CONFIG, 1);
#line 1151 "cplus.met"
                            {
#line 1151 "cplus.met"
                                PPTREE _ptTree1,_ptRes1;
#line 1151 "cplus.met"
                                _ptRes1= MakeTree(COMMENT_START, 1);
#line 1151 "cplus.met"
                                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1151 "cplus.met"
                                if ( ! TERM_OR_META(STRING,"STRING") || !(BUILD_TERM_META(_ptTree1))) 
#line 1151 "cplus.met"
                                    TOKEN_EXIT(directive_exit,"STRING")
#line 1151 "cplus.met"
                                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1151 "cplus.met"
                                _ptTree0=_ptRes1;
#line 1151 "cplus.met"
                            }
#line 1151 "cplus.met"
                            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1151 "cplus.met"
                            retTree=_ptRes0;
#line 1151 "cplus.met"
                        }
#line 1151 "cplus.met"
#line 1154 "cplus.met"
                        AnalyzeComment (retTree );
#line 1154 "cplus.met"
#line 1155 "cplus.met"
                        {
#line 1155 "cplus.met"
                            _retValue = retTree ;
#line 1155 "cplus.met"
                            goto directive_ret;
#line 1155 "cplus.met"
                            
#line 1155 "cplus.met"
                        }
#line 1155 "cplus.met"
                        break;
#line 1155 "cplus.met"
#line 1157 "cplus.met"
                    case PRAGMA_COMMENT_MIDDLE : 
#line 1157 "cplus.met"
                        tokenAhead = 0 ;
#line 1157 "cplus.met"
                        CommTerm();
#line 1157 "cplus.met"
#line 1158 "cplus.met"
#line 1159 "cplus.met"
                        {
#line 1159 "cplus.met"
                            PPTREE _ptTree0,_ptRes0;
#line 1159 "cplus.met"
                            _ptRes0= MakeTree(CONFIG, 1);
#line 1159 "cplus.met"
                            {
#line 1159 "cplus.met"
                                PPTREE _ptTree1,_ptRes1;
#line 1159 "cplus.met"
                                _ptRes1= MakeTree(COMMENT_MIDDLE, 1);
#line 1159 "cplus.met"
                                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1159 "cplus.met"
                                if ( ! TERM_OR_META(STRING,"STRING") || !(BUILD_TERM_META(_ptTree1))) 
#line 1159 "cplus.met"
                                    TOKEN_EXIT(directive_exit,"STRING")
#line 1159 "cplus.met"
                                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1159 "cplus.met"
                                _ptTree0=_ptRes1;
#line 1159 "cplus.met"
                            }
#line 1159 "cplus.met"
                            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1159 "cplus.met"
                            retTree=_ptRes0;
#line 1159 "cplus.met"
                        }
#line 1159 "cplus.met"
#line 1162 "cplus.met"
                        AnalyzeComment (retTree );
#line 1162 "cplus.met"
#line 1163 "cplus.met"
                        {
#line 1163 "cplus.met"
                            _retValue = retTree ;
#line 1163 "cplus.met"
                            goto directive_ret;
#line 1163 "cplus.met"
                            
#line 1163 "cplus.met"
                        }
#line 1163 "cplus.met"
                        break;
#line 1163 "cplus.met"
#line 1165 "cplus.met"
                    case PRAGMA_COMMENT_END : 
#line 1165 "cplus.met"
                        tokenAhead = 0 ;
#line 1165 "cplus.met"
                        CommTerm();
#line 1165 "cplus.met"
#line 1166 "cplus.met"
#line 1167 "cplus.met"
                        {
#line 1167 "cplus.met"
                            PPTREE _ptTree0,_ptRes0;
#line 1167 "cplus.met"
                            _ptRes0= MakeTree(CONFIG, 1);
#line 1167 "cplus.met"
                            {
#line 1167 "cplus.met"
                                PPTREE _ptTree1,_ptRes1;
#line 1167 "cplus.met"
                                _ptRes1= MakeTree(COMMENT_END, 1);
#line 1167 "cplus.met"
                                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1167 "cplus.met"
                                if ( ! TERM_OR_META(STRING,"STRING") || !(BUILD_TERM_META(_ptTree1))) 
#line 1167 "cplus.met"
                                    TOKEN_EXIT(directive_exit,"STRING")
#line 1167 "cplus.met"
                                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1167 "cplus.met"
                                _ptTree0=_ptRes1;
#line 1167 "cplus.met"
                            }
#line 1167 "cplus.met"
                            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1167 "cplus.met"
                            retTree=_ptRes0;
#line 1167 "cplus.met"
                        }
#line 1167 "cplus.met"
#line 1170 "cplus.met"
                        AnalyzeComment (retTree );
#line 1170 "cplus.met"
#line 1171 "cplus.met"
                        {
#line 1171 "cplus.met"
                            _retValue = retTree ;
#line 1171 "cplus.met"
                            goto directive_ret;
#line 1171 "cplus.met"
                            
#line 1171 "cplus.met"
                        }
#line 1171 "cplus.met"
                        break;
#line 1171 "cplus.met"
#line 1173 "cplus.met"
                    case PRAGMA_COMMENT_PLUS : 
#line 1173 "cplus.met"
                        tokenAhead = 0 ;
#line 1173 "cplus.met"
                        CommTerm();
#line 1173 "cplus.met"
#line 1174 "cplus.met"
#line 1175 "cplus.met"
                        {
#line 1175 "cplus.met"
                            PPTREE _ptTree0,_ptRes0;
#line 1175 "cplus.met"
                            _ptRes0= MakeTree(CONFIG, 1);
#line 1175 "cplus.met"
                            {
#line 1175 "cplus.met"
                                PPTREE _ptTree1,_ptRes1;
#line 1175 "cplus.met"
                                _ptRes1= MakeTree(COMMENT_PLUS, 1);
#line 1175 "cplus.met"
                                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1175 "cplus.met"
                                if ( ! TERM_OR_META(STRING,"STRING") || !(BUILD_TERM_META(_ptTree1))) 
#line 1175 "cplus.met"
                                    TOKEN_EXIT(directive_exit,"STRING")
#line 1175 "cplus.met"
                                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1175 "cplus.met"
                                _ptTree0=_ptRes1;
#line 1175 "cplus.met"
                            }
#line 1175 "cplus.met"
                            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1175 "cplus.met"
                            retTree=_ptRes0;
#line 1175 "cplus.met"
                        }
#line 1175 "cplus.met"
#line 1178 "cplus.met"
                        AnalyzeComment (retTree );
#line 1178 "cplus.met"
#line 1179 "cplus.met"
                        {
#line 1179 "cplus.met"
                            _retValue = retTree ;
#line 1179 "cplus.met"
                            goto directive_ret;
#line 1179 "cplus.met"
                            
#line 1179 "cplus.met"
                        }
#line 1179 "cplus.met"
                        break;
#line 1179 "cplus.met"
#line 1181 "cplus.met"
                    case PRAGMA_INDENT_FUNCTION_TYPE : 
#line 1181 "cplus.met"
                        tokenAhead = 0 ;
#line 1181 "cplus.met"
                        CommTerm();
#line 1181 "cplus.met"
#line 1182 "cplus.met"
#line 1183 "cplus.met"
                        {
#line 1183 "cplus.met"
                            PPTREE _ptTree0,_ptRes0;
#line 1183 "cplus.met"
                            _ptRes0= MakeTree(CONFIG, 1);
#line 1183 "cplus.met"
                            {
#line 1183 "cplus.met"
                                PPTREE _ptTree1,_ptRes1;
#line 1183 "cplus.met"
                                _ptRes1= MakeTree(INDENT_FUNCTION_TYPE, 1);
#line 1183 "cplus.met"
                                (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1183 "cplus.met"
                                if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 1183 "cplus.met"
                                    TOKEN_EXIT(directive_exit,"IDENT")
#line 1183 "cplus.met"
                                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1183 "cplus.met"
                                _ptTree0=_ptRes1;
#line 1183 "cplus.met"
                            }
#line 1183 "cplus.met"
                            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1183 "cplus.met"
                            retTree=_ptRes0;
#line 1183 "cplus.met"
                        }
#line 1183 "cplus.met"
#line 1187 "cplus.met"
                        AnalyzeIndentFunctionType (retTree );
#line 1187 "cplus.met"
#line 1188 "cplus.met"
                        {
#line 1188 "cplus.met"
                            _retValue = retTree ;
#line 1188 "cplus.met"
                            goto directive_ret;
#line 1188 "cplus.met"
                            
#line 1188 "cplus.met"
                        }
#line 1188 "cplus.met"
                        break;
#line 1188 "cplus.met"
#line 1190 "cplus.met"
                    default : 
#line 1190 "cplus.met"
#line 1190 "cplus.met"
                        {
#line 1190 "cplus.met"
                            PPTREE _ptTree0;
#line 1190 "cplus.met"
                            if ( (_ptTree0=NQUICK_CALL(_Tak(other_config)(error_free), 82, cplus))== (PPTREE) -1 ) {
#line 1190 "cplus.met"
                                PROG_EXIT(directive_exit,"directive")
#line 1190 "cplus.met"
                            }
#line 1190 "cplus.met"
                            _retValue =_ptTree0;
#line 1190 "cplus.met"
                            goto directive_ret;
#line 1190 "cplus.met"
                        }
#line 1190 "cplus.met"
                        break;
#line 1190 "cplus.met"
                }
#line 1190 "cplus.met"
            } else 
#line 1190 "cplus.met"
#line 1195 "cplus.met"
            if((NPUSH_CALL_VERIF(_Tak(range_pragma), 101, cplus))){
#line 1195 "cplus.met"
#line 1194 "cplus.met"
#line 1195 "cplus.met"
                {
#line 1195 "cplus.met"
                    PPTREE _ptTree0;
#line 1195 "cplus.met"
                    {
#line 1195 "cplus.met"
                        PPTREE _ptTree1,_ptRes1;
#line 1195 "cplus.met"
                        _ptRes1= MakeTree(PRAGMA, 1);
#line 1195 "cplus.met"
                        (tokenAhead == 8|| (LexPragma(),TRACE_LEX(1)));
#line 1195 "cplus.met"
                        if ( ! TERM_OR_META(PRAGMA_CONTENT,"PRAGMA_CONTENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 1195 "cplus.met"
                            TOKEN_EXIT(directive_exit,"PRAGMA_CONTENT")
#line 1195 "cplus.met"
                        ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1195 "cplus.met"
                        _ptTree0=_ptRes1;
#line 1195 "cplus.met"
                    }
#line 1195 "cplus.met"
                    _retValue =_ptTree0;
#line 1195 "cplus.met"
                    goto directive_ret;
#line 1195 "cplus.met"
                }
#line 1195 "cplus.met"
            } else 
#line 1195 "cplus.met"
#line 1199 "cplus.met"
            if (1) {
#line 1199 "cplus.met"
#line 1198 "cplus.met"
#line 1199 "cplus.met"
                {
#line 1199 "cplus.met"
                    PPTREE _ptTree0;
#line 1199 "cplus.met"
                    {
#line 1199 "cplus.met"
                        PPTREE _ptTree1,_ptRes1;
#line 1199 "cplus.met"
                        _ptRes1= MakeTree(PRAGMA, 1);
#line 1199 "cplus.met"
                        (tokenAhead == 8|| (LexPragma(),TRACE_LEX(1)));
#line 1199 "cplus.met"
                        if ( ! TERM_OR_META(PRAGMA_CONTENT,"PRAGMA_CONTENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 1199 "cplus.met"
                            TOKEN_EXIT(directive_exit,"PRAGMA_CONTENT")
#line 1199 "cplus.met"
                        ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1199 "cplus.met"
                        _ptTree0=_ptRes1;
#line 1199 "cplus.met"
                    }
#line 1199 "cplus.met"
                    _retValue =_ptTree0;
#line 1199 "cplus.met"
                    goto directive_ret;
#line 1199 "cplus.met"
                }
#line 1199 "cplus.met"
            } else 
#line 1199 "cplus.met"
             ;
#line 1199 "cplus.met"
            break;
#line 1199 "cplus.met"
        default :
#line 1199 "cplus.met"
            CASE_EXIT(directive_exit,"either DEFINE_DIR or INCLUDE_DIR or LINE_DIR or UNDEF_DIR or ERROR_DIR or PRAGMA_DIR")
#line 1199 "cplus.met"
            break;
#line 1199 "cplus.met"
    }
#line 1199 "cplus.met"
#line 1204 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1204 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1204 "cplus.met"
keepCarriage =  _oldkeepCarriage;
#line 1204 "cplus.met"
return((PPTREE) 0);
#line 1204 "cplus.met"

#line 1204 "cplus.met"
directive_exit :
#line 1204 "cplus.met"

#line 1204 "cplus.met"
    {
#line 1204 "cplus.met"
        MulFreeTree(4,list,interTree,retTree,_addlist1);
#line 1204 "cplus.met"
    }
#line 1204 "cplus.met"
    _Debug = TRACE_RULE("directive",TRACE_EXIT,(PPTREE)0);
#line 1204 "cplus.met"
    _funcLevel--;
#line 1204 "cplus.met"
    keepCarriage =  _oldkeepCarriage;
#line 1204 "cplus.met"
    return((PPTREE) -1) ;
#line 1204 "cplus.met"

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

#line 1204 "cplus.met"
#line 707 "cplus.met"
PPTREE cplus::end_pragma ( int error_free)
#line 707 "cplus.met"
{
#line 707 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 707 "cplus.met"
    int _value,_nbPre = 0 ;
#line 707 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 707 "cplus.met"
    int _Debug = TRACE_RULE("end_pragma",TRACE_ENTER,(PPTREE)0);
#line 707 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 707 "cplus.met"
#line 708 "cplus.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 708 "cplus.met"
    if ( ! TERM_OR_META(PRAGMA_DIR,"PRAGMA_DIR") || !(CommTerm(),1)) 
#line 708 "cplus.met"
        TOKEN_EXIT(end_pragma_exit,"PRAGMA_DIR")
#line 708 "cplus.met"
#line 709 "cplus.met"
    (tokenAhead == 8|| (LexPragma(),TRACE_LEX(1)));
#line 709 "cplus.met"
    if ( ! TERM_OR_META(PRAGMA_PRETTY,"PRAGMA_PRETTY") || !(CommTerm(),1)) 
#line 709 "cplus.met"
        TOKEN_EXIT(end_pragma_exit,"PRAGMA_PRETTY")
#line 709 "cplus.met"
#line 710 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 710 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 710 "cplus.met"
return((PPTREE) 0);
#line 710 "cplus.met"

#line 710 "cplus.met"
end_pragma_exit :
#line 710 "cplus.met"

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

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

#line 710 "cplus.met"
#line 1407 "cplus.met"
PPTREE cplus::enum_val ( int error_free)
#line 1407 "cplus.met"
{
#line 1407 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1407 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1407 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1407 "cplus.met"
    int _Debug = TRACE_RULE("enum_val",TRACE_ENTER,(PPTREE)0);
#line 1407 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1407 "cplus.met"
#line 1407 "cplus.met"
    PPTREE valTree = (PPTREE) 0;
#line 1407 "cplus.met"
#line 1409 "cplus.met"
    {
#line 1409 "cplus.met"
        PPTREE _ptTree0,_ptRes0;
#line 1409 "cplus.met"
        _ptRes0= MakeTree(TYP_AFF, 2);
#line 1409 "cplus.met"
        {
#line 1409 "cplus.met"
            PPTREE _ptTree1,_ptRes1;
#line 1409 "cplus.met"
            _ptRes1= MakeTree(IDENT, 1);
#line 1409 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 1409 "cplus.met"
            if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 1409 "cplus.met"
                TOKEN_EXIT(enum_val_exit,"IDENT")
#line 1409 "cplus.met"
            ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1409 "cplus.met"
            _ptTree0=_ptRes1;
#line 1409 "cplus.met"
        }
#line 1409 "cplus.met"
        ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1409 "cplus.met"
        valTree=_ptRes0;
#line 1409 "cplus.met"
    }
#line 1409 "cplus.met"
#line 1410 "cplus.met"
    if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(EGAL,"=") && (tokenAhead = 0,CommTerm(),1)){
#line 1410 "cplus.met"
#line 1411 "cplus.met"
        {
#line 1411 "cplus.met"
            PPTREE _ptTree0;
#line 1411 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(assignment_expression)(error_free), 11, cplus))== (PPTREE) -1 ) {
#line 1411 "cplus.met"
                PROG_EXIT(enum_val_exit,"enum_val")
#line 1411 "cplus.met"
            }
#line 1411 "cplus.met"
            ReplaceTree(valTree , 2 , _ptTree0);
#line 1411 "cplus.met"
        }
#line 1411 "cplus.met"
#line 1411 "cplus.met"
    }
#line 1411 "cplus.met"
#line 1412 "cplus.met"
    {
#line 1412 "cplus.met"
        _retValue = valTree ;
#line 1412 "cplus.met"
        goto enum_val_ret;
#line 1412 "cplus.met"
        
#line 1412 "cplus.met"
    }
#line 1412 "cplus.met"
#line 1413 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1413 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1413 "cplus.met"
return((PPTREE) 0);
#line 1413 "cplus.met"

#line 1413 "cplus.met"
enum_val_exit :
#line 1413 "cplus.met"

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

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

#line 1413 "cplus.met"
#line 2249 "cplus.met"
PPTREE cplus::equality_expression ( int error_free)
#line 2249 "cplus.met"
{
#line 2249 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 2249 "cplus.met"
    int _value,_nbPre = 0 ;
#line 2249 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 2249 "cplus.met"
    int _Debug = TRACE_RULE("equality_expression",TRACE_ENTER,(PPTREE)0);
#line 2249 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 2249 "cplus.met"
#line 2249 "cplus.met"
    PPTREE expTree = (PPTREE) 0;
#line 2249 "cplus.met"
#line 2251 "cplus.met"
    if ( (expTree=NQUICK_CALL(_Tak(relational_expression)(error_free), 102, cplus))== (PPTREE) -1 ) {
#line 2251 "cplus.met"
        PROG_EXIT(equality_expression_exit,"equality_expression")
#line 2251 "cplus.met"
    }
#line 2251 "cplus.met"
#line 2252 "cplus.met"
    while (((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( EGALEGAL,"==")) || 
#line 2252 "cplus.met"
          ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN( EXCLEGAL,"!="))) { 
#line 2252 "cplus.met"
#line 2253 "cplus.met"
        if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(EGALEGAL,"==") && (tokenAhead = 0,CommTerm(),1)){
#line 2253 "cplus.met"
#line 2254 "cplus.met"
            {
#line 2254 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2254 "cplus.met"
                _ptRes0= MakeTree(EQU, 2);
#line 2254 "cplus.met"
                ReplaceTree(_ptRes0, 1, expTree );
#line 2254 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(relational_expression)(error_free), 102, cplus))== (PPTREE) -1 ) {
#line 2254 "cplus.met"
                    PROG_EXIT(equality_expression_exit,"equality_expression")
#line 2254 "cplus.met"
                }
#line 2254 "cplus.met"
                ReplaceTree(_ptRes0, 2, _ptTree0);
#line 2254 "cplus.met"
                expTree=_ptRes0;
#line 2254 "cplus.met"
            }
#line 2254 "cplus.met"
        } else {
#line 2254 "cplus.met"
#line 2256 "cplus.met"
#line 2257 "cplus.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 2257 "cplus.met"
            if (  !SEE_TOKEN( EXCLEGAL,"!=") || !(CommTerm(),1)) 
#line 2257 "cplus.met"
                TOKEN_EXIT(equality_expression_exit,"!=")
#line 2257 "cplus.met"
#line 2258 "cplus.met"
            {
#line 2258 "cplus.met"
                PPTREE _ptTree0,_ptRes0;
#line 2258 "cplus.met"
                _ptRes0= MakeTree(NEQU, 2);
#line 2258 "cplus.met"
                ReplaceTree(_ptRes0, 1, expTree );
#line 2258 "cplus.met"
                if ( (_ptTree0=NQUICK_CALL(_Tak(relational_expression)(error_free), 102, cplus))== (PPTREE) -1 ) {
#line 2258 "cplus.met"
                    PROG_EXIT(equality_expression_exit,"equality_expression")
#line 2258 "cplus.met"
                }
#line 2258 "cplus.met"
                ReplaceTree(_ptRes0, 2, _ptTree0);
#line 2258 "cplus.met"
                expTree=_ptRes0;
#line 2258 "cplus.met"
            }
#line 2258 "cplus.met"
        }
#line 2258 "cplus.met"
    } 
#line 2258 "cplus.met"
#line 2260 "cplus.met"
    {
#line 2260 "cplus.met"
        _retValue = expTree ;
#line 2260 "cplus.met"
        goto equality_expression_ret;
#line 2260 "cplus.met"
        
#line 2260 "cplus.met"
    }
#line 2260 "cplus.met"
#line 2261 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 2261 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 2261 "cplus.met"
return((PPTREE) 0);
#line 2261 "cplus.met"

#line 2261 "cplus.met"
equality_expression_exit :
#line 2261 "cplus.met"

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

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

#line 2261 "cplus.met"
#line 1653 "cplus.met"
PPTREE cplus::exception ( int error_free)
#line 1653 "cplus.met"
{
#line 1653 "cplus.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 1653 "cplus.met"
    int _value,_nbPre = 0 ;
#line 1653 "cplus.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 1653 "cplus.met"
    int _Debug = TRACE_RULE("exception",TRACE_ENTER,(PPTREE)0);
#line 1653 "cplus.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 1653 "cplus.met"
#line 1653 "cplus.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 1653 "cplus.met"
#line 1653 "cplus.met"
    PPTREE retTree = (PPTREE) 0,list = (PPTREE) 0;
#line 1653 "cplus.met"
#line 1655 "cplus.met"
    (tokenAhead == 13|| (specific(),TRACE_LEX(1)));
#line 1655 "cplus.met"
    if ( ! TERM_OR_META(TRY_UPPER,"TRY_UPPER") || !(CommTerm(),1)) 
#line 1655 "cplus.met"
        TOKEN_EXIT(exception_exit,"TRY_UPPER")
#line 1655 "cplus.met"
#line 1656 "cplus.met"
    {
#line 1656 "cplus.met"
        PPTREE _ptTree0,_ptRes0;
#line 1656 "cplus.met"
        _ptRes0= MakeTree(EXCEPTION, 2);
#line 1656 "cplus.met"
        if ( (_ptTree0=NQUICK_CALL(_Tak(compound_statement)(error_free), 22, cplus))== (PPTREE) -1 ) {
#line 1656 "cplus.met"
            PROG_EXIT(exception_exit,"exception")
#line 1656 "cplus.met"
        }
#line 1656 "cplus.met"
        ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1656 "cplus.met"
        retTree=_ptRes0;
#line 1656 "cplus.met"
    }
#line 1656 "cplus.met"
#line 1656 "cplus.met"
    _addlist1 = list ;
#line 1656 "cplus.met"
#line 1657 "cplus.met"
    do {
#line 1657 "cplus.met"
#line 1658 "cplus.met"
        {
#line 1658 "cplus.met"
            PPTREE _ptTree0;
#line 1658 "cplus.met"
            if ( (_ptTree0=NQUICK_CALL(_Tak(catch_unit)(error_free), 17, cplus))== (PPTREE) -1 ) {
#line 1658 "cplus.met"
                PROG_EXIT(exception_exit,"exception")
#line 1658 "cplus.met"
            }
#line 1658 "cplus.met"
            _addlist1 =AddList(_addlist1 , _ptTree0);
#line 1658 "cplus.met"
        }
#line 1658 "cplus.met"
#line 1658 "cplus.met"
        if (list){
#line 1658 "cplus.met"
#line 1658 "cplus.met"
            _addlist1 = SonTree (_addlist1 ,2 );
#line 1658 "cplus.met"
        } else {
#line 1658 "cplus.met"
#line 1658 "cplus.met"
            list = _addlist1 ;
#line 1658 "cplus.met"
        }
#line 1658 "cplus.met"
#line 1659 "cplus.met"
    } while ( !(((tokenAhead == 13|| (specific(),TRACE_LEX(1)))&&TERM_OR_META(END_CATCH,"END_CATCH") && (tokenAhead = 0,CommTerm(),1)) || 
#line 1659 "cplus.met"
               ((tokenAhead == 13|| (specific(),TRACE_LEX(1)))&&TERM_OR_META(END_CATCH_ALL,"END_CATCH_ALL") && (tokenAhead = 0,CommTerm(),1)))) ;
#line 1659 "cplus.met"
#line 1660 "cplus.met"
    {
#line 1660 "cplus.met"
        PPTREE _ptTree0;
#line 1660 "cplus.met"
        _ptTree0=ReplaceTree(retTree ,2 ,list );
#line 1660 "cplus.met"
        _retValue =_ptTree0;
#line 1660 "cplus.met"
        goto exception_ret;
#line 1660 "cplus.met"
    }
#line 1660 "cplus.met"
#line 1661 "cplus.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 1661 "cplus.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 1661 "cplus.met"
return((PPTREE) 0);
#line 1661 "cplus.met"

#line 1661 "cplus.met"
exception_exit :
#line 1661 "cplus.met"

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

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

#line 1661 "cplus.met"
