
#line 29 "../metachop/auxunpar.ch"
/*************************************************************************/
#line 29 "../metachop/auxunpar.ch"
/*                                                                       */
#line 29 "../metachop/auxunpar.ch"
/*        Produced by Metachop version 2.0  -    1989-1995               */
#line 29 "../metachop/auxunpar.ch"
/*     Tree      Meta     Chopper      developped    by                  */
#line 29 "../metachop/auxunpar.ch"
/*                  Eric Lavillonniere                                   */
#line 29 "../metachop/auxunpar.ch"
/*                                                                       */
#line 29 "../metachop/auxunpar.ch"
/*************************************************************************/
#line 29 "../metachop/auxunpar.ch"
#line 29 "../metachop/auxunpar.ch"
#include "token.h"
#line 29 "../metachop/auxunpar.ch"
extern int _retVal[50];
#line 29 "../metachop/auxunpar.ch"
extern PPTREE _storeVal[50],_nextVal;
#line 29 "../metachop/auxunpar.ch"
extern PPTREE stackTree[1024];
#line 29 "../metachop/auxunpar.ch"
extern int ptStackTree;
#line 29 "../metachop/auxunpar.ch"
#define decomp decomp_metachop
#line 29 "../metachop/auxunpar.ch"
#line 29 "../metachop/auxunpar.ch"
#ifndef for_elem
#line 29 "../metachop/auxunpar.ch"
#line 29 "../metachop/auxunpar.ch"
#define for_elem _for_elem
#line 29 "../metachop/auxunpar.ch"
#endif
#ifdef INCONNU
#line 29 "../metachop/auxunpar.ch"
#line 29 "../metachop/auxunpar.ch"
PTREE   for_elem ;
#line 29 "../metachop/auxunpar.ch"
#line 29 "../metachop/auxunpar.ch"
#endif
#include "decmetac.h"
#include <fcntl.h>

static char stringNumb [200];

#ifndef SUN
#line 29 "../metachop/auxunpar.ch"
#line 39 "../metachop/auxunpar.ch"
#include <sys/types.h>
#line 39 "../metachop/auxunpar.ch"
#endif

extern char *nameDefine ;
int nbVerify = 0 ;
int nbFor = 0 ;
extern int  compiledLine ;
extern char *theFileName ;

#line 49 "../metachop/auxunpar.ch"
#line 49 "../metachop/auxunpar.ch"
static  inline void CNewLine ()
#line 49 "../metachop/auxunpar.ch"
{
#line 49 "../metachop/auxunpar.ch"
#line 51 "../metachop/auxunpar.ch"
    char    string [10];
#line 51 "../metachop/auxunpar.ch"
#line 53 "../metachop/auxunpar.ch"
    NewLine();
#line 53 "../metachop/auxunpar.ch"
#line 54 "../metachop/auxunpar.ch"
    if ( compiledLine ) {
#line 54 "../metachop/auxunpar.ch"
#line 55 "../metachop/auxunpar.ch"
                            gotocol(1);
#line 55 "../metachop/auxunpar.ch"
#line 56 "../metachop/auxunpar.ch"
                            WriteString("#line ");
#line 56 "../metachop/auxunpar.ch"
#line 57 "../metachop/auxunpar.ch"
                            sprintf(string, "%d ", compiledLine);
#line 57 "../metachop/auxunpar.ch"
#line 58 "../metachop/auxunpar.ch"
                            WriteString(string);
#line 58 "../metachop/auxunpar.ch"
#line 58 "../metachop/auxunpar.ch"
                            WriteString("\"");
#line 58 "../metachop/auxunpar.ch"
#line 58 "../metachop/auxunpar.ch"
                            WriteString(theFileName);
#line 58 "../metachop/auxunpar.ch"
#line 58 "../metachop/auxunpar.ch"
                            WriteString("\"");
#line 58 "../metachop/auxunpar.ch"
#line 59 "../metachop/auxunpar.ch"
                            NewLine();
#line 59 "../metachop/auxunpar.ch"
#line 59 "../metachop/auxunpar.ch"
                         }
#line 59 "../metachop/auxunpar.ch"
#line 61 "../metachop/auxunpar.ch"
}
#line 61 "../metachop/auxunpar.ch"

#line 63 "../metachop/auxunpar.ch"
#line 63 "../metachop/auxunpar.ch"
static  inline void CLNewLine ( int i )
#line 63 "../metachop/auxunpar.ch"
{
#line 63 "../metachop/auxunpar.ch"
#line 65 "../metachop/auxunpar.ch"
    char    string [10];
#line 65 "../metachop/auxunpar.ch"
#line 67 "../metachop/auxunpar.ch"
    NewLine();
#line 67 "../metachop/auxunpar.ch"
#line 68 "../metachop/auxunpar.ch"
    if ( compiledLine ) {
#line 68 "../metachop/auxunpar.ch"
#line 69 "../metachop/auxunpar.ch"
                            gotocol(1);
#line 69 "../metachop/auxunpar.ch"
#line 70 "../metachop/auxunpar.ch"
                            WriteString("#line ");
#line 70 "../metachop/auxunpar.ch"
#line 71 "../metachop/auxunpar.ch"
                            sprintf(string, "%d ", compiledLine);
#line 71 "../metachop/auxunpar.ch"
#line 72 "../metachop/auxunpar.ch"
                            WriteString(string);
#line 72 "../metachop/auxunpar.ch"
#line 72 "../metachop/auxunpar.ch"
                            WriteString("\"");
#line 72 "../metachop/auxunpar.ch"
#line 72 "../metachop/auxunpar.ch"
                            WriteString(theFileName);
#line 72 "../metachop/auxunpar.ch"
#line 72 "../metachop/auxunpar.ch"
                            WriteString("\"");
#line 72 "../metachop/auxunpar.ch"
#line 73 "../metachop/auxunpar.ch"
                            LNewLine(i);
#line 73 "../metachop/auxunpar.ch"
#line 73 "../metachop/auxunpar.ch"
                         }
#line 73 "../metachop/auxunpar.ch"
#line 75 "../metachop/auxunpar.ch"
}
#line 75 "../metachop/auxunpar.ch"

#define NewLine CNewLine
#define LNewLine CLNewLine

#line 84 "../metachop/auxunpar.ch"
#line 84 "../metachop/auxunpar.ch"
void EqualTree ( char *ident, char *dest, int level, PTREE tree, int son )
#line 84 "../metachop/auxunpar.ch"
{
#line 84 "../metachop/auxunpar.ch"
    register PPTREE _inter ;
#line 84 "../metachop/auxunpar.ch"
#line 84 "../metachop/auxunpar.ch"
#line 86 "../metachop/auxunpar.ch"
    PTREE   ptTree ;
#line 86 "../metachop/auxunpar.ch"
#line 86 "../metachop/auxunpar.ch"
#line 87 "../metachop/auxunpar.ch"
    int currentSon ;
#line 87 "../metachop/auxunpar.ch"
#line 88 "../metachop/auxunpar.ch"
    char    *interString ;
#line 88 "../metachop/auxunpar.ch"
#line 90 "../metachop/auxunpar.ch"
    Mark();
#line 90 "../metachop/auxunpar.ch"
#line 91 "../metachop/auxunpar.ch"
    PrintString("(");
#line 91 "../metachop/auxunpar.ch"
#line 92 "../metachop/auxunpar.ch"
    if ( level ) {
#line 92 "../metachop/auxunpar.ch"
#line 93 "../metachop/auxunpar.ch"
                    itoa(level, stringNumb, 10);
#line 93 "../metachop/auxunpar.ch"
#line 94 "../metachop/auxunpar.ch"
                    PrintString("_retVal[");
#line 94 "../metachop/auxunpar.ch"
#line 94 "../metachop/auxunpar.ch"
                    WriteString(stringNumb);
#line 94 "../metachop/auxunpar.ch"
#line 94 "../metachop/auxunpar.ch"
                    PrintString("]=((_storeVal[");
#line 94 "../metachop/auxunpar.ch"
#line 95 "../metachop/auxunpar.ch"
                    WriteString(stringNumb);
#line 95 "../metachop/auxunpar.ch"
#line 95 "../metachop/auxunpar.ch"
                    PrintString("]=_inter,_inter=SonTree(_inter,");
#line 95 "../metachop/auxunpar.ch"
#line 96 "../metachop/auxunpar.ch"
                    itoa(son, stringNumb, 10);
#line 96 "../metachop/auxunpar.ch"
#line 97 "../metachop/auxunpar.ch"
                    WriteString(stringNumb);
#line 97 "../metachop/auxunpar.ch"
#line 97 "../metachop/auxunpar.ch"
                    PrintString(")");
#line 97 "../metachop/auxunpar.ch"
#line 98 "../metachop/auxunpar.ch"
                    if ( dest ) {
#line 98 "../metachop/auxunpar.ch"
#line 99 "../metachop/auxunpar.ch"
                                    PrintString(",(");
#line 99 "../metachop/auxunpar.ch"
#line 99 "../metachop/auxunpar.ch"
                                    WriteString(dest);
#line 99 "../metachop/auxunpar.ch"
#line 99 "../metachop/auxunpar.ch"
                                    PrintString("=_inter)");
#line 99 "../metachop/auxunpar.ch"
#line 99 "../metachop/auxunpar.ch"
                                 }
#line 99 "../metachop/auxunpar.ch"
#line 101 "../metachop/auxunpar.ch"
                    PrintString(",1) &&");
#line 101 "../metachop/auxunpar.ch"
#line 101 "../metachop/auxunpar.ch"
                  } else 
#line 102 "../metachop/auxunpar.ch"
    {
#line 102 "../metachop/auxunpar.ch"
#line 103 "../metachop/auxunpar.ch"
        PrintString("(_inter = (PPTREE)");
#line 103 "../metachop/auxunpar.ch"
#line 104 "../metachop/auxunpar.ch"
        if ( ident ) 
#line 104 "../metachop/auxunpar.ch"
#line 105 "../metachop/auxunpar.ch"
            WriteString(ident);
#line 105 "../metachop/auxunpar.ch"
#line 106 "../metachop/auxunpar.ch"
        if ( dest ) {
#line 106 "../metachop/auxunpar.ch"
#line 107 "../metachop/auxunpar.ch"
                        PrintString(",(");
#line 107 "../metachop/auxunpar.ch"
#line 107 "../metachop/auxunpar.ch"
                        WriteString(dest);
#line 107 "../metachop/auxunpar.ch"
#line 107 "../metachop/auxunpar.ch"
                        PrintString("=_inter))");
#line 107 "../metachop/auxunpar.ch"
#line 107 "../metachop/auxunpar.ch"
                     }
#line 107 "../metachop/auxunpar.ch"
#line 109 "../metachop/auxunpar.ch"
        PrintString(",1) && ");
#line 109 "../metachop/auxunpar.ch"
#line 109 "../metachop/auxunpar.ch"
    }
#line 109 "../metachop/auxunpar.ch"
#line 111 "../metachop/auxunpar.ch"
    LNewLine(1);
#line 111 "../metachop/auxunpar.ch"
#line 111 "../metachop/auxunpar.ch"
#line 112 "../metachop/auxunpar.ch"
    Tab();
#line 112 "../metachop/auxunpar.ch"
#line 112 "../metachop/auxunpar.ch"
#line 113 "../metachop/auxunpar.ch"
    Mark();
#line 113 "../metachop/auxunpar.ch"
#line 114 "../metachop/auxunpar.ch"
    switch ( NumberTree(tree) ) {
#line 114 "../metachop/auxunpar.ch"
#line 117 "../metachop/auxunpar.ch"
        case LIST : 
#line 117 "../metachop/auxunpar.ch"
#line 117 "../metachop/auxunpar.ch"
        _Case0 : 
#line 117 "../metachop/auxunpar.ch"
#line 117 "../metachop/auxunpar.ch"
            ;
#line 117 "../metachop/auxunpar.ch"
#line 116 "../metachop/auxunpar.ch"
            {
#line 116 "../metachop/auxunpar.ch"
#line 117 "../metachop/auxunpar.ch"
                PrintString("(NumberTree(_inter) == LIST) &&");
#line 117 "../metachop/auxunpar.ch"
#line 117 "../metachop/auxunpar.ch"
                LNewLine(1);
#line 117 "../metachop/auxunpar.ch"
#line 117 "../metachop/auxunpar.ch"
#line 118 "../metachop/auxunpar.ch"
                strcpy(stringNumb, "_Ver");
#line 118 "../metachop/auxunpar.ch"
#line 119 "../metachop/auxunpar.ch"
                itoa(nbVerify++, stringNumb + 4, 10);
#line 119 "../metachop/auxunpar.ch"
#line 120 "../metachop/auxunpar.ch"
                strcpy(stringNumb + strlen(stringNumb), nameDefine);
#line 120 "../metachop/auxunpar.ch"
#line 121 "../metachop/auxunpar.ch"
                WriteString(stringNumb);
#line 121 "../metachop/auxunpar.ch"
#line 121 "../metachop/auxunpar.ch"
                PrintString("(_inter) )");
#line 121 "../metachop/auxunpar.ch"
#line 121 "../metachop/auxunpar.ch"
                LNewLine(1);
#line 121 "../metachop/auxunpar.ch"
#line 121 "../metachop/auxunpar.ch"
#line 122 "../metachop/auxunpar.ch"
                StackFunction(AllocString(stringNumb), SonTree(tree, 1));
#line 122 "../metachop/auxunpar.ch"
#line 123 "../metachop/auxunpar.ch"
                if ( level ) {
#line 123 "../metachop/auxunpar.ch"
#line 124 "../metachop/auxunpar.ch"
                                PrintString(",");
#line 124 "../metachop/auxunpar.ch"
#line 124 "../metachop/auxunpar.ch"
                                LNewLine(1);
#line 124 "../metachop/auxunpar.ch"
#line 124 "../metachop/auxunpar.ch"
#line 125 "../metachop/auxunpar.ch"
                                itoa(level, stringNumb, 10);
#line 125 "../metachop/auxunpar.ch"
#line 126 "../metachop/auxunpar.ch"
                                PrintString("(_inter=_storeVal[");
#line 126 "../metachop/auxunpar.ch"
#line 126 "../metachop/auxunpar.ch"
                                WriteString(stringNumb);
#line 126 "../metachop/auxunpar.ch"
#line 126 "../metachop/auxunpar.ch"
                                PrintString("],1),_retVal[");
#line 126 "../metachop/auxunpar.ch"
#line 127 "../metachop/auxunpar.ch"
                                WriteString(stringNumb);
#line 127 "../metachop/auxunpar.ch"
#line 127 "../metachop/auxunpar.ch"
                                PrintString("]) &&");
#line 127 "../metachop/auxunpar.ch"
#line 128 "../metachop/auxunpar.ch"
                                UnMark();
#line 128 "../metachop/auxunpar.ch"
#line 129 "../metachop/auxunpar.ch"
                                LNewLine(1);
#line 129 "../metachop/auxunpar.ch"
#line 129 "../metachop/auxunpar.ch"
#line 129 "../metachop/auxunpar.ch"
                              } else 
#line 129 "../metachop/auxunpar.ch"
#line 131 "../metachop/auxunpar.ch"
                    UnMark();
#line 131 "../metachop/auxunpar.ch"
#line 131 "../metachop/auxunpar.ch"
#line 131 "../metachop/auxunpar.ch"
            }
#line 131 "../metachop/auxunpar.ch"
#line 133 "../metachop/auxunpar.ch"
            break ;
#line 133 "../metachop/auxunpar.ch"
#line 136 "../metachop/auxunpar.ch"
        case metachop::NODE_TREE : 
#line 136 "../metachop/auxunpar.ch"
#line 136 "../metachop/auxunpar.ch"
        _Case1 : 
#line 136 "../metachop/auxunpar.ch"
#line 136 "../metachop/auxunpar.ch"
            ;
#line 136 "../metachop/auxunpar.ch"
#line 135 "../metachop/auxunpar.ch"
            {
#line 135 "../metachop/auxunpar.ch"
#line 136 "../metachop/auxunpar.ch"
                if ( (ptTree=SonTree(tree, 1)) ) {
#line 136 "../metachop/auxunpar.ch"
#line 137 "../metachop/auxunpar.ch"
                                                        (ptTree=SonTree(ptTree, 1));
#line 137 "../metachop/auxunpar.ch"
#line 137 "../metachop/auxunpar.ch"
#line 138 "../metachop/auxunpar.ch"
                                                        if ( ((_inter = (PPTREE)ptTree,1) && 
#line 138 "../metachop/auxunpar.ch"
                                                                (NumberTree(_inter) == metachop::IDENT) &&
#line 138 "../metachop/auxunpar.ch"
                                                                1) ) {
#line 138 "../metachop/auxunpar.ch"
#line 139 "../metachop/auxunpar.ch"
                                                                        PrintString("(NumberTree(_inter) == ");
#line 139 "../metachop/auxunpar.ch"
#line 140 "../metachop/auxunpar.ch"
                                                                        if ( cplusGen ) {
#line 140 "../metachop/auxunpar.ch"
#line 141 "../metachop/auxunpar.ch"
WriteString(NameOfNodePlus(Value(SonTree(ptTree, 1))));
#line 141 "../metachop/auxunpar.ch"
#line 141 "../metachop/auxunpar.ch"
                                                                                         } else 
#line 143 "../metachop/auxunpar.ch"
                                                                        {
#line 143 "../metachop/auxunpar.ch"
#line 144 "../metachop/auxunpar.ch"
WriteString(NameOfNode(Value(SonTree(ptTree, 1))));
#line 144 "../metachop/auxunpar.ch"
#line 144 "../metachop/auxunpar.ch"
                                                                        }
#line 144 "../metachop/auxunpar.ch"
#line 146 "../metachop/auxunpar.ch"
                                                                        PrintString(") &&");
#line 146 "../metachop/auxunpar.ch"
#line 146 "../metachop/auxunpar.ch"
                                                                        LNewLine(1);
#line 146 "../metachop/auxunpar.ch"
#line 146 "../metachop/auxunpar.ch"
#line 146 "../metachop/auxunpar.ch"
                                                                     }
#line 146 "../metachop/auxunpar.ch"
#line 148 "../metachop/auxunpar.ch"
                                                        currentSon = 1 ;
#line 148 "../metachop/auxunpar.ch"
#line 149 "../metachop/auxunpar.ch"
                                                        (tree=SonTree(SonTree(tree, 1), 2));
#line 149 "../metachop/auxunpar.ch"
#line 149 "../metachop/auxunpar.ch"
#line 153 "../metachop/auxunpar.ch"
                                                        while ( tree ) {
#line 153 "../metachop/auxunpar.ch"
#line 154 "../metachop/auxunpar.ch"
(ptTree=SonTree(tree, 1));
#line 154 "../metachop/auxunpar.ch"
#line 154 "../metachop/auxunpar.ch"
#line 158 "../metachop/auxunpar.ch"
if ( !(((_inter = (PPTREE)ptTree,1) && 
#line 158 "../metachop/auxunpar.ch"
            (NumberTree(_inter) == metachop::DEF_IDENT) &&
#line 158 "../metachop/auxunpar.ch"
            1)) ) {
#line 158 "../metachop/auxunpar.ch"
#line 159 "../metachop/auxunpar.ch"
                    if ( ((_inter = (PPTREE)ptTree,1) && 
#line 159 "../metachop/auxunpar.ch"
                            (NumberTree(_inter) == metachop::IDENT) &&
#line 159 "../metachop/auxunpar.ch"
                            1) ) {
#line 159 "../metachop/auxunpar.ch"
#line 159 "../metachop/auxunpar.ch"
                    _If2 : 
#line 159 "../metachop/auxunpar.ch"
#line 159 "../metachop/auxunpar.ch"
                        ;
#line 159 "../metachop/auxunpar.ch"
#line 159 "../metachop/auxunpar.ch"
                        goto _If3 ;
#line 159 "../metachop/auxunpar.ch"
#line 159 "../metachop/auxunpar.ch"
                    } else 
#line 161 "../metachop/auxunpar.ch"
                    if ( ((_inter = (PPTREE)ptTree,1) && 
#line 161 "../metachop/auxunpar.ch"
                            (NumberTree(_inter) == metachop::AFF) &&
#line 161 "../metachop/auxunpar.ch"
                            (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,2),1) &&
#line 161 "../metachop/auxunpar.ch"
                                (NumberTree(_inter) == metachop::DEF_IDENT) &&
#line 161 "../metachop/auxunpar.ch"
                                1),
#line 161 "../metachop/auxunpar.ch"
                                (_inter=_storeVal[1],1),_retVal[1]) &&
#line 161 "../metachop/auxunpar.ch"
                            1) ) {
#line 161 "../metachop/auxunpar.ch"
#line 161 "../metachop/auxunpar.ch"
                    _If3 : 
#line 161 "../metachop/auxunpar.ch"
#line 161 "../metachop/auxunpar.ch"
                        ;
#line 161 "../metachop/auxunpar.ch"
#line 162 "../metachop/auxunpar.ch"
                        ((_inter = (PPTREE)ptTree,1) && 
#line 162 "../metachop/auxunpar.ch"
                            (NumberTree(_inter) == metachop::AFF) &&
#line 162 "../metachop/auxunpar.ch"
                            ((ptTree=SonTree(_inter,1)),1) &&
#line 162 "../metachop/auxunpar.ch"
                            1);
#line 162 "../metachop/auxunpar.ch"
                        ;
#line 162 "../metachop/auxunpar.ch"
#line 163 "../metachop/auxunpar.ch"
                        PrintString("((");
#line 163 "../metachop/auxunpar.ch"
#line 163 "../metachop/auxunpar.ch"
                        WriteString(Value(SonTree(ptTree, 1)));
#line 163 "../metachop/auxunpar.ch"
#line 163 "../metachop/auxunpar.ch"
                        PrintString("=SonTree(_inter,");
#line 163 "../metachop/auxunpar.ch"
#line 164 "../metachop/auxunpar.ch"
                        itoa(currentSon, stringNumb, 10);
#line 164 "../metachop/auxunpar.ch"
#line 165 "../metachop/auxunpar.ch"
                        WriteString(stringNumb);
#line 165 "../metachop/auxunpar.ch"
#line 165 "../metachop/auxunpar.ch"
                        PrintString(")),1) &&");
#line 165 "../metachop/auxunpar.ch"
#line 165 "../metachop/auxunpar.ch"
                        LNewLine(1);
#line 165 "../metachop/auxunpar.ch"
#line 165 "../metachop/auxunpar.ch"
#line 165 "../metachop/auxunpar.ch"
                    } else 
#line 167 "../metachop/auxunpar.ch"
                    if ( ((_inter = (PPTREE)ptTree,1) && 
#line 167 "../metachop/auxunpar.ch"
                            (NumberTree(_inter) == metachop::AFF) &&
#line 167 "../metachop/auxunpar.ch"
                            1) ) {
#line 167 "../metachop/auxunpar.ch"
#line 167 "../metachop/auxunpar.ch"
                    _If4 : 
#line 167 "../metachop/auxunpar.ch"
#line 167 "../metachop/auxunpar.ch"
                        ;
#line 167 "../metachop/auxunpar.ch"
#line 168 "../metachop/auxunpar.ch"
                        EqualTree((char *)0, interString = AllocString(BrainyValue(ptTree)), level + 1, PTREE(SonTree(ptTree, 2)), currentSon);
#line 168 "../metachop/auxunpar.ch"
#line 170 "../metachop/auxunpar.ch"
                        free(interString);
#line 170 "../metachop/auxunpar.ch"
#line 170 "../metachop/auxunpar.ch"
                    } else 
#line 172 "../metachop/auxunpar.ch"
                    if ( ((_inter = (PPTREE)ptTree,1) && 
#line 172 "../metachop/auxunpar.ch"
                            (NumberTree(_inter) == metachop::NIL) &&
#line 172 "../metachop/auxunpar.ch"
                            1) ) {
#line 172 "../metachop/auxunpar.ch"
#line 172 "../metachop/auxunpar.ch"
                    _If5 : 
#line 172 "../metachop/auxunpar.ch"
#line 172 "../metachop/auxunpar.ch"
                        ;
#line 172 "../metachop/auxunpar.ch"
#line 173 "../metachop/auxunpar.ch"
                        PrintString("(!SonTree(_inter,");
#line 173 "../metachop/auxunpar.ch"
#line 174 "../metachop/auxunpar.ch"
                        itoa(currentSon, stringNumb, 10);
#line 174 "../metachop/auxunpar.ch"
#line 175 "../metachop/auxunpar.ch"
                        WriteString(stringNumb);
#line 175 "../metachop/auxunpar.ch"
#line 175 "../metachop/auxunpar.ch"
                        PrintString(")) &&");
#line 175 "../metachop/auxunpar.ch"
#line 175 "../metachop/auxunpar.ch"
                        LNewLine(1);
#line 175 "../metachop/auxunpar.ch"
#line 175 "../metachop/auxunpar.ch"
#line 175 "../metachop/auxunpar.ch"
                    } else 
#line 177 "../metachop/auxunpar.ch"
                    if ( ((_inter = (PPTREE)ptTree,1) && 
#line 177 "../metachop/auxunpar.ch"
                            (NumberTree(_inter) == metachop::STRING) &&
#line 177 "../metachop/auxunpar.ch"
                            1) ) {
#line 177 "../metachop/auxunpar.ch"
#line 177 "../metachop/auxunpar.ch"
                    _If6 : 
#line 177 "../metachop/auxunpar.ch"
#line 177 "../metachop/auxunpar.ch"
                        ;
#line 177 "../metachop/auxunpar.ch"
#line 178 "../metachop/auxunpar.ch"
                        PrintString("(!strcmp(Value(SonTree(_inter,");
#line 178 "../metachop/auxunpar.ch"
#line 179 "../metachop/auxunpar.ch"
                        itoa(currentSon, stringNumb, 10);
#line 179 "../metachop/auxunpar.ch"
#line 180 "../metachop/auxunpar.ch"
                        WriteString(stringNumb);
#line 180 "../metachop/auxunpar.ch"
#line 180 "../metachop/auxunpar.ch"
                        PrintString(")),");
#line 180 "../metachop/auxunpar.ch"
#line 180 "../metachop/auxunpar.ch"
                        decomp(ptTree);
#line 180 "../metachop/auxunpar.ch"
#line 180 "../metachop/auxunpar.ch"
#line 180 "../metachop/auxunpar.ch"
                        PrintString(")) &&");
#line 180 "../metachop/auxunpar.ch"
#line 180 "../metachop/auxunpar.ch"
                        LNewLine(1);
#line 180 "../metachop/auxunpar.ch"
#line 180 "../metachop/auxunpar.ch"
#line 180 "../metachop/auxunpar.ch"
                    } else 
#line 182 "../metachop/auxunpar.ch"
                    if ( 1 ) {
#line 182 "../metachop/auxunpar.ch"
#line 182 "../metachop/auxunpar.ch"
                    _If7 : 
#line 182 "../metachop/auxunpar.ch"
#line 182 "../metachop/auxunpar.ch"
                        ;
#line 182 "../metachop/auxunpar.ch"
#line 182 "../metachop/auxunpar.ch"
                        EqualTree((char *)0, (char *)0, level + 1, ptTree, currentSon);
#line 182 "../metachop/auxunpar.ch"
#line 182 "../metachop/auxunpar.ch"
                    }
#line 182 "../metachop/auxunpar.ch"
#line 182 "../metachop/auxunpar.ch"
                  }
#line 182 "../metachop/auxunpar.ch"
#line 185 "../metachop/auxunpar.ch"
(tree=SonTree(tree, 2));
#line 185 "../metachop/auxunpar.ch"
#line 185 "../metachop/auxunpar.ch"
#line 186 "../metachop/auxunpar.ch"
currentSon++ ;
#line 186 "../metachop/auxunpar.ch"
#line 186 "../metachop/auxunpar.ch"
                                                                        }
#line 186 "../metachop/auxunpar.ch"
#line 188 "../metachop/auxunpar.ch"
                                                        WriteString("1)");
#line 188 "../metachop/auxunpar.ch"
#line 189 "../metachop/auxunpar.ch"
                                                        if ( level ) {
#line 189 "../metachop/auxunpar.ch"
#line 190 "../metachop/auxunpar.ch"
                                                                        PrintString(",");
#line 190 "../metachop/auxunpar.ch"
#line 190 "../metachop/auxunpar.ch"
                                                                        LNewLine(1);
#line 190 "../metachop/auxunpar.ch"
#line 190 "../metachop/auxunpar.ch"
#line 191 "../metachop/auxunpar.ch"
                                                                        itoa(level, stringNumb, 10);
#line 191 "../metachop/auxunpar.ch"
#line 192 "../metachop/auxunpar.ch"
                                                                        PrintString("(_inter=_storeVal[");
#line 192 "../metachop/auxunpar.ch"
#line 192 "../metachop/auxunpar.ch"
                                                                        WriteString(stringNumb);
#line 192 "../metachop/auxunpar.ch"
#line 192 "../metachop/auxunpar.ch"
                                                                        PrintString("],1),_retVal[");
#line 192 "../metachop/auxunpar.ch"
#line 193 "../metachop/auxunpar.ch"
                                                                        WriteString(stringNumb);
#line 193 "../metachop/auxunpar.ch"
#line 193 "../metachop/auxunpar.ch"
                                                                        PrintString("]) &&");
#line 193 "../metachop/auxunpar.ch"
#line 194 "../metachop/auxunpar.ch"
                                                                        UnMark();
#line 194 "../metachop/auxunpar.ch"
#line 195 "../metachop/auxunpar.ch"
                                                                        LNewLine(1);
#line 195 "../metachop/auxunpar.ch"
#line 195 "../metachop/auxunpar.ch"
#line 195 "../metachop/auxunpar.ch"
                                                                      } else 
#line 195 "../metachop/auxunpar.ch"
#line 197 "../metachop/auxunpar.ch"
                                                            UnMark();
#line 197 "../metachop/auxunpar.ch"
#line 197 "../metachop/auxunpar.ch"
#line 197 "../metachop/auxunpar.ch"
                                                     }
#line 197 "../metachop/auxunpar.ch"
#line 199 "../metachop/auxunpar.ch"
                break ;
#line 199 "../metachop/auxunpar.ch"
#line 199 "../metachop/auxunpar.ch"
            }
#line 199 "../metachop/auxunpar.ch"
    }
#line 199 "../metachop/auxunpar.ch"
#line 199 "../metachop/auxunpar.ch"
#line 202 "../metachop/auxunpar.ch"
    UnMark();
#line 202 "../metachop/auxunpar.ch"
#line 203 "../metachop/auxunpar.ch"
}
#line 203 "../metachop/auxunpar.ch"

#line 207 "../metachop/auxunpar.ch"
#line 207 "../metachop/auxunpar.ch"
void DumpAFunction ( char *name, PTREE tree )
#line 207 "../metachop/auxunpar.ch"
{
#line 207 "../metachop/auxunpar.ch"
#line 210 "../metachop/auxunpar.ch"
    WriteString(name);
#line 210 "../metachop/auxunpar.ch"
#line 210 "../metachop/auxunpar.ch"
    WriteString("(tree)");
#line 210 "../metachop/auxunpar.ch"
#line 211 "../metachop/auxunpar.ch"
    NewLine();
#line 211 "../metachop/auxunpar.ch"
#line 212 "../metachop/auxunpar.ch"
    WriteString("PPTREE tree;");
#line 212 "../metachop/auxunpar.ch"
#line 213 "../metachop/auxunpar.ch"
    NewLine();
#line 213 "../metachop/auxunpar.ch"
#line 214 "../metachop/auxunpar.ch"
    WriteString("{");
#line 214 "../metachop/auxunpar.ch"
#line 215 "../metachop/auxunpar.ch"
    NewLine();
#line 215 "../metachop/auxunpar.ch"
#line 216 "../metachop/auxunpar.ch"
    Tab();
#line 216 "../metachop/auxunpar.ch"
#line 217 "../metachop/auxunpar.ch"
    Mark();
#line 217 "../metachop/auxunpar.ch"
#line 218 "../metachop/auxunpar.ch"
    WriteString("register PPTREE _ptTree;");
#line 218 "../metachop/auxunpar.ch"
#line 219 "../metachop/auxunpar.ch"
    NewLine();
#line 219 "../metachop/auxunpar.ch"
#line 220 "../metachop/auxunpar.ch"
    WriteString("int _retVal[50];");
#line 220 "../metachop/auxunpar.ch"
#line 221 "../metachop/auxunpar.ch"
    NewLine();
#line 221 "../metachop/auxunpar.ch"
#line 222 "../metachop/auxunpar.ch"
    WriteString("PPTREE _storeVal[50],_inter;");
#line 222 "../metachop/auxunpar.ch"
#line 223 "../metachop/auxunpar.ch"
    NewLine();
#line 223 "../metachop/auxunpar.ch"
#line 224 "../metachop/auxunpar.ch"
    WriteString("while (tree) {");
#line 224 "../metachop/auxunpar.ch"
#line 225 "../metachop/auxunpar.ch"
    NewLine();
#line 225 "../metachop/auxunpar.ch"
#line 226 "../metachop/auxunpar.ch"
    Tab();
#line 226 "../metachop/auxunpar.ch"
#line 227 "../metachop/auxunpar.ch"
    Mark();
#line 227 "../metachop/auxunpar.ch"
#line 228 "../metachop/auxunpar.ch"
    WriteString("_ptTree = SonTree(tree,1) ;");
#line 228 "../metachop/auxunpar.ch"
#line 229 "../metachop/auxunpar.ch"
    NewLine();
#line 229 "../metachop/auxunpar.ch"
#line 230 "../metachop/auxunpar.ch"
    if ( tree ) {
#line 230 "../metachop/auxunpar.ch"
#line 231 "../metachop/auxunpar.ch"
                    WriteString("if (");
#line 231 "../metachop/auxunpar.ch"
#line 232 "../metachop/auxunpar.ch"
                    Mark();
#line 232 "../metachop/auxunpar.ch"
#line 233 "../metachop/auxunpar.ch"
                    while ( tree ) {
#line 233 "../metachop/auxunpar.ch"
#line 234 "../metachop/auxunpar.ch"
                                        WriteString("!");
#line 234 "../metachop/auxunpar.ch"
#line 235 "../metachop/auxunpar.ch"
                                        EqualTree("_ptTree", (char *)0, 0, PTREE(SonTree(tree, 1)), 0);
#line 235 "../metachop/auxunpar.ch"
#line 236 "../metachop/auxunpar.ch"
                                        WriteString(" &&");
#line 236 "../metachop/auxunpar.ch"
#line 237 "../metachop/auxunpar.ch"
                                        NewLine();
#line 237 "../metachop/auxunpar.ch"
#line 238 "../metachop/auxunpar.ch"
                                        (tree=SonTree(tree, 2));
#line 238 "../metachop/auxunpar.ch"
#line 238 "../metachop/auxunpar.ch"
#line 238 "../metachop/auxunpar.ch"
                                    }
#line 238 "../metachop/auxunpar.ch"
#line 240 "../metachop/auxunpar.ch"
                    WriteString("1) ");
#line 240 "../metachop/auxunpar.ch"
#line 241 "../metachop/auxunpar.ch"
                    UnMark();
#line 241 "../metachop/auxunpar.ch"
#line 242 "../metachop/auxunpar.ch"
                    NewLine();
#line 242 "../metachop/auxunpar.ch"
#line 243 "../metachop/auxunpar.ch"
                    Tab();
#line 243 "../metachop/auxunpar.ch"
#line 244 "../metachop/auxunpar.ch"
                    WriteString("return(0);");
#line 244 "../metachop/auxunpar.ch"
#line 245 "../metachop/auxunpar.ch"
                    NewLine();
#line 245 "../metachop/auxunpar.ch"
#line 245 "../metachop/auxunpar.ch"
                 }
#line 245 "../metachop/auxunpar.ch"
#line 247 "../metachop/auxunpar.ch"
    WriteString("tree = SonTree(tree,2);");
#line 247 "../metachop/auxunpar.ch"
#line 248 "../metachop/auxunpar.ch"
    UnMark();
#line 248 "../metachop/auxunpar.ch"
#line 249 "../metachop/auxunpar.ch"
    NewLine();
#line 249 "../metachop/auxunpar.ch"
#line 250 "../metachop/auxunpar.ch"
    WriteString("}");
#line 250 "../metachop/auxunpar.ch"
#line 251 "../metachop/auxunpar.ch"
    NewLine();
#line 251 "../metachop/auxunpar.ch"
#line 252 "../metachop/auxunpar.ch"
    WriteString("return(1);");
#line 252 "../metachop/auxunpar.ch"
#line 253 "../metachop/auxunpar.ch"
    UnMark();
#line 253 "../metachop/auxunpar.ch"
#line 254 "../metachop/auxunpar.ch"
    NewLine();
#line 254 "../metachop/auxunpar.ch"
#line 255 "../metachop/auxunpar.ch"
    WriteString("}");
#line 255 "../metachop/auxunpar.ch"
#line 256 "../metachop/auxunpar.ch"
    NewLine();
#line 256 "../metachop/auxunpar.ch"
#line 257 "../metachop/auxunpar.ch"
}
#line 257 "../metachop/auxunpar.ch"

typedef struct funcElem {
    char    *name ;
    PPTREE  tree ;
    struct funcElem *next ;
}   FUNC_ELEM,  *PFUNC_ELEM ;

PFUNC_ELEM  listFunc, listFuncFree = (PFUNC_ELEM)0 ;

#line 269 "../metachop/auxunpar.ch"
#line 269 "../metachop/auxunpar.ch"
PFUNC_ELEM AllocFuncElem ()
#line 269 "../metachop/auxunpar.ch"
{
#line 269 "../metachop/auxunpar.ch"
#line 272 "../metachop/auxunpar.ch"
    PFUNC_ELEM  ptFunc ;
#line 272 "../metachop/auxunpar.ch"
#line 274 "../metachop/auxunpar.ch"
    if ( listFuncFree ) {
#line 274 "../metachop/auxunpar.ch"
#line 275 "../metachop/auxunpar.ch"
                            ptFunc = listFuncFree ;
#line 275 "../metachop/auxunpar.ch"
#line 276 "../metachop/auxunpar.ch"
                            listFuncFree = listFuncFree -> next ;
#line 276 "../metachop/auxunpar.ch"
#line 276 "../metachop/auxunpar.ch"
                         } else 
#line 276 "../metachop/auxunpar.ch"
#line 278 "../metachop/auxunpar.ch"
        ptFunc = (PFUNC_ELEM)malloc(sizeof(FUNC_ELEM));
#line 278 "../metachop/auxunpar.ch"
#line 278 "../metachop/auxunpar.ch"
#line 279 "../metachop/auxunpar.ch"
    return (ptFunc);
#line 279 "../metachop/auxunpar.ch"
#line 280 "../metachop/auxunpar.ch"
}
#line 280 "../metachop/auxunpar.ch"

#line 284 "../metachop/auxunpar.ch"
#line 284 "../metachop/auxunpar.ch"
void FreeHeadFunc ()
#line 284 "../metachop/auxunpar.ch"
{
#line 284 "../metachop/auxunpar.ch"
#line 287 "../metachop/auxunpar.ch"
    PFUNC_ELEM  funcElem = listFunc ;
#line 287 "../metachop/auxunpar.ch"
#line 289 "../metachop/auxunpar.ch"
    listFunc = listFunc -> next ;
#line 289 "../metachop/auxunpar.ch"
#line 290 "../metachop/auxunpar.ch"
    funcElem -> next = listFuncFree ;
#line 290 "../metachop/auxunpar.ch"
#line 291 "../metachop/auxunpar.ch"
    listFuncFree = funcElem ;
#line 291 "../metachop/auxunpar.ch"
#line 292 "../metachop/auxunpar.ch"
}
#line 292 "../metachop/auxunpar.ch"

#line 296 "../metachop/auxunpar.ch"
#line 296 "../metachop/auxunpar.ch"
void StackFunction ( char *name, PTREE tree )
#line 296 "../metachop/auxunpar.ch"
{
#line 296 "../metachop/auxunpar.ch"
#line 299 "../metachop/auxunpar.ch"
    PFUNC_ELEM  pFuncElem = AllocFuncElem();
#line 299 "../metachop/auxunpar.ch"
#line 301 "../metachop/auxunpar.ch"
    AddRef(tree);
#line 301 "../metachop/auxunpar.ch"
#line 302 "../metachop/auxunpar.ch"
    pFuncElem -> name = name ;
#line 302 "../metachop/auxunpar.ch"
#line 303 "../metachop/auxunpar.ch"
    pFuncElem -> tree = tree ;
#line 303 "../metachop/auxunpar.ch"
#line 304 "../metachop/auxunpar.ch"
    pFuncElem -> next = listFunc ;
#line 304 "../metachop/auxunpar.ch"
#line 305 "../metachop/auxunpar.ch"
    listFunc = pFuncElem ;
#line 305 "../metachop/auxunpar.ch"
#line 306 "../metachop/auxunpar.ch"
}
#line 306 "../metachop/auxunpar.ch"

static int  _glob_level ;

#line 313 "../metachop/auxunpar.ch"
#line 313 "../metachop/auxunpar.ch"
void LookForEach ( PTREE paramTree, int level )
#line 313 "../metachop/auxunpar.ch"
{
#line 313 "../metachop/auxunpar.ch"
    register PPTREE _inter ;
#line 313 "../metachop/auxunpar.ch"
#line 313 "../metachop/auxunpar.ch"
#line 315 "../metachop/auxunpar.ch"
    PTREE   tree ;
#line 315 "../metachop/auxunpar.ch"
#line 315 "../metachop/auxunpar.ch"
#line 316 "../metachop/auxunpar.ch"
    ItPtree it (paramTree) ;
#line 316 "../metachop/auxunpar.ch"
#line 317 "../metachop/auxunpar.ch"
    PPTREE  _for_elem ;
#line 317 "../metachop/auxunpar.ch"
#line 319 "../metachop/auxunpar.ch"
    _glob_level = level ;
#line 319 "../metachop/auxunpar.ch"
#line 320 "../metachop/auxunpar.ch"
    {
#line 320 "../metachop/auxunpar.ch"
        PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 320 "../metachop/auxunpar.ch"
        _ptRes0 = MakeTree(metachop::FOREACH, 3);
#line 320 "../metachop/auxunpar.ch"
        {
#line 320 "../metachop/auxunpar.ch"
            PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 320 "../metachop/auxunpar.ch"
            _ptRes1 = MakeTree(META, 1);
#line 320 "../metachop/auxunpar.ch"
            _ptTree1 = MakeString("name") ;
#line 320 "../metachop/auxunpar.ch"
            ReplaceTree(_ptRes1, 1, _ptTree1);
#line 320 "../metachop/auxunpar.ch"
            _ptTree0 = _ptRes1;
#line 320 "../metachop/auxunpar.ch"
        }
#line 320 "../metachop/auxunpar.ch"
        ReplaceTree(_ptRes0, 1, _ptTree0);
#line 320 "../metachop/auxunpar.ch"
        {
#line 320 "../metachop/auxunpar.ch"
            PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 320 "../metachop/auxunpar.ch"
            _ptRes1 = MakeTree(META, 1);
#line 320 "../metachop/auxunpar.ch"
            _ptTree1 = MakeString("name1") ;
#line 320 "../metachop/auxunpar.ch"
            ReplaceTree(_ptRes1, 1, _ptTree1);
#line 320 "../metachop/auxunpar.ch"
            _ptTree0 = _ptRes1;
#line 320 "../metachop/auxunpar.ch"
        }
#line 320 "../metachop/auxunpar.ch"
        ReplaceTree(_ptRes0, 2, _ptTree0);
#line 320 "../metachop/auxunpar.ch"
        {
#line 320 "../metachop/auxunpar.ch"
            PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 320 "../metachop/auxunpar.ch"
            _ptRes1 = MakeTree(META, 1);
#line 320 "../metachop/auxunpar.ch"
            _ptTree1 = MakeString("name2") ;
#line 320 "../metachop/auxunpar.ch"
            ReplaceTree(_ptRes1, 1, _ptTree1);
#line 320 "../metachop/auxunpar.ch"
            _ptTree0 = _ptRes1;
#line 320 "../metachop/auxunpar.ch"
        }
#line 320 "../metachop/auxunpar.ch"
        ReplaceTree(_ptRes0, 3, _ptTree0);
#line 320 "../metachop/auxunpar.ch"
        tree = _ptRes0;
#line 320 "../metachop/auxunpar.ch"
    }
#line 320 "../metachop/auxunpar.ch"
#line 320 "../metachop/auxunpar.ch"
#line 321 "../metachop/auxunpar.ch"
    it.Searched(tree);
#line 321 "../metachop/auxunpar.ch"
#line 322 "../metachop/auxunpar.ch"
    while ( for_elem = it++ ) {
#line 322 "../metachop/auxunpar.ch"
#line 323 "../metachop/auxunpar.ch"
                                    PTREE   father ;
#line 323 "../metachop/auxunpar.ch"
#line 323 "../metachop/auxunpar.ch"
#line 324 "../metachop/auxunpar.ch"
                                    (father=FatherTree(for_elem));
#line 324 "../metachop/auxunpar.ch"
#line 324 "../metachop/auxunpar.ch"
#line 325 "../metachop/auxunpar.ch"
                                    DumpForeach(for_elem, ++_glob_level);
#line 325 "../metachop/auxunpar.ch"
#line 326 "../metachop/auxunpar.ch"
                                    it.Current(father);
#line 326 "../metachop/auxunpar.ch"
#line 326 "../metachop/auxunpar.ch"
                                }
#line 326 "../metachop/auxunpar.ch"
#line 328 "../metachop/auxunpar.ch"
}
#line 328 "../metachop/auxunpar.ch"

extern int  inDefine ;

#line 335 "../metachop/auxunpar.ch"
#line 335 "../metachop/auxunpar.ch"
void DumpForeach ( PTREE paramTree, int level )
#line 335 "../metachop/auxunpar.ch"
{
#line 335 "../metachop/auxunpar.ch"
    register PPTREE _inter ;
#line 335 "../metachop/auxunpar.ch"
#line 335 "../metachop/auxunpar.ch"
#line 335 "../metachop/auxunpar.ch"
    PTREE   _Baum5 ;
#line 335 "../metachop/auxunpar.ch"
#line 335 "../metachop/auxunpar.ch"
#line 335 "../metachop/auxunpar.ch"
    PTREE   _Baum4 ;
#line 335 "../metachop/auxunpar.ch"
#line 335 "../metachop/auxunpar.ch"
#line 337 "../metachop/auxunpar.ch"
    PTREE   son, statement, inter1, inter2 ;
#line 337 "../metachop/auxunpar.ch"
#line 337 "../metachop/auxunpar.ch"
#line 338 "../metachop/auxunpar.ch"
    int oldDefine = inDefine ;
#line 338 "../metachop/auxunpar.ch"
#line 339 "../metachop/auxunpar.ch"
    char    new_ident [15];
#line 339 "../metachop/auxunpar.ch"
#line 340 "../metachop/auxunpar.ch"
    char    variable ;
#line 340 "../metachop/auxunpar.ch"
#line 341 "../metachop/auxunpar.ch"
    PTREE   searched ;
#line 341 "../metachop/auxunpar.ch"
#line 341 "../metachop/auxunpar.ch"
#line 342 "../metachop/auxunpar.ch"
    PTREE   stated ;
#line 342 "../metachop/auxunpar.ch"
#line 342 "../metachop/auxunpar.ch"
#line 343 "../metachop/auxunpar.ch"
    PTREE   iterator ;
#line 343 "../metachop/auxunpar.ch"
#line 343 "../metachop/auxunpar.ch"
#line 344 "../metachop/auxunpar.ch"
    PTREE   treatment ;
#line 344 "../metachop/auxunpar.ch"
#line 344 "../metachop/auxunpar.ch"
#line 347 "../metachop/auxunpar.ch"
    ((_inter = (PPTREE)paramTree,1) && 
#line 347 "../metachop/auxunpar.ch"
        ((son=SonTree(_inter,1)),1) &&
#line 347 "../metachop/auxunpar.ch"
        1);
#line 347 "../metachop/auxunpar.ch"
    ;
#line 347 "../metachop/auxunpar.ch"
#line 348 "../metachop/auxunpar.ch"
    if ( !(((_inter = (PPTREE)son,1) && 
#line 348 "../metachop/auxunpar.ch"
                (NumberTree(_inter) == metachop::NIL) &&
#line 348 "../metachop/auxunpar.ch"
                1)) ) 
#line 348 "../metachop/auxunpar.ch"
#line 349 "../metachop/auxunpar.ch"
        (searched=copytree(son));
#line 349 "../metachop/auxunpar.ch"
#line 349 "../metachop/auxunpar.ch"
    else 
#line 350 "../metachop/auxunpar.ch"
    {
#line 350 "../metachop/auxunpar.ch"
#line 351 "../metachop/auxunpar.ch"
        {
#line 351 "../metachop/auxunpar.ch"
            PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 351 "../metachop/auxunpar.ch"
            _ptRes0 = MakeTree(metachop::IDENT, 1);
#line 351 "../metachop/auxunpar.ch"
            _ptTree0 = MakeString("(PPTREE) 0") ;
#line 351 "../metachop/auxunpar.ch"
            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 351 "../metachop/auxunpar.ch"
            searched = _ptRes0;
#line 351 "../metachop/auxunpar.ch"
        }
#line 351 "../metachop/auxunpar.ch"
#line 351 "../metachop/auxunpar.ch"
#line 351 "../metachop/auxunpar.ch"
    }
#line 351 "../metachop/auxunpar.ch"
#line 355 "../metachop/auxunpar.ch"
    ((_inter = (PPTREE)paramTree,1) && 
#line 355 "../metachop/auxunpar.ch"
        ((stated=SonTree(_inter,2)),1) &&
#line 355 "../metachop/auxunpar.ch"
        1);
#line 355 "../metachop/auxunpar.ch"
    ;
#line 355 "../metachop/auxunpar.ch"
#line 356 "../metachop/auxunpar.ch"
    (stated=copytree(stated));
#line 356 "../metachop/auxunpar.ch"
#line 356 "../metachop/auxunpar.ch"
#line 359 "../metachop/auxunpar.ch"
    sprintf(new_ident, "_iterator%d", level);
#line 359 "../metachop/auxunpar.ch"
#line 360 "../metachop/auxunpar.ch"
    {
#line 360 "../metachop/auxunpar.ch"
        PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 360 "../metachop/auxunpar.ch"
        _ptRes0 = MakeTree(metachop::IDENT, 1);
#line 360 "../metachop/auxunpar.ch"
        _ptTree0 = StoreRef(MakeString(new_ident));
#line 360 "../metachop/auxunpar.ch"
        ReplaceTree(_ptRes0, 1, _ptTree0);
#line 360 "../metachop/auxunpar.ch"
        iterator = _ptRes0;
#line 360 "../metachop/auxunpar.ch"
    }
#line 360 "../metachop/auxunpar.ch"
#line 360 "../metachop/auxunpar.ch"
#line 363 "../metachop/auxunpar.ch"
    ((_inter = (PPTREE)paramTree,1) && 
#line 363 "../metachop/auxunpar.ch"
        ((treatment=SonTree(_inter,3)),1) &&
#line 363 "../metachop/auxunpar.ch"
        1);
#line 363 "../metachop/auxunpar.ch"
    ;
#line 363 "../metachop/auxunpar.ch"
#line 364 "../metachop/auxunpar.ch"
    (treatment=copytree(treatment));
#line 364 "../metachop/auxunpar.ch"
#line 364 "../metachop/auxunpar.ch"
#line 366 "../metachop/auxunpar.ch"
    {
#line 366 "../metachop/auxunpar.ch"
        /* [ metachop::COMPOUND
            [ LIST 
                [ metachop::DECLARATION
                    [ NIL ] 
                    [ metachop::TIDENT [ metachop::IDENT "ItPtree"]]
                    [ LIST 
                        [ metachop::TYP_LIST
                            [ META "iterator"]
                            [ LIST 
                                [ metachop::ABST_DECLARATOR
                                    [ metachop::TIDENT [ META "stated"]]
                                    [ NIL ] 
                                ]
                                [ metachop::ABST_DECLARATOR
                                    [ metachop::TIDENT [ META "searched"]]
                                    [ NIL ] 
                                ]
                            ]
                            [ NIL ] 
                        ]
                    ]
                ]
                [ metachop::DECLARATION
                    [ NIL ] 
                    [ metachop::TIDENT [ metachop::IDENT "PPTREE"]]
                    [ LIST 
                        [ metachop::IDENT "_for_elem"]
                    ]
                ]
                [ metachop::EXP_LIST
                    [ metachop::REF
                        [ META "iterator"]
                        [ metachop::IDENT "AllSearch"]
                    ]
                    [ metachop::INTEGER "1"]
                ]
                [ metachop::WHILE
                    [ metachop::AFF
                        [ metachop::IDENT "_for_elem"]
                        [ metachop::AINCR [ META "iterator"]]
                    ]
                    [ metachop::COMPOUND
                        [ LIST 
                            [ META "treatment"]
                            [ metachop::EXP_LIST
                                [ metachop::REF
                                    [ META "iterator"]
                                    [ metachop::IDENT "Current"]
                                ]
                                [ metachop::IDENT "_for_elem"]
                            ]
                            [ metachop::CONTINUE ]
                            [ metachop::LABEL
                                [ META "for_continue"]
                                [ metachop::EXP_LIST
                                    [ metachop::REF
                                        [ META "iterator"]
                                        [ metachop::IDENT "Current"]
                                    ]
                                    [ metachop::IDENT "_for_elem"]
                                ]
                            ]
                            [ metachop::EXP_LIST
                                [ metachop::REF
                                    [ META "iterator"]
                                    [ metachop::IDENT "SkipSon"]
                                ]
                                [ metachop::INTEGER "1"]
                            ]
                            [ metachop::CONTINUE ]
                            [ metachop::LABEL
                                [ META "for_break"]
                                [ metachop::BREAK ]
                            ]
                        ]
                    ]
                ]
            ]
           ]
#line 366 "../metachop/auxunpar.ch"
        */
#line 366 "../metachop/auxunpar.ch"
        TheConstructor(-4,-2,MakeString("ItPtree"),metachop::IDENT,1,metachop::TIDENT,1,
#line 366 "../metachop/auxunpar.ch"
            -2,MakeString("iterator"),META,1,-2,MakeString("stated"),META,1,metachop::TIDENT,1,-4,metachop::ABST_DECLARATOR,2,
#line 366 "../metachop/auxunpar.ch"
            -2,MakeString("searched"),META,1,metachop::TIDENT,1,-4,metachop::ABST_DECLARATOR,2,-4,LIST,2,LIST,2,-4,metachop::TYP_LIST,3,-4,LIST,2,metachop::DECLARATION,3,-4,-2,MakeString("PPTREE"),metachop::IDENT,1,metachop::TIDENT,1,-2,MakeString("_for_elem"),metachop::IDENT,1,-4,LIST,2,metachop::DECLARATION,3,
#line 366 "../metachop/auxunpar.ch"
            -2,MakeString("iterator"),META,1,-2,MakeString("AllSearch"),metachop::IDENT,1,metachop::REF,2,-2,MakeString("1"),metachop::INTEGER,1,metachop::EXP_LIST,2,
#line 366 "../metachop/auxunpar.ch"
            -2,MakeString("_for_elem"),metachop::IDENT,1,-2,MakeString("iterator"),META,1,metachop::AINCR,1,metachop::AFF,2,-2,MakeString("treatment"),META,1,
#line 366 "../metachop/auxunpar.ch"
            -3);
#line 366 "../metachop/auxunpar.ch"
        TheConstructor(-2,MakeString("iterator"),META,1,-2,MakeString("Current"),metachop::IDENT,1,metachop::REF,2,-2,MakeString("_for_elem"),metachop::IDENT,1,metachop::EXP_LIST,2,
#line 366 "../metachop/auxunpar.ch"
            metachop::CONTINUE,0,-2,MakeString("for_continue"),META,1,-2,MakeString("iterator"),META,1,
#line 366 "../metachop/auxunpar.ch"
            -2,MakeString("Current"),metachop::IDENT,1,metachop::REF,2,-2,MakeString("_for_elem"),metachop::IDENT,1,metachop::EXP_LIST,2,metachop::LABEL,2,-2,MakeString("iterator"),META,1,-2,MakeString("SkipSon"),metachop::IDENT,1,metachop::REF,2,
#line 366 "../metachop/auxunpar.ch"
            -2,MakeString("1"),metachop::INTEGER,1,metachop::EXP_LIST,2,metachop::CONTINUE,0,-2,MakeString("for_break"),META,1,metachop::BREAK,0,metachop::LABEL,2,-4,LIST,2,LIST,2,LIST,2,LIST,2,LIST,2,LIST,2,LIST,2,metachop::COMPOUND,1,metachop::WHILE,2,-4,LIST,2,LIST,2,LIST,2,LIST,2,metachop::COMPOUND,1,-3) ;
#line 366 "../metachop/auxunpar.ch"
        statement = PopTree ;
#line 366 "../metachop/auxunpar.ch"
        {
#line 366 "../metachop/auxunpar.ch"
            register PPTREE _inter ;
#line 366 "../metachop/auxunpar.ch"
#line 366 "../metachop/auxunpar.ch"
#line 1 "../metachop/auxunpar.ch"
            metarep("iterator", statement, iterator);
#line 1 "../metachop/auxunpar.ch"
#line 1 "../metachop/auxunpar.ch"
            metarep("stated", statement, stated);
#line 1 "../metachop/auxunpar.ch"
#line 1 "../metachop/auxunpar.ch"
            metarep("searched", statement, searched);
#line 1 "../metachop/auxunpar.ch"
#line 1 "../metachop/auxunpar.ch"
            metarep("treatment", statement, treatment);
#line 1 "../metachop/auxunpar.ch"
#line 1 "../metachop/auxunpar.ch"
        }
#line 1 "../metachop/auxunpar.ch"
    }
#line 1 "../metachop/auxunpar.ch"
#line 1 "../metachop/auxunpar.ch"
#line 386 "../metachop/auxunpar.ch"
    {
#line 386 "../metachop/auxunpar.ch"
        /* [ metachop::GOTO [ metachop::IDENT "for_break"]]
#line 386 "../metachop/auxunpar.ch"
        */
#line 386 "../metachop/auxunpar.ch"
        TheConstructor(-2,MakeString("for_break"),metachop::IDENT,1,metachop::GOTO,1,-3) ;
#line 386 "../metachop/auxunpar.ch"
        inter1 = PopTree ;
#line 386 "../metachop/auxunpar.ch"
        }
#line 386 "../metachop/auxunpar.ch"
#line 386 "../metachop/auxunpar.ch"
#line 387 "../metachop/auxunpar.ch"
    {
#line 387 "../metachop/auxunpar.ch"
        /* [ metachop::GOTO [ metachop::IDENT "for_continue"]]
#line 387 "../metachop/auxunpar.ch"
        */
#line 387 "../metachop/auxunpar.ch"
        TheConstructor(-2,MakeString("for_continue"),metachop::IDENT,1,metachop::GOTO,1,-3) ;
#line 387 "../metachop/auxunpar.ch"
        inter2 = PopTree ;
#line 387 "../metachop/auxunpar.ch"
        }
#line 387 "../metachop/auxunpar.ch"
#line 387 "../metachop/auxunpar.ch"
#line 389 "../metachop/auxunpar.ch"
    {
#line 389 "../metachop/auxunpar.ch"
#line 389 "../metachop/auxunpar.ch"
        ItPtree it (statement) ;
#line 389 "../metachop/auxunpar.ch"
#line 390 "../metachop/auxunpar.ch"
        PPTREE  _for_elem ;
#line 390 "../metachop/auxunpar.ch"
#line 391 "../metachop/auxunpar.ch"
        while ( for_elem = it++ ) {
#line 391 "../metachop/auxunpar.ch"
#line 392 "../metachop/auxunpar.ch"
                                        if ( qcomparetree(for_elem, inter1) ) {
#line 392 "../metachop/auxunpar.ch"
#line 392 "../metachop/auxunpar.ch"
PTREE   _Baum1 ;
#line 392 "../metachop/auxunpar.ch"
#line 392 "../metachop/auxunpar.ch"
#line 392 "../metachop/auxunpar.ch"
PTREE   _Baum0 ;
#line 392 "../metachop/auxunpar.ch"
#line 392 "../metachop/auxunpar.ch"
#line 393 "../metachop/auxunpar.ch"
sprintf(new_ident, "for_break%d", level);
#line 393 "../metachop/auxunpar.ch"
#line 394 "../metachop/auxunpar.ch"
{
#line 394 "../metachop/auxunpar.ch"
    PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 394 "../metachop/auxunpar.ch"
    _ptRes0 = MakeTree(metachop::IDENT, 1);
#line 394 "../metachop/auxunpar.ch"
    _ptTree0 = MakeString("for_break") ;
#line 394 "../metachop/auxunpar.ch"
    ReplaceTree(_ptRes0, 1, _ptTree0);
#line 394 "../metachop/auxunpar.ch"
    _Baum0 = _ptRes0;
#line 394 "../metachop/auxunpar.ch"
}
#line 394 "../metachop/auxunpar.ch"
#line 394 "../metachop/auxunpar.ch"
#line 395 "../metachop/auxunpar.ch"
{
#line 395 "../metachop/auxunpar.ch"
    PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 395 "../metachop/auxunpar.ch"
    _ptRes0 = MakeTree(metachop::IDENT, 1);
#line 395 "../metachop/auxunpar.ch"
    _ptTree0 = StoreRef(MakeString(new_ident));
#line 395 "../metachop/auxunpar.ch"
    ReplaceTree(_ptRes0, 1, _ptTree0);
#line 395 "../metachop/auxunpar.ch"
    _Baum1 = _ptRes0;
#line 395 "../metachop/auxunpar.ch"
}
#line 395 "../metachop/auxunpar.ch"
#line 395 "../metachop/auxunpar.ch"
#line 394 "../metachop/auxunpar.ch"
replace(_Baum0, for_elem, _Baum1);
#line 394 "../metachop/auxunpar.ch"
#line 394 "../metachop/auxunpar.ch"
                                                                                 } else 
#line 396 "../metachop/auxunpar.ch"
                                        if ( qcomparetree(for_elem, inter2) ) {
#line 396 "../metachop/auxunpar.ch"
#line 396 "../metachop/auxunpar.ch"
PTREE   _Baum3 ;
#line 396 "../metachop/auxunpar.ch"
#line 396 "../metachop/auxunpar.ch"
#line 396 "../metachop/auxunpar.ch"
PTREE   _Baum2 ;
#line 396 "../metachop/auxunpar.ch"
#line 396 "../metachop/auxunpar.ch"
#line 397 "../metachop/auxunpar.ch"
sprintf(new_ident, "for_continue%d", level);
#line 397 "../metachop/auxunpar.ch"
#line 398 "../metachop/auxunpar.ch"
{
#line 398 "../metachop/auxunpar.ch"
    PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 398 "../metachop/auxunpar.ch"
    _ptRes0 = MakeTree(metachop::IDENT, 1);
#line 398 "../metachop/auxunpar.ch"
    _ptTree0 = MakeString("for_continue") ;
#line 398 "../metachop/auxunpar.ch"
    ReplaceTree(_ptRes0, 1, _ptTree0);
#line 398 "../metachop/auxunpar.ch"
    _Baum2 = _ptRes0;
#line 398 "../metachop/auxunpar.ch"
}
#line 398 "../metachop/auxunpar.ch"
#line 398 "../metachop/auxunpar.ch"
#line 399 "../metachop/auxunpar.ch"
{
#line 399 "../metachop/auxunpar.ch"
    PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 399 "../metachop/auxunpar.ch"
    _ptRes0 = MakeTree(metachop::IDENT, 1);
#line 399 "../metachop/auxunpar.ch"
    _ptTree0 = StoreRef(MakeString(new_ident));
#line 399 "../metachop/auxunpar.ch"
    ReplaceTree(_ptRes0, 1, _ptTree0);
#line 399 "../metachop/auxunpar.ch"
    _Baum3 = _ptRes0;
#line 399 "../metachop/auxunpar.ch"
}
#line 399 "../metachop/auxunpar.ch"
#line 399 "../metachop/auxunpar.ch"
#line 398 "../metachop/auxunpar.ch"
replace(_Baum2, for_elem, _Baum3);
#line 398 "../metachop/auxunpar.ch"
#line 398 "../metachop/auxunpar.ch"
                                                                                 } else 
#line 400 "../metachop/auxunpar.ch"
                                        if ( ((_inter = (PPTREE)for_elem,1) && 
#line 400 "../metachop/auxunpar.ch"
                                                (NumberTree(_inter) == metachop::FOREACH) &&
#line 400 "../metachop/auxunpar.ch"
                                                1) ) {
#line 400 "../metachop/auxunpar.ch"
#line 401 "../metachop/auxunpar.ch"
                                                        it.SkipSon(1);
#line 401 "../metachop/auxunpar.ch"
#line 402 "../metachop/auxunpar.ch"
                                                        continue ;
#line 402 "../metachop/auxunpar.ch"
#line 402 "../metachop/auxunpar.ch"
                                                     }
#line 402 "../metachop/auxunpar.ch"
#line 402 "../metachop/auxunpar.ch"
                                    }
#line 402 "../metachop/auxunpar.ch"
#line 404 "../metachop/auxunpar.ch"
    }
#line 404 "../metachop/auxunpar.ch"
#line 405 "../metachop/auxunpar.ch"
    sprintf(new_ident, "for_break%d", level);
#line 405 "../metachop/auxunpar.ch"
#line 406 "../metachop/auxunpar.ch"
    {
#line 406 "../metachop/auxunpar.ch"
        PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 406 "../metachop/auxunpar.ch"
        _ptRes0 = MakeTree(metachop::IDENT, 1);
#line 406 "../metachop/auxunpar.ch"
        _ptTree0 = StoreRef(MakeString(new_ident));
#line 406 "../metachop/auxunpar.ch"
        ReplaceTree(_ptRes0, 1, _ptTree0);
#line 406 "../metachop/auxunpar.ch"
        _Baum4 = _ptRes0;
#line 406 "../metachop/auxunpar.ch"
    }
#line 406 "../metachop/auxunpar.ch"
#line 406 "../metachop/auxunpar.ch"
#line 406 "../metachop/auxunpar.ch"
    metarep("for_break", statement, _Baum4);
#line 406 "../metachop/auxunpar.ch"
#line 407 "../metachop/auxunpar.ch"
    sprintf(new_ident, "for_continue%d", level);
#line 407 "../metachop/auxunpar.ch"
#line 408 "../metachop/auxunpar.ch"
    {
#line 408 "../metachop/auxunpar.ch"
        PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 408 "../metachop/auxunpar.ch"
        _ptRes0 = MakeTree(metachop::IDENT, 1);
#line 408 "../metachop/auxunpar.ch"
        _ptTree0 = StoreRef(MakeString(new_ident));
#line 408 "../metachop/auxunpar.ch"
        ReplaceTree(_ptRes0, 1, _ptTree0);
#line 408 "../metachop/auxunpar.ch"
        _Baum5 = _ptRes0;
#line 408 "../metachop/auxunpar.ch"
    }
#line 408 "../metachop/auxunpar.ch"
#line 408 "../metachop/auxunpar.ch"
#line 408 "../metachop/auxunpar.ch"
    metarep("for_continue", statement, _Baum5);
#line 408 "../metachop/auxunpar.ch"
#line 409 "../metachop/auxunpar.ch"
    {
#line 409 "../metachop/auxunpar.ch"
        PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 409 "../metachop/auxunpar.ch"
        if (_ptTree0= fathertree(paramTree)) {
#line 409 "../metachop/auxunpar.ch"
            int rank = ranktree(paramTree);
#line 409 "../metachop/auxunpar.ch"
            ReplaceTree(_ptTree0,rank,statement);
#line 409 "../metachop/auxunpar.ch"
        }
#line 409 "../metachop/auxunpar.ch"
    }
#line 409 "../metachop/auxunpar.ch"
#line 409 "../metachop/auxunpar.ch"
#line 410 "../metachop/auxunpar.ch"
}
#line 410 "../metachop/auxunpar.ch"

#line 414 "../metachop/auxunpar.ch"
#line 414 "../metachop/auxunpar.ch"
void DumpFunction ()
#line 414 "../metachop/auxunpar.ch"
{
#line 414 "../metachop/auxunpar.ch"
#line 417 "../metachop/auxunpar.ch"
    char    *name ;
#line 417 "../metachop/auxunpar.ch"
#line 418 "../metachop/auxunpar.ch"
    PTREE   tree1 ;
#line 418 "../metachop/auxunpar.ch"
#line 418 "../metachop/auxunpar.ch"
#line 419 "../metachop/auxunpar.ch"
    PTREE   tree ;
#line 419 "../metachop/auxunpar.ch"
#line 419 "../metachop/auxunpar.ch"
#line 421 "../metachop/auxunpar.ch"
    while ( listFunc ) {
#line 421 "../metachop/auxunpar.ch"
#line 422 "../metachop/auxunpar.ch"
                            name = listFunc -> name ;
#line 422 "../metachop/auxunpar.ch"
#line 423 "../metachop/auxunpar.ch"
                            (tree=listFunc -> tree);
#line 423 "../metachop/auxunpar.ch"
#line 423 "../metachop/auxunpar.ch"
#line 424 "../metachop/auxunpar.ch"
                            FreeHeadFunc();
#line 424 "../metachop/auxunpar.ch"
#line 425 "../metachop/auxunpar.ch"
                            (tree1=tree);
#line 425 "../metachop/auxunpar.ch"
#line 425 "../metachop/auxunpar.ch"
#line 426 "../metachop/auxunpar.ch"
                            DumpAFunction(name, tree);
#line 426 "../metachop/auxunpar.ch"
#line 426 "../metachop/auxunpar.ch"
                        }
#line 426 "../metachop/auxunpar.ch"
#line 428 "../metachop/auxunpar.ch"
}
#line 428 "../metachop/auxunpar.ch"
/*Well done my boy */ 
#line 428 "../metachop/auxunpar.ch"

