
#line 28 "speed.ch"
/*************************************************************************/
#line 28 "speed.ch"
/*                                                                       */
#line 28 "speed.ch"
/*        Produced by Metachop version 2.0  -    1989-1995               */
#line 28 "speed.ch"
/*     Tree      Meta     Chopper      developped    by                  */
#line 28 "speed.ch"
/*                  Eric Lavillonniere                                   */
#line 28 "speed.ch"
/*                                                                       */
#line 28 "speed.ch"
/*************************************************************************/
#line 28 "speed.ch"
#line 28 "speed.ch"
#include "token.h"
#line 28 "speed.ch"
extern int _retVal[50];
#line 28 "speed.ch"
extern PPTREE _storeVal[50],_nextVal;
#line 28 "speed.ch"
extern PPTREE stackTree[1024];
#line 28 "speed.ch"
extern int ptStackTree;
#line 28 "speed.ch"
#define decomp decomp_metalang
#line 28 "speed.ch"
#line 28 "speed.ch"
#ifndef for_elem
#line 28 "speed.ch"
#line 28 "speed.ch"
#define for_elem _for_elem
#line 28 "speed.ch"
#endif
#ifdef INCONNU
#line 28 "speed.ch"
#line 28 "speed.ch"
PTREE   for_elem ;
#line 28 "speed.ch"
#line 28 "speed.ch"
#endif
#include "token.h"
#include "metalang.h"
#include "tablist.h"

RIEN    DEBUT_CPLUSPLUS ;
extern int  houtput, coutput ;
static PTREE    listFuncNoStop = (PTREE)0 ;
#line 28 "speed.ch"
static TabList  *listFuncToken = 0 ;
static PTREE    rootTree = (PTREE)0 ;
#line 28 "speed.ch"

typedef struct array_entry {
    signed char    arrayEntry [MAX_TOKEN / 8];
    struct array_entry *next ;
}   ARRAY_ENTRY,    *PARRAY_ENTRY ;

static PARRAY_ENTRY listArrayEntry = (PARRAY_ENTRY)0 ;
static PARRAY_ENTRY listArrayEntryFree = (PARRAY_ENTRY)0 ;
static PARRAY_ENTRY arrayEntryCurrent = (PARRAY_ENTRY)0 ;
static signed char arrayEntry [MAX_TOKEN / 8];
extern int  metaQuick ;
extern int  cplusGen ;
extern PTREE    theUsedGrammar ;
#line 28 "speed.ch"
static PTREE    listLevel ;
#line 28 "speed.ch"

#line 79 "speed.ch"
#line 79 "speed.ch"
int StopFind ( PTREE tree, PTREE list )
#line 79 "speed.ch"
{
#line 79 "speed.ch"
    register PPTREE _inter ;
#line 79 "speed.ch"
#line 79 "speed.ch"
#line 83 "speed.ch"
    PTREE   elem ;
#line 83 "speed.ch"
#line 83 "speed.ch"
#line 84 "speed.ch"
    PTREE   statement, condition, statement1, statement2, tree1, tree2 ;
#line 84 "speed.ch"
#line 84 "speed.ch"
#line 86 "speed.ch"
    if ( !tree ) 
#line 86 "speed.ch"
#line 87 "speed.ch"
        return 0 ;
#line 87 "speed.ch"
#line 88 "speed.ch"
    switch ( NumberTree(tree) ) {
#line 88 "speed.ch"
#line 89 "speed.ch"
        case metalang::MAKETREE : 
#line 89 "speed.ch"
#line 89 "speed.ch"
            (tree=SonTree(tree, 1));
#line 89 "speed.ch"
#line 89 "speed.ch"
#line 89 "speed.ch"
        _Case0 : 
#line 89 "speed.ch"
#line 89 "speed.ch"
            ;
#line 89 "speed.ch"
#line 92 "speed.ch"
            (tree?tree.Nextl():(PPTREE)0);
#line 92 "speed.ch"
#line 92 "speed.ch"
            goto _Case1 ;
#line 92 "speed.ch"
#line 94 "speed.ch"
        case LIST : 
#line 94 "speed.ch"
#line 94 "speed.ch"
        _Case1 : 
#line 94 "speed.ch"
#line 94 "speed.ch"
            ;
#line 94 "speed.ch"
#line 94 "speed.ch"
            while ( tree ) {
#line 94 "speed.ch"
#line 95 "speed.ch"
                                (elem=(tree?tree.Nextl():(PPTREE)0));
#line 95 "speed.ch"
#line 95 "speed.ch"
#line 96 "speed.ch"
                                if ( StopFind(elem, list) ) 
#line 96 "speed.ch"
#line 97 "speed.ch"
                                    return 1 ;
#line 97 "speed.ch"
#line 98 "speed.ch"
                            }
#line 98 "speed.ch"
#line 99 "speed.ch"
            return 0 ;
#line 99 "speed.ch"
#line 99 "speed.ch"
            goto _Case2 ;
#line 99 "speed.ch"
#line 100 "speed.ch"
        case metalang::REPLACETREE : 
#line 100 "speed.ch"
#line 100 "speed.ch"
            (tree=SonTree(tree, 1));
#line 100 "speed.ch"
#line 100 "speed.ch"
#line 100 "speed.ch"
        _Case2 : 
#line 100 "speed.ch"
#line 100 "speed.ch"
            ;
#line 100 "speed.ch"
#line 101 "speed.ch"
            (tree?tree.Nextl():(PPTREE)0);
#line 101 "speed.ch"
#line 102 "speed.ch"
            (tree?tree.Nextl():(PPTREE)0);
#line 102 "speed.ch"
#line 103 "speed.ch"
            (elem=(tree?tree.Nextl():(PPTREE)0));
#line 103 "speed.ch"
#line 103 "speed.ch"
#line 104 "speed.ch"
            return StopFind(elem, list);
#line 104 "speed.ch"
#line 104 "speed.ch"
            goto _Case3 ;
#line 104 "speed.ch"
#line 105 "speed.ch"
        case metalang::ADDLIST : 
#line 105 "speed.ch"
#line 105 "speed.ch"
            (tree=SonTree(tree, 1));
#line 105 "speed.ch"
#line 105 "speed.ch"
#line 105 "speed.ch"
        _Case3 : 
#line 105 "speed.ch"
#line 105 "speed.ch"
            ;
#line 105 "speed.ch"
#line 106 "speed.ch"
            (tree?tree.Nextl():(PPTREE)0);
#line 106 "speed.ch"
#line 107 "speed.ch"
            (elem=(tree?tree.Nextl():(PPTREE)0));
#line 107 "speed.ch"
#line 107 "speed.ch"
#line 108 "speed.ch"
            return StopFind(elem, list);
#line 108 "speed.ch"
#line 108 "speed.ch"
            goto _Case4 ;
#line 108 "speed.ch"
#line 109 "speed.ch"
        case metalang::NOT : 
#line 109 "speed.ch"
#line 109 "speed.ch"
            (tree=SonTree(tree, 1));
#line 109 "speed.ch"
#line 109 "speed.ch"
#line 109 "speed.ch"
        _Case4 : 
#line 109 "speed.ch"
#line 109 "speed.ch"
            ;
#line 109 "speed.ch"
#line 110 "speed.ch"
            StopFind(tree, list);
#line 110 "speed.ch"
#line 113 "speed.ch"
            return 0 ;
#line 113 "speed.ch"
#line 113 "speed.ch"
            goto _Case5 ;
#line 113 "speed.ch"
#line 114 "speed.ch"
        case metalang::COND : 
#line 114 "speed.ch"
#line 114 "speed.ch"
            (tree=SonTree(tree, 1));
#line 114 "speed.ch"
#line 114 "speed.ch"
#line 114 "speed.ch"
        _Case5 : 
#line 114 "speed.ch"
#line 114 "speed.ch"
            ;
#line 114 "speed.ch"
#line 114 "speed.ch"
            goto _Case6 ;
#line 114 "speed.ch"
#line 115 "speed.ch"
        case metalang::EQUAL : 
#line 115 "speed.ch"
#line 115 "speed.ch"
            (tree=SonTree(tree, 2));
#line 115 "speed.ch"
#line 115 "speed.ch"
#line 115 "speed.ch"
        _Case6 : 
#line 115 "speed.ch"
#line 115 "speed.ch"
            ;
#line 115 "speed.ch"
#line 115 "speed.ch"
            goto _Case7 ;
#line 115 "speed.ch"
#line 116 "speed.ch"
        case metalang::BEGIN : 
#line 116 "speed.ch"
#line 116 "speed.ch"
            (tree=SonTree(tree, 1));
#line 116 "speed.ch"
#line 116 "speed.ch"
#line 116 "speed.ch"
        _Case7 : 
#line 116 "speed.ch"
#line 116 "speed.ch"
            ;
#line 116 "speed.ch"
#line 116 "speed.ch"
            return StopFind(tree, list);
#line 116 "speed.ch"
#line 116 "speed.ch"
            goto _Case8 ;
#line 116 "speed.ch"
#line 117 "speed.ch"
        case metalang::RETURN : 
#line 117 "speed.ch"
#line 117 "speed.ch"
            (tree=SonTree(tree, 1));
#line 117 "speed.ch"
#line 117 "speed.ch"
#line 117 "speed.ch"
        _Case8 : 
#line 117 "speed.ch"
#line 117 "speed.ch"
            ;
#line 117 "speed.ch"
#line 117 "speed.ch"
            return StopFind(tree, list);
#line 117 "speed.ch"
#line 117 "speed.ch"
            goto _Case9 ;
#line 117 "speed.ch"
#line 118 "speed.ch"
        case metalang::OR : 
#line 118 "speed.ch"
#line 118 "speed.ch"
            (tree1=SonTree(tree, 1));
#line 118 "speed.ch"
#line 118 "speed.ch"
#line 118 "speed.ch"
            (tree2=SonTree(tree, 2));
#line 118 "speed.ch"
#line 118 "speed.ch"
#line 118 "speed.ch"
        _Case9 : 
#line 118 "speed.ch"
#line 118 "speed.ch"
            ;
#line 118 "speed.ch"
#line 118 "speed.ch"
            return StopFind(tree1, list) & StopFind(tree2, list);
#line 118 "speed.ch"
#line 118 "speed.ch"
            goto _Case10 ;
#line 118 "speed.ch"
#line 120 "speed.ch"
        case metalang::AND : 
#line 120 "speed.ch"
#line 120 "speed.ch"
            (tree1=SonTree(tree, 1));
#line 120 "speed.ch"
#line 120 "speed.ch"
#line 120 "speed.ch"
            (tree2=SonTree(tree, 2));
#line 120 "speed.ch"
#line 120 "speed.ch"
#line 120 "speed.ch"
        _Case10 : 
#line 120 "speed.ch"
#line 120 "speed.ch"
            ;
#line 120 "speed.ch"
#line 121 "speed.ch"
            if ( !StopFind(tree1, list) ) 
#line 121 "speed.ch"
#line 122 "speed.ch"
                return StopFind(tree2, list);
#line 122 "speed.ch"
#line 123 "speed.ch"
            return 1 ;
#line 123 "speed.ch"
#line 123 "speed.ch"
            goto _Case11 ;
#line 123 "speed.ch"
#line 124 "speed.ch"
        case metalang::CASE : 
#line 124 "speed.ch"
#line 124 "speed.ch"
            (tree=SonTree(tree, 1));
#line 124 "speed.ch"
#line 124 "speed.ch"
#line 124 "speed.ch"
        _Case11 : 
#line 124 "speed.ch"
#line 124 "speed.ch"
            ;
#line 124 "speed.ch"
#line 125 "speed.ch"
            {
#line 125 "speed.ch"
#line 126 "speed.ch"
                int result = 1 ;
#line 126 "speed.ch"
#line 127 "speed.ch"
                while ( tree ) {
#line 127 "speed.ch"
#line 128 "speed.ch"
                                    (elem=(tree?tree.Nextl():(PPTREE)0));
#line 128 "speed.ch"
#line 128 "speed.ch"
#line 129 "speed.ch"
                                    ((_inter = (PPTREE)elem,1) && 
#line 129 "speed.ch"
                                        (NumberTree(_inter) == metalang::SWITCH) &&
#line 129 "speed.ch"
                                        ((condition=SonTree(_inter,1)),1) &&
#line 129 "speed.ch"
                                        ((statement=SonTree(_inter,2)),1) &&
#line 129 "speed.ch"
                                        1);
#line 129 "speed.ch"
                                    ;
#line 129 "speed.ch"
#line 130 "speed.ch"
                                    if ( !StopFind(condition, list) ) 
#line 130 "speed.ch"
#line 131 "speed.ch"
                                        result &= StopFind(statement, list);
#line 131 "speed.ch"
#line 132 "speed.ch"
                                }
#line 132 "speed.ch"
#line 133 "speed.ch"
                return result ;
#line 133 "speed.ch"
#line 134 "speed.ch"
            }
#line 134 "speed.ch"
#line 134 "speed.ch"
            goto _Case12 ;
#line 134 "speed.ch"
#line 135 "speed.ch"
        case metalang::BREAK : 
#line 135 "speed.ch"
#line 135 "speed.ch"
        _Case12 : 
#line 135 "speed.ch"
#line 135 "speed.ch"
            ;
#line 135 "speed.ch"
#line 135 "speed.ch"
            return 1 ;
#line 135 "speed.ch"
#line 135 "speed.ch"
            goto _Case13 ;
#line 135 "speed.ch"
#line 136 "speed.ch"
        case metalang::TAKE : 
#line 136 "speed.ch"
#line 136 "speed.ch"
            (tree=SonTree(tree, 1));
#line 136 "speed.ch"
#line 136 "speed.ch"
#line 136 "speed.ch"
        _Case13 : 
#line 136 "speed.ch"
#line 136 "speed.ch"
            ;
#line 136 "speed.ch"
#line 137 "speed.ch"
            if ( ((_inter = (PPTREE)tree,1) && 
#line 137 "speed.ch"
                    (NumberTree(_inter) == metalang::EXCLA) &&
#line 137 "speed.ch"
                    (!strcmp(Value(SonTree(_inter,1)),"NOTHING")) &&
#line 137 "speed.ch"
                    1) ) 
#line 137 "speed.ch"
#line 138 "speed.ch"
                {
#line 138 "speed.ch"
                    PPTREE _ptTree0= (PPTREE) 0 ;
#line 138 "speed.ch"
                    {
#line 138 "speed.ch"
                        PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 138 "speed.ch"
                        _ptRes1 = MakeTree(metalang::STRING, 1);
#line 138 "speed.ch"
                        _ptTree1 = MakeString("_ALL_") ;
#line 138 "speed.ch"
                        ReplaceTree(_ptRes1, 1, _ptTree1);
#line 138 "speed.ch"
                        _ptTree0 = _ptRes1;
#line 138 "speed.ch"
                    }
#line 138 "speed.ch"
                    list =  AddList( list,_ptTree0);
#line 138 "speed.ch"
                }
#line 138 "speed.ch"
#line 138 "speed.ch"
            else 
#line 139 "speed.ch"
            if ( ((_inter = (PPTREE)tree,1) && 
#line 139 "speed.ch"
                    (NumberTree(_inter) == metalang::IDENT) &&
#line 139 "speed.ch"
                    1) ) {
#line 139 "speed.ch"
#line 140 "speed.ch"
                            if ( !ListFind(listFuncNoStop, tree) ) {
#line 140 "speed.ch"
#line 141 "speed.ch"
                                                                        {
#line 141 "speed.ch"
PPTREE _ptTree0= (PPTREE) 0 ;
#line 141 "speed.ch"
_ptTree0 = StoreRef(copytree(tree));
#line 141 "speed.ch"
list =  AddList( list,_ptTree0);
#line 141 "speed.ch"
                                                                        }
#line 141 "speed.ch"
#line 141 "speed.ch"
#line 142 "speed.ch"
                                                                        return 1 ;
#line 142 "speed.ch"
#line 143 "speed.ch"
                                                                       } else 
#line 143 "speed.ch"
                            {
#line 143 "speed.ch"
#line 144 "speed.ch"
                                {
#line 144 "speed.ch"
                                    PPTREE _ptTree0=(PPTREE) 0;
#line 144 "speed.ch"
                                    _ptTree0 = list;
#line 144 "speed.ch"
                                    {
#line 144 "speed.ch"
                                        PPTREE _ptTree1= (PPTREE) 0 ;
#line 144 "speed.ch"
                                        _ptTree1 = StoreRef(copytree(tree));
#line 144 "speed.ch"
                                        _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 144 "speed.ch"
                                    }
#line 144 "speed.ch"
                                    {
#line 144 "speed.ch"
                                        PPTREE _ptTree1= (PPTREE) 0 ;
#line 144 "speed.ch"
                                        {
#line 144 "speed.ch"
                                            PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 144 "speed.ch"
                                            _ptRes2 = MakeTree(metalang::STRING, 1);
#line 144 "speed.ch"
                                            _ptTree2 = MakeString("_NO_STOP_ALL_FOUND_") ;
#line 144 "speed.ch"
                                            ReplaceTree(_ptRes2, 1, _ptTree2);
#line 144 "speed.ch"
                                            _ptTree1 = _ptRes2;
#line 144 "speed.ch"
                                        }
#line 144 "speed.ch"
                                        _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 144 "speed.ch"
                                    }
#line 144 "speed.ch"
                                    list = _ptTree0;
#line 144 "speed.ch"
                                    ;
#line 144 "speed.ch"
                                }
#line 144 "speed.ch"
#line 144 "speed.ch"
#line 146 "speed.ch"
                                return 0 ;
#line 146 "speed.ch"
#line 147 "speed.ch"
                            }
#line 147 "speed.ch"
#line 148 "speed.ch"
                         } else 
#line 148 "speed.ch"
            {
#line 148 "speed.ch"
#line 149 "speed.ch"
                {
#line 149 "speed.ch"
                    PPTREE _ptTree0= (PPTREE) 0 ;
#line 149 "speed.ch"
                    _ptTree0 = StoreRef(copytree(tree));
#line 149 "speed.ch"
                    list =  AddList( list,_ptTree0);
#line 149 "speed.ch"
                }
#line 149 "speed.ch"
#line 149 "speed.ch"
#line 150 "speed.ch"
                return 1 ;
#line 150 "speed.ch"
#line 151 "speed.ch"
            }
#line 151 "speed.ch"
#line 151 "speed.ch"
            goto _Case14 ;
#line 151 "speed.ch"
#line 152 "speed.ch"
        case metalang::SEE : 
#line 152 "speed.ch"
#line 152 "speed.ch"
            (tree=SonTree(tree, 1));
#line 152 "speed.ch"
#line 152 "speed.ch"
#line 152 "speed.ch"
        _Case14 : 
#line 152 "speed.ch"
#line 152 "speed.ch"
            ;
#line 152 "speed.ch"
#line 153 "speed.ch"
            {
#line 153 "speed.ch"
#line 154 "speed.ch"
                if ( ((_inter = (PPTREE)tree,1) && 
#line 154 "speed.ch"
                        (NumberTree(_inter) == metalang::EXCLA) &&
#line 154 "speed.ch"
                        (!strcmp(Value(SonTree(_inter,1)),"NOTHING")) &&
#line 154 "speed.ch"
                        1) ) 
#line 154 "speed.ch"
#line 155 "speed.ch"
                    return 0 ;
#line 155 "speed.ch"
                else 
#line 155 "speed.ch"
#line 157 "speed.ch"
                    {
#line 157 "speed.ch"
                        PPTREE _ptTree0= (PPTREE) 0 ;
#line 157 "speed.ch"
                        _ptTree0 = StoreRef(copytree(tree));
#line 157 "speed.ch"
                        list =  AddList( list,_ptTree0);
#line 157 "speed.ch"
                    }
#line 157 "speed.ch"
#line 157 "speed.ch"
#line 157 "speed.ch"
#line 158 "speed.ch"
                return 1 ;
#line 158 "speed.ch"
#line 159 "speed.ch"
            }
#line 159 "speed.ch"
#line 159 "speed.ch"
            goto _Case15 ;
#line 159 "speed.ch"
#line 160 "speed.ch"
        case metalang::WITHOUT_CONTEXT : 
#line 160 "speed.ch"
#line 160 "speed.ch"
            (statement=SonTree(tree, 2));
#line 160 "speed.ch"
#line 160 "speed.ch"
#line 160 "speed.ch"
        _Case15 : 
#line 160 "speed.ch"
#line 160 "speed.ch"
            ;
#line 160 "speed.ch"
#line 160 "speed.ch"
            goto _Case16 ;
#line 160 "speed.ch"
#line 161 "speed.ch"
        case metalang::WITH_CONTEXT : 
#line 161 "speed.ch"
#line 161 "speed.ch"
            (statement=SonTree(tree, 2));
#line 161 "speed.ch"
#line 161 "speed.ch"
#line 161 "speed.ch"
        _Case16 : 
#line 161 "speed.ch"
#line 161 "speed.ch"
            ;
#line 161 "speed.ch"
#line 161 "speed.ch"
            return StopFind(statement, list);
#line 161 "speed.ch"
#line 161 "speed.ch"
            goto _Case17 ;
#line 161 "speed.ch"
#line 162 "speed.ch"
        case metalang::REPEAT : 
#line 162 "speed.ch"
#line 162 "speed.ch"
            (statement=SonTree(tree, 1));
#line 162 "speed.ch"
#line 162 "speed.ch"
#line 162 "speed.ch"
            (condition=SonTree(tree, 2));
#line 162 "speed.ch"
#line 162 "speed.ch"
#line 162 "speed.ch"
        _Case17 : 
#line 162 "speed.ch"
#line 162 "speed.ch"
            ;
#line 162 "speed.ch"
#line 163 "speed.ch"
            if ( !StopFind(statement, list) ) {
#line 163 "speed.ch"
#line 164 "speed.ch"
                                                    return StopFind(condition, list);
#line 164 "speed.ch"
#line 165 "speed.ch"
                                                  } else 
#line 165 "speed.ch"
#line 166 "speed.ch"
                return 1 ;
#line 166 "speed.ch"
#line 166 "speed.ch"
#line 166 "speed.ch"
            goto _Case18 ;
#line 166 "speed.ch"
#line 167 "speed.ch"
        case metalang::IF : 
#line 167 "speed.ch"
#line 167 "speed.ch"
            (condition=SonTree(tree, 1));
#line 167 "speed.ch"
#line 167 "speed.ch"
#line 167 "speed.ch"
            (statement1=SonTree(tree, 2));
#line 167 "speed.ch"
#line 167 "speed.ch"
#line 167 "speed.ch"
            (statement2=SonTree(tree, 3));
#line 167 "speed.ch"
#line 167 "speed.ch"
#line 167 "speed.ch"
        _Case18 : 
#line 167 "speed.ch"
#line 167 "speed.ch"
            ;
#line 167 "speed.ch"
#line 172 "speed.ch"
            while ( ((_inter = (PPTREE)condition,1) && 
#line 172 "speed.ch"
                        (NumberTree(_inter) == metalang::COND) &&
#line 172 "speed.ch"
                        ((condition=SonTree(_inter,1)),1) &&
#line 172 "speed.ch"
                        1) || ((_inter = (PPTREE)condition,1) && 
#line 172 "speed.ch"
                                    (NumberTree(_inter) == metalang::NOT) &&
#line 172 "speed.ch"
                                    (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),1) &&
#line 172 "speed.ch"
                                        (NumberTree(_inter) == metalang::NOT) &&
#line 172 "speed.ch"
                                        ((condition=SonTree(_inter,1)),1) &&
#line 172 "speed.ch"
                                        1),
#line 172 "speed.ch"
                                        (_inter=_storeVal[1],1),_retVal[1]) &&
#line 172 "speed.ch"
                                    1) ) 
#line 172 "speed.ch"
#line 174 "speed.ch"
                ;
#line 174 "speed.ch"
#line 175 "speed.ch"
            if ( ((_inter = (PPTREE)condition,1) && 
#line 175 "speed.ch"
                    (NumberTree(_inter) == metalang::NOT) &&
#line 175 "speed.ch"
                    ((condition=SonTree(_inter,1)),1) &&
#line 175 "speed.ch"
                    1) ) {
#line 175 "speed.ch"
#line 176 "speed.ch"
                            if ( StopFind(condition, list) ) 
#line 176 "speed.ch"
#line 177 "speed.ch"
                                return StopFind(statement1, list);
#line 177 "speed.ch"
                            else 
#line 177 "speed.ch"
#line 179 "speed.ch"
                                return StopFind(statement1, list) & StopFind(statement2, list);
#line 179 "speed.ch"
#line 179 "speed.ch"
#line 181 "speed.ch"
                         } else 
#line 181 "speed.ch"
            {
#line 181 "speed.ch"
#line 182 "speed.ch"
                if ( StopFind(condition, list) ) 
#line 182 "speed.ch"
#line 183 "speed.ch"
                    return StopFind(statement2, list);
#line 183 "speed.ch"
                else 
#line 183 "speed.ch"
#line 185 "speed.ch"
                    return StopFind(statement1, list) & StopFind(statement2, list);
#line 185 "speed.ch"
#line 185 "speed.ch"
#line 187 "speed.ch"
            }
#line 187 "speed.ch"
#line 187 "speed.ch"
            goto _Case19 ;
#line 187 "speed.ch"
#line 188 "speed.ch"
        case metalang::WHILE : 
#line 188 "speed.ch"
#line 188 "speed.ch"
            (condition=SonTree(tree, 1));
#line 188 "speed.ch"
#line 188 "speed.ch"
#line 188 "speed.ch"
            (statement=SonTree(tree, 2));
#line 188 "speed.ch"
#line 188 "speed.ch"
#line 188 "speed.ch"
        _Case19 : 
#line 188 "speed.ch"
#line 188 "speed.ch"
            ;
#line 188 "speed.ch"
#line 189 "speed.ch"
            while ( ((_inter = (PPTREE)condition,1) && 
#line 189 "speed.ch"
                        (NumberTree(_inter) == metalang::COND) &&
#line 189 "speed.ch"
                        ((condition=SonTree(_inter,1)),1) &&
#line 189 "speed.ch"
                        1) || ((_inter = (PPTREE)condition,1) && 
#line 189 "speed.ch"
                                    (NumberTree(_inter) == metalang::NOT) &&
#line 189 "speed.ch"
                                    (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),1) &&
#line 189 "speed.ch"
                                        (NumberTree(_inter) == metalang::NOT) &&
#line 189 "speed.ch"
                                        ((condition=SonTree(_inter,1)),1) &&
#line 189 "speed.ch"
                                        1),
#line 189 "speed.ch"
                                        (_inter=_storeVal[1],1),_retVal[1]) &&
#line 189 "speed.ch"
                                    1) ) 
#line 189 "speed.ch"
#line 191 "speed.ch"
                ;
#line 191 "speed.ch"
#line 192 "speed.ch"
            if ( ((_inter = (PPTREE)condition,1) && 
#line 192 "speed.ch"
                    (NumberTree(_inter) == metalang::NOT) &&
#line 192 "speed.ch"
                    ((tree1=SonTree(_inter,1)),1) &&
#line 192 "speed.ch"
                    1) && StopFind(tree1, list) ) {
#line 192 "speed.ch"
#line 193 "speed.ch"
                                                        StopFind(statement, list);
#line 193 "speed.ch"
#line 194 "speed.ch"
                                                        return 1 ;
#line 194 "speed.ch"
#line 195 "speed.ch"
                                                     } else 
#line 195 "speed.ch"
            if ( !StopFind(condition, list) ) 
#line 195 "speed.ch"
#line 196 "speed.ch"
                StopFind(statement, list);
#line 196 "speed.ch"
#line 197 "speed.ch"
            return 0 ;
#line 197 "speed.ch"
#line 197 "speed.ch"
            goto _Case20 ;
#line 197 "speed.ch"
#line 197 "speed.ch"
        case metalang::ASIT : 
#line 197 "speed.ch"
#line 197 "speed.ch"
        _Case20 : 
#line 197 "speed.ch"
#line 197 "speed.ch"
            ;
#line 197 "speed.ch"
#line 197 "speed.ch"
            goto _Case21 ;
#line 197 "speed.ch"
#line 197 "speed.ch"
        case metalang::SKIP : 
#line 197 "speed.ch"
#line 197 "speed.ch"
        _Case21 : 
#line 197 "speed.ch"
#line 197 "speed.ch"
            ;
#line 197 "speed.ch"
#line 197 "speed.ch"
            goto _Case22 ;
#line 197 "speed.ch"
#line 197 "speed.ch"
        case metalang::TAKEL : 
#line 197 "speed.ch"
#line 197 "speed.ch"
        _Case22 : 
#line 197 "speed.ch"
#line 197 "speed.ch"
            ;
#line 197 "speed.ch"
#line 197 "speed.ch"
            goto _Case23 ;
#line 197 "speed.ch"
#line 197 "speed.ch"
        case metalang::SEEL : 
#line 197 "speed.ch"
#line 197 "speed.ch"
        _Case23 : 
#line 197 "speed.ch"
#line 197 "speed.ch"
            ;
#line 197 "speed.ch"
#line 197 "speed.ch"
            goto _Case24 ;
#line 197 "speed.ch"
#line 197 "speed.ch"
        case metalang::STOREL : 
#line 197 "speed.ch"
#line 197 "speed.ch"
        _Case24 : 
#line 197 "speed.ch"
#line 197 "speed.ch"
            ;
#line 197 "speed.ch"
#line 197 "speed.ch"
            goto _Case25 ;
#line 197 "speed.ch"
#line 197 "speed.ch"
        case metalang::RESETL : 
#line 197 "speed.ch"
#line 197 "speed.ch"
        _Case25 : 
#line 197 "speed.ch"
#line 197 "speed.ch"
            ;
#line 197 "speed.ch"
#line 197 "speed.ch"
            goto _Case26 ;
#line 197 "speed.ch"
#line 197 "speed.ch"
        case metalang::FORGETL : 
#line 197 "speed.ch"
#line 197 "speed.ch"
        _Case26 : 
#line 197 "speed.ch"
#line 197 "speed.ch"
            ;
#line 197 "speed.ch"
#line 197 "speed.ch"
            goto _Case27 ;
#line 197 "speed.ch"
#line 197 "speed.ch"
        case metalang::RECOVERL : 
#line 197 "speed.ch"
#line 197 "speed.ch"
        _Case27 : 
#line 197 "speed.ch"
#line 197 "speed.ch"
            ;
#line 197 "speed.ch"
#line 197 "speed.ch"
            goto _Case28 ;
#line 197 "speed.ch"
#line 197 "speed.ch"
        case metalang::FORGET : 
#line 197 "speed.ch"
#line 197 "speed.ch"
        _Case28 : 
#line 197 "speed.ch"
#line 197 "speed.ch"
            ;
#line 197 "speed.ch"
#line 197 "speed.ch"
            goto _Case29 ;
#line 197 "speed.ch"
#line 210 "speed.ch"
        case metalang::RECOGNIZE_STRING : 
#line 210 "speed.ch"
#line 210 "speed.ch"
        _Case29 : 
#line 210 "speed.ch"
#line 210 "speed.ch"
            ;
#line 210 "speed.ch"
#line 210 "speed.ch"
            {
#line 210 "speed.ch"
                PPTREE _ptTree0= (PPTREE) 0 ;
#line 210 "speed.ch"
                {
#line 210 "speed.ch"
                    PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 210 "speed.ch"
                    _ptRes1 = MakeTree(metalang::STRING, 1);
#line 210 "speed.ch"
                    _ptTree1 = MakeString("_ALL_") ;
#line 210 "speed.ch"
                    ReplaceTree(_ptRes1, 1, _ptTree1);
#line 210 "speed.ch"
                    _ptTree0 = _ptRes1;
#line 210 "speed.ch"
                }
#line 210 "speed.ch"
                list =  AddList( list,_ptTree0);
#line 210 "speed.ch"
            }
#line 210 "speed.ch"
#line 210 "speed.ch"
#line 214 "speed.ch"
            return 1 ;
#line 214 "speed.ch"
#line 214 "speed.ch"
            goto _Case30 ;
#line 214 "speed.ch"
#line 215 "speed.ch"
        default : 
#line 215 "speed.ch"
#line 215 "speed.ch"
        _Case30 : 
#line 215 "speed.ch"
#line 215 "speed.ch"
            ;
#line 215 "speed.ch"
#line 215 "speed.ch"
            return 0 ;
#line 215 "speed.ch"
    }
#line 215 "speed.ch"
#line 215 "speed.ch"
#line 217 "speed.ch"
}
#line 217 "speed.ch"

void    FunctionExpand (PTREE, TabList *, PTREE) ;

#line 224 "speed.ch"
#line 224 "speed.ch"
PTREE FunctionContent ( PTREE function, TabList *allFunction, PTREE stacked )
#line 224 "speed.ch"
{
#line 224 "speed.ch"
    register PPTREE _inter ;
#line 224 "speed.ch"
#line 224 "speed.ch"
#line 229 "speed.ch"
    PTREE   elem ;
#line 229 "speed.ch"
#line 229 "speed.ch"
#line 230 "speed.ch"
    PTREE   retValue ;
#line 230 "speed.ch"
#line 230 "speed.ch"
#line 233 "speed.ch"
    if ( (elem=(PPTREE)(*allFunction)[function]) ) {
#line 233 "speed.ch"
#line 236 "speed.ch"
                                                            FunctionExpand(elem, allFunction, stacked);
#line 236 "speed.ch"
#line 239 "speed.ch"
                                                            (elem?elem.Nextl():(PPTREE)0);
#line 239 "speed.ch"
#line 240 "speed.ch"
                                                            (elem?elem.Nextl():(PPTREE)0);
#line 240 "speed.ch"
#line 241 "speed.ch"
                                                            (retValue=copytree(elem));
#line 241 "speed.ch"
#line 241 "speed.ch"
#line 242 "speed.ch"
                                                          } else 
#line 242 "speed.ch"
    {
#line 242 "speed.ch"
#line 245 "speed.ch"
        char    message [MAXLENGTH];
#line 245 "speed.ch"
#line 246 "speed.ch"
        {
#line 246 "speed.ch"
            PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 246 "speed.ch"
            _ptRes0 = MakeTree(LIST, 2);
#line 246 "speed.ch"
            {
#line 246 "speed.ch"
                PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 246 "speed.ch"
                _ptRes1 = MakeTree(metalang::STRING, 1);
#line 246 "speed.ch"
                _ptTree1 = MakeString("_ALL_") ;
#line 246 "speed.ch"
                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 246 "speed.ch"
                _ptTree0 = _ptRes1;
#line 246 "speed.ch"
            }
#line 246 "speed.ch"
            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 246 "speed.ch"
            retValue = _ptRes0;
#line 246 "speed.ch"
        }
#line 246 "speed.ch"
#line 246 "speed.ch"
#line 247 "speed.ch"
        sprintf(message, "Could not find rule : %s \n", Value(function));
#line 247 "speed.ch"
#line 248 "speed.ch"
        write(2, message, strlen(message));
#line 248 "speed.ch"
#line 249 "speed.ch"
    }
#line 249 "speed.ch"
#line 252 "speed.ch"
    {
#line 252 "speed.ch"
#line 253 "speed.ch"
        PTREE   list = (PTREE)0 ;
#line 253 "speed.ch"
#line 253 "speed.ch"
#line 253 "speed.ch"
        (list=retValue);
#line 253 "speed.ch"
#line 253 "speed.ch"
#line 254 "speed.ch"
        while ( list ) {
#line 254 "speed.ch"
#line 255 "speed.ch"
                            if ( ((_inter = (PPTREE)list,1) && 
#line 255 "speed.ch"
                                    (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),1) &&
#line 255 "speed.ch"
                                        (NumberTree(_inter) == metalang::IDENT) &&
#line 255 "speed.ch"
                                        1),
#line 255 "speed.ch"
                                        (_inter=_storeVal[1],1),_retVal[1]) &&
#line 255 "speed.ch"
                                    1) ) {
#line 255 "speed.ch"
#line 256 "speed.ch"
                                            if ( list == retValue ) {
#line 256 "speed.ch"
#line 257 "speed.ch"
                                                                        ((_inter = (PPTREE)list,1) && 
#line 257 "speed.ch"
((list=SonTree(_inter,2)),1) &&
#line 257 "speed.ch"
1)                                                                      ;
#line 257 "speed.ch"
                                                                        ;
#line 257 "speed.ch"
#line 258 "speed.ch"
                                                                        (retValue=list);
#line 258 "speed.ch"
#line 258 "speed.ch"
#line 259 "speed.ch"
                                                                      } else 
#line 259 "speed.ch"
                                            {
#line 259 "speed.ch"
#line 260 "speed.ch"
                                                PTREE   father = (PTREE)0 ;
#line 260 "speed.ch"
#line 260 "speed.ch"
#line 260 "speed.ch"
                                                (father=fathertree(list));
#line 260 "speed.ch"
#line 260 "speed.ch"
#line 261 "speed.ch"
                                                ((_inter = (PPTREE)list,1) && 
#line 261 "speed.ch"
                                                    ((list=SonTree(_inter,2)),1) &&
#line 261 "speed.ch"
                                                    1);
#line 261 "speed.ch"
                                                ;
#line 261 "speed.ch"
#line 262 "speed.ch"
                                                {
#line 262 "speed.ch"
                                                    PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 262 "speed.ch"
                                                    ReplaceTree(father, 2, list);
#line 262 "speed.ch"
                                                }
#line 262 "speed.ch"
#line 262 "speed.ch"
#line 263 "speed.ch"
                                            }
#line 263 "speed.ch"
#line 264 "speed.ch"
                                         }
#line 264 "speed.ch"
#line 265 "speed.ch"
                            (list?list.Nextl():(PPTREE)0);
#line 265 "speed.ch"
#line 266 "speed.ch"
                        }
#line 266 "speed.ch"
#line 267 "speed.ch"
    }
#line 267 "speed.ch"
#line 268 "speed.ch"
    return retValue ;
#line 268 "speed.ch"
#line 269 "speed.ch"
}
#line 269 "speed.ch"

#line 273 "speed.ch"
#line 273 "speed.ch"
void FunctionExpand ( PTREE function, TabList *allFunction, PTREE stacked )
#line 273 "speed.ch"
{
#line 273 "speed.ch"
    register PPTREE _inter ;
#line 273 "speed.ch"
#line 273 "speed.ch"
#line 279 "speed.ch"
    PTREE   elem ;
#line 279 "speed.ch"
#line 279 "speed.ch"
#line 280 "speed.ch"
    PTREE   name ;
#line 280 "speed.ch"
#line 280 "speed.ch"
#line 281 "speed.ch"
    PTREE   functionBase ;
#line 281 "speed.ch"
#line 281 "speed.ch"
#line 282 "speed.ch"
    PTREE   functionElem ;
#line 282 "speed.ch"
#line 282 "speed.ch"
#line 283 "speed.ch"
    int recomputeFunction ;
#line 283 "speed.ch"
#line 287 "speed.ch"
debut : 
#line 287 "speed.ch"
#line 288 "speed.ch"
    (functionElem=(functionBase=function));
#line 288 "speed.ch"
#line 288 "speed.ch"
#line 289 "speed.ch"
    (name=(functionElem?functionElem.Nextl():(PPTREE)0));
#line 289 "speed.ch"
#line 289 "speed.ch"
#line 290 "speed.ch"
    (functionElem?functionElem.Nextl():(PPTREE)0);
#line 290 "speed.ch"
#line 292 "speed.ch"
    while ( functionElem ) {
#line 292 "speed.ch"
#line 293 "speed.ch"
                                (elem=(functionElem?functionElem.Nextl():(PPTREE)0));
#line 293 "speed.ch"
#line 293 "speed.ch"
#line 296 "speed.ch"
                                if ( ((_inter = (PPTREE)elem,1) && 
#line 296 "speed.ch"
                                        (NumberTree(_inter) == metalang::IDENT) &&
#line 296 "speed.ch"
                                        1) ) {
#line 296 "speed.ch"
#line 297 "speed.ch"
                                                PTREE   stackList ;
#line 297 "speed.ch"
#line 297 "speed.ch"
#line 298 "speed.ch"
                                                if ( !strcmp(Value(elem), Value(functionBase)) ) {
#line 298 "speed.ch"
#line 299 "speed.ch"
PTREE   father = (PTREE)0 ;
#line 299 "speed.ch"
#line 299 "speed.ch"
#line 299 "speed.ch"
(father=fathertree(elem));
#line 299 "speed.ch"
#line 299 "speed.ch"
#line 302 "speed.ch"
((_inter = (PPTREE)father,1) && 
#line 302 "speed.ch"
    ((elem=SonTree(_inter,2)),1) &&
#line 302 "speed.ch"
    1);
#line 302 "speed.ch"
;
#line 302 "speed.ch"
#line 303 "speed.ch"
(father=fathertree(father));
#line 303 "speed.ch"
#line 303 "speed.ch"
#line 304 "speed.ch"
{
#line 304 "speed.ch"
    PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 304 "speed.ch"
    ReplaceTree(father, 2, elem);
#line 304 "speed.ch"
}
#line 304 "speed.ch"
#line 304 "speed.ch"
#line 305 "speed.ch"
                                                                                                       } else 
#line 305 "speed.ch"
                                                {
#line 305 "speed.ch"
#line 309 "speed.ch"
                                                    if ( !ListFind(stacked, functionBase) ) {
#line 309 "speed.ch"
#line 310 "speed.ch"
PTREE   newContent ;
#line 310 "speed.ch"
#line 310 "speed.ch"
#line 311 "speed.ch"
PTREE   father = (PTREE)0 ;
#line 311 "speed.ch"
#line 311 "speed.ch"
#line 311 "speed.ch"
(father=fathertree(elem));
#line 311 "speed.ch"
#line 311 "speed.ch"
#line 312 "speed.ch"
(father=fathertree(father));
#line 312 "speed.ch"
#line 312 "speed.ch"
#line 315 "speed.ch"
(stackList=copytree(stacked));
#line 315 "speed.ch"
#line 315 "speed.ch"
#line 316 "speed.ch"
{
#line 316 "speed.ch"
    PPTREE _ptTree0= (PPTREE) 0 ;
#line 316 "speed.ch"
    _ptTree0 = StoreRef(copytree(name));
#line 316 "speed.ch"
    stackList =  AddList( stackList,_ptTree0);
#line 316 "speed.ch"
}
#line 316 "speed.ch"
#line 316 "speed.ch"
#line 317 "speed.ch"
(newContent=FunctionContent(elem, allFunction, stackList));
#line 317 "speed.ch"
#line 317 "speed.ch"
#line 321 "speed.ch"
{
#line 321 "speed.ch"
    PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 321 "speed.ch"
    ReplaceTree(father, 2, newContent);
#line 321 "speed.ch"
}
#line 321 "speed.ch"
#line 321 "speed.ch"
#line 324 "speed.ch"
while ( !(((_inter = (PPTREE)father,1) && 
#line 324 "speed.ch"
                (!SonTree(_inter,2)) &&
#line 324 "speed.ch"
                1)) ) 
#line 324 "speed.ch"
#line 325 "speed.ch"
    ((_inter = (PPTREE)father,1) && 
#line 325 "speed.ch"
        ((father=SonTree(_inter,2)),1) &&
#line 325 "speed.ch"
        1);
#line 325 "speed.ch"
    ;
#line 325 "speed.ch"
#line 326 "speed.ch"
{
#line 326 "speed.ch"
    PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 326 "speed.ch"
    ReplaceTree(father, 2, functionElem);
#line 326 "speed.ch"
}
#line 326 "speed.ch"
#line 326 "speed.ch"
#line 327 "speed.ch"
                                                                                                }
#line 327 "speed.ch"
#line 328 "speed.ch"
                                                }
#line 328 "speed.ch"
#line 329 "speed.ch"
                                             } else 
#line 329 "speed.ch"
                                if ( !strcmp(BrainyValue(elem), "_ALL_") ) {
#line 329 "speed.ch"
#line 330 "speed.ch"
break ;
#line 330 "speed.ch"
#line 331 "speed.ch"
                                                                               }
#line 331 "speed.ch"
#line 332 "speed.ch"
                            }
#line 332 "speed.ch"
#line 333 "speed.ch"
    (functionElem=functionBase);
#line 333 "speed.ch"
#line 333 "speed.ch"
#line 334 "speed.ch"
    recomputeFunction = 0 ;
#line 334 "speed.ch"
#line 335 "speed.ch"
    (functionElem?functionElem.Nextl():(PPTREE)0);
#line 335 "speed.ch"
#line 338 "speed.ch"
    while ( functionElem ) {
#line 338 "speed.ch"
#line 339 "speed.ch"
                                (elem=(functionElem?functionElem.Nextl():(PPTREE)0));
#line 339 "speed.ch"
#line 339 "speed.ch"
#line 340 "speed.ch"
                                if ( !strcmp(BrainyValue(elem), "_ALL_") ) {
#line 340 "speed.ch"
#line 341 "speed.ch"
{
#line 341 "speed.ch"
    PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 341 "speed.ch"
    _sonTree0 = SonTree(functionBase,2);
#line 341 "speed.ch"
    {
#line 341 "speed.ch"
        PPTREE _ptTree1= (PPTREE) 0,_sonTree1= (PPTREE) 0 ;
#line 341 "speed.ch"
        {
#line 341 "speed.ch"
            PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 341 "speed.ch"
            _ptRes2 = MakeTree(LIST, 2);
#line 341 "speed.ch"
            {
#line 341 "speed.ch"
                PPTREE _ptTree3= (PPTREE) 0,_ptRes3= (PPTREE) 0;
#line 341 "speed.ch"
                _ptRes3 = MakeTree(metalang::STRING, 1);
#line 341 "speed.ch"
                _ptTree3 = MakeString("_ALL_") ;
#line 341 "speed.ch"
                ReplaceTree(_ptRes3, 1, _ptTree3);
#line 341 "speed.ch"
                _ptTree2 = _ptRes3;
#line 341 "speed.ch"
            }
#line 341 "speed.ch"
            ReplaceTree(_ptRes2, 1, _ptTree2);
#line 341 "speed.ch"
            _ptTree1 = _ptRes2;
#line 341 "speed.ch"
        }
#line 341 "speed.ch"
        _ptTree0 = ReplaceTree(_sonTree0, 2, _ptTree1);
#line 341 "speed.ch"
    }
#line 341 "speed.ch"
    ReplaceTree(functionBase, 2, _ptTree0);
#line 341 "speed.ch"
}
#line 341 "speed.ch"
#line 341 "speed.ch"
#line 342 "speed.ch"
recomputeFunction = 0 ;
#line 342 "speed.ch"
#line 343 "speed.ch"
break ;
#line 343 "speed.ch"
#line 344 "speed.ch"
                                                                               } else 
#line 344 "speed.ch"
                                if ( !strcmp(BrainyValue(elem), "_NO_STOP_ALL_") ) {
#line 344 "speed.ch"
#line 348 "speed.ch"
recomputeFunction += 1 ;
#line 348 "speed.ch"
#line 349 "speed.ch"
                                                                                       } else 
#line 349 "speed.ch"
                                if ( !strcmp(BrainyValue(elem), "_NO_STOP_ALL_FOUND_") ) {
#line 349 "speed.ch"
#line 350 "speed.ch"
recomputeFunction -= 1 ;
#line 350 "speed.ch"
#line 351 "speed.ch"
                                                                                             }
#line 351 "speed.ch"
#line 352 "speed.ch"
                            }
#line 352 "speed.ch"
#line 355 "speed.ch"
    if ( recomputeFunction ) {
#line 355 "speed.ch"
#line 356 "speed.ch"
                                if ( !ListFind(listFuncNoStop, function) ) {
#line 356 "speed.ch"
#line 357 "speed.ch"
{
#line 357 "speed.ch"
    PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 357 "speed.ch"
    _sonTree0 = SonTree(functionBase,2);
#line 357 "speed.ch"
    {
#line 357 "speed.ch"
        PPTREE _ptTree1= (PPTREE) 0,_sonTree1= (PPTREE) 0 ;
#line 357 "speed.ch"
        _ptTree1 = StoreRef(GetTokensFunctionName(name));
#line 357 "speed.ch"
        _ptTree0 = ReplaceTree(_sonTree0, 2, _ptTree1);
#line 357 "speed.ch"
    }
#line 357 "speed.ch"
    ReplaceTree(functionBase, 2, _ptTree0);
#line 357 "speed.ch"
}
#line 357 "speed.ch"
#line 357 "speed.ch"
#line 358 "speed.ch"
goto debut ;
#line 358 "speed.ch"
#line 359 "speed.ch"
                                                                               }
#line 359 "speed.ch"
#line 360 "speed.ch"
                              }
#line 360 "speed.ch"
#line 361 "speed.ch"
}
#line 361 "speed.ch"

#line 365 "speed.ch"
#line 365 "speed.ch"
void FunctionSort ( PTREE function )
#line 365 "speed.ch"
{
#line 365 "speed.ch"
    register PPTREE _inter ;
#line 365 "speed.ch"
#line 365 "speed.ch"
#line 370 "speed.ch"
    PTREE   compare ;
#line 370 "speed.ch"
#line 370 "speed.ch"
#line 371 "speed.ch"
    PTREE   current ;
#line 371 "speed.ch"
#line 371 "speed.ch"
#line 373 "speed.ch"
    (function?function.Nextl():(PPTREE)0);
#line 373 "speed.ch"
#line 374 "speed.ch"
    (function?function.Nextl():(PPTREE)0);
#line 374 "speed.ch"
#line 375 "speed.ch"
    (compare=function);
#line 375 "speed.ch"
#line 375 "speed.ch"
#line 378 "speed.ch"
    while ( compare ) {
#line 378 "speed.ch"
#line 379 "speed.ch"
                        char    *name = AllocString(BrainyValue(compare));
#line 379 "speed.ch"
#line 380 "speed.ch"
                        PTREE   compareElem = (PTREE)0 ;
#line 380 "speed.ch"
#line 380 "speed.ch"
#line 380 "speed.ch"
                        (compareElem=(compare?compare.Nextl():(PPTREE)0));
#line 380 "speed.ch"
#line 380 "speed.ch"
#line 384 "speed.ch"
                        if ( !strcmp(name, "_NO_STOP_ALL_") || !strcmp(name, "_NO_STOP_ALL_FOUND_") ) 
#line 384 "speed.ch"
#line 386 "speed.ch"
                            continue ;
#line 386 "speed.ch"
#line 387 "speed.ch"
                        (current=compare);
#line 387 "speed.ch"
#line 387 "speed.ch"
#line 388 "speed.ch"
                        while ( current ) {
#line 388 "speed.ch"
#line 389 "speed.ch"
                                            PTREE   currentElem = (PTREE)0 ;
#line 389 "speed.ch"
#line 389 "speed.ch"
#line 389 "speed.ch"
                                            (currentElem=(current?current.Nextl():(PPTREE)0));
#line 389 "speed.ch"
#line 389 "speed.ch"
#line 392 "speed.ch"
                                            if ( qcomparetree(compareElem, currentElem) ) {
#line 392 "speed.ch"
#line 393 "speed.ch"
PTREE   father = (PTREE)0 ;
#line 393 "speed.ch"
#line 393 "speed.ch"
#line 393 "speed.ch"
(father=fathertree(currentElem));
#line 393 "speed.ch"
#line 393 "speed.ch"
#line 394 "speed.ch"
((_inter = (PPTREE)father,1) && 
#line 394 "speed.ch"
    ((currentElem=SonTree(_inter,2)),1) &&
#line 394 "speed.ch"
    1);
#line 394 "speed.ch"
;
#line 394 "speed.ch"
#line 395 "speed.ch"
(father=fathertree(father));
#line 395 "speed.ch"
#line 395 "speed.ch"
#line 396 "speed.ch"
{
#line 396 "speed.ch"
    PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 396 "speed.ch"
    ReplaceTree(father, 2, currentElem);
#line 396 "speed.ch"
}
#line 396 "speed.ch"
#line 396 "speed.ch"
#line 397 "speed.ch"
                                                                                             } else 
#line 397 "speed.ch"
                                            if ( !strcmp(name, BrainyValue(currentElem)) ) {
#line 397 "speed.ch"
#line 398 "speed.ch"
char    Message [MAXLENGTH];
#line 398 "speed.ch"
#line 399 "speed.ch"
sprintf(Message, "Two types of token for %s \n", name);
#line 399 "speed.ch"
#line 400 "speed.ch"
write(2, Message, strlen(Message));
#line 400 "speed.ch"
#line 401 "speed.ch"
                                                                                               }
#line 401 "speed.ch"
#line 402 "speed.ch"
                                           }
#line 402 "speed.ch"
#line 403 "speed.ch"
                        free(name);
#line 403 "speed.ch"
#line 404 "speed.ch"
                       }
#line 404 "speed.ch"
#line 405 "speed.ch"
}
#line 405 "speed.ch"

int nbRule = 0 ;

#line 412 "speed.ch"
#line 412 "speed.ch"
PTREE GetTokensFunctionName ( PTREE func )
#line 412 "speed.ch"
{
#line 412 "speed.ch"
    register PPTREE _inter ;
#line 412 "speed.ch"
#line 412 "speed.ch"
#line 416 "speed.ch"
    PTREE   tree = (PTREE)0 ;
#line 416 "speed.ch"
#line 416 "speed.ch"
#line 417 "speed.ch"
    PTREE   name ;
#line 417 "speed.ch"
#line 417 "speed.ch"
#line 416 "speed.ch"
    (tree=rootTree);
#line 416 "speed.ch"
#line 416 "speed.ch"
#line 419 "speed.ch"
    {
#line 419 "speed.ch"
#line 419 "speed.ch"
        ItPtree _iterator1 (tree, (PPTREE) 0) ;
#line 419 "speed.ch"
#line 419 "speed.ch"
        PPTREE  _for_elem ;
#line 419 "speed.ch"
#line 419 "speed.ch"
        _iterator1.AllSearch(1);
#line 419 "speed.ch"
#line 420 "speed.ch"
        while ( _for_elem = _iterator1++ ) {
#line 420 "speed.ch"
#line 419 "speed.ch"
            {
#line 419 "speed.ch"
#line 420 "speed.ch"
                if ( ((_inter = (PPTREE)for_elem,1) && 
#line 420 "speed.ch"
                        (NumberTree(_inter) == metalang::DEFINE) &&
#line 420 "speed.ch"
                        ((name=SonTree(_inter,1)),1) &&
#line 420 "speed.ch"
                        1) ) {
#line 420 "speed.ch"
#line 421 "speed.ch"
                                if ( !strcmp(BrainyValue(for_elem), BrainyValue(func)) ) {
#line 421 "speed.ch"
#line 422 "speed.ch"
return GetTokensFunction(for_elem);
#line 422 "speed.ch"
#line 423 "speed.ch"
                                                                                             }
#line 423 "speed.ch"
#line 424 "speed.ch"
                                goto for_continue1 ;
#line 424 "speed.ch"
#line 425 "speed.ch"
                             }
#line 425 "speed.ch"
#line 426 "speed.ch"
            }
#line 426 "speed.ch"
#line 426 "speed.ch"
            _iterator1.Current(_for_elem);
#line 426 "speed.ch"
#line 426 "speed.ch"
            continue ;
#line 426 "speed.ch"
#line 426 "speed.ch"
        for_continue1 : 
#line 426 "speed.ch"
#line 426 "speed.ch"
            _iterator1.Current(_for_elem);
#line 426 "speed.ch"
#line 426 "speed.ch"
            _iterator1.SkipSon(1);
#line 426 "speed.ch"
#line 426 "speed.ch"
            continue ;
#line 426 "speed.ch"
#line 426 "speed.ch"
        for_break1 : 
#line 426 "speed.ch"
#line 426 "speed.ch"
            break ;
#line 426 "speed.ch"
#line 426 "speed.ch"
        }
#line 426 "speed.ch"
#line 426 "speed.ch"
    }
#line 426 "speed.ch"
#line 429 "speed.ch"
    {
#line 429 "speed.ch"
#line 430 "speed.ch"
        PTREE   list = (PTREE)0 ;
#line 430 "speed.ch"
#line 430 "speed.ch"
#line 430 "speed.ch"
        {
#line 430 "speed.ch"
            PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 430 "speed.ch"
            _ptRes0 = MakeTree(LIST, 2);
#line 430 "speed.ch"
            {
#line 430 "speed.ch"
                PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 430 "speed.ch"
                _ptRes1 = MakeTree(metalang::STRING, 1);
#line 430 "speed.ch"
                _ptTree1 = MakeString("_ALL_") ;
#line 430 "speed.ch"
                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 430 "speed.ch"
                _ptTree0 = _ptRes1;
#line 430 "speed.ch"
            }
#line 430 "speed.ch"
            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 430 "speed.ch"
            list = _ptRes0;
#line 430 "speed.ch"
        }
#line 430 "speed.ch"
#line 430 "speed.ch"
#line 431 "speed.ch"
        {
#line 431 "speed.ch"
            PPTREE _ptTree0= (PPTREE) 0 ;
#line 431 "speed.ch"
            _ptTree0 = StoreRef(copytree(name));
#line 431 "speed.ch"
            listFuncNoStop =  AddList( listFuncNoStop,_ptTree0);
#line 431 "speed.ch"
        }
#line 431 "speed.ch"
#line 431 "speed.ch"
#line 432 "speed.ch"
        return list ;
#line 432 "speed.ch"
#line 433 "speed.ch"
    }
#line 433 "speed.ch"
#line 434 "speed.ch"
}
#line 434 "speed.ch"

#line 436 "speed.ch"
#line 436 "speed.ch"
PTREE GetTokensFunction ( PTREE func )
#line 436 "speed.ch"
{
#line 436 "speed.ch"
    register PPTREE _inter ;
#line 436 "speed.ch"
#line 436 "speed.ch"
#line 440 "speed.ch"
    PTREE   list = (PTREE)0 ;
#line 440 "speed.ch"
#line 440 "speed.ch"
#line 441 "speed.ch"
    PTREE   name, pattern ;
#line 441 "speed.ch"
#line 441 "speed.ch"
#line 442 "speed.ch"
    int stop ;
#line 442 "speed.ch"
#line 440 "speed.ch"
    {
#line 440 "speed.ch"
        PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 440 "speed.ch"
        _ptRes0 = MakeTree(LIST, 2);
#line 440 "speed.ch"
        list = _ptRes0;
#line 440 "speed.ch"
    }
#line 440 "speed.ch"
#line 440 "speed.ch"
#line 444 "speed.ch"
    if ( ((_inter = (PPTREE)func,1) && 
#line 444 "speed.ch"
            (NumberTree(_inter) == metalang::DEFINE) &&
#line 444 "speed.ch"
            ((name=SonTree(_inter,1)),1) &&
#line 444 "speed.ch"
            ((pattern=SonTree(_inter,2)),1) &&
#line 444 "speed.ch"
            1) ) {
#line 444 "speed.ch"
#line 447 "speed.ch"
                    stop = StopFind(pattern, list);
#line 447 "speed.ch"
#line 451 "speed.ch"
                    if ( !stop ) {
#line 451 "speed.ch"
#line 452 "speed.ch"
                                    {
#line 452 "speed.ch"
                                        PPTREE _ptTree0= (PPTREE) 0 ;
#line 452 "speed.ch"
                                        {
#line 452 "speed.ch"
                                            PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 452 "speed.ch"
                                            _ptRes1 = MakeTree(metalang::STRING, 1);
#line 452 "speed.ch"
                                            _ptTree1 = MakeString("_NO_STOP_ALL_") ;
#line 452 "speed.ch"
                                            ReplaceTree(_ptRes1, 1, _ptTree1);
#line 452 "speed.ch"
                                            _ptTree0 = _ptRes1;
#line 452 "speed.ch"
                                        }
#line 452 "speed.ch"
                                        list =  AddList( list,_ptTree0);
#line 452 "speed.ch"
                                    }
#line 452 "speed.ch"
#line 452 "speed.ch"
#line 453 "speed.ch"
                                    {
#line 453 "speed.ch"
                                        PPTREE _ptTree0= (PPTREE) 0 ;
#line 453 "speed.ch"
                                        _ptTree0 = StoreRef(copytree(name));
#line 453 "speed.ch"
                                        listFuncNoStop =  AddList( listFuncNoStop,_ptTree0);
#line 453 "speed.ch"
                                    }
#line 453 "speed.ch"
#line 453 "speed.ch"
#line 454 "speed.ch"
                                   }
#line 454 "speed.ch"
#line 455 "speed.ch"
                    (list?list.Nextl():(PPTREE)0);
#line 455 "speed.ch"
#line 456 "speed.ch"
                 }
#line 456 "speed.ch"
#line 459 "speed.ch"
    {
#line 459 "speed.ch"
#line 459 "speed.ch"
        ItPtree _iterator1 (list, (PPTREE) 0) ;
#line 459 "speed.ch"
#line 459 "speed.ch"
        PPTREE  _for_elem ;
#line 459 "speed.ch"
#line 459 "speed.ch"
        _iterator1.AllSearch(1);
#line 459 "speed.ch"
#line 460 "speed.ch"
        while ( _for_elem = _iterator1++ ) {
#line 460 "speed.ch"
#line 460 "speed.ch"
            replacetree(for_elem, 0, (PTREE)0);
#line 460 "speed.ch"
#line 460 "speed.ch"
            _iterator1.Current(_for_elem);
#line 460 "speed.ch"
#line 460 "speed.ch"
            continue ;
#line 460 "speed.ch"
#line 460 "speed.ch"
        for_continue1 : 
#line 460 "speed.ch"
#line 460 "speed.ch"
            _iterator1.Current(_for_elem);
#line 460 "speed.ch"
#line 460 "speed.ch"
            _iterator1.SkipSon(1);
#line 460 "speed.ch"
#line 460 "speed.ch"
            continue ;
#line 460 "speed.ch"
#line 460 "speed.ch"
        for_break1 : 
#line 460 "speed.ch"
#line 460 "speed.ch"
            break ;
#line 460 "speed.ch"
#line 460 "speed.ch"
        }
#line 460 "speed.ch"
#line 460 "speed.ch"
    }
#line 460 "speed.ch"
#line 464 "speed.ch"
    return list ;
#line 464 "speed.ch"
#line 465 "speed.ch"
}
#line 465 "speed.ch"

static nbArrayEntry = (int)0 ;

#line 469 "speed.ch"
#line 469 "speed.ch"
void TreeTokenAnalyze ( PTREE tree )
#line 469 "speed.ch"
{
#line 469 "speed.ch"
    register PPTREE _inter ;
#line 469 "speed.ch"
#line 469 "speed.ch"
#line 472 "speed.ch"
    PTREE   name, list, listFunc, elem, function, newList ;
#line 472 "speed.ch"
#line 472 "speed.ch"
#line 473 "speed.ch"
    TabList *ptTabList ;
#line 473 "speed.ch"
#line 475 "speed.ch"
    if ( listArrayEntry ) {
#line 475 "speed.ch"
#line 476 "speed.ch"
                            FreeArrayEntry();
#line 476 "speed.ch"
#line 477 "speed.ch"
                           }
#line 477 "speed.ch"
#line 478 "speed.ch"
    (rootTree=tree);
#line 478 "speed.ch"
#line 478 "speed.ch"
#line 481 "speed.ch"
    {
#line 481 "speed.ch"
        PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 481 "speed.ch"
        _ptRes0 = MakeTree(LIST, 2);
#line 481 "speed.ch"
        listFunc = _ptRes0;
#line 481 "speed.ch"
    }
#line 481 "speed.ch"
#line 481 "speed.ch"
#line 482 "speed.ch"
    {
#line 482 "speed.ch"
#line 482 "speed.ch"
        ItPtree _iterator1 (tree, (PPTREE) 0) ;
#line 482 "speed.ch"
#line 482 "speed.ch"
        PPTREE  _for_elem ;
#line 482 "speed.ch"
#line 482 "speed.ch"
        _iterator1.AllSearch(1);
#line 482 "speed.ch"
#line 483 "speed.ch"
        while ( _for_elem = _iterator1++ ) {
#line 483 "speed.ch"
#line 482 "speed.ch"
            {
#line 482 "speed.ch"
#line 483 "speed.ch"
                if ( ((_inter = (PPTREE)for_elem,1) && 
#line 483 "speed.ch"
                        (NumberTree(_inter) == metalang::DEFINE) &&
#line 483 "speed.ch"
                        ((name=SonTree(_inter,1)),1) &&
#line 483 "speed.ch"
                        1) ) {
#line 483 "speed.ch"
#line 486 "speed.ch"
                                {
#line 486 "speed.ch"
                                    PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 486 "speed.ch"
                                    _ptRes0 = MakeTree(LIST, 2);
#line 486 "speed.ch"
                                    _ptTree0 = StoreRef(copytree(name));
#line 486 "speed.ch"
                                    ReplaceTree(_ptRes0, 1, _ptTree0);
#line 486 "speed.ch"
                                    {
#line 486 "speed.ch"
                                        PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 486 "speed.ch"
                                        _ptRes1 = MakeTree(LIST, 2);
#line 486 "speed.ch"
                                        {
#line 486 "speed.ch"
                                            PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 486 "speed.ch"
                                            _ptRes2 = MakeTree(LIST, 2);
#line 486 "speed.ch"
                                            _ptTree1 = _ptRes2;
#line 486 "speed.ch"
                                        }
#line 486 "speed.ch"
                                        ReplaceTree(_ptRes1, 1, _ptTree1);
#line 486 "speed.ch"
                                        _ptTree1 = StoreRef(GetTokensFunction(for_elem));
#line 486 "speed.ch"
                                        ReplaceTree(_ptRes1, 2, _ptTree1);
#line 486 "speed.ch"
                                        _ptTree0 = _ptRes1;
#line 486 "speed.ch"
                                    }
#line 486 "speed.ch"
                                    ReplaceTree(_ptRes0, 2, _ptTree0);
#line 486 "speed.ch"
                                    list = _ptRes0;
#line 486 "speed.ch"
                                }
#line 486 "speed.ch"
#line 486 "speed.ch"
#line 488 "speed.ch"
                                {
#line 488 "speed.ch"
                                    PPTREE _ptTree0= (PPTREE) 0 ;
#line 488 "speed.ch"
                                    listFunc =  AddList( listFunc,list);
#line 488 "speed.ch"
                                }
#line 488 "speed.ch"
#line 488 "speed.ch"
#line 489 "speed.ch"
                                goto for_continue1 ;
#line 489 "speed.ch"
#line 490 "speed.ch"
                             }
#line 490 "speed.ch"
#line 491 "speed.ch"
            }
#line 491 "speed.ch"
#line 491 "speed.ch"
            _iterator1.Current(_for_elem);
#line 491 "speed.ch"
#line 491 "speed.ch"
            continue ;
#line 491 "speed.ch"
#line 491 "speed.ch"
        for_continue1 : 
#line 491 "speed.ch"
#line 491 "speed.ch"
            _iterator1.Current(_for_elem);
#line 491 "speed.ch"
#line 491 "speed.ch"
            _iterator1.SkipSon(1);
#line 491 "speed.ch"
#line 491 "speed.ch"
            continue ;
#line 491 "speed.ch"
#line 491 "speed.ch"
        for_break1 : 
#line 491 "speed.ch"
#line 491 "speed.ch"
            break ;
#line 491 "speed.ch"
#line 491 "speed.ch"
        }
#line 491 "speed.ch"
#line 491 "speed.ch"
    }
#line 491 "speed.ch"
#line 492 "speed.ch"
    (listFunc?listFunc.Nextl():(PPTREE)0);
#line 492 "speed.ch"
#line 495 "speed.ch"
    (list=listFunc);
#line 495 "speed.ch"
#line 495 "speed.ch"
#line 496 "speed.ch"
    ptTabList = new TabList(listFunc);
#line 496 "speed.ch"
#line 497 "speed.ch"
    while ( list ) {
#line 497 "speed.ch"
#line 497 "speed.ch"
                        PTREE   _Baum0 ;
#line 497 "speed.ch"
#line 497 "speed.ch"
#line 498 "speed.ch"
                        (elem=(list?list.Nextl():(PPTREE)0));
#line 498 "speed.ch"
#line 498 "speed.ch"
#line 499 "speed.ch"
                        {
#line 499 "speed.ch"
                            PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 499 "speed.ch"
                            _ptRes0 = MakeTree(LIST, 2);
#line 499 "speed.ch"
                            {
#line 499 "speed.ch"
                                PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 499 "speed.ch"
                                _ptRes1 = MakeTree(metalang::IDENT, 1);
#line 499 "speed.ch"
                                _ptTree1 = MakeString("_ROOT_") ;
#line 499 "speed.ch"
                                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 499 "speed.ch"
                                _ptTree0 = _ptRes1;
#line 499 "speed.ch"
                            }
#line 499 "speed.ch"
                            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 499 "speed.ch"
                            _Baum0 = _ptRes0;
#line 499 "speed.ch"
                        }
#line 499 "speed.ch"
#line 499 "speed.ch"
#line 499 "speed.ch"
                        FunctionExpand(elem, ptTabList, _Baum0);
#line 499 "speed.ch"
#line 500 "speed.ch"
                    }
#line 500 "speed.ch"
#line 501 "speed.ch"
    delete ptTabList ;
#line 501 "speed.ch"
#line 504 "speed.ch"
    (list=listFunc);
#line 504 "speed.ch"
#line 504 "speed.ch"
#line 505 "speed.ch"
    while ( list ) {
#line 505 "speed.ch"
#line 506 "speed.ch"
                        (elem=(list?list.Nextl():(PPTREE)0));
#line 506 "speed.ch"
#line 506 "speed.ch"
#line 507 "speed.ch"
                        FunctionSort(elem);
#line 507 "speed.ch"
#line 508 "speed.ch"
                    }
#line 508 "speed.ch"
#line 509 "speed.ch"
    listFuncNoStop = (PPTREE) 0 ;
#line 509 "speed.ch"
#line 509 "speed.ch"
#line 510 "speed.ch"
    rootTree = (PPTREE) 0 ;
#line 510 "speed.ch"
#line 510 "speed.ch"
#line 513 "speed.ch"
    if ( !listFuncToken ) {
#line 513 "speed.ch"
#line 514 "speed.ch"
                                listFuncToken = new TabList(listFunc);
#line 514 "speed.ch"
#line 515 "speed.ch"
                                listFuncToken -> Sort();
#line 515 "speed.ch"
#line 516 "speed.ch"
                                (list=listFunc);
#line 516 "speed.ch"
#line 516 "speed.ch"
#line 517 "speed.ch"
                                while ( (elem=(list?list.Nextl():(PPTREE)0)) ) {
#line 517 "speed.ch"
#line 518 "speed.ch"
{
#line 518 "speed.ch"
    PPTREE _ptTree0= (PPTREE) 0 ;
#line 518 "speed.ch"
    {
#line 518 "speed.ch"
        PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 518 "speed.ch"
        _ptRes1 = MakeTree(metalang::IDENT, 1);
#line 518 "speed.ch"
        _ptTree1 = StoreRef(MakeString(Value(elem)));
#line 518 "speed.ch"
        ReplaceTree(_ptRes1, 1, _ptTree1);
#line 518 "speed.ch"
        _ptTree0 = _ptRes1;
#line 518 "speed.ch"
    }
#line 518 "speed.ch"
    newList =  AddList( newList,_ptTree0);
#line 518 "speed.ch"
}
#line 518 "speed.ch"
#line 518 "speed.ch"
#line 519 "speed.ch"
                                                                                   }
#line 519 "speed.ch"
#line 520 "speed.ch"
                                {
#line 520 "speed.ch"
                                    PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 520 "speed.ch"
                                    _ptRes0 = MakeTree(LIST, 2);
#line 520 "speed.ch"
                                    ReplaceTree(_ptRes0, 1, newList);
#line 520 "speed.ch"
                                    listLevel = _ptRes0;
#line 520 "speed.ch"
                                }
#line 520 "speed.ch"
#line 520 "speed.ch"
#line 521 "speed.ch"
                            } else 
#line 521 "speed.ch"
    {
#line 521 "speed.ch"
#line 525 "speed.ch"
        (list=listFunc);
#line 525 "speed.ch"
#line 525 "speed.ch"
#line 526 "speed.ch"
        while ( (elem=(list?list.Nextl():(PPTREE)0)) ) {
#line 526 "speed.ch"
#line 527 "speed.ch"
                                                            if ( !(*listFuncToken)[elem] ) {
#line 527 "speed.ch"
#line 528 "speed.ch"
{
#line 528 "speed.ch"
    PPTREE _ptTree0= (PPTREE) 0 ;
#line 528 "speed.ch"
    {
#line 528 "speed.ch"
        PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 528 "speed.ch"
        _ptRes1 = MakeTree(metalang::IDENT, 1);
#line 528 "speed.ch"
        _ptTree1 = StoreRef(MakeString(Value(elem)));
#line 528 "speed.ch"
        ReplaceTree(_ptRes1, 1, _ptTree1);
#line 528 "speed.ch"
        _ptTree0 = _ptRes1;
#line 528 "speed.ch"
    }
#line 528 "speed.ch"
    newList =  AddList( newList,_ptTree0);
#line 528 "speed.ch"
}
#line 528 "speed.ch"
#line 528 "speed.ch"
#line 529 "speed.ch"
                                                                                                }
#line 529 "speed.ch"
#line 530 "speed.ch"
                                                            listFuncToken -> InsertRemove(elem);
#line 530 "speed.ch"
#line 531 "speed.ch"
                                                           }
#line 531 "speed.ch"
#line 534 "speed.ch"
        {
#line 534 "speed.ch"
            PPTREE _ptTree0= (PPTREE) 0 ;
#line 534 "speed.ch"
            listLevel =  AddList( listLevel,newList);
#line 534 "speed.ch"
        }
#line 534 "speed.ch"
#line 534 "speed.ch"
#line 535 "speed.ch"
    }
#line 535 "speed.ch"
#line 538 "speed.ch"
    listFuncToken -> Sort();
#line 538 "speed.ch"
#line 542 "speed.ch"
    (list=listLevel);
#line 542 "speed.ch"
#line 542 "speed.ch"
#line 543 "speed.ch"
    while ( list ) {
#line 543 "speed.ch"
#line 544 "speed.ch"
                        (elem=(list?list.Nextl():(PPTREE)0));
#line 544 "speed.ch"
#line 544 "speed.ch"
#line 545 "speed.ch"
                        while ( (name=(elem?elem.Nextl():(PPTREE)0)) ) {
#line 545 "speed.ch"
#line 546 "speed.ch"
(function=FuncAccelerator(name));
#line 546 "speed.ch"
#line 546 "speed.ch"
#line 547 "speed.ch"
                                                                           }
#line 547 "speed.ch"
#line 548 "speed.ch"
                    }
#line 548 "speed.ch"
#line 549 "speed.ch"
}
#line 549 "speed.ch"

#line 562 "speed.ch"
#line 562 "speed.ch"
void FreeArrayEntry ()
#line 562 "speed.ch"
{
#line 562 "speed.ch"
#line 565 "speed.ch"
    PARRAY_ENTRY    pt = listArrayEntry ;
#line 565 "speed.ch"
#line 567 "speed.ch"
    while ( pt -> next ) 
#line 567 "speed.ch"
#line 568 "speed.ch"
        pt = pt -> next ;
#line 568 "speed.ch"
#line 569 "speed.ch"
    pt -> next = listArrayEntryFree ;
#line 569 "speed.ch"
#line 570 "speed.ch"
    listArrayEntryFree = listArrayEntry ;
#line 570 "speed.ch"
#line 571 "speed.ch"
    arrayEntryCurrent = listArrayEntry = (PARRAY_ENTRY)0 ;
#line 571 "speed.ch"
#line 572 "speed.ch"
    nbArrayEntry = 0 ;
#line 572 "speed.ch"
#line 573 "speed.ch"
}
#line 573 "speed.ch"

#line 575 "speed.ch"
#line 575 "speed.ch"
PARRAY_ENTRY AllocArrayEntryUnit ()
#line 575 "speed.ch"
{
#line 575 "speed.ch"
#line 577 "speed.ch"
    PARRAY_ENTRY    pt ;
#line 577 "speed.ch"
#line 579 "speed.ch"
    if ( listArrayEntryFree ) {
#line 579 "speed.ch"
#line 580 "speed.ch"
                                pt = listArrayEntryFree ;
#line 580 "speed.ch"
#line 581 "speed.ch"
                                listArrayEntryFree = listArrayEntryFree -> next ;
#line 581 "speed.ch"
#line 582 "speed.ch"
                               } else 
#line 582 "speed.ch"
    {
#line 582 "speed.ch"
#line 583 "speed.ch"
        pt = (PARRAY_ENTRY)malloc(sizeof(ARRAY_ENTRY));
#line 583 "speed.ch"
#line 584 "speed.ch"
    }
#line 584 "speed.ch"
#line 585 "speed.ch"
    pt -> next = (PARRAY_ENTRY)0 ;
#line 585 "speed.ch"
#line 586 "speed.ch"
    if ( arrayEntryCurrent ) {
#line 586 "speed.ch"
#line 587 "speed.ch"
                                arrayEntryCurrent -> next = pt ;
#line 587 "speed.ch"
#line 588 "speed.ch"
                              } else 
#line 588 "speed.ch"
#line 589 "speed.ch"
        listArrayEntry = pt ;
#line 589 "speed.ch"
#line 589 "speed.ch"
#line 590 "speed.ch"
    arrayEntryCurrent = pt ;
#line 590 "speed.ch"
#line 591 "speed.ch"
    return pt ;
#line 591 "speed.ch"
#line 592 "speed.ch"
}
#line 592 "speed.ch"

#line 594 "speed.ch"
#line 594 "speed.ch"
PTREE FuncAccelerator ( PTREE funcName )
#line 594 "speed.ch"
{
#line 594 "speed.ch"
    register PPTREE _inter ;
#line 594 "speed.ch"
#line 594 "speed.ch"
#line 598 "speed.ch"
    PTREE   funcElem ;
#line 598 "speed.ch"
#line 598 "speed.ch"
#line 600 "speed.ch"
    PTREE   tokenElem ;
#line 600 "speed.ch"
#line 600 "speed.ch"
#line 601 "speed.ch"
    int lexEntry = - 1 ;
#line 601 "speed.ch"
#line 602 "speed.ch"
    PTREE   lexEntryFunc ;
#line 602 "speed.ch"
#line 602 "speed.ch"
#line 604 "speed.ch"
    if ( metaQuick ) 
#line 604 "speed.ch"
#line 605 "speed.ch"
        return (PTREE)0 ;
#line 605 "speed.ch"
#line 608 "speed.ch"
    if ( (funcElem=(PPTREE)(*listFuncToken)[funcName]) ) {
#line 608 "speed.ch"
#line 609 "speed.ch"
                                                                    PTREE   ptArray ;
#line 609 "speed.ch"
#line 609 "speed.ch"
#line 610 "speed.ch"
                                                                    PTREE   funcInit = (PTREE)0 ;
#line 610 "speed.ch"
#line 610 "speed.ch"
#line 610 "speed.ch"
                                                                    (funcInit=funcElem);
#line 610 "speed.ch"
#line 610 "speed.ch"
#line 611 "speed.ch"
                                                                    (funcElem?funcElem.Nextl():(PPTREE)0);
#line 611 "speed.ch"
#line 612 "speed.ch"
                                                                    (ptArray=(funcElem?funcElem.Nextl():(PPTREE)0));
#line 612 "speed.ch"
#line 612 "speed.ch"
#line 616 "speed.ch"
                                                                    if ( !(((_inter = (PPTREE)ptArray,1) && 
#line 616 "speed.ch"
(NumberTree(_inter) == LIST) &&
#line 616 "speed.ch"
(!SonTree(_inter,1)) &&
#line 616 "speed.ch"
(!SonTree(_inter,2)) &&
#line 616 "speed.ch"
1)                                                                       ) ) {
#line 616 "speed.ch"
#line 619 "speed.ch"
return ptArray ;
#line 619 "speed.ch"
#line 620 "speed.ch"
                                                                             } else 
#line 620 "speed.ch"
                                                                    {
#line 620 "speed.ch"
#line 623 "speed.ch"
                                                                        int nbNoStop = 0 ;
#line 623 "speed.ch"
#line 624 "speed.ch"
                                                                        int getAll = 0 ;
#line 624 "speed.ch"
#line 627 "speed.ch"
                                                                        {
#line 627 "speed.ch"
#line 628 "speed.ch"
int i ;
#line 628 "speed.ch"
#line 629 "speed.ch"
#line 629 "speed.ch"
for ( i = MAX_TOKEN / 8 ; i-- ; ) 
#line 629 "speed.ch"
#line 630 "speed.ch"
    arrayEntry [i] = '\0';
#line 630 "speed.ch"
#line 630 "speed.ch"
#line 631 "speed.ch"
                                                                        }
#line 631 "speed.ch"
#line 634 "speed.ch"
                                                                        {
#line 634 "speed.ch"
#line 635 "speed.ch"
PTREE   tokenList = (PTREE)0 ;
#line 635 "speed.ch"
#line 635 "speed.ch"
#line 635 "speed.ch"
(tokenList=funcElem);
#line 635 "speed.ch"
#line 635 "speed.ch"
#line 636 "speed.ch"
while ( (tokenElem=(tokenList?tokenList.Nextl():(PPTREE)0)) ) {
#line 636 "speed.ch"
#line 639 "speed.ch"
                                                                    if ( ((_inter = (PPTREE)tokenElem,1) && 
#line 639 "speed.ch"
(NumberTree(_inter) == metalang::STRING) &&
#line 639 "speed.ch"
(!strcmp(Value(SonTree(_inter,1)),"_ALL_")) &&
#line 639 "speed.ch"
1)                                                                  ) {
#line 639 "speed.ch"
#line 640 "speed.ch"
                                                                        getAll = 1 ;
#line 640 "speed.ch"
#line 641 "speed.ch"
                                                                        break ;
#line 641 "speed.ch"
#line 642 "speed.ch"
                                                                      } else 
#line 642 "speed.ch"
                                                                    if ( ((_inter = (PPTREE)tokenElem,1) && 
#line 642 "speed.ch"
(NumberTree(_inter) == metalang::STRING) &&
#line 642 "speed.ch"
(!strcmp(Value(SonTree(_inter,1)),"_NO_STOP_ALL_")) &&
#line 642 "speed.ch"
1)                                                                  ) {
#line 642 "speed.ch"
#line 643 "speed.ch"
                                                                        nbNoStop += 1 ;
#line 643 "speed.ch"
#line 644 "speed.ch"
                                                                        continue ;
#line 644 "speed.ch"
#line 645 "speed.ch"
                                                                      } else 
#line 645 "speed.ch"
                                                                    if ( ((_inter = (PPTREE)tokenElem,1) && 
#line 645 "speed.ch"
(NumberTree(_inter) == metalang::STRING) &&
#line 645 "speed.ch"
(!strcmp(Value(SonTree(_inter,1)),"_NO_STOP_ALL_FOUND_")) &&
#line 645 "speed.ch"
1)                                                                  ) {
#line 645 "speed.ch"
#line 646 "speed.ch"
                                                                        nbNoStop -= 1 ;
#line 646 "speed.ch"
#line 647 "speed.ch"
                                                                        continue ;
#line 647 "speed.ch"
#line 648 "speed.ch"
                                                                      }
#line 648 "speed.ch"
#line 649 "speed.ch"
                                                                  }
#line 649 "speed.ch"
#line 650 "speed.ch"
                                                                        }
#line 650 "speed.ch"
#line 653 "speed.ch"
                                                                        if ( !getAll && !nbNoStop ) 
#line 653 "speed.ch"
#line 654 "speed.ch"
while ( funcElem ) {
#line 654 "speed.ch"
#line 655 "speed.ch"
                        PDESCRIPT_ELEM  pDescript = (PDESCRIPT_ELEM)0 ;
#line 655 "speed.ch"
#line 656 "speed.ch"
                        PDESCRIPT_ELEM  ptDescriptOld = (PDESCRIPT_ELEM)0 ;
#line 656 "speed.ch"
#line 657 "speed.ch"
                        int nbToken ;
#line 657 "speed.ch"
#line 658 "speed.ch"
                        (tokenElem=(funcElem?funcElem.Nextl():(PPTREE)0));
#line 658 "speed.ch"
#line 658 "speed.ch"
#line 663 "speed.ch"
                        if ( ((_inter = (PPTREE)tokenElem,1) && 
#line 663 "speed.ch"
                                (NumberTree(_inter) == metalang::STRING) &&
#line 663 "speed.ch"
                                (!strcmp(Value(SonTree(_inter,1)),"_NO_STOP_ALL_")) &&
#line 663 "speed.ch"
                                1) ) {
#line 663 "speed.ch"
#line 664 "speed.ch"
                                        continue ;
#line 664 "speed.ch"
#line 665 "speed.ch"
                                     } else 
#line 665 "speed.ch"
                        if ( ((_inter = (PPTREE)tokenElem,1) && 
#line 665 "speed.ch"
                                (NumberTree(_inter) == metalang::STRING) &&
#line 665 "speed.ch"
                                (!strcmp(Value(SonTree(_inter,1)),"_NO_STOP_ALL_FOUND_")) &&
#line 665 "speed.ch"
                                1) ) {
#line 665 "speed.ch"
#line 666 "speed.ch"
                                        continue ;
#line 666 "speed.ch"
#line 667 "speed.ch"
                                     }
#line 667 "speed.ch"
#line 668 "speed.ch"
                        switch ( NumberTree(tokenElem) ) {
#line 668 "speed.ch"
#line 670 "speed.ch"
                            case metalang::TOKEN : 
#line 670 "speed.ch"
#line 670 "speed.ch"
                            _Case31 : 
#line 670 "speed.ch"
#line 670 "speed.ch"
                                ;
#line 670 "speed.ch"
#line 670 "speed.ch"
                                pDescript = FindStringDescript(AddKey(BrainyValue(tokenElem)), tokenElem);
#line 670 "speed.ch"
#line 673 "speed.ch"
                                if ( cplusGen ) 
#line 673 "speed.ch"
#line 674 "speed.ch"
                                    nbToken = AddConst(AddKey(BrainyValue(tokenElem)));
#line 674 "speed.ch"
                                else 
#line 674 "speed.ch"
#line 677 "speed.ch"
                                    nbToken = AddConst(AddKey(BrainyValue(tokenElem)));
#line 677 "speed.ch"
#line 677 "speed.ch"
#line 679 "speed.ch"
                                break ;
#line 679 "speed.ch"
#line 679 "speed.ch"
                            case metalang::STRING : 
#line 679 "speed.ch"
#line 679 "speed.ch"
                            _Case32 : 
#line 679 "speed.ch"
#line 679 "speed.ch"
                                ;
#line 679 "speed.ch"
#line 679 "speed.ch"
                                goto _Case33 ;
#line 679 "speed.ch"
#line 682 "speed.ch"
                            case metalang::EXCLA : 
#line 682 "speed.ch"
#line 682 "speed.ch"
                            _Case33 : 
#line 682 "speed.ch"
#line 682 "speed.ch"
                                ;
#line 682 "speed.ch"
#line 682 "speed.ch"
                                pDescript = FindStringDescript(SymboName(BrainyValue(tokenElem), 0), tokenElem);
#line 682 "speed.ch"
#line 685 "speed.ch"
                                nbToken = AddConst(SymboName(BrainyValue(tokenElem), 0));
#line 685 "speed.ch"
#line 687 "speed.ch"
                                break ;
#line 687 "speed.ch"
#line 689 "speed.ch"
                            default : 
#line 689 "speed.ch"
#line 689 "speed.ch"
                            _Case34 : 
#line 689 "speed.ch"
#line 689 "speed.ch"
                                ;
#line 689 "speed.ch"
#line 689 "speed.ch"
                                pDescript = (PDESCRIPT_ELEM)0 ;
#line 689 "speed.ch"
#line 690 "speed.ch"
                                lexEntry = - 2 ;
#line 690 "speed.ch"
#line 691 "speed.ch"
                                nbToken = 0 ;
#line 691 "speed.ch"
                        }
#line 691 "speed.ch"
#line 691 "speed.ch"
#line 693 "speed.ch"
                        if ( pDescript ) {
#line 693 "speed.ch"
#line 696 "speed.ch"
                                            if ( lexEntry == - 1 ) {
#line 696 "speed.ch"
#line 697 "speed.ch"
                                                                        lexEntry = pDescript -> offset ;
#line 697 "speed.ch"
#line 698 "speed.ch"
                                                                        (lexEntryFunc=pDescript -> proc);
#line 698 "speed.ch"
#line 698 "speed.ch"
#line 699 "speed.ch"
                                                                        ptDescriptOld = pDescript ;
#line 699 "speed.ch"
#line 700 "speed.ch"
                                                                      } else 
#line 700 "speed.ch"
                                            if ( lexEntry != pDescript -> offset ) {
#line 700 "speed.ch"
#line 701 "speed.ch"
int oldOutput = output ;
#line 701 "speed.ch"
#line 704 "speed.ch"
PDESCRIPT_ELEM  ptDescriptMeta = FindStringDescript("META", (PTREE)0);
#line 704 "speed.ch"
#line 708 "speed.ch"
if ( ptDescriptOld == ptDescriptMeta ) {
#line 708 "speed.ch"
#line 709 "speed.ch"
                                            lexEntry = pDescript -> offset ;
#line 709 "speed.ch"
#line 710 "speed.ch"
                                            (lexEntryFunc=pDescript -> proc);
#line 710 "speed.ch"
#line 710 "speed.ch"
#line 711 "speed.ch"
                                            ptDescriptOld = pDescript ;
#line 711 "speed.ch"
#line 712 "speed.ch"
                                         }
#line 712 "speed.ch"
#line 715 "speed.ch"
if ( pDescript != ptDescriptMeta ) {
#line 715 "speed.ch"
#line 718 "speed.ch"
                                        output = 2 ;
#line 718 "speed.ch"
#line 719 "speed.ch"
                                        gotocol(1);
#line 719 "speed.ch"
#line 720 "speed.ch"
                                        PrintString("Warning -> Rule use lex entry : ");
#line 720 "speed.ch"
#line 721 "speed.ch"
                                        WriteString(Value(lexEntryFunc));
#line 721 "speed.ch"
#line 722 "speed.ch"
                                        PrintString(" and ");
#line 722 "speed.ch"
#line 723 "speed.ch"
                                        WriteString(Value(pDescript -> proc));
#line 723 "speed.ch"
#line 724 "speed.ch"
                                        LNewLine(1);
#line 724 "speed.ch"
#line 724 "speed.ch"
#line 725 "speed.ch"
                                        output = oldOutput ;
#line 725 "speed.ch"
#line 726 "speed.ch"
                                        lexEntry = - 1 ;
#line 726 "speed.ch"
#line 727 "speed.ch"
                                        break ;
#line 727 "speed.ch"
#line 728 "speed.ch"
                                     }
#line 728 "speed.ch"
#line 729 "speed.ch"
                                                                                      }
#line 729 "speed.ch"
#line 732 "speed.ch"
                                            SET_ARRAY_VALUE(arrayEntry, nbToken);
#line 732 "speed.ch"
#line 733 "speed.ch"
                                          } else 
#line 733 "speed.ch"
                        {
#line 733 "speed.ch"
#line 734 "speed.ch"
                            lexEntry = - 2 ;
#line 734 "speed.ch"
#line 735 "speed.ch"
                            break ;
#line 735 "speed.ch"
#line 736 "speed.ch"
                        }
#line 736 "speed.ch"
#line 737 "speed.ch"
                    }                                                   
#line 737 "speed.ch"
#line 740 "speed.ch"
                                                                        if ( FindStringDescript("META", (PTREE)0) ) {
#line 740 "speed.ch"
#line 741 "speed.ch"
int nbToken = AddConst("META");
#line 741 "speed.ch"
#line 742 "speed.ch"
SET_ARRAY_VALUE(arrayEntry, nbToken);
#line 742 "speed.ch"
#line 743 "speed.ch"
                                                                                                                         }
#line 743 "speed.ch"
#line 744 "speed.ch"
                                                                        if ( nbNoStop > 0 ) 
#line 744 "speed.ch"
#line 745 "speed.ch"
lexEntry = - 3 ;                                                      
#line 745 "speed.ch"
#line 749 "speed.ch"
                                                                        (funcElem=funcInit);
#line 749 "speed.ch"
#line 749 "speed.ch"
#line 750 "speed.ch"
                                                                        (funcElem?funcElem.Nextl():(PPTREE)0);
#line 750 "speed.ch"
#line 751 "speed.ch"
                                                                        if ( lexEntry >= 0 ) {
#line 751 "speed.ch"
#line 752 "speed.ch"
PARRAY_ENTRY    pt = AllocArrayEntryUnit();
#line 752 "speed.ch"
#line 753 "speed.ch"
memcpy(pt -> arrayEntry, arrayEntry, MAX_TOKEN / 8);
#line 753 "speed.ch"
#line 755 "speed.ch"
{
#line 755 "speed.ch"
#line 755 "speed.ch"
    char    name [10];
#line 755 "speed.ch"
#line 756 "speed.ch"
    sprintf(name, "%d", nbArrayEntry++);
#line 756 "speed.ch"
#line 757 "speed.ch"
    {
#line 757 "speed.ch"
        PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 757 "speed.ch"
        {
#line 757 "speed.ch"
            PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 757 "speed.ch"
            _ptRes1 = MakeTree(LIST, 2);
#line 757 "speed.ch"
            {
#line 757 "speed.ch"
                PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 757 "speed.ch"
                _ptRes2 = MakeTree(LIST, 2);
#line 757 "speed.ch"
                {
#line 757 "speed.ch"
                    PPTREE _ptTree3= (PPTREE) 0,_ptRes3= (PPTREE) 0;
#line 757 "speed.ch"
                    _ptRes3 = MakeTree(metalang::NUMB, 1);
#line 757 "speed.ch"
                    _ptTree3 = StoreRef(MakeString(name));
#line 757 "speed.ch"
                    ReplaceTree(_ptRes3, 1, _ptTree3);
#line 757 "speed.ch"
                    _ptTree2 = _ptRes3;
#line 757 "speed.ch"
                }
#line 757 "speed.ch"
                ReplaceTree(_ptRes2, 1, _ptTree2);
#line 757 "speed.ch"
                _ptTree1 = _ptRes2;
#line 757 "speed.ch"
            }
#line 757 "speed.ch"
            ReplaceTree(_ptRes1, 1, _ptTree1);
#line 757 "speed.ch"
            _ptTree1 = StoreRef(copytree(lexEntryFunc));
#line 757 "speed.ch"
            ReplaceTree(_ptRes1, 2, _ptTree1);
#line 757 "speed.ch"
            _ptTree0 = _ptRes1;
#line 757 "speed.ch"
        }
#line 757 "speed.ch"
        ReplaceTree(funcElem, 1, _ptTree0);
#line 757 "speed.ch"
    }
#line 757 "speed.ch"
#line 757 "speed.ch"
#line 760 "speed.ch"
    sprintf(name, "%d", lexEntry);
#line 760 "speed.ch"
#line 761 "speed.ch"
    {
#line 761 "speed.ch"
        PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 761 "speed.ch"
        _sonTree0 = SonTree(funcElem,1);
#line 761 "speed.ch"
        {
#line 761 "speed.ch"
            PPTREE _ptTree1= (PPTREE) 0,_sonTree1= (PPTREE) 0 ;
#line 761 "speed.ch"
            _sonTree1 = SonTree(_sonTree0,1);
#line 761 "speed.ch"
            {
#line 761 "speed.ch"
                PPTREE _ptTree2= (PPTREE) 0,_sonTree2= (PPTREE) 0 ;
#line 761 "speed.ch"
                _ptTree2 = StoreRef(MakeString(name));
#line 761 "speed.ch"
                _ptTree1 = ReplaceTree(_sonTree1, 2, _ptTree2);
#line 761 "speed.ch"
            }
#line 761 "speed.ch"
            _ptTree0 = ReplaceTree(_sonTree0, 1, _ptTree1);
#line 761 "speed.ch"
        }
#line 761 "speed.ch"
        ReplaceTree(funcElem, 1, _ptTree0);
#line 761 "speed.ch"
    }
#line 761 "speed.ch"
#line 761 "speed.ch"
#line 762 "speed.ch"
    ((_inter = (PPTREE)funcElem,1) && 
#line 762 "speed.ch"
        ((funcElem=SonTree(_inter,1)),1) &&
#line 762 "speed.ch"
        1);
#line 762 "speed.ch"
    ;
#line 762 "speed.ch"
#line 763 "speed.ch"
    return funcElem ;
#line 763 "speed.ch"
#line 764 "speed.ch"
}
#line 764 "speed.ch"
#line 765 "speed.ch"
                                                                                               } else 
#line 765 "speed.ch"
                                                                        {
#line 765 "speed.ch"
#line 766 "speed.ch"
PARRAY_ENTRY    pt = AllocArrayEntryUnit();
#line 766 "speed.ch"
#line 767 "speed.ch"
if ( lexEntry == - 2 ) {
#line 767 "speed.ch"
#line 768 "speed.ch"
                            int oldOutput = output ;
#line 768 "speed.ch"
#line 771 "speed.ch"
                            output = 2 ;
#line 771 "speed.ch"
#line 774 "speed.ch"
                            gotocol(1);
#line 774 "speed.ch"
#line 775 "speed.ch"
                            PrintString("Warning -> no lex entry for : ");
#line 775 "speed.ch"
#line 776 "speed.ch"
                            switch ( NumberTree(tokenElem) ) {
#line 776 "speed.ch"
#line 777 "speed.ch"
                                case metalang::TOKEN : 
#line 777 "speed.ch"
#line 777 "speed.ch"
                                _Case35 : 
#line 777 "speed.ch"
#line 777 "speed.ch"
                                    ;
#line 777 "speed.ch"
#line 777 "speed.ch"
                                    PrintString("#");
#line 777 "speed.ch"
#line 777 "speed.ch"
                                    goto _Case36 ;
#line 777 "speed.ch"
#line 779 "speed.ch"
                                case metalang::STRING : 
#line 779 "speed.ch"
#line 779 "speed.ch"
                                _Case36 : 
#line 779 "speed.ch"
#line 779 "speed.ch"
                                    ;
#line 779 "speed.ch"
#line 779 "speed.ch"
                                    PrintString("\"");
#line 779 "speed.ch"
#line 779 "speed.ch"
                                    WriteString(BrainyValue(tokenElem));
#line 779 "speed.ch"
#line 779 "speed.ch"
                                    PrintString("\"");
#line 779 "speed.ch"
#line 780 "speed.ch"
                                    break ;
#line 780 "speed.ch"
#line 782 "speed.ch"
                                case metalang::EXCLA : 
#line 782 "speed.ch"
#line 782 "speed.ch"
                                _Case37 : 
#line 782 "speed.ch"
#line 782 "speed.ch"
                                    ;
#line 782 "speed.ch"
#line 782 "speed.ch"
                                    PrintString("!");
#line 782 "speed.ch"
#line 782 "speed.ch"
                                    WriteString(BrainyValue(tokenElem));
#line 782 "speed.ch"
#line 783 "speed.ch"
                                    break ;
#line 783 "speed.ch"
                            }
#line 783 "speed.ch"
#line 783 "speed.ch"
#line 785 "speed.ch"
                            LNewLine(1);
#line 785 "speed.ch"
#line 785 "speed.ch"
#line 786 "speed.ch"
                            output = oldOutput ;
#line 786 "speed.ch"
#line 787 "speed.ch"
                          }
#line 787 "speed.ch"
#line 793 "speed.ch"
{
#line 793 "speed.ch"
#line 794 "speed.ch"
    int i ;
#line 794 "speed.ch"
#line 795 "speed.ch"
#line 795 "speed.ch"
    for ( i = MAX_TOKEN / 8 ; i-- ; ) 
#line 795 "speed.ch"
#line 796 "speed.ch"
        arrayEntry [i] = '\377';
#line 796 "speed.ch"
#line 796 "speed.ch"
#line 797 "speed.ch"
}
#line 797 "speed.ch"
#line 798 "speed.ch"
memcpy(pt -> arrayEntry, arrayEntry, MAX_TOKEN / 8);
#line 798 "speed.ch"
#line 800 "speed.ch"
{
#line 800 "speed.ch"
#line 800 "speed.ch"
    char    name [10];
#line 800 "speed.ch"
#line 801 "speed.ch"
    sprintf(name, "%d", nbArrayEntry++);
#line 801 "speed.ch"
#line 802 "speed.ch"
    {
#line 802 "speed.ch"
        PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 802 "speed.ch"
        {
#line 802 "speed.ch"
            PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 802 "speed.ch"
            _ptRes1 = MakeTree(LIST, 2);
#line 802 "speed.ch"
            {
#line 802 "speed.ch"
                PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 802 "speed.ch"
                _ptRes2 = MakeTree(LIST, 2);
#line 802 "speed.ch"
                {
#line 802 "speed.ch"
                    PPTREE _ptTree3= (PPTREE) 0,_ptRes3= (PPTREE) 0;
#line 802 "speed.ch"
                    _ptRes3 = MakeTree(metalang::NUMB, 1);
#line 802 "speed.ch"
                    _ptTree3 = StoreRef(MakeString(name));
#line 802 "speed.ch"
                    ReplaceTree(_ptRes3, 1, _ptTree3);
#line 802 "speed.ch"
                    _ptTree2 = _ptRes3;
#line 802 "speed.ch"
                }
#line 802 "speed.ch"
                ReplaceTree(_ptRes2, 1, _ptTree2);
#line 802 "speed.ch"
                _ptTree1 = _ptRes2;
#line 802 "speed.ch"
            }
#line 802 "speed.ch"
            ReplaceTree(_ptRes1, 1, _ptTree1);
#line 802 "speed.ch"
            _ptTree1 = StoreRef(MakeString("0"));
#line 802 "speed.ch"
            ReplaceTree(_ptRes1, 2, _ptTree1);
#line 802 "speed.ch"
            _ptTree0 = _ptRes1;
#line 802 "speed.ch"
        }
#line 802 "speed.ch"
        ReplaceTree(funcElem, 1, _ptTree0);
#line 802 "speed.ch"
    }
#line 802 "speed.ch"
#line 802 "speed.ch"
#line 805 "speed.ch"
    sprintf(name, "%d", 0);
#line 805 "speed.ch"
#line 806 "speed.ch"
    {
#line 806 "speed.ch"
        PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 806 "speed.ch"
        _sonTree0 = SonTree(funcElem,1);
#line 806 "speed.ch"
        {
#line 806 "speed.ch"
            PPTREE _ptTree1= (PPTREE) 0,_sonTree1= (PPTREE) 0 ;
#line 806 "speed.ch"
            _sonTree1 = SonTree(_sonTree0,1);
#line 806 "speed.ch"
            {
#line 806 "speed.ch"
                PPTREE _ptTree2= (PPTREE) 0,_sonTree2= (PPTREE) 0 ;
#line 806 "speed.ch"
                _ptTree2 = StoreRef(MakeString(name));
#line 806 "speed.ch"
                _ptTree1 = ReplaceTree(_sonTree1, 2, _ptTree2);
#line 806 "speed.ch"
            }
#line 806 "speed.ch"
            _ptTree0 = ReplaceTree(_sonTree0, 1, _ptTree1);
#line 806 "speed.ch"
        }
#line 806 "speed.ch"
        ReplaceTree(funcElem, 1, _ptTree0);
#line 806 "speed.ch"
    }
#line 806 "speed.ch"
#line 806 "speed.ch"
#line 807 "speed.ch"
    ((_inter = (PPTREE)funcElem,1) && 
#line 807 "speed.ch"
        ((funcElem=SonTree(_inter,1)),1) &&
#line 807 "speed.ch"
        1);
#line 807 "speed.ch"
    ;
#line 807 "speed.ch"
#line 808 "speed.ch"
}
#line 808 "speed.ch"
#line 811 "speed.ch"
{
#line 811 "speed.ch"
#line 812 "speed.ch"
    int oldOutput = output ;
#line 812 "speed.ch"
#line 813 "speed.ch"
    LNewLine(1);
#line 813 "speed.ch"
#line 813 "speed.ch"
#line 814 "speed.ch"
    output = 2 ;
#line 814 "speed.ch"
#line 815 "speed.ch"
    gotocol(1);
#line 815 "speed.ch"
#line 816 "speed.ch"
    PrintString("Warning ===> not optimized : ");
#line 816 "speed.ch"
#line 817 "speed.ch"
    WriteString(BrainyValue(funcName));
#line 817 "speed.ch"
#line 817 "speed.ch"
    LNewLine(1);
#line 817 "speed.ch"
#line 817 "speed.ch"
#line 818 "speed.ch"
    output = oldOutput ;
#line 818 "speed.ch"
#line 819 "speed.ch"
}
#line 819 "speed.ch"
#line 820 "speed.ch"
return funcElem ;
#line 820 "speed.ch"
#line 821 "speed.ch"
                                                                        }
#line 821 "speed.ch"
#line 822 "speed.ch"
                                                                    }
#line 822 "speed.ch"
#line 823 "speed.ch"
                                                                }
#line 823 "speed.ch"
#line 826 "speed.ch"
    return (PTREE)0 ;
#line 826 "speed.ch"
#line 827 "speed.ch"
}
#line 827 "speed.ch"

static char stringConvert [4];

#line 834 "speed.ch"
#line 834 "speed.ch"
char *ConvertToOctal ( int numb )
#line 834 "speed.ch"
{
#line 834 "speed.ch"
#line 837 "speed.ch"
    int nb1, nb2, nb3 ;
#line 837 "speed.ch"
#line 839 "speed.ch"
    nb1 = numb >> 6 & 0x3 ;
#line 839 "speed.ch"
#line 840 "speed.ch"
    nb2 = numb >> 3 & 0x7 ;
#line 840 "speed.ch"
#line 841 "speed.ch"
    nb3 = numb & 0x7 ;
#line 841 "speed.ch"
#line 842 "speed.ch"
    *(stringConvert) = '0' + nb1 ;
#line 842 "speed.ch"
#line 843 "speed.ch"
    *(stringConvert + 1) = '0' + nb2 ;
#line 843 "speed.ch"
#line 844 "speed.ch"
    *(stringConvert + 2) = '0' + nb3 ;
#line 844 "speed.ch"
#line 845 "speed.ch"
    *(stringConvert + 3) = '\0';
#line 845 "speed.ch"
#line 846 "speed.ch"
    return stringConvert ;
#line 846 "speed.ch"
#line 847 "speed.ch"
}
#line 847 "speed.ch"

extern int  numberConst ;

#line 855 "speed.ch"
#line 855 "speed.ch"
void DumpTokenArray ()
#line 855 "speed.ch"
{
#line 855 "speed.ch"
    register PPTREE _inter ;
#line 855 "speed.ch"
#line 855 "speed.ch"
#line 857 "speed.ch"
    PARRAY_ENTRY    ptArray = listArrayEntry ;
#line 857 "speed.ch"
#line 858 "speed.ch"
    char    name [10];
#line 858 "speed.ch"
#line 859 "speed.ch"
    int ligne, col ;
#line 859 "speed.ch"
#line 861 "speed.ch"
    if ( metaQuick ) 
#line 861 "speed.ch"
#line 862 "speed.ch"
        return ;
#line 862 "speed.ch"
#line 865 "speed.ch"
    PrintString("/* ");
#line 865 "speed.ch"
#line 865 "speed.ch"
    LNewLine(1);
#line 865 "speed.ch"
#line 865 "speed.ch"
#line 866 "speed.ch"
#line 866 "speed.ch"
    for ( ligne = 0 ; ligne < nbArrayEntry ; ligne++ ) {
#line 866 "speed.ch"
#line 867 "speed.ch"
                                                                PTREE   list = (PTREE)0 ;
#line 867 "speed.ch"
#line 867 "speed.ch"
#line 867 "speed.ch"
                                                                (list=listFuncToken -> List());
#line 867 "speed.ch"
#line 867 "speed.ch"
#line 868 "speed.ch"
                                                                sprintf(name, "%d", ligne);
#line 868 "speed.ch"
#line 869 "speed.ch"
                                                                sprintf(name, "-- %d -- ", ligne);
#line 869 "speed.ch"
#line 870 "speed.ch"
                                                                WriteString(name);
#line 870 "speed.ch"
#line 871 "speed.ch"
                                                                sprintf(name, "%d", ligne);
#line 871 "speed.ch"
#line 874 "speed.ch"
                                                                while ( list ) {
#line 874 "speed.ch"
#line 875 "speed.ch"
PTREE   elem = (PTREE)0 ;
#line 875 "speed.ch"
#line 875 "speed.ch"
#line 875 "speed.ch"
(elem=(list?list.Nextl():(PPTREE)0));
#line 875 "speed.ch"
#line 875 "speed.ch"
#line 876 "speed.ch"
if ( !strcmp(Value(sontree(elem, 2)), name) ) {
#line 876 "speed.ch"
#line 877 "speed.ch"
                                                        DumpBrainyValue(elem);
#line 877 "speed.ch"
#line 877 "speed.ch"
#line 878 "speed.ch"
                                                        ((_inter = (PPTREE)elem,1) && 
#line 878 "speed.ch"
                                                            (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,2),1) &&
#line 878 "speed.ch"
                                                                (_retVal[2]=((_storeVal[2]=_inter,_inter=SonTree(_inter,1),1) &&
#line 878 "speed.ch"
                                                                    ((elem=SonTree(_inter,2)),1) &&
#line 878 "speed.ch"
                                                                    1),
#line 878 "speed.ch"
                                                                    (_inter=_storeVal[2],1),_retVal[2]) &&
#line 878 "speed.ch"
                                                                1),
#line 878 "speed.ch"
                                                                (_inter=_storeVal[1],1),_retVal[1]) &&
#line 878 "speed.ch"
                                                            1);
#line 878 "speed.ch"
                                                        ;
#line 878 "speed.ch"
#line 879 "speed.ch"
                                                        if ( strcmp(Value(elem), "0") ) {
#line 879 "speed.ch"
#line 880 "speed.ch"
LNewLine(1);
#line 880 "speed.ch"
#line 880 "speed.ch"
#line 881 "speed.ch"
Tab();
#line 881 "speed.ch"
#line 881 "speed.ch"
#line 883 "speed.ch"
Mark();
#line 883 "speed.ch"
#line 883 "speed.ch"
for ( col = 0 ; col < numberConst ; col++ ) {
#line 883 "speed.ch"
#line 884 "speed.ch"
                                                    if ( GET_ARRAY_VALUE(ptArray -> arrayEntry, col) ) 
#line 884 "speed.ch"
#line 886 "speed.ch"
                                                        WriteString(NameConst(col));
#line 886 "speed.ch"
#line 887 "speed.ch"
                                                    LNewLine(1);
#line 887 "speed.ch"
#line 887 "speed.ch"
#line 888 "speed.ch"
                                                 }
#line 888 "speed.ch"
#line 888 "speed.ch"
UnMark();
#line 888 "speed.ch"
#line 888 "speed.ch"
#line 889 "speed.ch"
LNewLine(1);
#line 889 "speed.ch"
#line 889 "speed.ch"
#line 890 "speed.ch"
                                                                                            } else 
#line 890 "speed.ch"
                                                        {
#line 890 "speed.ch"
#line 891 "speed.ch"
                                                            LNewLine(1);
#line 891 "speed.ch"
#line 891 "speed.ch"
#line 892 "speed.ch"
                                                            Tab();
#line 892 "speed.ch"
#line 892 "speed.ch"
#line 892 "speed.ch"
                                                            PrintString("ALWAYS");
#line 892 "speed.ch"
#line 892 "speed.ch"
                                                            LNewLine(1);
#line 892 "speed.ch"
#line 892 "speed.ch"
#line 893 "speed.ch"
                                                        }
#line 893 "speed.ch"
#line 894 "speed.ch"
                                                        break ;
#line 894 "speed.ch"
#line 895 "speed.ch"
                                                     }
#line 895 "speed.ch"
#line 896 "speed.ch"
                                                                                }
#line 896 "speed.ch"
#line 897 "speed.ch"
                                                                ptArray = ptArray -> next ;
#line 897 "speed.ch"
#line 898 "speed.ch"
                                                            }
#line 898 "speed.ch"
#line 898 "speed.ch"
#line 899 "speed.ch"
    PrintString("*/");
#line 899 "speed.ch"
#line 899 "speed.ch"
    LNewLine(2);
#line 899 "speed.ch"
#line 899 "speed.ch"
#line 902 "speed.ch"
    output = houtput ;
#line 902 "speed.ch"
#line 905 "speed.ch"
    sprintf(name, "%d", nbArrayEntry);
#line 905 "speed.ch"
#line 906 "speed.ch"
    if ( cplusGen ) {
#line 906 "speed.ch"
#line 907 "speed.ch"
                        Tab();
#line 907 "speed.ch"
#line 907 "speed.ch"
#line 907 "speed.ch"
                        PrintString("static ");
#line 907 "speed.ch"
#line 908 "speed.ch"
                     } else 
#line 908 "speed.ch"
    {
#line 908 "speed.ch"
#line 909 "speed.ch"
        PrintString("extern ");
#line 909 "speed.ch"
#line 910 "speed.ch"
    }
#line 910 "speed.ch"
#line 911 "speed.ch"
    PrintString("signed char * ");
#line 911 "speed.ch"
#line 912 "speed.ch"
    if ( cplusGen ) 
#line 912 "speed.ch"
#line 913 "speed.ch"
        WriteString("_tokenArray");
#line 913 "speed.ch"
    else 
#line 913 "speed.ch"
#line 915 "speed.ch"
        WriteString(NameLang("_tokenArray"));
#line 915 "speed.ch"
#line 915 "speed.ch"
#line 916 "speed.ch"
    PrintString(" [");
#line 916 "speed.ch"
#line 916 "speed.ch"
    WriteString(name);
#line 916 "speed.ch"
#line 916 "speed.ch"
    PrintString("];");
#line 916 "speed.ch"
#line 916 "speed.ch"
    LNewLine(1);
#line 916 "speed.ch"
#line 916 "speed.ch"
#line 920 "speed.ch"
    if ( cplusGen ) {
#line 920 "speed.ch"
#line 921 "speed.ch"
                        Tab();
#line 921 "speed.ch"
#line 921 "speed.ch"
#line 922 "speed.ch"
                     }
#line 922 "speed.ch"
#line 923 "speed.ch"
    PrintString("static int (");
#line 923 "speed.ch"
#line 923 "speed.ch"
    WriteString(LanguageName(LO_CASE));
#line 923 "speed.ch"
#line 923 "speed.ch"
    PrintString("::*(");
#line 923 "speed.ch"
#line 924 "speed.ch"
    if ( cplusGen ) {
#line 924 "speed.ch"
#line 925 "speed.ch"
                        WriteString("_tokenFuncArray");
#line 925 "speed.ch"
#line 926 "speed.ch"
                     } else 
#line 926 "speed.ch"
#line 927 "speed.ch"
        WriteString(NameLang("_tokenFuncArray"));
#line 927 "speed.ch"
#line 927 "speed.ch"
#line 928 "speed.ch"
    sprintf(name, "%d", nbArrayEntry);
#line 928 "speed.ch"
#line 929 "speed.ch"
    PrintString(" [");
#line 929 "speed.ch"
#line 929 "speed.ch"
    WriteString(name);
#line 929 "speed.ch"
#line 929 "speed.ch"
    PrintString("])) ();");
#line 929 "speed.ch"
#line 929 "speed.ch"
    LNewLine(1);
#line 929 "speed.ch"
#line 929 "speed.ch"
#line 930 "speed.ch"
    if ( cplusGen ) {
#line 930 "speed.ch"
#line 931 "speed.ch"
                        Tab();
#line 931 "speed.ch"
#line 931 "speed.ch"
#line 932 "speed.ch"
                     }
#line 932 "speed.ch"
#line 933 "speed.ch"
    PrintString("static int ");
#line 933 "speed.ch"
#line 934 "speed.ch"
    if ( cplusGen ) 
#line 934 "speed.ch"
#line 935 "speed.ch"
        WriteString("_tokenNbFuncArray");
#line 935 "speed.ch"
    else 
#line 935 "speed.ch"
#line 937 "speed.ch"
        WriteString(NameLang("_tokenNbFuncArray"));
#line 937 "speed.ch"
#line 937 "speed.ch"
#line 938 "speed.ch"
    sprintf(name, "%d", nbArrayEntry);
#line 938 "speed.ch"
#line 939 "speed.ch"
    PrintString(" [");
#line 939 "speed.ch"
#line 939 "speed.ch"
    WriteString(name);
#line 939 "speed.ch"
#line 939 "speed.ch"
    PrintString("];");
#line 939 "speed.ch"
#line 939 "speed.ch"
    LNewLine(2);
#line 939 "speed.ch"
#line 939 "speed.ch"
#line 943 "speed.ch"
    if ( (!theUsedGrammar) ) {
#line 943 "speed.ch"
#line 944 "speed.ch"
                                Tab();
#line 944 "speed.ch"
#line 944 "speed.ch"
#line 944 "speed.ch"
                                PrintString("signed char **ptTokenArray;");
#line 944 "speed.ch"
#line 944 "speed.ch"
                                LNewLine(1);
#line 944 "speed.ch"
#line 944 "speed.ch"
#line 945 "speed.ch"
                                Tab();
#line 945 "speed.ch"
#line 945 "speed.ch"
#line 945 "speed.ch"
                                PrintString("int (");
#line 945 "speed.ch"
#line 945 "speed.ch"
                                WriteString(LanguageName(LO_CASE));
#line 945 "speed.ch"
#line 946 "speed.ch"
                                PrintString("::** ptTokenFuncArray) ();");
#line 946 "speed.ch"
#line 946 "speed.ch"
                                LNewLine(1);
#line 946 "speed.ch"
#line 946 "speed.ch"
#line 947 "speed.ch"
                                Tab();
#line 947 "speed.ch"
#line 947 "speed.ch"
#line 947 "speed.ch"
                                PrintString("int *ptTokenNbFuncArray;");
#line 947 "speed.ch"
#line 947 "speed.ch"
                                LNewLine(2);
#line 947 "speed.ch"
#line 947 "speed.ch"
#line 948 "speed.ch"
                               }
#line 948 "speed.ch"
#line 951 "speed.ch"
    output = coutput ;
#line 951 "speed.ch"
#line 952 "speed.ch"
    ptArray = listArrayEntry ;
#line 952 "speed.ch"
#line 953 "speed.ch"
    sprintf(name, "%d", nbArrayEntry);
#line 953 "speed.ch"
#line 954 "speed.ch"
    PrintString("signed char *");
#line 954 "speed.ch"
#line 955 "speed.ch"
    if ( cplusGen ) {
#line 955 "speed.ch"
#line 956 "speed.ch"
                        WriteString(LanguageName(LO_CASE));
#line 956 "speed.ch"
#line 956 "speed.ch"
                        WriteString("::");
#line 956 "speed.ch"
#line 957 "speed.ch"
                        WriteString("_tokenArray");
#line 957 "speed.ch"
#line 958 "speed.ch"
                     } else 
#line 958 "speed.ch"
    {
#line 958 "speed.ch"
#line 959 "speed.ch"
        WriteString(NameLang("_tokenArray"));
#line 959 "speed.ch"
#line 960 "speed.ch"
    }
#line 960 "speed.ch"
#line 961 "speed.ch"
    PrintString(" [");
#line 961 "speed.ch"
#line 961 "speed.ch"
    WriteString(name);
#line 961 "speed.ch"
#line 961 "speed.ch"
    PrintString("] = ");
#line 961 "speed.ch"
    PrintString("{");
#line 961 "speed.ch"
#line 961 "speed.ch"
    LNewLine(1);
#line 961 "speed.ch"
#line 961 "speed.ch"
#line 962 "speed.ch"
    Tab();
#line 962 "speed.ch"
#line 962 "speed.ch"
#line 964 "speed.ch"
    Mark();
#line 964 "speed.ch"
#line 964 "speed.ch"
    for ( ligne = 0 ; ligne < nbArrayEntry ; ligne++ ) {
#line 964 "speed.ch"
#line 965 "speed.ch"
                                                                PrintString("(signed char *) \"");
#line 965 "speed.ch"
#line 966 "speed.ch"
#line 966 "speed.ch"
                                                                for ( col = 0 ; col < (numberConst + 8) / 8 ; col++ ) {
#line 966 "speed.ch"
#line 967 "speed.ch"
sprintf(name, "\\%s", ConvertToOctal(ptArray -> arrayEntry [col]));
#line 967 "speed.ch"
#line 969 "speed.ch"
WriteString(name);
#line 969 "speed.ch"
#line 970 "speed.ch"
                                                                                                                              }
#line 970 "speed.ch"
#line 970 "speed.ch"
#line 971 "speed.ch"
                                                                PrintString("\"");
#line 971 "speed.ch"
#line 971 "speed.ch"
                                                                LNewLine(1);
#line 971 "speed.ch"
#line 971 "speed.ch"
#line 972 "speed.ch"
                                                                if ( ligne < nbArrayEntry - 1 ) 
#line 972 "speed.ch"
#line 973 "speed.ch"
                                                                    PrintString(",");
#line 973 "speed.ch"
#line 974 "speed.ch"
                                                                ptArray = ptArray -> next ;
#line 974 "speed.ch"
#line 975 "speed.ch"
                                                            }
#line 975 "speed.ch"
#line 975 "speed.ch"
    UnMark();
#line 975 "speed.ch"
#line 975 "speed.ch"
#line 977 "speed.ch"
    PrintString("};");
#line 977 "speed.ch"
#line 977 "speed.ch"
    LNewLine(1);
#line 977 "speed.ch"
#line 977 "speed.ch"
#line 978 "speed.ch"
    sprintf(name, "%d", nbArrayEntry);
#line 978 "speed.ch"
#line 979 "speed.ch"
    PrintString("typedef int (");
#line 979 "speed.ch"
#line 979 "speed.ch"
    WriteString(LanguageName(LO_CASE));
#line 979 "speed.ch"
#line 979 "speed.ch"
    PrintString("::*(");
#line 979 "speed.ch"
#line 980 "speed.ch"
    if ( cplusGen ) {
#line 980 "speed.ch"
#line 981 "speed.ch"
                        WriteString("DEF_FUNC_TOKEN_ARRAY");
#line 981 "speed.ch"
#line 982 "speed.ch"
                     } else 
#line 982 "speed.ch"
    {
#line 982 "speed.ch"
#line 983 "speed.ch"
        WriteString(NameLang("_tokenFuncArray"));
#line 983 "speed.ch"
#line 984 "speed.ch"
    }
#line 984 "speed.ch"
#line 985 "speed.ch"
    PrintString(" [");
#line 985 "speed.ch"
#line 985 "speed.ch"
    WriteString(name);
#line 985 "speed.ch"
#line 985 "speed.ch"
    PrintString("]))() ;");
#line 985 "speed.ch"
#line 985 "speed.ch"
    LNewLine(1);
#line 985 "speed.ch"
#line 985 "speed.ch"
#line 986 "speed.ch"
    PrintString("DEF_FUNC_TOKEN_ARRAY ");
#line 986 "speed.ch"
#line 986 "speed.ch"
    WriteString(LanguageName(LO_CASE));
#line 986 "speed.ch"
#line 987 "speed.ch"
    PrintString("::_tokenFuncArray = ");
#line 987 "speed.ch"
    PrintString("{");
#line 987 "speed.ch"
#line 987 "speed.ch"
    LNewLine(1);
#line 987 "speed.ch"
#line 987 "speed.ch"
#line 988 "speed.ch"
    Tab();
#line 988 "speed.ch"
#line 988 "speed.ch"
#line 990 "speed.ch"
    Mark();
#line 990 "speed.ch"
#line 990 "speed.ch"
    for ( ligne = 0 ; ligne < nbArrayEntry ; ligne++ ) {
#line 990 "speed.ch"
#line 991 "speed.ch"
                                                                PTREE   list = (PTREE)0 ;
#line 991 "speed.ch"
#line 991 "speed.ch"
#line 991 "speed.ch"
                                                                (list=listFuncToken -> List());
#line 991 "speed.ch"
#line 991 "speed.ch"
#line 992 "speed.ch"
                                                                if ( ligne != 0 ) {
#line 992 "speed.ch"
#line 993 "speed.ch"
PrintString(",");
#line 993 "speed.ch"
#line 993 "speed.ch"
LNewLine(1);
#line 993 "speed.ch"
#line 993 "speed.ch"
#line 994 "speed.ch"
                                                                                    }
#line 994 "speed.ch"
#line 995 "speed.ch"
                                                                sprintf(name, "%d", ligne);
#line 995 "speed.ch"
#line 996 "speed.ch"
                                                                while ( list ) {
#line 996 "speed.ch"
#line 997 "speed.ch"
PTREE   elem = (PTREE)0 ;
#line 997 "speed.ch"
#line 997 "speed.ch"
#line 997 "speed.ch"
(elem=(list?list.Nextl():(PPTREE)0));
#line 997 "speed.ch"
#line 997 "speed.ch"
#line 998 "speed.ch"
if ( !strcmp(Value(sontree(elem, 2)), name) ) {
#line 998 "speed.ch"
#line 999 "speed.ch"
                                                        PrintString("/*");
#line 999 "speed.ch"
#line 999 "speed.ch"
                                                        DumpBrainyValue(elem);
#line 999 "speed.ch"
#line 999 "speed.ch"
#line 1000 "speed.ch"
                                                        gotocol(38);
#line 1000 "speed.ch"
#line 1001 "speed.ch"
                                                        PrintString("*/");
#line 1001 "speed.ch"
#line 1002 "speed.ch"
                                                        ((_inter = (PPTREE)elem,1) && 
#line 1002 "speed.ch"
                                                            (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,2),1) &&
#line 1002 "speed.ch"
                                                                (_retVal[2]=((_storeVal[2]=_inter,_inter=SonTree(_inter,1),1) &&
#line 1002 "speed.ch"
                                                                    ((elem=SonTree(_inter,2)),1) &&
#line 1002 "speed.ch"
                                                                    1),
#line 1002 "speed.ch"
                                                                    (_inter=_storeVal[2],1),_retVal[2]) &&
#line 1002 "speed.ch"
                                                                1),
#line 1002 "speed.ch"
                                                                (_inter=_storeVal[1],1),_retVal[1]) &&
#line 1002 "speed.ch"
                                                            1);
#line 1002 "speed.ch"
                                                        ;
#line 1002 "speed.ch"
#line 1003 "speed.ch"
                                                        gotocol(40);
#line 1003 "speed.ch"
#line 1004 "speed.ch"
                                                        if ( strcmp(Value(elem), "0") ) {
#line 1004 "speed.ch"
#line 1005 "speed.ch"
PrintString("(&");
#line 1005 "speed.ch"
#line 1006 "speed.ch"
if ( cplusGen ) {
#line 1006 "speed.ch"
#line 1007 "speed.ch"
                    WriteString(LanguageName(LO_CASE));
#line 1007 "speed.ch"
#line 1008 "speed.ch"
                    WriteString("::");
#line 1008 "speed.ch"
#line 1009 "speed.ch"
                    WriteString(Value(elem));
#line 1009 "speed.ch"
#line 1010 "speed.ch"
                 } else 
#line 1010 "speed.ch"
#line 1011 "speed.ch"
    WriteString(NameLang(Value(elem)));
#line 1011 "speed.ch"
#line 1011 "speed.ch"
#line 1012 "speed.ch"
PrintString(")");
#line 1012 "speed.ch"
#line 1013 "speed.ch"
break ;
#line 1013 "speed.ch"
#line 1014 "speed.ch"
                                                                                            } else 
#line 1014 "speed.ch"
                                                        {
#line 1014 "speed.ch"
#line 1015 "speed.ch"
                                                            DumpBrainyValue(elem);
#line 1015 "speed.ch"
#line 1015 "speed.ch"
#line 1016 "speed.ch"
                                                        }
#line 1016 "speed.ch"
#line 1017 "speed.ch"
                                                        break ;
#line 1017 "speed.ch"
#line 1018 "speed.ch"
                                                     }
#line 1018 "speed.ch"
#line 1019 "speed.ch"
                                                                                }
#line 1019 "speed.ch"
#line 1020 "speed.ch"
                                                            }
#line 1020 "speed.ch"
#line 1020 "speed.ch"
    UnMark();
#line 1020 "speed.ch"
#line 1020 "speed.ch"
#line 1021 "speed.ch"
    LNewLine(1);
#line 1021 "speed.ch"
#line 1021 "speed.ch"
#line 1022 "speed.ch"
    PrintString("};");
#line 1022 "speed.ch"
#line 1022 "speed.ch"
    LNewLine(1);
#line 1022 "speed.ch"
#line 1022 "speed.ch"
#line 1023 "speed.ch"
    sprintf(name, "%d", nbArrayEntry);
#line 1023 "speed.ch"
#line 1024 "speed.ch"
    PrintString("int ");
#line 1024 "speed.ch"
#line 1025 "speed.ch"
    if ( cplusGen ) {
#line 1025 "speed.ch"
#line 1026 "speed.ch"
                        WriteString(LanguageName(LO_CASE));
#line 1026 "speed.ch"
#line 1026 "speed.ch"
                        WriteString("::");
#line 1026 "speed.ch"
#line 1027 "speed.ch"
                        WriteString("_tokenNbFuncArray");
#line 1027 "speed.ch"
#line 1028 "speed.ch"
                     } else 
#line 1028 "speed.ch"
    {
#line 1028 "speed.ch"
#line 1029 "speed.ch"
        WriteString(NameLang("_tokenNbFuncArray"));
#line 1029 "speed.ch"
#line 1030 "speed.ch"
    }
#line 1030 "speed.ch"
#line 1031 "speed.ch"
    PrintString(" [");
#line 1031 "speed.ch"
#line 1031 "speed.ch"
    WriteString(name);
#line 1031 "speed.ch"
#line 1031 "speed.ch"
    PrintString("] = ");
#line 1031 "speed.ch"
    PrintString("{");
#line 1031 "speed.ch"
#line 1031 "speed.ch"
    LNewLine(1);
#line 1031 "speed.ch"
#line 1031 "speed.ch"
#line 1032 "speed.ch"
    Tab();
#line 1032 "speed.ch"
#line 1032 "speed.ch"
#line 1033 "speed.ch"
    Mark();
#line 1033 "speed.ch"
#line 1033 "speed.ch"
    for ( ligne = 0 ; ligne < nbArrayEntry ; ligne++ ) {
#line 1033 "speed.ch"
#line 1034 "speed.ch"
                                                                PTREE   list = (PTREE)0 ;
#line 1034 "speed.ch"
#line 1034 "speed.ch"
#line 1034 "speed.ch"
                                                                (list=listFuncToken -> List());
#line 1034 "speed.ch"
#line 1034 "speed.ch"
#line 1035 "speed.ch"
                                                                if ( ligne != 0 ) {
#line 1035 "speed.ch"
#line 1036 "speed.ch"
PrintString(",");
#line 1036 "speed.ch"
#line 1036 "speed.ch"
LNewLine(1);
#line 1036 "speed.ch"
#line 1036 "speed.ch"
#line 1037 "speed.ch"
                                                                                    }
#line 1037 "speed.ch"
#line 1038 "speed.ch"
                                                                sprintf(name, "%d", ligne);
#line 1038 "speed.ch"
#line 1039 "speed.ch"
                                                                while ( list ) {
#line 1039 "speed.ch"
#line 1040 "speed.ch"
PTREE   elem = (PTREE)0 ;
#line 1040 "speed.ch"
#line 1040 "speed.ch"
#line 1040 "speed.ch"
(elem=(list?list.Nextl():(PPTREE)0));
#line 1040 "speed.ch"
#line 1040 "speed.ch"
#line 1041 "speed.ch"
if ( !strcmp(Value(sontree(elem, 2)), name) ) {
#line 1041 "speed.ch"
#line 1042 "speed.ch"
                                                        PrintString("/*");
#line 1042 "speed.ch"
#line 1042 "speed.ch"
                                                        DumpBrainyValue(elem);
#line 1042 "speed.ch"
#line 1042 "speed.ch"
#line 1043 "speed.ch"
                                                        gotocol(38);
#line 1043 "speed.ch"
#line 1044 "speed.ch"
                                                        PrintString("*/");
#line 1044 "speed.ch"
#line 1045 "speed.ch"
                                                        gotocol(40);
#line 1045 "speed.ch"
#line 1046 "speed.ch"
                                                        ((_inter = (PPTREE)elem,1) && 
#line 1046 "speed.ch"
                                                            (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,2),1) &&
#line 1046 "speed.ch"
                                                                (_retVal[2]=((_storeVal[2]=_inter,_inter=SonTree(_inter,1),1) &&
#line 1046 "speed.ch"
                                                                    (_retVal[3]=((_storeVal[3]=_inter,_inter=SonTree(_inter,1),1) &&
#line 1046 "speed.ch"
                                                                        ((elem=SonTree(_inter,2)),1) &&
#line 1046 "speed.ch"
                                                                        1),
#line 1046 "speed.ch"
                                                                        (_inter=_storeVal[3],1),_retVal[3]) &&
#line 1046 "speed.ch"
                                                                    1),
#line 1046 "speed.ch"
                                                                    (_inter=_storeVal[2],1),_retVal[2]) &&
#line 1046 "speed.ch"
                                                                1),
#line 1046 "speed.ch"
                                                                (_inter=_storeVal[1],1),_retVal[1]) &&
#line 1046 "speed.ch"
                                                            1);
#line 1046 "speed.ch"
                                                        ;
#line 1046 "speed.ch"
#line 1047 "speed.ch"
                                                        WriteString(Value(elem));
#line 1047 "speed.ch"
#line 1048 "speed.ch"
                                                        break ;
#line 1048 "speed.ch"
#line 1049 "speed.ch"
                                                     }
#line 1049 "speed.ch"
#line 1050 "speed.ch"
                                                                                }
#line 1050 "speed.ch"
#line 1051 "speed.ch"
                                                            }
#line 1051 "speed.ch"
#line 1051 "speed.ch"
    UnMark();
#line 1051 "speed.ch"
#line 1051 "speed.ch"
#line 1052 "speed.ch"
    LNewLine(1);
#line 1052 "speed.ch"
#line 1052 "speed.ch"
#line 1053 "speed.ch"
    PrintString("};");
#line 1053 "speed.ch"
#line 1053 "speed.ch"
    LNewLine(1);
#line 1053 "speed.ch"
#line 1053 "speed.ch"
#line 1054 "speed.ch"
}
#line 1054 "speed.ch"

#if 0
#line 1054 "speed.ch"
#line 1060 "speed.ch"
#line 1060 "speed.ch"
#line 1060 "speed.ch"
void InitializeTokenFunctionArray ()
#line 1060 "speed.ch"
{
#line 1060 "speed.ch"
    register PPTREE _inter ;
#line 1060 "speed.ch"
#line 1060 "speed.ch"
#line 1062 "speed.ch"
    char    name [10];
#line 1062 "speed.ch"
#line 1063 "speed.ch"
    int ligne ;
#line 1063 "speed.ch"
#line 1065 "speed.ch"
    LNewLine(2);
#line 1065 "speed.ch"
#line 1065 "speed.ch"
#line 1066 "speed.ch"
#line 1066 "speed.ch"
    for ( ligne = 0 ; ligne < nbArrayEntry ; ligne++ ) {
#line 1066 "speed.ch"
#line 1067 "speed.ch"
                                                                PTREE   list = (PTREE)0 ;
#line 1067 "speed.ch"
#line 1067 "speed.ch"
#line 1067 "speed.ch"
                                                                (list=listFuncToken -> List());
#line 1067 "speed.ch"
#line 1067 "speed.ch"
#line 1068 "speed.ch"
                                                                sprintf(name, "%d", ligne);
#line 1068 "speed.ch"
#line 1069 "speed.ch"
                                                                while ( list ) {
#line 1069 "speed.ch"
#line 1070 "speed.ch"
PTREE   elem = (PTREE)0 ;
#line 1070 "speed.ch"
#line 1070 "speed.ch"
#line 1070 "speed.ch"
(elem=(list?list.Nextl():(PPTREE)0));
#line 1070 "speed.ch"
#line 1070 "speed.ch"
#line 1071 "speed.ch"
if ( !strcmp(Value(sontree(elem, 2)), name) ) {
#line 1071 "speed.ch"
#line 1072 "speed.ch"
                                                        PrintString("/*");
#line 1072 "speed.ch"
#line 1072 "speed.ch"
                                                        DumpBrainyValue(elem);
#line 1072 "speed.ch"
#line 1072 "speed.ch"
#line 1073 "speed.ch"
                                                        gotocol(60);
#line 1073 "speed.ch"
#line 1074 "speed.ch"
                                                        PrintString("*/");
#line 1074 "speed.ch"
#line 1075 "speed.ch"
                                                        ((_inter = (PPTREE)elem,1) && 
#line 1075 "speed.ch"
                                                            (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,2),1) &&
#line 1075 "speed.ch"
                                                                (_retVal[2]=((_storeVal[2]=_inter,_inter=SonTree(_inter,1),1) &&
#line 1075 "speed.ch"
                                                                    ((elem=SonTree(_inter,2)),1) &&
#line 1075 "speed.ch"
                                                                    1),
#line 1075 "speed.ch"
                                                                    (_inter=_storeVal[2],1),_retVal[2]) &&
#line 1075 "speed.ch"
                                                                1),
#line 1075 "speed.ch"
                                                                (_inter=_storeVal[1],1),_retVal[1]) &&
#line 1075 "speed.ch"
                                                            1);
#line 1075 "speed.ch"
                                                        ;
#line 1075 "speed.ch"
#line 1076 "speed.ch"
                                                        gotocol(62);
#line 1076 "speed.ch"
#line 1077 "speed.ch"
                                                        if ( strcmp(Value(elem), "0") ) {
#line 1077 "speed.ch"
#line 1078 "speed.ch"
PrintString("&");
#line 1078 "speed.ch"
#line 1079 "speed.ch"
if ( cplusGen ) {
#line 1079 "speed.ch"
#line 1080 "speed.ch"
                    WriteString(Value(elem));
#line 1080 "speed.ch"
#line 1081 "speed.ch"
                 } else 
#line 1081 "speed.ch"
#line 1082 "speed.ch"
    WriteString(NameLang(Value(elem)));
#line 1082 "speed.ch"
#line 1082 "speed.ch"
#line 1083 "speed.ch"
break ;
#line 1083 "speed.ch"
#line 1084 "speed.ch"
                                                                                            } else 
#line 1084 "speed.ch"
                                                        {
#line 1084 "speed.ch"
#line 1085 "speed.ch"
                                                            DumpBrainyValue(elem);
#line 1085 "speed.ch"
#line 1085 "speed.ch"
#line 1086 "speed.ch"
                                                        }
#line 1086 "speed.ch"
#line 1087 "speed.ch"
                                                        break ;
#line 1087 "speed.ch"
#line 1088 "speed.ch"
                                                     }
#line 1088 "speed.ch"
#line 1089 "speed.ch"
                                                                                }
#line 1089 "speed.ch"
#line 1090 "speed.ch"
                                                                PrintString(";");
#line 1090 "speed.ch"
#line 1090 "speed.ch"
                                                                LNewLine(1);
#line 1090 "speed.ch"
#line 1090 "speed.ch"
#line 1091 "speed.ch"
                                                            }
#line 1091 "speed.ch"
#line 1091 "speed.ch"
#line 1092 "speed.ch"
}
#line 1092 "speed.ch"
#endif

#line 1097 "speed.ch"
#line 1097 "speed.ch"
PTREE GetWithContext ( PTREE tree )
#line 1097 "speed.ch"
{
#line 1097 "speed.ch"
    register PPTREE _inter ;
#line 1097 "speed.ch"
#line 1097 "speed.ch"
#line 1100 "speed.ch"
    PTREE   name, list ;
#line 1100 "speed.ch"
#line 1100 "speed.ch"
#line 1101 "speed.ch"
    PTREE   theList ;
#line 1101 "speed.ch"
#line 1101 "speed.ch"
#line 1103 "speed.ch"
    {
#line 1103 "speed.ch"
#line 1103 "speed.ch"
        ItPtree _iterator1 (tree, (PPTREE) 0) ;
#line 1103 "speed.ch"
#line 1103 "speed.ch"
        PPTREE  _for_elem ;
#line 1103 "speed.ch"
#line 1103 "speed.ch"
        _iterator1.AllSearch(1);
#line 1103 "speed.ch"
#line 1104 "speed.ch"
        while ( _for_elem = _iterator1++ ) {
#line 1104 "speed.ch"
#line 1103 "speed.ch"
            {
#line 1103 "speed.ch"
#line 1104 "speed.ch"
                if ( ((_inter = (PPTREE)for_elem,1) && 
#line 1104 "speed.ch"
                        (NumberTree(_inter) == metalang::WITH_CONTEXT) &&
#line 1104 "speed.ch"
                        ((name=SonTree(_inter,1)),1) &&
#line 1104 "speed.ch"
                        1) || ((_inter = (PPTREE)for_elem,1) && 
#line 1104 "speed.ch"
                                    (NumberTree(_inter) == metalang::WITHOUT_CONTEXT) &&
#line 1104 "speed.ch"
                                    ((name=SonTree(_inter,1)),1) &&
#line 1104 "speed.ch"
                                    1) ) {
#line 1104 "speed.ch"
#line 1106 "speed.ch"
                                            (name=copytree(name));
#line 1106 "speed.ch"
#line 1106 "speed.ch"
#line 1109 "speed.ch"
                                            if ( !ListFind(list, name) ) {
#line 1109 "speed.ch"
#line 1110 "speed.ch"
{
#line 1110 "speed.ch"
    PPTREE _ptTree0= (PPTREE) 0 ;
#line 1110 "speed.ch"
    list =  AddList( list,name);
#line 1110 "speed.ch"
}
#line 1110 "speed.ch"
#line 1110 "speed.ch"
#line 1111 "speed.ch"
                                                                             }
#line 1111 "speed.ch"
#line 1112 "speed.ch"
                                         }
#line 1112 "speed.ch"
#line 1113 "speed.ch"
            }
#line 1113 "speed.ch"
#line 1113 "speed.ch"
            _iterator1.Current(_for_elem);
#line 1113 "speed.ch"
#line 1113 "speed.ch"
            continue ;
#line 1113 "speed.ch"
#line 1113 "speed.ch"
        for_continue1 : 
#line 1113 "speed.ch"
#line 1113 "speed.ch"
            _iterator1.Current(_for_elem);
#line 1113 "speed.ch"
#line 1113 "speed.ch"
            _iterator1.SkipSon(1);
#line 1113 "speed.ch"
#line 1113 "speed.ch"
            continue ;
#line 1113 "speed.ch"
#line 1113 "speed.ch"
        for_break1 : 
#line 1113 "speed.ch"
#line 1113 "speed.ch"
            break ;
#line 1113 "speed.ch"
#line 1113 "speed.ch"
        }
#line 1113 "speed.ch"
#line 1113 "speed.ch"
    }
#line 1113 "speed.ch"
#line 1114 "speed.ch"
    return list ;
#line 1114 "speed.ch"
#line 1115 "speed.ch"
}
#line 1115 "speed.ch"

#line 1120 "speed.ch"
#line 1120 "speed.ch"
void ReleasePosComment ( PTREE tree )
#line 1120 "speed.ch"
{
#line 1120 "speed.ch"
    register PPTREE _inter ;
#line 1120 "speed.ch"
#line 1120 "speed.ch"
#line 1123 "speed.ch"
    PTREE   list, elem, son1, son2 ;
#line 1123 "speed.ch"
#line 1123 "speed.ch"
#line 1126 "speed.ch"
    if ( (!tree) ) 
#line 1126 "speed.ch"
#line 1127 "speed.ch"
        return ;
#line 1127 "speed.ch"
#line 1131 "speed.ch"
    switch ( NumberTree(tree) ) {
#line 1131 "speed.ch"
#line 1132 "speed.ch"
        case metalang::DEFINE : 
#line 1132 "speed.ch"
#line 1132 "speed.ch"
            (elem=SonTree(tree, 1));
#line 1132 "speed.ch"
#line 1132 "speed.ch"
#line 1132 "speed.ch"
            (list=SonTree(tree, 2));
#line 1132 "speed.ch"
#line 1132 "speed.ch"
#line 1132 "speed.ch"
        _Case38 : 
#line 1132 "speed.ch"
#line 1132 "speed.ch"
            ;
#line 1132 "speed.ch"
#line 1132 "speed.ch"
            goto _Case39 ;
#line 1132 "speed.ch"
#line 1133 "speed.ch"
        case metalang::LEXDEFINE : 
#line 1133 "speed.ch"
#line 1133 "speed.ch"
            (elem=SonTree(tree, 1));
#line 1133 "speed.ch"
#line 1133 "speed.ch"
#line 1133 "speed.ch"
            (list=SonTree(tree, 2));
#line 1133 "speed.ch"
#line 1133 "speed.ch"
#line 1133 "speed.ch"
        _Case39 : 
#line 1133 "speed.ch"
#line 1133 "speed.ch"
            ;
#line 1133 "speed.ch"
#line 1133 "speed.ch"
            goto _Case40 ;
#line 1133 "speed.ch"
#line 1134 "speed.ch"
        case metalang::REPEAT : 
#line 1134 "speed.ch"
#line 1134 "speed.ch"
            (list=SonTree(tree, 1));
#line 1134 "speed.ch"
#line 1134 "speed.ch"
#line 1134 "speed.ch"
        _Case40 : 
#line 1134 "speed.ch"
#line 1134 "speed.ch"
            ;
#line 1134 "speed.ch"
#line 1134 "speed.ch"
            goto _Case41 ;
#line 1134 "speed.ch"
#line 1135 "speed.ch"
        case metalang::BEGIN : 
#line 1135 "speed.ch"
#line 1135 "speed.ch"
            (list=SonTree(tree, 1));
#line 1135 "speed.ch"
#line 1135 "speed.ch"
#line 1135 "speed.ch"
        _Case41 : 
#line 1135 "speed.ch"
#line 1135 "speed.ch"
            ;
#line 1135 "speed.ch"
#line 1135 "speed.ch"
            goto _Case42 ;
#line 1135 "speed.ch"
#line 1136 "speed.ch"
        case metalang::CASE : 
#line 1136 "speed.ch"
#line 1136 "speed.ch"
            (list=SonTree(tree, 1));
#line 1136 "speed.ch"
#line 1136 "speed.ch"
#line 1136 "speed.ch"
        _Case42 : 
#line 1136 "speed.ch"
#line 1136 "speed.ch"
            ;
#line 1136 "speed.ch"
#line 1137 "speed.ch"
            replacetree(elem, 0, (PTREE)0);
#line 1137 "speed.ch"
#line 1138 "speed.ch"
            while ( (elem=(list?list.Nextl():(PPTREE)0)) ) {
#line 1138 "speed.ch"
#line 1139 "speed.ch"
                                                                ReleasePosComment(elem);
#line 1139 "speed.ch"
#line 1140 "speed.ch"
                                                               }
#line 1140 "speed.ch"
#line 1141 "speed.ch"
            break ;
#line 1141 "speed.ch"
#line 1142 "speed.ch"
        case metalang::WHILE : 
#line 1142 "speed.ch"
#line 1142 "speed.ch"
            (elem=SonTree(tree, 1));
#line 1142 "speed.ch"
#line 1142 "speed.ch"
#line 1142 "speed.ch"
            (son1=SonTree(tree, 2));
#line 1142 "speed.ch"
#line 1142 "speed.ch"
#line 1142 "speed.ch"
        _Case43 : 
#line 1142 "speed.ch"
#line 1142 "speed.ch"
            ;
#line 1142 "speed.ch"
#line 1142 "speed.ch"
            goto _Case44 ;
#line 1142 "speed.ch"
#line 1143 "speed.ch"
        case metalang::WITHOUT_CONTEXT : 
#line 1143 "speed.ch"
#line 1143 "speed.ch"
            (elem=SonTree(tree, 1));
#line 1143 "speed.ch"
#line 1143 "speed.ch"
#line 1143 "speed.ch"
            (son1=SonTree(tree, 2));
#line 1143 "speed.ch"
#line 1143 "speed.ch"
#line 1143 "speed.ch"
        _Case44 : 
#line 1143 "speed.ch"
#line 1143 "speed.ch"
            ;
#line 1143 "speed.ch"
#line 1143 "speed.ch"
            goto _Case45 ;
#line 1143 "speed.ch"
#line 1144 "speed.ch"
        case metalang::WITH_CONTEXT : 
#line 1144 "speed.ch"
#line 1144 "speed.ch"
            (elem=SonTree(tree, 1));
#line 1144 "speed.ch"
#line 1144 "speed.ch"
#line 1144 "speed.ch"
            (son1=SonTree(tree, 2));
#line 1144 "speed.ch"
#line 1144 "speed.ch"
#line 1144 "speed.ch"
        _Case45 : 
#line 1144 "speed.ch"
#line 1144 "speed.ch"
            ;
#line 1144 "speed.ch"
#line 1144 "speed.ch"
            goto _Case46 ;
#line 1144 "speed.ch"
#line 1145 "speed.ch"
        case metalang::SWITCH : 
#line 1145 "speed.ch"
#line 1145 "speed.ch"
            (elem=SonTree(tree, 1));
#line 1145 "speed.ch"
#line 1145 "speed.ch"
#line 1145 "speed.ch"
            (son1=SonTree(tree, 2));
#line 1145 "speed.ch"
#line 1145 "speed.ch"
#line 1145 "speed.ch"
        _Case46 : 
#line 1145 "speed.ch"
#line 1145 "speed.ch"
            ;
#line 1145 "speed.ch"
#line 1145 "speed.ch"
            goto _Case47 ;
#line 1145 "speed.ch"
#line 1146 "speed.ch"
        case metalang::IF : 
#line 1146 "speed.ch"
#line 1146 "speed.ch"
            (elem=SonTree(tree, 1));
#line 1146 "speed.ch"
#line 1146 "speed.ch"
#line 1146 "speed.ch"
            (son1=SonTree(tree, 2));
#line 1146 "speed.ch"
#line 1146 "speed.ch"
#line 1146 "speed.ch"
            (son2=SonTree(tree, 3));
#line 1146 "speed.ch"
#line 1146 "speed.ch"
#line 1146 "speed.ch"
        _Case47 : 
#line 1146 "speed.ch"
#line 1146 "speed.ch"
            ;
#line 1146 "speed.ch"
#line 1147 "speed.ch"
            replacetree(elem, 0, (PTREE)0);
#line 1147 "speed.ch"
#line 1148 "speed.ch"
            ReleasePosComment(son1);
#line 1148 "speed.ch"
#line 1149 "speed.ch"
            ReleasePosComment(son2);
#line 1149 "speed.ch"
#line 1150 "speed.ch"
            break ;
#line 1150 "speed.ch"
#line 1152 "speed.ch"
        default : 
#line 1152 "speed.ch"
#line 1152 "speed.ch"
        _Case48 : 
#line 1152 "speed.ch"
#line 1152 "speed.ch"
            ;
#line 1152 "speed.ch"
#line 1152 "speed.ch"
            {
#line 1152 "speed.ch"
#line 1152 "speed.ch"
                int _for_slot = 1, _arity = treearity(tree);
#line 1152 "speed.ch"
#line 1152 "speed.ch"
                MY_TREE _for_elem = (PPTREE)0 ;
#line 1152 "speed.ch"
#line 1152 "speed.ch"
#line 1152 "speed.ch"
                for (; _for_slot <= _arity ; _for_slot++ ) {
#line 1152 "speed.ch"
#line 1152 "speed.ch"
                    _for_elem = SonTree(tree, _for_slot);
#line 1152 "speed.ch"
#line 1153 "speed.ch"
                    if ( _for_elem && NumberTree(_for_elem) != IN_LANGUAGE ) {
#line 1153 "speed.ch"
#line 1153 "speed.ch"
if ( !(((_inter = (PPTREE)for_elem,1) && 
#line 1153 "speed.ch"
            (NumberTree(_inter) == metalang::DEFINE) &&
#line 1153 "speed.ch"
            1)) && !(((_inter = (PPTREE)for_elem,1) && 
#line 1153 "speed.ch"
                        (NumberTree(_inter) == metalang::LEXDEFINE) &&
#line 1153 "speed.ch"
                        1)) ) 
#line 1153 "speed.ch"
#line 1154 "speed.ch"
    replacetree(for_elem, 0, (PTREE)0);
#line 1154 "speed.ch"
#line 1155 "speed.ch"
ReleasePosComment(for_elem);
#line 1155 "speed.ch"
#line 1156 "speed.ch"
                                                                             }
#line 1156 "speed.ch"
#line 1156 "speed.ch"
                }
#line 1156 "speed.ch"
#line 1156 "speed.ch"
#line 1156 "speed.ch"
            }
#line 1156 "speed.ch"
#line 1157 "speed.ch"
            break ;
#line 1157 "speed.ch"
    }
#line 1157 "speed.ch"
#line 1157 "speed.ch"
#line 1159 "speed.ch"
}
#line 1159 "speed.ch"

RIEN    FIN_CPLUSPLUS ;
#line 1159 "speed.ch"
/*Well done my boy */ 

