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

#include "token.h"
#include "metalang.h"


#line 360 "metalang.met"
PPTREE metalang::seel_stat ( int error_free)
#line 360 "metalang.met"
{
#line 360 "metalang.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 360 "metalang.met"
    int _value,_nbPre = 0 ;
#line 360 "metalang.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 360 "metalang.met"
    int _Debug = TRACE_RULE("seel_stat",TRACE_ENTER,(PPTREE)0);
#line 360 "metalang.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 360 "metalang.met"
#line 361 "metalang.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 361 "metalang.met"
    if (  !SEE_TOKEN( SEEL,"seel") || !(CommTerm(),1)) 
#line 361 "metalang.met"
        TOKEN_EXIT(seel_stat_exit,"seel")
#line 361 "metalang.met"
#line 362 "metalang.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 362 "metalang.met"
    switch( lexEl.Value) {
#line 362 "metalang.met"
#line 363 "metalang.met"
        case IN : 
#line 363 "metalang.met"
            tokenAhead = 0 ;
#line 363 "metalang.met"
            CommTerm();
#line 363 "metalang.met"
#line 363 "metalang.met"
            {
#line 363 "metalang.met"
                PPTREE _ptTree0;
#line 363 "metalang.met"
                {
#line 363 "metalang.met"
                    PPTREE _ptTree1,_ptRes1;
#line 363 "metalang.met"
                    _ptRes1= MakeTree(SEEL, 1);
#line 363 "metalang.met"
                    {
#line 363 "metalang.met"
                        PPTREE _ptTree2,_ptRes2;
#line 363 "metalang.met"
                        _ptRes2= MakeTree(IN, 1);
#line 363 "metalang.met"
                        if ( (_ptTree2=NQUICK_CALL(_Tak(set)(error_free), 19, metalang))== (PPTREE) -1 ) {
#line 363 "metalang.met"
                            PROG_EXIT(seel_stat_exit,"seel_stat")
#line 363 "metalang.met"
                        }
#line 363 "metalang.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 363 "metalang.met"
                        _ptTree1=_ptRes2;
#line 363 "metalang.met"
                    }
#line 363 "metalang.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 363 "metalang.met"
                    _ptTree0=_ptRes1;
#line 363 "metalang.met"
                }
#line 363 "metalang.met"
                _retValue =_ptTree0;
#line 363 "metalang.met"
                goto seel_stat_ret;
#line 363 "metalang.met"
            }
#line 363 "metalang.met"
            break;
#line 363 "metalang.met"
#line 364 "metalang.met"
        case META : 
#line 364 "metalang.met"
        case STRING : 
#line 364 "metalang.met"
#line 364 "metalang.met"
            {
#line 364 "metalang.met"
                PPTREE _ptTree0;
#line 364 "metalang.met"
                {
#line 364 "metalang.met"
                    PPTREE _ptTree1,_ptRes1;
#line 364 "metalang.met"
                    _ptRes1= MakeTree(SEEL, 1);
#line 364 "metalang.met"
                    {
#line 364 "metalang.met"
                        PPTREE _ptTree2,_ptRes2;
#line 364 "metalang.met"
                        _ptRes2= MakeTree(STRING, 1);
#line 364 "metalang.met"
                        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 364 "metalang.met"
                        if ( ! TERM_OR_META(STRING,"STRING") || !(BUILD_TERM_META(_ptTree2))) 
#line 364 "metalang.met"
                            TOKEN_EXIT(seel_stat_exit,"STRING")
#line 364 "metalang.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 364 "metalang.met"
                        _ptTree1=_ptRes2;
#line 364 "metalang.met"
                    }
#line 364 "metalang.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 364 "metalang.met"
                    _ptTree0=_ptRes1;
#line 364 "metalang.met"
                }
#line 364 "metalang.met"
                _retValue =_ptTree0;
#line 364 "metalang.met"
                goto seel_stat_ret;
#line 364 "metalang.met"
            }
#line 364 "metalang.met"
            break;
#line 364 "metalang.met"
#line 365 "metalang.met"
        default : 
#line 365 "metalang.met"
#line 365 "metalang.met"
            {
#line 365 "metalang.met"
                PPTREE _ptTree0;
#line 365 "metalang.met"
                {
#line 365 "metalang.met"
                    PPTREE _ptRes1;
#line 365 "metalang.met"
                    _ptRes1= MakeTree(SEEL, 1);
#line 365 "metalang.met"
                    _ptTree0=_ptRes1;
#line 365 "metalang.met"
                }
#line 365 "metalang.met"
                _retValue =_ptTree0;
#line 365 "metalang.met"
                goto seel_stat_ret;
#line 365 "metalang.met"
            }
#line 365 "metalang.met"
            break;
#line 365 "metalang.met"
    }
#line 365 "metalang.met"
#line 367 "metalang.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 367 "metalang.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 367 "metalang.met"
return((PPTREE) 0);
#line 367 "metalang.met"

#line 367 "metalang.met"
seel_stat_exit :
#line 367 "metalang.met"

#line 367 "metalang.met"
    _Debug = TRACE_RULE("seel_stat",TRACE_EXIT,(PPTREE)0);
#line 367 "metalang.met"
    _funcLevel--;
#line 367 "metalang.met"
    return((PPTREE) -1) ;
#line 367 "metalang.met"

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

#line 367 "metalang.met"
#line 377 "metalang.met"
PPTREE metalang::set ( int error_free)
#line 377 "metalang.met"
{
#line 377 "metalang.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 377 "metalang.met"
    int _value,_nbPre = 0 ;
#line 377 "metalang.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 377 "metalang.met"
    int _Debug = TRACE_RULE("set",TRACE_ENTER,(PPTREE)0);
#line 377 "metalang.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 377 "metalang.met"
#line 377 "metalang.met"
    PPTREE _addlist1 = (PPTREE) 0;
#line 377 "metalang.met"
#line 377 "metalang.met"
    PPTREE list = (PPTREE) 0,charac = (PPTREE) 0;
#line 377 "metalang.met"
#line 379 "metalang.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 379 "metalang.met"
    if (  !SEE_TOKEN( COUV,"[") || !(CommTerm(),1)) 
#line 379 "metalang.met"
        TOKEN_EXIT(set_exit,"[")
#line 379 "metalang.met"
#line 379 "metalang.met"
    _addlist1 = list ;
#line 379 "metalang.met"
#line 380 "metalang.met"
    do {
#line 380 "metalang.met"
#line 381 "metalang.met"
        {
#line 381 "metalang.met"
            PPTREE _ptTree0,_ptRes0;
#line 381 "metalang.met"
            _ptRes0= MakeTree(CHARACTER, 1);
#line 381 "metalang.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 381 "metalang.met"
            if ( ! TERM_OR_META(CHARACTER,"CHARACTER") || !(BUILD_TERM_META(_ptTree0))) 
#line 381 "metalang.met"
                TOKEN_EXIT(set_exit,"CHARACTER")
#line 381 "metalang.met"
            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 381 "metalang.met"
            charac=_ptRes0;
#line 381 "metalang.met"
        }
#line 381 "metalang.met"
#line 382 "metalang.met"
        if ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(POIN,".") && (tokenAhead = 0,CommTerm(),1)){
#line 382 "metalang.met"
#line 383 "metalang.met"
#line 384 "metalang.met"
            (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 384 "metalang.met"
            if (  !SEE_TOKEN( POIN,".") || !(CommTerm(),1)) 
#line 384 "metalang.met"
                TOKEN_EXIT(set_exit,".")
#line 384 "metalang.met"
#line 385 "metalang.met"
            {
#line 385 "metalang.met"
                PPTREE _ptTree0;
#line 385 "metalang.met"
                {
#line 385 "metalang.met"
                    PPTREE _ptTree1,_ptRes1;
#line 385 "metalang.met"
                    _ptRes1= MakeTree(INTER, 2);
#line 385 "metalang.met"
                    ReplaceTree(_ptRes1, 1, charac );
#line 385 "metalang.met"
                    {
#line 385 "metalang.met"
                        PPTREE _ptTree2,_ptRes2;
#line 385 "metalang.met"
                        _ptRes2= MakeTree(CHARACTER, 1);
#line 385 "metalang.met"
                        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 385 "metalang.met"
                        if ( ! TERM_OR_META(CHARACTER,"CHARACTER") || !(BUILD_TERM_META(_ptTree2))) 
#line 385 "metalang.met"
                            TOKEN_EXIT(set_exit,"CHARACTER")
#line 385 "metalang.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 385 "metalang.met"
                        _ptTree1=_ptRes2;
#line 385 "metalang.met"
                    }
#line 385 "metalang.met"
                    ReplaceTree(_ptRes1, 2, _ptTree1);
#line 385 "metalang.met"
                    _ptTree0=_ptRes1;
#line 385 "metalang.met"
                }
#line 385 "metalang.met"
                _addlist1 =AddList(_addlist1 , _ptTree0);
#line 385 "metalang.met"
            }
#line 385 "metalang.met"
#line 385 "metalang.met"
            if (list){
#line 385 "metalang.met"
#line 385 "metalang.met"
                _addlist1 = SonTree (_addlist1 ,2 );
#line 385 "metalang.met"
            } else {
#line 385 "metalang.met"
#line 385 "metalang.met"
                list = _addlist1 ;
#line 385 "metalang.met"
            }
#line 385 "metalang.met"
#line 387 "metalang.met"
        } else {
#line 387 "metalang.met"
#line 389 "metalang.met"
#line 389 "metalang.met"
            _addlist1 =AddList(_addlist1 ,charac );
#line 389 "metalang.met"
#line 389 "metalang.met"
            if (list){
#line 389 "metalang.met"
#line 389 "metalang.met"
                _addlist1 = SonTree (_addlist1 ,2 );
#line 389 "metalang.met"
            } else {
#line 389 "metalang.met"
#line 389 "metalang.met"
                list = _addlist1 ;
#line 389 "metalang.met"
            }
#line 389 "metalang.met"
        }
#line 389 "metalang.met"
#line 390 "metalang.met"
    } while ( !(! ((tokenAhead == 1|| (Lex(),TRACE_LEX(1)))&&SEE_TOKEN(VIRG,",") && (tokenAhead = 0,CommTerm(),1)))) ;
#line 390 "metalang.met"
#line 391 "metalang.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 391 "metalang.met"
    if (  !SEE_TOKEN( CFER,"]") || !(CommTerm(),1)) 
#line 391 "metalang.met"
        TOKEN_EXIT(set_exit,"]")
#line 391 "metalang.met"
#line 392 "metalang.met"
    {
#line 392 "metalang.met"
        PPTREE _ptTree0;
#line 392 "metalang.met"
        {
#line 392 "metalang.met"
            PPTREE _ptRes1;
#line 392 "metalang.met"
            _ptRes1= MakeTree(SET, 1);
#line 392 "metalang.met"
            ReplaceTree(_ptRes1, 1, list );
#line 392 "metalang.met"
            _ptTree0=_ptRes1;
#line 392 "metalang.met"
        }
#line 392 "metalang.met"
        _retValue =_ptTree0;
#line 392 "metalang.met"
        goto set_ret;
#line 392 "metalang.met"
    }
#line 392 "metalang.met"
#line 393 "metalang.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 393 "metalang.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 393 "metalang.met"
return((PPTREE) 0);
#line 393 "metalang.met"

#line 393 "metalang.met"
set_exit :
#line 393 "metalang.met"

#line 393 "metalang.met"
    {
#line 393 "metalang.met"
        MulFreeTree(3,charac,list,_addlist1);
#line 393 "metalang.met"
    }
#line 393 "metalang.met"
    _Debug = TRACE_RULE("set",TRACE_EXIT,(PPTREE)0);
#line 393 "metalang.met"
    _funcLevel--;
#line 393 "metalang.met"
    return((PPTREE) -1) ;
#line 393 "metalang.met"

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

#line 393 "metalang.met"
#line 369 "metalang.met"
PPTREE metalang::storel_stat ( int error_free)
#line 369 "metalang.met"
{
#line 369 "metalang.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 369 "metalang.met"
    int _value,_nbPre = 0 ;
#line 369 "metalang.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 369 "metalang.met"
    int _Debug = TRACE_RULE("storel_stat",TRACE_ENTER,(PPTREE)0);
#line 369 "metalang.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 369 "metalang.met"
#line 370 "metalang.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 370 "metalang.met"
    if (  !SEE_TOKEN( STOREL,"storel") || !(CommTerm(),1)) 
#line 370 "metalang.met"
        TOKEN_EXIT(storel_stat_exit,"storel")
#line 370 "metalang.met"
#line 371 "metalang.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 371 "metalang.met"
    switch( lexEl.Value) {
#line 371 "metalang.met"
#line 372 "metalang.met"
        case TAKEL : 
#line 372 "metalang.met"
            tokenAhead = 0 ;
#line 372 "metalang.met"
            CommTerm();
#line 372 "metalang.met"
#line 372 "metalang.met"
            {
#line 372 "metalang.met"
                PPTREE _ptTree0;
#line 372 "metalang.met"
                {
#line 372 "metalang.met"
                    PPTREE _ptTree1,_ptRes1;
#line 372 "metalang.met"
                    _ptRes1= MakeTree(STOREL, 1);
#line 372 "metalang.met"
                    {
#line 372 "metalang.met"
                        PPTREE _ptRes2;
#line 372 "metalang.met"
                        _ptRes2= MakeTree(TAKEL, 1);
#line 372 "metalang.met"
                        _ptTree1=_ptRes2;
#line 372 "metalang.met"
                    }
#line 372 "metalang.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 372 "metalang.met"
                    _ptTree0=_ptRes1;
#line 372 "metalang.met"
                }
#line 372 "metalang.met"
                _retValue =_ptTree0;
#line 372 "metalang.met"
                goto storel_stat_ret;
#line 372 "metalang.met"
            }
#line 372 "metalang.met"
            break;
#line 372 "metalang.met"
#line 373 "metalang.met"
        case META : 
#line 373 "metalang.met"
        case STRING : 
#line 373 "metalang.met"
#line 373 "metalang.met"
            {
#line 373 "metalang.met"
                PPTREE _ptTree0;
#line 373 "metalang.met"
                {
#line 373 "metalang.met"
                    PPTREE _ptTree1,_ptRes1;
#line 373 "metalang.met"
                    _ptRes1= MakeTree(STOREL, 1);
#line 373 "metalang.met"
                    {
#line 373 "metalang.met"
                        PPTREE _ptTree2,_ptRes2;
#line 373 "metalang.met"
                        _ptRes2= MakeTree(STRING, 1);
#line 373 "metalang.met"
                        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 373 "metalang.met"
                        if ( ! TERM_OR_META(STRING,"STRING") || !(BUILD_TERM_META(_ptTree2))) 
#line 373 "metalang.met"
                            TOKEN_EXIT(storel_stat_exit,"STRING")
#line 373 "metalang.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 373 "metalang.met"
                        _ptTree1=_ptRes2;
#line 373 "metalang.met"
                    }
#line 373 "metalang.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 373 "metalang.met"
                    _ptTree0=_ptRes1;
#line 373 "metalang.met"
                }
#line 373 "metalang.met"
                _retValue =_ptTree0;
#line 373 "metalang.met"
                goto storel_stat_ret;
#line 373 "metalang.met"
            }
#line 373 "metalang.met"
            break;
#line 373 "metalang.met"
        default :
#line 373 "metalang.met"
            CASE_EXIT(storel_stat_exit,"either takel or STRING")
#line 373 "metalang.met"
            break;
#line 373 "metalang.met"
    }
#line 373 "metalang.met"
#line 375 "metalang.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 375 "metalang.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 375 "metalang.met"
return((PPTREE) 0);
#line 375 "metalang.met"

#line 375 "metalang.met"
storel_stat_exit :
#line 375 "metalang.met"

#line 375 "metalang.met"
    _Debug = TRACE_RULE("storel_stat",TRACE_EXIT,(PPTREE)0);
#line 375 "metalang.met"
    _funcLevel--;
#line 375 "metalang.met"
    return((PPTREE) -1) ;
#line 375 "metalang.met"

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

#line 375 "metalang.met"
#line 722 "metalang.met"
PPTREE metalang::take_follow ( int error_free)
#line 722 "metalang.met"
{
#line 722 "metalang.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 722 "metalang.met"
    int _value,_nbPre = 0 ;
#line 722 "metalang.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 722 "metalang.met"
    int _Debug = TRACE_RULE("take_follow",TRACE_ENTER,(PPTREE)0);
#line 722 "metalang.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 722 "metalang.met"
#line 722 "metalang.met"
    PPTREE patTree = (PPTREE) 0;
#line 722 "metalang.met"
#line 724 "metalang.met"
#line 725 "metalang.met"
    {
#line 725 "metalang.met"
        PPTREE _ptRes0;
#line 725 "metalang.met"
        _ptRes0= MakeTree(TAKE, 1);
#line 725 "metalang.met"
        patTree=_ptRes0;
#line 725 "metalang.met"
    }
#line 725 "metalang.met"
#line 726 "metalang.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 726 "metalang.met"
    switch( lexEl.Value) {
#line 726 "metalang.met"
#line 728 "metalang.met"
        case DIES : 
#line 728 "metalang.met"
            tokenAhead = 0 ;
#line 728 "metalang.met"
            CommTerm();
#line 728 "metalang.met"
#line 728 "metalang.met"
            {
#line 728 "metalang.met"
                PPTREE _ptTree0;
#line 728 "metalang.met"
                {
#line 728 "metalang.met"
                    PPTREE _ptTree1,_ptRes1;
#line 728 "metalang.met"
                    _ptRes1= MakeTree(TOKEN, 1);
#line 728 "metalang.met"
                    {
#line 728 "metalang.met"
                        PPTREE _ptTree2,_ptRes2;
#line 728 "metalang.met"
                        _ptRes2= MakeTree(STRING, 1);
#line 728 "metalang.met"
                        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 728 "metalang.met"
                        if ( ! TERM_OR_META(STRING,"STRING") || !(BUILD_TERM_META(_ptTree2))) 
#line 728 "metalang.met"
                            TOKEN_EXIT(take_follow_exit,"STRING")
#line 728 "metalang.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 728 "metalang.met"
                        _ptTree1=_ptRes2;
#line 728 "metalang.met"
                    }
#line 728 "metalang.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 728 "metalang.met"
                    _ptTree0=_ptRes1;
#line 728 "metalang.met"
                }
#line 728 "metalang.met"
                ReplaceTree(patTree , 1 , _ptTree0);
#line 728 "metalang.met"
            }
#line 728 "metalang.met"
            break;
#line 728 "metalang.met"
#line 731 "metalang.met"
        case EXCL : 
#line 731 "metalang.met"
            tokenAhead = 0 ;
#line 731 "metalang.met"
            CommTerm();
#line 731 "metalang.met"
#line 731 "metalang.met"
            {
#line 731 "metalang.met"
                PPTREE _ptTree0;
#line 731 "metalang.met"
                {
#line 731 "metalang.met"
                    PPTREE _ptTree1,_ptRes1;
#line 731 "metalang.met"
                    _ptRes1= MakeTree(EXCLA, 1);
#line 731 "metalang.met"
                    {
#line 731 "metalang.met"
                        PPTREE _ptTree2,_ptRes2;
#line 731 "metalang.met"
                        _ptRes2= MakeTree(IDENT, 1);
#line 731 "metalang.met"
                        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 731 "metalang.met"
                        if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree2))) 
#line 731 "metalang.met"
                            TOKEN_EXIT(take_follow_exit,"IDENT")
#line 731 "metalang.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 731 "metalang.met"
                        _ptTree1=_ptRes2;
#line 731 "metalang.met"
                    }
#line 731 "metalang.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 731 "metalang.met"
                    _ptTree0=_ptRes1;
#line 731 "metalang.met"
                }
#line 731 "metalang.met"
                ReplaceTree(patTree , 1 , _ptTree0);
#line 731 "metalang.met"
            }
#line 731 "metalang.met"
            break;
#line 731 "metalang.met"
#line 733 "metalang.met"
        case META : 
#line 733 "metalang.met"
        case STRING : 
#line 733 "metalang.met"
#line 734 "metalang.met"
            {
#line 734 "metalang.met"
                PPTREE _ptTree0;
#line 734 "metalang.met"
                {
#line 734 "metalang.met"
                    PPTREE _ptTree1,_ptRes1;
#line 734 "metalang.met"
                    _ptRes1= MakeTree(STRING, 1);
#line 734 "metalang.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 734 "metalang.met"
                    if ( ! TERM_OR_META(STRING,"STRING") || !(BUILD_TERM_META(_ptTree1))) 
#line 734 "metalang.met"
                        TOKEN_EXIT(take_follow_exit,"STRING")
#line 734 "metalang.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 734 "metalang.met"
                    _ptTree0=_ptRes1;
#line 734 "metalang.met"
                }
#line 734 "metalang.met"
                ReplaceTree(patTree , 1 , _ptTree0);
#line 734 "metalang.met"
            }
#line 734 "metalang.met"
            break;
#line 734 "metalang.met"
#line 735 "metalang.met"
        case IDENT : 
#line 735 "metalang.met"
#line 736 "metalang.met"
            {
#line 736 "metalang.met"
                PPTREE _ptTree0;
#line 736 "metalang.met"
                {
#line 736 "metalang.met"
                    PPTREE _ptTree1,_ptRes1;
#line 736 "metalang.met"
                    _ptRes1= MakeTree(IDENT, 1);
#line 736 "metalang.met"
                    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 736 "metalang.met"
                    if ( ! TERM_OR_META(IDENT,"IDENT") || !(BUILD_TERM_META(_ptTree1))) 
#line 736 "metalang.met"
                        TOKEN_EXIT(take_follow_exit,"IDENT")
#line 736 "metalang.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 736 "metalang.met"
                    _ptTree0=_ptRes1;
#line 736 "metalang.met"
                }
#line 736 "metalang.met"
                ReplaceTree(patTree , 1 , _ptTree0);
#line 736 "metalang.met"
            }
#line 736 "metalang.met"
            break;
#line 736 "metalang.met"
        default :
#line 736 "metalang.met"
            CASE_EXIT(take_follow_exit,"either # or ! or STRING or IDENT")
#line 736 "metalang.met"
            break;
#line 736 "metalang.met"
    }
#line 736 "metalang.met"
#line 739 "metalang.met"
    {
#line 739 "metalang.met"
        _retValue = patTree ;
#line 739 "metalang.met"
        goto take_follow_ret;
#line 739 "metalang.met"
        
#line 739 "metalang.met"
    }
#line 739 "metalang.met"
#line 740 "metalang.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 740 "metalang.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 740 "metalang.met"
return((PPTREE) 0);
#line 740 "metalang.met"

#line 740 "metalang.met"
take_follow_exit :
#line 740 "metalang.met"

#line 740 "metalang.met"
    {
#line 740 "metalang.met"
        MulFreeTree(1,patTree);
#line 740 "metalang.met"
    }
#line 740 "metalang.met"
    _Debug = TRACE_RULE("take_follow",TRACE_EXIT,(PPTREE)0);
#line 740 "metalang.met"
    _funcLevel--;
#line 740 "metalang.met"
    return((PPTREE) -1) ;
#line 740 "metalang.met"

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

#line 740 "metalang.met"
#line 351 "metalang.met"
PPTREE metalang::takel_stat ( int error_free)
#line 351 "metalang.met"
{
#line 351 "metalang.met"
    PFILE_POSITION _filePosition = (PFILE_POSITION) 0;

#line 351 "metalang.met"
    int _value,_nbPre = 0 ;
#line 351 "metalang.met"
    PCOMM_ELEM _ptPreComm = ((tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1))),listComm?LookComm(&_nbPre):(_funcLevel++,(PCOMM_ELEM)0));
#line 351 "metalang.met"
    int _Debug = TRACE_RULE("takel_stat",TRACE_ENTER,(PPTREE)0);
#line 351 "metalang.met"
    PPTREE lastTree = _lastTree,_retValue ;
#line 351 "metalang.met"
#line 352 "metalang.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 352 "metalang.met"
    if (  !SEE_TOKEN( TAKEL,"takel") || !(CommTerm(),1)) 
#line 352 "metalang.met"
        TOKEN_EXIT(takel_stat_exit,"takel")
#line 352 "metalang.met"
#line 353 "metalang.met"
    (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 353 "metalang.met"
    switch( lexEl.Value) {
#line 353 "metalang.met"
#line 354 "metalang.met"
        case IN : 
#line 354 "metalang.met"
            tokenAhead = 0 ;
#line 354 "metalang.met"
            CommTerm();
#line 354 "metalang.met"
#line 354 "metalang.met"
            {
#line 354 "metalang.met"
                PPTREE _ptTree0;
#line 354 "metalang.met"
                {
#line 354 "metalang.met"
                    PPTREE _ptTree1,_ptRes1;
#line 354 "metalang.met"
                    _ptRes1= MakeTree(TAKEL, 1);
#line 354 "metalang.met"
                    {
#line 354 "metalang.met"
                        PPTREE _ptTree2,_ptRes2;
#line 354 "metalang.met"
                        _ptRes2= MakeTree(IN, 1);
#line 354 "metalang.met"
                        if ( (_ptTree2=NQUICK_CALL(_Tak(set)(error_free), 19, metalang))== (PPTREE) -1 ) {
#line 354 "metalang.met"
                            PROG_EXIT(takel_stat_exit,"takel_stat")
#line 354 "metalang.met"
                        }
#line 354 "metalang.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 354 "metalang.met"
                        _ptTree1=_ptRes2;
#line 354 "metalang.met"
                    }
#line 354 "metalang.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 354 "metalang.met"
                    _ptTree0=_ptRes1;
#line 354 "metalang.met"
                }
#line 354 "metalang.met"
                _retValue =_ptTree0;
#line 354 "metalang.met"
                goto takel_stat_ret;
#line 354 "metalang.met"
            }
#line 354 "metalang.met"
            break;
#line 354 "metalang.met"
#line 355 "metalang.met"
        case META : 
#line 355 "metalang.met"
        case STRING : 
#line 355 "metalang.met"
#line 355 "metalang.met"
            {
#line 355 "metalang.met"
                PPTREE _ptTree0;
#line 355 "metalang.met"
                {
#line 355 "metalang.met"
                    PPTREE _ptTree1,_ptRes1;
#line 355 "metalang.met"
                    _ptRes1= MakeTree(TAKEL, 1);
#line 355 "metalang.met"
                    {
#line 355 "metalang.met"
                        PPTREE _ptTree2,_ptRes2;
#line 355 "metalang.met"
                        _ptRes2= MakeTree(STRING, 1);
#line 355 "metalang.met"
                        (tokenAhead == 1|| (Lex(),TRACE_LEX(1)));
#line 355 "metalang.met"
                        if ( ! TERM_OR_META(STRING,"STRING") || !(BUILD_TERM_META(_ptTree2))) 
#line 355 "metalang.met"
                            TOKEN_EXIT(takel_stat_exit,"STRING")
#line 355 "metalang.met"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 355 "metalang.met"
                        _ptTree1=_ptRes2;
#line 355 "metalang.met"
                    }
#line 355 "metalang.met"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 355 "metalang.met"
                    _ptTree0=_ptRes1;
#line 355 "metalang.met"
                }
#line 355 "metalang.met"
                _retValue =_ptTree0;
#line 355 "metalang.met"
                goto takel_stat_ret;
#line 355 "metalang.met"
            }
#line 355 "metalang.met"
            break;
#line 355 "metalang.met"
#line 356 "metalang.met"
        default : 
#line 356 "metalang.met"
#line 356 "metalang.met"
            {
#line 356 "metalang.met"
                PPTREE _ptTree0;
#line 356 "metalang.met"
                {
#line 356 "metalang.met"
                    PPTREE _ptRes1;
#line 356 "metalang.met"
                    _ptRes1= MakeTree(TAKEL, 1);
#line 356 "metalang.met"
                    _ptTree0=_ptRes1;
#line 356 "metalang.met"
                }
#line 356 "metalang.met"
                _retValue =_ptTree0;
#line 356 "metalang.met"
                goto takel_stat_ret;
#line 356 "metalang.met"
            }
#line 356 "metalang.met"
            break;
#line 356 "metalang.met"
    }
#line 356 "metalang.met"
#line 358 "metalang.met"
(tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 358 "metalang.met"
if (_nbPre || listComm) AddComm(_ptPreComm,_nbPre,(PPTREE) 0,lastTree); else {_lastTree=(PPTREE)0;_funcLevel--;}
#line 358 "metalang.met"
return((PPTREE) 0);
#line 358 "metalang.met"

#line 358 "metalang.met"
takel_stat_exit :
#line 358 "metalang.met"

#line 358 "metalang.met"
    _Debug = TRACE_RULE("takel_stat",TRACE_EXIT,(PPTREE)0);
#line 358 "metalang.met"
    _funcLevel--;
#line 358 "metalang.met"
    return((PPTREE) -1) ;
#line 358 "metalang.met"

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

#line 358 "metalang.met"
