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

#include "deccplus.h"
#include "memges.h"

#line 34 "dchop0.ch"
#line 34 "dchop0.ch"
void DecompCplus::lstat_dec ( PTREE paramTree )
#line 34 "dchop0.ch"
{
#line 34 "dchop0.ch"
#line 36 "dchop0.ch"
    PTREE   son ;
#line 36 "dchop0.ch"
#line 36 "dchop0.ch"
#line 37 "dchop0.ch"
    PTREE   oldPostComment = (PTREE)0 ;
#line 37 "dchop0.ch"
#line 37 "dchop0.ch"
#line 37 "dchop0.ch"
    (oldPostComment=postComment);
#line 37 "dchop0.ch"
#line 37 "dchop0.ch"
#line 39 "dchop0.ch"
    while ( !((!paramTree)) ) {
#line 39 "dchop0.ch"
#line 40 "dchop0.ch"
                                    (son=(paramTree?paramTree.Nextl():(PPTREE)0));
#line 40 "dchop0.ch"
#line 40 "dchop0.ch"
#line 41 "dchop0.ch"
                                    (postComment=son);
#line 41 "dchop0.ch"
#line 41 "dchop0.ch"
#line 42 "dchop0.ch"
                                    decomp(son);
#line 42 "dchop0.ch"
#line 42 "dchop0.ch"
#line 43 "dchop0.ch"
                                    if ( !Sequence(son, son) ) {
#line 43 "dchop0.ch"
#line 44 "dchop0.ch"
                                                                    control_stat1(son);
#line 44 "dchop0.ch"
#line 45 "dchop0.ch"
                                                                    LNewLine(1);
#line 45 "dchop0.ch"
#line 45 "dchop0.ch"
#line 45 "dchop0.ch"
                                                                   }
#line 45 "dchop0.ch"
#line 45 "dchop0.ch"
                                }
#line 45 "dchop0.ch"
#line 48 "dchop0.ch"
    (postComment=oldPostComment);
#line 48 "dchop0.ch"
#line 48 "dchop0.ch"
#line 49 "dchop0.ch"
}
#line 49 "dchop0.ch"

#line 51 "dchop0.ch"
#line 51 "dchop0.ch"
void DecompCplus::follow_if_dir ( PTREE paramTree, PTREE reference )
#line 51 "dchop0.ch"
{
#line 51 "dchop0.ch"
    register PPTREE _inter ;
#line 51 "dchop0.ch"
#line 51 "dchop0.ch"
#line 53 "dchop0.ch"
    PTREE   stat1, stat2, son, my_exp ;
#line 53 "dchop0.ch"
#line 53 "dchop0.ch"
#line 54 "dchop0.ch"
    PTREE   oldPostComment = (PTREE)0 ;
#line 54 "dchop0.ch"
#line 54 "dchop0.ch"
#line 54 "dchop0.ch"
    (oldPostComment=postComment);
#line 54 "dchop0.ch"
#line 54 "dchop0.ch"
#line 56 "dchop0.ch"
    if ( (!paramTree) ) {
#line 56 "dchop0.ch"
#line 57 "dchop0.ch"
                            gotocol(0);
#line 57 "dchop0.ch"
#line 58 "dchop0.ch"
                            PrintString("#endif");
#line 58 "dchop0.ch"
#line 59 "dchop0.ch"
                            if ( !LastInTopList(reference) ) 
#line 59 "dchop0.ch"
#line 60 "dchop0.ch"
                                LNewLine(1);
#line 60 "dchop0.ch"
#line 60 "dchop0.ch"
#line 60 "dchop0.ch"
                          } else 
#line 61 "dchop0.ch"
    if ( ((_inter = (PPTREE)paramTree,1) && 
#line 61 "dchop0.ch"
            (NumberTree(_inter) == cplus::IF_DIR) &&
#line 61 "dchop0.ch"
            ((my_exp=SonTree(_inter,1)),1) &&
#line 61 "dchop0.ch"
            ((stat1=SonTree(_inter,2)),1) &&
#line 61 "dchop0.ch"
            ((stat2=SonTree(_inter,3)),1) &&
#line 61 "dchop0.ch"
            1) ) {
#line 61 "dchop0.ch"
#line 62 "dchop0.ch"
                    gotocol(0);
#line 62 "dchop0.ch"
#line 63 "dchop0.ch"
                    PrintString("#elif ");
#line 63 "dchop0.ch"
#line 63 "dchop0.ch"
                    decomp(my_exp);
#line 63 "dchop0.ch"
#line 63 "dchop0.ch"
#line 63 "dchop0.ch"
                    LNewLine(1);
#line 63 "dchop0.ch"
#line 63 "dchop0.ch"
#line 64 "dchop0.ch"
                    while ( !((!stat1)) ) {
#line 64 "dchop0.ch"
#line 65 "dchop0.ch"
                                                (son=(stat1?stat1.Nextl():(PPTREE)0));
#line 65 "dchop0.ch"
#line 65 "dchop0.ch"
#line 66 "dchop0.ch"
                                                (postComment=son);
#line 66 "dchop0.ch"
#line 66 "dchop0.ch"
#line 67 "dchop0.ch"
                                                decomp(son);
#line 67 "dchop0.ch"
#line 67 "dchop0.ch"
#line 68 "dchop0.ch"
                                                if ( !Sequence(son, son) ) {
#line 68 "dchop0.ch"
#line 69 "dchop0.ch"
control_stat1(son);
#line 69 "dchop0.ch"
#line 70 "dchop0.ch"
LNewLine(1);
#line 70 "dchop0.ch"
#line 70 "dchop0.ch"
#line 70 "dchop0.ch"
                                                                               }
#line 70 "dchop0.ch"
#line 70 "dchop0.ch"
                                            }
#line 70 "dchop0.ch"
#line 73 "dchop0.ch"
                    follow_if_dir(stat2, reference);
#line 73 "dchop0.ch"
#line 73 "dchop0.ch"
                 } else 
#line 74 "dchop0.ch"
    {
#line 74 "dchop0.ch"
#line 75 "dchop0.ch"
        gotocol(0);
#line 75 "dchop0.ch"
#line 76 "dchop0.ch"
        PrintString("#else ");
#line 76 "dchop0.ch"
#line 76 "dchop0.ch"
        LNewLine(1);
#line 76 "dchop0.ch"
#line 76 "dchop0.ch"
#line 77 "dchop0.ch"
        while ( !((!paramTree)) ) {
#line 77 "dchop0.ch"
#line 78 "dchop0.ch"
                                        (son=(paramTree?paramTree.Nextl():(PPTREE)0));
#line 78 "dchop0.ch"
#line 78 "dchop0.ch"
#line 79 "dchop0.ch"
                                        (postComment=son);
#line 79 "dchop0.ch"
#line 79 "dchop0.ch"
#line 80 "dchop0.ch"
                                        decomp(son);
#line 80 "dchop0.ch"
#line 80 "dchop0.ch"
#line 81 "dchop0.ch"
                                        if ( !Sequence(son, son) ) {
#line 81 "dchop0.ch"
#line 82 "dchop0.ch"
                                                                        control_stat1(son);
#line 82 "dchop0.ch"
#line 83 "dchop0.ch"
                                                                        LNewLine(1);
#line 83 "dchop0.ch"
#line 83 "dchop0.ch"
#line 83 "dchop0.ch"
                                                                       }
#line 83 "dchop0.ch"
#line 83 "dchop0.ch"
                                    }
#line 83 "dchop0.ch"
#line 86 "dchop0.ch"
        gotocol(0);
#line 86 "dchop0.ch"
#line 87 "dchop0.ch"
        PrintString("#endif");
#line 87 "dchop0.ch"
#line 88 "dchop0.ch"
        if ( !LastInTopList(reference) ) 
#line 88 "dchop0.ch"
#line 89 "dchop0.ch"
            LNewLine(1);
#line 89 "dchop0.ch"
#line 89 "dchop0.ch"
#line 89 "dchop0.ch"
    }
#line 89 "dchop0.ch"
#line 91 "dchop0.ch"
    (postComment=oldPostComment);
#line 91 "dchop0.ch"
#line 91 "dchop0.ch"
#line 92 "dchop0.ch"
}
#line 92 "dchop0.ch"

#line 94 "dchop0.ch"
#line 94 "dchop0.ch"
int DecompCplus::Sequence ( PTREE tree1, PTREE tree2 )
#line 94 "dchop0.ch"
{
#line 94 "dchop0.ch"
    register PPTREE _inter ;
#line 94 "dchop0.ch"
#line 94 "dchop0.ch"
#line 96 "dchop0.ch"
    ((_inter = (PPTREE)tree1,1) && 
#line 96 "dchop0.ch"
        (NumberTree(_inter) == cplus::ATTRIBUTS) &&
#line 96 "dchop0.ch"
        ((tree1=SonTree(_inter,1)),1) &&
#line 96 "dchop0.ch"
        1);
#line 96 "dchop0.ch"
    ;
#line 96 "dchop0.ch"
#line 97 "dchop0.ch"
    switch ( NumberTree(tree1) ) {
#line 97 "dchop0.ch"
#line 97 "dchop0.ch"
        case cplus::MACRO : 
#line 97 "dchop0.ch"
#line 97 "dchop0.ch"
        _Case0 : 
#line 97 "dchop0.ch"
#line 97 "dchop0.ch"
            ;
#line 97 "dchop0.ch"
#line 97 "dchop0.ch"
            goto _Case1 ;
#line 97 "dchop0.ch"
#line 100 "dchop0.ch"
        case cplus::EXCEPTION : 
#line 100 "dchop0.ch"
#line 100 "dchop0.ch"
        _Case1 : 
#line 100 "dchop0.ch"
#line 100 "dchop0.ch"
            ;
#line 100 "dchop0.ch"
#line 100 "dchop0.ch"
            return 1 ;
#line 100 "dchop0.ch"
#line 101 "dchop0.ch"
            break ;
#line 101 "dchop0.ch"
#line 102 "dchop0.ch"
        default : 
#line 102 "dchop0.ch"
#line 102 "dchop0.ch"
        _Case2 : 
#line 102 "dchop0.ch"
#line 102 "dchop0.ch"
            ;
#line 102 "dchop0.ch"
#line 102 "dchop0.ch"
            return 0 ;
#line 102 "dchop0.ch"
    }
#line 102 "dchop0.ch"
#line 102 "dchop0.ch"
#line 104 "dchop0.ch"
}
#line 104 "dchop0.ch"

#line 106 "dchop0.ch"
#line 106 "dchop0.ch"
void DecompCplus::control_stat1 ( PTREE paramTree )
#line 106 "dchop0.ch"
{
#line 106 "dchop0.ch"
    register PPTREE _inter ;
#line 106 "dchop0.ch"
#line 106 "dchop0.ch"
#line 108 "dchop0.ch"
    PTREE   exp1 ;
#line 108 "dchop0.ch"
#line 108 "dchop0.ch"
#line 110 "dchop0.ch"
    switch ( NumberTree(paramTree) ) {
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
        case cplus::IF : 
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
        _Case3 : 
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
            ;
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
            goto _Case4 ;
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
        case cplus::WHILE : 
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
        _Case4 : 
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
            ;
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
            goto _Case5 ;
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
        case cplus::EXCEPTION_ANSI : 
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
        _Case5 : 
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
            ;
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
            goto _Case6 ;
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
        case cplus::CATCH_ANSI : 
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
        _Case6 : 
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
            ;
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
            goto _Case7 ;
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
        case cplus::FOR : 
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
        _Case7 : 
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
            ;
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
            goto _Case8 ;
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
        case cplus::DO : 
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
        _Case8 : 
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
            ;
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
            goto _Case9 ;
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
        case cplus::SWITCH : 
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
        _Case9 : 
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
            ;
#line 110 "dchop0.ch"
#line 110 "dchop0.ch"
            goto _Case10 ;
#line 110 "dchop0.ch"
#line 119 "dchop0.ch"
        case cplus::LABEL : 
#line 119 "dchop0.ch"
#line 119 "dchop0.ch"
        _Case10 : 
#line 119 "dchop0.ch"
#line 119 "dchop0.ch"
            ;
#line 119 "dchop0.ch"
#line 119 "dchop0.ch"
            comm(paramTree, POST);
#line 119 "dchop0.ch"
#line 120 "dchop0.ch"
            return ;
#line 120 "dchop0.ch"
#line 120 "dchop0.ch"
            goto _Case11 ;
#line 120 "dchop0.ch"
#line 121 "dchop0.ch"
        case cplus::BREAK : 
#line 121 "dchop0.ch"
#line 121 "dchop0.ch"
        _Case11 : 
#line 121 "dchop0.ch"
#line 121 "dchop0.ch"
            ;
#line 121 "dchop0.ch"
#line 121 "dchop0.ch"
            return ;
#line 121 "dchop0.ch"
#line 121 "dchop0.ch"
            goto _Case12 ;
#line 121 "dchop0.ch"
#line 122 "dchop0.ch"
        case cplus::CONTINUE : 
#line 122 "dchop0.ch"
#line 122 "dchop0.ch"
        _Case12 : 
#line 122 "dchop0.ch"
#line 122 "dchop0.ch"
            ;
#line 122 "dchop0.ch"
#line 122 "dchop0.ch"
            return ;
#line 122 "dchop0.ch"
#line 122 "dchop0.ch"
            goto _Case13 ;
#line 122 "dchop0.ch"
#line 122 "dchop0.ch"
        case cplus::FUNC : 
#line 122 "dchop0.ch"
#line 122 "dchop0.ch"
        _Case13 : 
#line 122 "dchop0.ch"
#line 122 "dchop0.ch"
            ;
#line 122 "dchop0.ch"
#line 122 "dchop0.ch"
            goto _Case14 ;
#line 122 "dchop0.ch"
#line 125 "dchop0.ch"
        case cplus::COMPOUND : 
#line 125 "dchop0.ch"
#line 125 "dchop0.ch"
        _Case14 : 
#line 125 "dchop0.ch"
#line 125 "dchop0.ch"
            ;
#line 125 "dchop0.ch"
#line 125 "dchop0.ch"
            comm(paramTree, POST);
#line 125 "dchop0.ch"
#line 126 "dchop0.ch"
            LNewLine(1);
#line 126 "dchop0.ch"
#line 126 "dchop0.ch"
#line 127 "dchop0.ch"
            return ;
#line 127 "dchop0.ch"
#line 127 "dchop0.ch"
            goto _Case15 ;
#line 127 "dchop0.ch"
#line 128 "dchop0.ch"
        case cplus::GOTO : 
#line 128 "dchop0.ch"
#line 128 "dchop0.ch"
        _Case15 : 
#line 128 "dchop0.ch"
#line 128 "dchop0.ch"
            ;
#line 128 "dchop0.ch"
#line 128 "dchop0.ch"
            return ;
#line 128 "dchop0.ch"
#line 128 "dchop0.ch"
            goto _Case16 ;
#line 128 "dchop0.ch"
#line 133 "dchop0.ch"
        case cplus::STAT_VOID : 
#line 133 "dchop0.ch"
#line 133 "dchop0.ch"
        _Case16 : 
#line 133 "dchop0.ch"
#line 133 "dchop0.ch"
            ;
#line 133 "dchop0.ch"
#line 133 "dchop0.ch"
            return ;
#line 133 "dchop0.ch"
#line 133 "dchop0.ch"
            goto _Case17 ;
#line 133 "dchop0.ch"
#line 134 "dchop0.ch"
        case cplus::RETURN : 
#line 134 "dchop0.ch"
#line 134 "dchop0.ch"
        _Case17 : 
#line 134 "dchop0.ch"
#line 134 "dchop0.ch"
            ;
#line 134 "dchop0.ch"
#line 134 "dchop0.ch"
            return ;
#line 134 "dchop0.ch"
#line 134 "dchop0.ch"
            goto _Case18 ;
#line 134 "dchop0.ch"
#line 135 "dchop0.ch"
        case cplus::THROW_ANSI : 
#line 135 "dchop0.ch"
#line 135 "dchop0.ch"
        _Case18 : 
#line 135 "dchop0.ch"
#line 135 "dchop0.ch"
            ;
#line 135 "dchop0.ch"
#line 135 "dchop0.ch"
            return ;
#line 135 "dchop0.ch"
#line 135 "dchop0.ch"
            goto _Case19 ;
#line 135 "dchop0.ch"
#line 136 "dchop0.ch"
        case cplus::DECLARATION : 
#line 136 "dchop0.ch"
#line 136 "dchop0.ch"
        _Case19 : 
#line 136 "dchop0.ch"
#line 136 "dchop0.ch"
            ;
#line 136 "dchop0.ch"
#line 136 "dchop0.ch"
            return ;
#line 136 "dchop0.ch"
#line 136 "dchop0.ch"
            goto _Case20 ;
#line 136 "dchop0.ch"
#line 137 "dchop0.ch"
        case cplus::EXTERNAL : 
#line 137 "dchop0.ch"
#line 137 "dchop0.ch"
        _Case20 : 
#line 137 "dchop0.ch"
#line 137 "dchop0.ch"
            ;
#line 137 "dchop0.ch"
#line 137 "dchop0.ch"
            return ;
#line 137 "dchop0.ch"
#line 137 "dchop0.ch"
            goto _Case21 ;
#line 137 "dchop0.ch"
#line 138 "dchop0.ch"
        case cplus::INCLUDE_DIR : 
#line 138 "dchop0.ch"
#line 138 "dchop0.ch"
        _Case21 : 
#line 138 "dchop0.ch"
#line 138 "dchop0.ch"
            ;
#line 138 "dchop0.ch"
#line 138 "dchop0.ch"
            return ;
#line 138 "dchop0.ch"
#line 138 "dchop0.ch"
            goto _Case22 ;
#line 138 "dchop0.ch"
#line 139 "dchop0.ch"
        case cplus::ERROR : 
#line 139 "dchop0.ch"
#line 139 "dchop0.ch"
        _Case22 : 
#line 139 "dchop0.ch"
#line 139 "dchop0.ch"
            ;
#line 139 "dchop0.ch"
#line 139 "dchop0.ch"
            return ;
#line 139 "dchop0.ch"
#line 139 "dchop0.ch"
            goto _Case23 ;
#line 139 "dchop0.ch"
#line 140 "dchop0.ch"
        case cplus::PRAGMA : 
#line 140 "dchop0.ch"
#line 140 "dchop0.ch"
        _Case23 : 
#line 140 "dchop0.ch"
#line 140 "dchop0.ch"
            ;
#line 140 "dchop0.ch"
#line 140 "dchop0.ch"
            return ;
#line 140 "dchop0.ch"
#line 140 "dchop0.ch"
            goto _Case24 ;
#line 140 "dchop0.ch"
#line 141 "dchop0.ch"
        case cplus::UNDEF : 
#line 141 "dchop0.ch"
#line 141 "dchop0.ch"
        _Case24 : 
#line 141 "dchop0.ch"
#line 141 "dchop0.ch"
            ;
#line 141 "dchop0.ch"
#line 141 "dchop0.ch"
            return ;
#line 141 "dchop0.ch"
#line 141 "dchop0.ch"
            goto _Case25 ;
#line 141 "dchop0.ch"
#line 142 "dchop0.ch"
        case cplus::IF_DIR : 
#line 142 "dchop0.ch"
#line 142 "dchop0.ch"
        _Case25 : 
#line 142 "dchop0.ch"
#line 142 "dchop0.ch"
            ;
#line 142 "dchop0.ch"
#line 142 "dchop0.ch"
            return ;
#line 142 "dchop0.ch"
#line 142 "dchop0.ch"
            goto _Case26 ;
#line 142 "dchop0.ch"
#line 143 "dchop0.ch"
        case cplus::IFDEF_DIR : 
#line 143 "dchop0.ch"
#line 143 "dchop0.ch"
        _Case26 : 
#line 143 "dchop0.ch"
#line 143 "dchop0.ch"
            ;
#line 143 "dchop0.ch"
#line 143 "dchop0.ch"
            return ;
#line 143 "dchop0.ch"
#line 143 "dchop0.ch"
            goto _Case27 ;
#line 143 "dchop0.ch"
#line 144 "dchop0.ch"
        case cplus::IFNDEF_DIR : 
#line 144 "dchop0.ch"
#line 144 "dchop0.ch"
        _Case27 : 
#line 144 "dchop0.ch"
#line 144 "dchop0.ch"
            ;
#line 144 "dchop0.ch"
#line 144 "dchop0.ch"
            return ;
#line 144 "dchop0.ch"
#line 144 "dchop0.ch"
            goto _Case28 ;
#line 144 "dchop0.ch"
#line 145 "dchop0.ch"
        case cplus::NO_PRETTY : 
#line 145 "dchop0.ch"
#line 145 "dchop0.ch"
        _Case28 : 
#line 145 "dchop0.ch"
#line 145 "dchop0.ch"
            ;
#line 145 "dchop0.ch"
#line 145 "dchop0.ch"
            return ;
#line 145 "dchop0.ch"
#line 145 "dchop0.ch"
            goto _Case29 ;
#line 145 "dchop0.ch"
#line 146 "dchop0.ch"
        case cplus::DEFINE_DIR : 
#line 146 "dchop0.ch"
#line 146 "dchop0.ch"
        _Case29 : 
#line 146 "dchop0.ch"
#line 146 "dchop0.ch"
            ;
#line 146 "dchop0.ch"
#line 146 "dchop0.ch"
            return ;
#line 146 "dchop0.ch"
#line 146 "dchop0.ch"
            goto _Case30 ;
#line 146 "dchop0.ch"
#line 147 "dchop0.ch"
        case cplus::TYPEDEF : 
#line 147 "dchop0.ch"
#line 147 "dchop0.ch"
        _Case30 : 
#line 147 "dchop0.ch"
#line 147 "dchop0.ch"
            ;
#line 147 "dchop0.ch"
#line 147 "dchop0.ch"
            return ;
#line 147 "dchop0.ch"
#line 147 "dchop0.ch"
            goto _Case31 ;
#line 147 "dchop0.ch"
#line 148 "dchop0.ch"
        case cplus::AFF : 
#line 148 "dchop0.ch"
#line 148 "dchop0.ch"
        _Case31 : 
#line 148 "dchop0.ch"
#line 148 "dchop0.ch"
            ;
#line 148 "dchop0.ch"
#line 148 "dchop0.ch"
            goto terminal ;
#line 148 "dchop0.ch"
#line 148 "dchop0.ch"
            goto _Case32 ;
#line 148 "dchop0.ch"
#line 149 "dchop0.ch"
        case cplus::MUL_AFF : 
#line 149 "dchop0.ch"
#line 149 "dchop0.ch"
        _Case32 : 
#line 149 "dchop0.ch"
#line 149 "dchop0.ch"
            ;
#line 149 "dchop0.ch"
#line 149 "dchop0.ch"
            goto terminal ;
#line 149 "dchop0.ch"
#line 149 "dchop0.ch"
            goto _Case33 ;
#line 149 "dchop0.ch"
#line 150 "dchop0.ch"
        case cplus::DIV_AFF : 
#line 150 "dchop0.ch"
#line 150 "dchop0.ch"
        _Case33 : 
#line 150 "dchop0.ch"
#line 150 "dchop0.ch"
            ;
#line 150 "dchop0.ch"
#line 150 "dchop0.ch"
            goto terminal ;
#line 150 "dchop0.ch"
#line 150 "dchop0.ch"
            goto _Case34 ;
#line 150 "dchop0.ch"
#line 151 "dchop0.ch"
        case cplus::REM_AFF : 
#line 151 "dchop0.ch"
#line 151 "dchop0.ch"
        _Case34 : 
#line 151 "dchop0.ch"
#line 151 "dchop0.ch"
            ;
#line 151 "dchop0.ch"
#line 151 "dchop0.ch"
            goto terminal ;
#line 151 "dchop0.ch"
#line 151 "dchop0.ch"
            goto _Case35 ;
#line 151 "dchop0.ch"
#line 152 "dchop0.ch"
        case cplus::PLU_AFF : 
#line 152 "dchop0.ch"
#line 152 "dchop0.ch"
        _Case35 : 
#line 152 "dchop0.ch"
#line 152 "dchop0.ch"
            ;
#line 152 "dchop0.ch"
#line 152 "dchop0.ch"
            goto terminal ;
#line 152 "dchop0.ch"
#line 152 "dchop0.ch"
            goto _Case36 ;
#line 152 "dchop0.ch"
#line 153 "dchop0.ch"
        case cplus::MIN_AFF : 
#line 153 "dchop0.ch"
#line 153 "dchop0.ch"
        _Case36 : 
#line 153 "dchop0.ch"
#line 153 "dchop0.ch"
            ;
#line 153 "dchop0.ch"
#line 153 "dchop0.ch"
            goto terminal ;
#line 153 "dchop0.ch"
#line 153 "dchop0.ch"
            goto _Case37 ;
#line 153 "dchop0.ch"
#line 154 "dchop0.ch"
        case cplus::LSH_AFF : 
#line 154 "dchop0.ch"
#line 154 "dchop0.ch"
        _Case37 : 
#line 154 "dchop0.ch"
#line 154 "dchop0.ch"
            ;
#line 154 "dchop0.ch"
#line 154 "dchop0.ch"
            goto terminal ;
#line 154 "dchop0.ch"
#line 154 "dchop0.ch"
            goto _Case38 ;
#line 154 "dchop0.ch"
#line 155 "dchop0.ch"
        case cplus::RSH_AFF : 
#line 155 "dchop0.ch"
#line 155 "dchop0.ch"
        _Case38 : 
#line 155 "dchop0.ch"
#line 155 "dchop0.ch"
            ;
#line 155 "dchop0.ch"
#line 155 "dchop0.ch"
            goto terminal ;
#line 155 "dchop0.ch"
#line 155 "dchop0.ch"
            goto _Case39 ;
#line 155 "dchop0.ch"
#line 156 "dchop0.ch"
        case cplus::AND_AFF : 
#line 156 "dchop0.ch"
#line 156 "dchop0.ch"
        _Case39 : 
#line 156 "dchop0.ch"
#line 156 "dchop0.ch"
            ;
#line 156 "dchop0.ch"
#line 156 "dchop0.ch"
            goto terminal ;
#line 156 "dchop0.ch"
#line 156 "dchop0.ch"
            goto _Case40 ;
#line 156 "dchop0.ch"
#line 157 "dchop0.ch"
        case cplus::OR_AFF : 
#line 157 "dchop0.ch"
#line 157 "dchop0.ch"
        _Case40 : 
#line 157 "dchop0.ch"
#line 157 "dchop0.ch"
            ;
#line 157 "dchop0.ch"
#line 157 "dchop0.ch"
            goto terminal ;
#line 157 "dchop0.ch"
#line 157 "dchop0.ch"
            goto _Case41 ;
#line 157 "dchop0.ch"
#line 158 "dchop0.ch"
        case cplus::XOR_AFF : 
#line 158 "dchop0.ch"
#line 158 "dchop0.ch"
        _Case41 : 
#line 158 "dchop0.ch"
#line 158 "dchop0.ch"
            ;
#line 158 "dchop0.ch"
#line 158 "dchop0.ch"
            goto terminal ;
#line 158 "dchop0.ch"
#line 158 "dchop0.ch"
            goto _Case42 ;
#line 158 "dchop0.ch"
#line 159 "dchop0.ch"
        case cplus::COND_AFF : 
#line 159 "dchop0.ch"
#line 159 "dchop0.ch"
        _Case42 : 
#line 159 "dchop0.ch"
#line 159 "dchop0.ch"
            ;
#line 159 "dchop0.ch"
#line 159 "dchop0.ch"
            goto terminal ;
#line 159 "dchop0.ch"
#line 159 "dchop0.ch"
            goto _Case43 ;
#line 159 "dchop0.ch"
#line 160 "dchop0.ch"
        case cplus::TEMPLATE_DECL : 
#line 160 "dchop0.ch"
#line 160 "dchop0.ch"
        _Case43 : 
#line 160 "dchop0.ch"
#line 160 "dchop0.ch"
            ;
#line 160 "dchop0.ch"
#line 160 "dchop0.ch"
            goto terminal ;
#line 160 "dchop0.ch"
#line 160 "dchop0.ch"
            goto _Case44 ;
#line 160 "dchop0.ch"
#line 162 "dchop0.ch"
        case cplus::ATTRIBUTS : 
#line 162 "dchop0.ch"
#line 162 "dchop0.ch"
        _Case44 : 
#line 162 "dchop0.ch"
#line 162 "dchop0.ch"
            ;
#line 162 "dchop0.ch"
#line 162 "dchop0.ch"
            control_stat1(sontree(paramTree, 1));
#line 162 "dchop0.ch"
#line 163 "dchop0.ch"
            return ;
#line 163 "dchop0.ch"
    }
#line 163 "dchop0.ch"
#line 163 "dchop0.ch"
#line 165 "dchop0.ch"
    SepBefore();
#line 165 "dchop0.ch"
#line 165 "dchop0.ch"
#line 165 "dchop0.ch"
    PrintString(";");
#line 165 "dchop0.ch"
#line 166 "dchop0.ch"
terminal : 
#line 166 "dchop0.ch"
#line 167 "dchop0.ch"
    comm(paramTree, POST);
#line 167 "dchop0.ch"
#line 168 "dchop0.ch"
}
#line 168 "dchop0.ch"

#line 170 "dchop0.ch"
#line 170 "dchop0.ch"
int DecompCplus::commAtBeginning ( PTREE tree )
#line 170 "dchop0.ch"
{
#line 170 "dchop0.ch"
    register PPTREE _inter ;
#line 170 "dchop0.ch"
#line 170 "dchop0.ch"
#line 173 "dchop0.ch"
    PTREE   father ;
#line 173 "dchop0.ch"
#line 173 "dchop0.ch"
#line 175 "dchop0.ch"
    if ( ( _inter = 
#line 175 "dchop0.ch"
            FatherTree(tree),((_inter = (PPTREE)_inter,1) && 
#line 175 "dchop0.ch"
                                (NumberTree(_inter) == cplus::ATTRIBUTS) &&
#line 175 "dchop0.ch"
                                1)) ) 
#line 175 "dchop0.ch"
#line 176 "dchop0.ch"
        (father=NFatherTree(tree,2));
#line 176 "dchop0.ch"
#line 176 "dchop0.ch"
    else 
#line 176 "dchop0.ch"
#line 178 "dchop0.ch"
        (father=FatherTree(tree));
#line 178 "dchop0.ch"
#line 178 "dchop0.ch"
#line 178 "dchop0.ch"
#line 179 "dchop0.ch"
    if ( (!father) ) 
#line 179 "dchop0.ch"
#line 180 "dchop0.ch"
        return 1 ;
#line 180 "dchop0.ch"
#line 181 "dchop0.ch"
    if ( ((_inter = (PPTREE)father,1) && 
#line 181 "dchop0.ch"
            (NumberTree(_inter) == LIST) &&
#line 181 "dchop0.ch"
            1) ) {
#line 181 "dchop0.ch"
#line 182 "dchop0.ch"
                    (father=FatherTree(father));
#line 182 "dchop0.ch"
#line 182 "dchop0.ch"
#line 183 "dchop0.ch"
                    if ( ((_inter = (PPTREE)father,1) && 
#line 183 "dchop0.ch"
                            (NumberTree(_inter) == cplus::LANGUAGE) &&
#line 183 "dchop0.ch"
                            1) ) {
#line 183 "dchop0.ch"
#line 184 "dchop0.ch"
                                    return 1 ;
#line 184 "dchop0.ch"
#line 184 "dchop0.ch"
                                 }
#line 184 "dchop0.ch"
#line 184 "dchop0.ch"
                 }
#line 184 "dchop0.ch"
#line 187 "dchop0.ch"
    return 0 ;
#line 187 "dchop0.ch"
#line 188 "dchop0.ch"
}
#line 188 "dchop0.ch"

#line 190 "dchop0.ch"
#line 190 "dchop0.ch"
int DecompCplus::comm ( PTREE paramTree, int type )
#line 190 "dchop0.ch"
{
#line 190 "dchop0.ch"
#line 192 "dchop0.ch"
    char    *comment ;
#line 192 "dchop0.ch"
#line 193 "dchop0.ch"
    PTREE   father ;
#line 193 "dchop0.ch"
#line 193 "dchop0.ch"
#line 194 "dchop0.ch"
    char    *intStartComment, *intMiddleComment, *intEndComment, *intPlusComment ;
#line 194 "dchop0.ch"
#line 197 "dchop0.ch"
    intStartComment = startComment ? startComment : "/*";
#line 197 "dchop0.ch"
#line 198 "dchop0.ch"
    intMiddleComment = middleComment ? middleComment : "  ";
#line 198 "dchop0.ch"
#line 199 "dchop0.ch"
    intEndComment = endComment ? endComment : "*/";
#line 199 "dchop0.ch"
#line 200 "dchop0.ch"
    intPlusComment = plusComment ? plusComment : "/";
#line 200 "dchop0.ch"
#line 201 "dchop0.ch"
    if ( (!paramTree) || inhibateComment ) 
#line 201 "dchop0.ch"
#line 202 "dchop0.ch"
        return 0 ;
#line 202 "dchop0.ch"
#line 203 "dchop0.ch"
    if ( type == PRE && (comment = IsComm(paramTree, PRE)) ) {
#line 203 "dchop0.ch"
#line 204 "dchop0.ch"
                                                                        PTREE   inter = (PTREE)0 ;
#line 204 "dchop0.ch"
#line 204 "dchop0.ch"
#line 205 "dchop0.ch"
                                                                        int beginning = Beginning();
#line 205 "dchop0.ch"
#line 204 "dchop0.ch"
                                                                        (inter=(PTREE)0);
#line 204 "dchop0.ch"
#line 204 "dchop0.ch"
#line 206 "dchop0.ch"
                                                                        if ( !commAtBeginning(paramTree) ) {
#line 206 "dchop0.ch"
#line 211 "dchop0.ch"
if ( beginning ) {
#line 211 "dchop0.ch"
#line 212 "dchop0.ch"
                    if ( *comment == '/' && *(comment + 1) == ' ' ) 
#line 212 "dchop0.ch"
#line 213 "dchop0.ch"
                        LNewLine(2);
#line 213 "dchop0.ch"
                    else 
#line 214 "dchop0.ch"
                    if ( *comment == ' ' ) 
#line 214 "dchop0.ch"
#line 215 "dchop0.ch"
                        LNewLine(2);
#line 215 "dchop0.ch"
                    else 
#line 215 "dchop0.ch"
#line 217 "dchop0.ch"
                        LNewLine(1);
#line 217 "dchop0.ch"
#line 217 "dchop0.ch"
#line 217 "dchop0.ch"
#line 217 "dchop0.ch"
                  } else 
#line 217 "dchop0.ch"
#line 219 "dchop0.ch"
    Space(1);
#line 219 "dchop0.ch"
#line 219 "dchop0.ch"
#line 219 "dchop0.ch"
#line 219 "dchop0.ch"
                                                                                                              }
#line 219 "dchop0.ch"
#line 222 "dchop0.ch"
                                                                        do {
#line 222 "dchop0.ch"
#line 222 "dchop0.ch"
if ( inter ) 
#line 222 "dchop0.ch"
#line 223 "dchop0.ch"
    comment = BrainyValue(inter);
#line 223 "dchop0.ch"
#line 225 "dchop0.ch"
Mark();
#line 225 "dchop0.ch"
if ( *comment == '/' ) 
#line 225 "dchop0.ch"
#line 226 "dchop0.ch"
    (inter=PrintCommE(paramTree, PRE, inter, intPlusComment, intPlusComment, ""));
#line 226 "dchop0.ch"
#line 226 "dchop0.ch"
else 
#line 226 "dchop0.ch"
#line 229 "dchop0.ch"
    (inter=PrintCommE(paramTree, PRE, inter, intMiddleComment, intStartComment, intEndComment));
#line 229 "dchop0.ch"
#line 229 "dchop0.ch"
#line 229 "dchop0.ch"
UnMark();
#line 229 "dchop0.ch"
#line 229 "dchop0.ch"
#line 234 "dchop0.ch"
if ( beginning || *comment == '/' ) {
#line 234 "dchop0.ch"
#line 235 "dchop0.ch"
                                            LNewLine(1);
#line 235 "dchop0.ch"
#line 235 "dchop0.ch"
#line 235 "dchop0.ch"
                                        } else 
#line 235 "dchop0.ch"
#line 237 "dchop0.ch"
    Space(1);
#line 237 "dchop0.ch"
#line 237 "dchop0.ch"
#line 237 "dchop0.ch"
#line 237 "dchop0.ch"
                                                                           } 
#line 238 "dchop0.ch"
                                                                        while ( inter );
#line 238 "dchop0.ch"
#line 238 "dchop0.ch"
#line 239 "dchop0.ch"
                                                                        return 1 ;
#line 239 "dchop0.ch"
#line 239 "dchop0.ch"
                                                                    } else 
#line 240 "dchop0.ch"
    if ( type == POST && (comment = IsComm(paramTree, POST)) ) {
#line 240 "dchop0.ch"
#line 241 "dchop0.ch"
                                                                        PTREE   inter = (PTREE)0 ;
#line 241 "dchop0.ch"
#line 241 "dchop0.ch"
#line 241 "dchop0.ch"
                                                                        (inter=(PTREE)0);
#line 241 "dchop0.ch"
#line 241 "dchop0.ch"
#line 244 "dchop0.ch"
                                                                        Mark();
#line 244 "dchop0.ch"
                                                                        do {
#line 244 "dchop0.ch"
#line 244 "dchop0.ch"
if ( inter ) 
#line 244 "dchop0.ch"
#line 245 "dchop0.ch"
    comment = BrainyValue(inter);
#line 245 "dchop0.ch"
#line 246 "dchop0.ch"
Space(1);
#line 246 "dchop0.ch"
#line 246 "dchop0.ch"
#line 248 "dchop0.ch"
Mark();
#line 248 "dchop0.ch"
if ( *comment == '/' ) 
#line 248 "dchop0.ch"
#line 249 "dchop0.ch"
    (inter=PrintCommE(paramTree, POST, inter, intPlusComment, intPlusComment, ""));
#line 249 "dchop0.ch"
#line 249 "dchop0.ch"
else 
#line 249 "dchop0.ch"
#line 252 "dchop0.ch"
    (inter=PrintCommE(paramTree, POST, inter, intMiddleComment, intStartComment, intEndComment));
#line 252 "dchop0.ch"
#line 252 "dchop0.ch"
#line 252 "dchop0.ch"
UnMark();
#line 252 "dchop0.ch"
#line 252 "dchop0.ch"
#line 256 "dchop0.ch"
if ( PrePost() && inter || *comment == '/' ) {
#line 256 "dchop0.ch"
#line 257 "dchop0.ch"
                                                    LNewLine(1);
#line 257 "dchop0.ch"
#line 257 "dchop0.ch"
#line 257 "dchop0.ch"
                                                  } else 
#line 257 "dchop0.ch"
#line 259 "dchop0.ch"
    Space(1);
#line 259 "dchop0.ch"
#line 259 "dchop0.ch"
#line 259 "dchop0.ch"
#line 259 "dchop0.ch"
                                                                           } 
#line 260 "dchop0.ch"
                                                                        while ( inter );
#line 260 "dchop0.ch"
#line 260 "dchop0.ch"
                                                                        UnMark();
#line 260 "dchop0.ch"
#line 260 "dchop0.ch"
#line 262 "dchop0.ch"
                                                                        return 1 ;
#line 262 "dchop0.ch"
#line 262 "dchop0.ch"
                                                                      }
#line 262 "dchop0.ch"
#line 264 "dchop0.ch"
    return 0 ;
#line 264 "dchop0.ch"
#line 265 "dchop0.ch"
}
#line 265 "dchop0.ch"

#line 267 "dchop0.ch"
#line 267 "dchop0.ch"
DecompCplus::DecompCplus ()
#line 267 "dchop0.ch"
{
#line 267 "dchop0.ch"
#line 269 "dchop0.ch"
    statementf = 1 ;
#line 269 "dchop0.ch"
#line 270 "dchop0.ch"
    inClass = 0 ;
#line 270 "dchop0.ch"
#line 271 "dchop0.ch"
    maxX = - 1 ;
#line 271 "dchop0.ch"
#line 272 "dchop0.ch"
    indentFuncFlag = 0 ;
#line 272 "dchop0.ch"
#line 273 "dchop0.ch"
    xFather = yFather = 0 ;
#line 273 "dchop0.ch"
#line 274 "dchop0.ch"
#define POST_COMMENT postComment
#line 274 "dchop0.ch"
#line 275 "dchop0.ch"
    POST_COMMENT = (PTREE)0 ;
#line 275 "dchop0.ch"
#line 276 "dchop0.ch"
#undef POST_COMMENT
#line 276 "dchop0.ch"
#line 277 "dchop0.ch"
    simplifyExpression = 1 ;
#line 277 "dchop0.ch"
#line 278 "dchop0.ch"
    inhibateComment = 0 ;
#line 278 "dchop0.ch"
#line 279 "dchop0.ch"
}
#line 279 "dchop0.ch"

#define RIGHT_TO_LEFT 1
#define LEFT_TO_RIGHT 2

#line 284 "dchop0.ch"
#line 284 "dchop0.ch"
int DecompCplus::OpAssociativity ( PTREE tree )
#line 284 "dchop0.ch"
{
#line 284 "dchop0.ch"
    register PPTREE _inter ;
#line 284 "dchop0.ch"
#line 284 "dchop0.ch"
#line 286 "dchop0.ch"
    switch ( NumberTree(tree) ) {
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::AFF : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case45 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case46 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::MUL_AFF : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case46 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case47 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::DIV_AFF : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case47 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case48 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::REM_AFF : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case48 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case49 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::MIN_AFF : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case49 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case50 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::PLU_AFF : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case50 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case51 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::LSH_AFF : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case51 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case52 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::RSH_AFF : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case52 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case53 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::AND_AFF : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case53 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case54 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::OR_AFF : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case54 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case55 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::XOR_AFF : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case55 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case56 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::COND_AFF : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case56 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case57 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::NEG : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case57 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case58 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::POS : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case58 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case59 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::LNEG : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case59 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case60 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::NOT : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case60 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case61 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::POINT : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case61 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case62 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::ARROW_MEMB : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case62 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case63 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::DOT_MEMB : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case63 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case64 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::ADDR : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case64 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case65 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::EXP : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case65 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case66 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::AINCR : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case66 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case67 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::ADECR : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case67 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case68 ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        case cplus::BINCR : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
        _Case68 : 
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            ;
#line 286 "dchop0.ch"
#line 286 "dchop0.ch"
            goto _Case69 ;
#line 286 "dchop0.ch"
#line 311 "dchop0.ch"
        case cplus::BDECR : 
#line 311 "dchop0.ch"
#line 311 "dchop0.ch"
        _Case69 : 
#line 311 "dchop0.ch"
#line 311 "dchop0.ch"
            ;
#line 311 "dchop0.ch"
#line 311 "dchop0.ch"
            return RIGHT_TO_LEFT ;
#line 311 "dchop0.ch"
#line 311 "dchop0.ch"
            goto _Case70 ;
#line 311 "dchop0.ch"
#line 312 "dchop0.ch"
        default : 
#line 312 "dchop0.ch"
#line 312 "dchop0.ch"
        _Case70 : 
#line 312 "dchop0.ch"
#line 312 "dchop0.ch"
            ;
#line 312 "dchop0.ch"
#line 312 "dchop0.ch"
            return LEFT_TO_RIGHT ;
#line 312 "dchop0.ch"
    }
#line 312 "dchop0.ch"
#line 312 "dchop0.ch"
#line 314 "dchop0.ch"
}
#line 314 "dchop0.ch"

#line 316 "dchop0.ch"
#line 316 "dchop0.ch"
int DecompCplus::OpPriority ( PTREE tree )
#line 316 "dchop0.ch"
{
#line 316 "dchop0.ch"
    register PPTREE _inter ;
#line 316 "dchop0.ch"
#line 316 "dchop0.ch"
#line 318 "dchop0.ch"
    PTREE   son ;
#line 318 "dchop0.ch"
#line 318 "dchop0.ch"
#line 320 "dchop0.ch"
    switch ( NumberTree(tree) ) {
#line 320 "dchop0.ch"
#line 320 "dchop0.ch"
        case cplus::EXP_SEQ : 
#line 320 "dchop0.ch"
#line 320 "dchop0.ch"
        _Case71 : 
#line 320 "dchop0.ch"
#line 320 "dchop0.ch"
            ;
#line 320 "dchop0.ch"
#line 320 "dchop0.ch"
            goto _Case72 ;
#line 320 "dchop0.ch"
#line 323 "dchop0.ch"
        case cplus::INITIALIZER : 
#line 323 "dchop0.ch"
#line 323 "dchop0.ch"
        _Case72 : 
#line 323 "dchop0.ch"
#line 323 "dchop0.ch"
            ;
#line 323 "dchop0.ch"
#line 323 "dchop0.ch"
            return 0 ;
#line 323 "dchop0.ch"
#line 324 "dchop0.ch"
            break ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        case cplus::AFF : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        _Case73 : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            goto _Case74 ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        case cplus::MUL_AFF : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        _Case74 : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            goto _Case75 ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        case cplus::DIV_AFF : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        _Case75 : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            goto _Case76 ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        case cplus::REM_AFF : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        _Case76 : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            goto _Case77 ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        case cplus::MIN_AFF : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        _Case77 : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            goto _Case78 ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        case cplus::PLU_AFF : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        _Case78 : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            goto _Case79 ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        case cplus::LSH_AFF : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        _Case79 : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            goto _Case80 ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        case cplus::RSH_AFF : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        _Case80 : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            goto _Case81 ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        case cplus::AND_AFF : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        _Case81 : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            goto _Case82 ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        case cplus::OR_AFF : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
        _Case82 : 
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            ;
#line 324 "dchop0.ch"
#line 324 "dchop0.ch"
            goto _Case83 ;
#line 324 "dchop0.ch"
#line 336 "dchop0.ch"
        case cplus::XOR_AFF : 
#line 336 "dchop0.ch"
#line 336 "dchop0.ch"
        _Case83 : 
#line 336 "dchop0.ch"
#line 336 "dchop0.ch"
            ;
#line 336 "dchop0.ch"
#line 336 "dchop0.ch"
            return 1 ;
#line 336 "dchop0.ch"
#line 337 "dchop0.ch"
            break ;
#line 337 "dchop0.ch"
#line 339 "dchop0.ch"
        case cplus::COND_AFF : 
#line 339 "dchop0.ch"
#line 339 "dchop0.ch"
        _Case84 : 
#line 339 "dchop0.ch"
#line 339 "dchop0.ch"
            ;
#line 339 "dchop0.ch"
#line 339 "dchop0.ch"
            return 2 ;
#line 339 "dchop0.ch"
#line 340 "dchop0.ch"
            break ;
#line 340 "dchop0.ch"
#line 342 "dchop0.ch"
        case cplus::OR : 
#line 342 "dchop0.ch"
#line 342 "dchop0.ch"
        _Case85 : 
#line 342 "dchop0.ch"
#line 342 "dchop0.ch"
            ;
#line 342 "dchop0.ch"
#line 342 "dchop0.ch"
            return 3 ;
#line 342 "dchop0.ch"
#line 343 "dchop0.ch"
            break ;
#line 343 "dchop0.ch"
#line 345 "dchop0.ch"
        case cplus::AND : 
#line 345 "dchop0.ch"
#line 345 "dchop0.ch"
        _Case86 : 
#line 345 "dchop0.ch"
#line 345 "dchop0.ch"
            ;
#line 345 "dchop0.ch"
#line 345 "dchop0.ch"
            return 4 ;
#line 345 "dchop0.ch"
#line 346 "dchop0.ch"
            break ;
#line 346 "dchop0.ch"
#line 348 "dchop0.ch"
        case cplus::LOR : 
#line 348 "dchop0.ch"
#line 348 "dchop0.ch"
        _Case87 : 
#line 348 "dchop0.ch"
#line 348 "dchop0.ch"
            ;
#line 348 "dchop0.ch"
#line 348 "dchop0.ch"
            return 5 ;
#line 348 "dchop0.ch"
#line 349 "dchop0.ch"
            break ;
#line 349 "dchop0.ch"
#line 351 "dchop0.ch"
        case cplus::LXOR : 
#line 351 "dchop0.ch"
#line 351 "dchop0.ch"
        _Case88 : 
#line 351 "dchop0.ch"
#line 351 "dchop0.ch"
            ;
#line 351 "dchop0.ch"
#line 351 "dchop0.ch"
            return 6 ;
#line 351 "dchop0.ch"
#line 352 "dchop0.ch"
            break ;
#line 352 "dchop0.ch"
#line 354 "dchop0.ch"
        case cplus::LAND : 
#line 354 "dchop0.ch"
#line 354 "dchop0.ch"
        _Case89 : 
#line 354 "dchop0.ch"
#line 354 "dchop0.ch"
            ;
#line 354 "dchop0.ch"
#line 354 "dchop0.ch"
            return 7 ;
#line 354 "dchop0.ch"
#line 355 "dchop0.ch"
            break ;
#line 355 "dchop0.ch"
#line 355 "dchop0.ch"
        case cplus::EQU : 
#line 355 "dchop0.ch"
#line 355 "dchop0.ch"
        _Case90 : 
#line 355 "dchop0.ch"
#line 355 "dchop0.ch"
            ;
#line 355 "dchop0.ch"
#line 355 "dchop0.ch"
            goto _Case91 ;
#line 355 "dchop0.ch"
#line 358 "dchop0.ch"
        case cplus::NEQU : 
#line 358 "dchop0.ch"
#line 358 "dchop0.ch"
        _Case91 : 
#line 358 "dchop0.ch"
#line 358 "dchop0.ch"
            ;
#line 358 "dchop0.ch"
#line 358 "dchop0.ch"
            return 8 ;
#line 358 "dchop0.ch"
#line 359 "dchop0.ch"
            break ;
#line 359 "dchop0.ch"
#line 359 "dchop0.ch"
        case cplus::LEQU : 
#line 359 "dchop0.ch"
#line 359 "dchop0.ch"
        _Case92 : 
#line 359 "dchop0.ch"
#line 359 "dchop0.ch"
            ;
#line 359 "dchop0.ch"
#line 359 "dchop0.ch"
            goto _Case93 ;
#line 359 "dchop0.ch"
#line 359 "dchop0.ch"
        case cplus::GEQU : 
#line 359 "dchop0.ch"
#line 359 "dchop0.ch"
        _Case93 : 
#line 359 "dchop0.ch"
#line 359 "dchop0.ch"
            ;
#line 359 "dchop0.ch"
#line 359 "dchop0.ch"
            goto _Case94 ;
#line 359 "dchop0.ch"
#line 359 "dchop0.ch"
        case cplus::GT : 
#line 359 "dchop0.ch"
#line 359 "dchop0.ch"
        _Case94 : 
#line 359 "dchop0.ch"
#line 359 "dchop0.ch"
            ;
#line 359 "dchop0.ch"
#line 359 "dchop0.ch"
            goto _Case95 ;
#line 359 "dchop0.ch"
#line 364 "dchop0.ch"
        case cplus::LT : 
#line 364 "dchop0.ch"
#line 364 "dchop0.ch"
        _Case95 : 
#line 364 "dchop0.ch"
#line 364 "dchop0.ch"
            ;
#line 364 "dchop0.ch"
#line 364 "dchop0.ch"
            return 9 ;
#line 364 "dchop0.ch"
#line 365 "dchop0.ch"
            break ;
#line 365 "dchop0.ch"
#line 365 "dchop0.ch"
        case cplus::LSHI : 
#line 365 "dchop0.ch"
#line 365 "dchop0.ch"
        _Case96 : 
#line 365 "dchop0.ch"
#line 365 "dchop0.ch"
            ;
#line 365 "dchop0.ch"
#line 365 "dchop0.ch"
            goto _Case97 ;
#line 365 "dchop0.ch"
#line 368 "dchop0.ch"
        case cplus::RSHI : 
#line 368 "dchop0.ch"
#line 368 "dchop0.ch"
        _Case97 : 
#line 368 "dchop0.ch"
#line 368 "dchop0.ch"
            ;
#line 368 "dchop0.ch"
#line 368 "dchop0.ch"
            return 10 ;
#line 368 "dchop0.ch"
#line 369 "dchop0.ch"
            break ;
#line 369 "dchop0.ch"
#line 369 "dchop0.ch"
        case cplus::MINUS : 
#line 369 "dchop0.ch"
#line 369 "dchop0.ch"
        _Case98 : 
#line 369 "dchop0.ch"
#line 369 "dchop0.ch"
            ;
#line 369 "dchop0.ch"
#line 369 "dchop0.ch"
            goto _Case99 ;
#line 369 "dchop0.ch"
#line 369 "dchop0.ch"
        case cplus::PLUS : 
#line 369 "dchop0.ch"
#line 369 "dchop0.ch"
        _Case99 : 
#line 369 "dchop0.ch"
#line 369 "dchop0.ch"
            ;
#line 369 "dchop0.ch"
#line 369 "dchop0.ch"
            goto _Case100 ;
#line 369 "dchop0.ch"
#line 376 "dchop0.ch"
        case cplus::TYP_AFF : 
#line 376 "dchop0.ch"
#line 376 "dchop0.ch"
        _Case100 : 
#line 376 "dchop0.ch"
#line 376 "dchop0.ch"
            ;
#line 376 "dchop0.ch"
#line 376 "dchop0.ch"
            return 11 ;
#line 376 "dchop0.ch"
#line 377 "dchop0.ch"
            break ;
#line 377 "dchop0.ch"
#line 377 "dchop0.ch"
        case cplus::MUL : 
#line 377 "dchop0.ch"
#line 377 "dchop0.ch"
        _Case101 : 
#line 377 "dchop0.ch"
#line 377 "dchop0.ch"
            ;
#line 377 "dchop0.ch"
#line 377 "dchop0.ch"
            goto _Case102 ;
#line 377 "dchop0.ch"
#line 377 "dchop0.ch"
        case cplus::DIV : 
#line 377 "dchop0.ch"
#line 377 "dchop0.ch"
        _Case102 : 
#line 377 "dchop0.ch"
#line 377 "dchop0.ch"
            ;
#line 377 "dchop0.ch"
#line 377 "dchop0.ch"
            goto _Case103 ;
#line 377 "dchop0.ch"
#line 381 "dchop0.ch"
        case cplus::REM : 
#line 381 "dchop0.ch"
#line 381 "dchop0.ch"
        _Case103 : 
#line 381 "dchop0.ch"
#line 381 "dchop0.ch"
            ;
#line 381 "dchop0.ch"
#line 381 "dchop0.ch"
            return 12 ;
#line 381 "dchop0.ch"
#line 382 "dchop0.ch"
            break ;
#line 382 "dchop0.ch"
#line 382 "dchop0.ch"
        case cplus::DOT_MEMB : 
#line 382 "dchop0.ch"
#line 382 "dchop0.ch"
        _Case104 : 
#line 382 "dchop0.ch"
#line 382 "dchop0.ch"
            ;
#line 382 "dchop0.ch"
#line 382 "dchop0.ch"
            goto _Case105 ;
#line 382 "dchop0.ch"
#line 385 "dchop0.ch"
        case cplus::ARROW_MEMB : 
#line 385 "dchop0.ch"
#line 385 "dchop0.ch"
        _Case105 : 
#line 385 "dchop0.ch"
#line 385 "dchop0.ch"
            ;
#line 385 "dchop0.ch"
#line 385 "dchop0.ch"
            return 13 ;
#line 385 "dchop0.ch"
#line 386 "dchop0.ch"
            break ;
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
        case cplus::NEG : 
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
        _Case106 : 
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
            ;
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
            goto _Case107 ;
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
        case cplus::POS : 
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
        _Case107 : 
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
            ;
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
            goto _Case108 ;
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
        case cplus::LNEG : 
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
        _Case108 : 
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
            ;
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
            goto _Case109 ;
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
        case cplus::NOT : 
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
        _Case109 : 
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
            ;
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
            goto _Case110 ;
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
        case cplus::POINT : 
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
        _Case110 : 
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
            ;
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
            goto _Case111 ;
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
        case cplus::ADDR : 
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
        _Case111 : 
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
            ;
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
            goto _Case112 ;
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
        case cplus::AINCR : 
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
        _Case112 : 
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
            ;
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
            goto _Case113 ;
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
        case cplus::ADECR : 
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
        _Case113 : 
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
            ;
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
            goto _Case114 ;
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
        case cplus::BINCR : 
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
        _Case114 : 
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
            ;
#line 386 "dchop0.ch"
#line 386 "dchop0.ch"
            goto _Case115 ;
#line 386 "dchop0.ch"
#line 397 "dchop0.ch"
        case cplus::BDECR : 
#line 397 "dchop0.ch"
#line 397 "dchop0.ch"
        _Case115 : 
#line 397 "dchop0.ch"
#line 397 "dchop0.ch"
            ;
#line 397 "dchop0.ch"
#line 397 "dchop0.ch"
            return 14 ;
#line 397 "dchop0.ch"
#line 398 "dchop0.ch"
            break ;
#line 398 "dchop0.ch"
#line 398 "dchop0.ch"
        case cplus::EXP_ARRAY : 
#line 398 "dchop0.ch"
#line 398 "dchop0.ch"
        _Case116 : 
#line 398 "dchop0.ch"
#line 398 "dchop0.ch"
            ;
#line 398 "dchop0.ch"
#line 398 "dchop0.ch"
            goto _Case117 ;
#line 398 "dchop0.ch"
#line 398 "dchop0.ch"
        case cplus::REF : 
#line 398 "dchop0.ch"
#line 398 "dchop0.ch"
        _Case117 : 
#line 398 "dchop0.ch"
#line 398 "dchop0.ch"
            ;
#line 398 "dchop0.ch"
#line 398 "dchop0.ch"
            goto _Case118 ;
#line 398 "dchop0.ch"
#line 402 "dchop0.ch"
        case cplus::ARROW : 
#line 402 "dchop0.ch"
#line 402 "dchop0.ch"
        _Case118 : 
#line 402 "dchop0.ch"
#line 402 "dchop0.ch"
            ;
#line 402 "dchop0.ch"
#line 402 "dchop0.ch"
            return 15 ;
#line 402 "dchop0.ch"
#line 403 "dchop0.ch"
            break ;
#line 403 "dchop0.ch"
#line 405 "dchop0.ch"
        case cplus::EXP : 
#line 405 "dchop0.ch"
#line 405 "dchop0.ch"
        _Case119 : 
#line 405 "dchop0.ch"
#line 405 "dchop0.ch"
            ;
#line 405 "dchop0.ch"
#line 405 "dchop0.ch"
            return 16 ;
#line 405 "dchop0.ch"
#line 406 "dchop0.ch"
            break ;
#line 406 "dchop0.ch"
#line 407 "dchop0.ch"
        case cplus::EXP_LIST : 
#line 407 "dchop0.ch"
#line 407 "dchop0.ch"
            (son=SonTree(tree, 1));
#line 407 "dchop0.ch"
#line 407 "dchop0.ch"
#line 407 "dchop0.ch"
        _Case120 : 
#line 407 "dchop0.ch"
#line 407 "dchop0.ch"
            ;
#line 407 "dchop0.ch"
#line 408 "dchop0.ch"
            if ( BrainyValue(son) && (strcmp(BrainyValue(son), "WriteString") || strcmp(BrainyValue(son), "PrintString")) ) 
#line 408 "dchop0.ch"
#line 411 "dchop0.ch"
                return 17 ;
#line 411 "dchop0.ch"
            else 
#line 411 "dchop0.ch"
#line 413 "dchop0.ch"
                return - 1 ;
#line 413 "dchop0.ch"
#line 413 "dchop0.ch"
#line 414 "dchop0.ch"
            break ;
#line 414 "dchop0.ch"
#line 415 "dchop0.ch"
        case cplus::VA_ARG : 
#line 415 "dchop0.ch"
#line 415 "dchop0.ch"
        _Case121 : 
#line 415 "dchop0.ch"
#line 415 "dchop0.ch"
            ;
#line 415 "dchop0.ch"
#line 415 "dchop0.ch"
            return - 1 ;
#line 415 "dchop0.ch"
#line 415 "dchop0.ch"
            goto _Case122 ;
#line 415 "dchop0.ch"
#line 415 "dchop0.ch"
        case cplus::BASE_LIST : 
#line 415 "dchop0.ch"
#line 415 "dchop0.ch"
        _Case122 : 
#line 415 "dchop0.ch"
#line 415 "dchop0.ch"
            ;
#line 415 "dchop0.ch"
#line 415 "dchop0.ch"
            goto _Case123 ;
#line 415 "dchop0.ch"
#line 417 "dchop0.ch"
        case cplus::NEW : 
#line 417 "dchop0.ch"
#line 417 "dchop0.ch"
        _Case123 : 
#line 417 "dchop0.ch"
#line 417 "dchop0.ch"
            ;
#line 417 "dchop0.ch"
#line 417 "dchop0.ch"
            return 12 ;
#line 417 "dchop0.ch"
#line 417 "dchop0.ch"
            goto _Case124 ;
#line 417 "dchop0.ch"
#line 417 "dchop0.ch"
        case cplus::ENUM : 
#line 417 "dchop0.ch"
#line 417 "dchop0.ch"
        _Case124 : 
#line 417 "dchop0.ch"
#line 417 "dchop0.ch"
            ;
#line 417 "dchop0.ch"
#line 417 "dchop0.ch"
            goto _Case125 ;
#line 417 "dchop0.ch"
#line 420 "dchop0.ch"
        case cplus::TYP_LIST : 
#line 420 "dchop0.ch"
#line 420 "dchop0.ch"
        _Case125 : 
#line 420 "dchop0.ch"
#line 420 "dchop0.ch"
            ;
#line 420 "dchop0.ch"
#line 420 "dchop0.ch"
            return 17 ;
#line 420 "dchop0.ch"
#line 421 "dchop0.ch"
            break ;
#line 421 "dchop0.ch"
#line 422 "dchop0.ch"
        default : 
#line 422 "dchop0.ch"
#line 422 "dchop0.ch"
        _Case126 : 
#line 422 "dchop0.ch"
#line 422 "dchop0.ch"
            ;
#line 422 "dchop0.ch"
#line 422 "dchop0.ch"
            return - 1 ;
#line 422 "dchop0.ch"
    }
#line 422 "dchop0.ch"
#line 422 "dchop0.ch"
#line 424 "dchop0.ch"
}
#line 424 "dchop0.ch"

#line 426 "dchop0.ch"
#line 426 "dchop0.ch"
int DecompCplus::IsTopInstr ( PTREE tree )
#line 426 "dchop0.ch"
{
#line 426 "dchop0.ch"
    register PPTREE _inter ;
#line 426 "dchop0.ch"
#line 426 "dchop0.ch"
#line 428 "dchop0.ch"
    switch ( NumberTree(tree) ) {
#line 428 "dchop0.ch"
#line 429 "dchop0.ch"
        case cplus::DECLARATION : 
#line 429 "dchop0.ch"
#line 429 "dchop0.ch"
        _Case127 : 
#line 429 "dchop0.ch"
#line 429 "dchop0.ch"
            ;
#line 429 "dchop0.ch"
#line 429 "dchop0.ch"
            return 100 ;
#line 429 "dchop0.ch"
#line 429 "dchop0.ch"
            goto _Case128 ;
#line 429 "dchop0.ch"
#line 430 "dchop0.ch"
        case cplus::TYPEDEF : 
#line 430 "dchop0.ch"
#line 430 "dchop0.ch"
        _Case128 : 
#line 430 "dchop0.ch"
#line 430 "dchop0.ch"
            ;
#line 430 "dchop0.ch"
#line 430 "dchop0.ch"
            return 101 ;
#line 430 "dchop0.ch"
#line 430 "dchop0.ch"
            goto _Case129 ;
#line 430 "dchop0.ch"
#line 431 "dchop0.ch"
        case cplus::IF : 
#line 431 "dchop0.ch"
#line 431 "dchop0.ch"
        _Case129 : 
#line 431 "dchop0.ch"
#line 431 "dchop0.ch"
            ;
#line 431 "dchop0.ch"
#line 431 "dchop0.ch"
            return 1 ;
#line 431 "dchop0.ch"
#line 431 "dchop0.ch"
            goto _Case130 ;
#line 431 "dchop0.ch"
#line 432 "dchop0.ch"
        case cplus::WHILE : 
#line 432 "dchop0.ch"
#line 432 "dchop0.ch"
        _Case130 : 
#line 432 "dchop0.ch"
#line 432 "dchop0.ch"
            ;
#line 432 "dchop0.ch"
#line 432 "dchop0.ch"
            return 2 ;
#line 432 "dchop0.ch"
#line 432 "dchop0.ch"
            goto _Case131 ;
#line 432 "dchop0.ch"
#line 433 "dchop0.ch"
        case cplus::FOR : 
#line 433 "dchop0.ch"
#line 433 "dchop0.ch"
        _Case131 : 
#line 433 "dchop0.ch"
#line 433 "dchop0.ch"
            ;
#line 433 "dchop0.ch"
#line 433 "dchop0.ch"
            return 3 ;
#line 433 "dchop0.ch"
#line 433 "dchop0.ch"
            goto _Case132 ;
#line 433 "dchop0.ch"
#line 434 "dchop0.ch"
        case cplus::DO : 
#line 434 "dchop0.ch"
#line 434 "dchop0.ch"
        _Case132 : 
#line 434 "dchop0.ch"
#line 434 "dchop0.ch"
            ;
#line 434 "dchop0.ch"
#line 434 "dchop0.ch"
            return 4 ;
#line 434 "dchop0.ch"
#line 434 "dchop0.ch"
            goto _Case133 ;
#line 434 "dchop0.ch"
#line 435 "dchop0.ch"
        case cplus::BREAK : 
#line 435 "dchop0.ch"
#line 435 "dchop0.ch"
        _Case133 : 
#line 435 "dchop0.ch"
#line 435 "dchop0.ch"
            ;
#line 435 "dchop0.ch"
#line 435 "dchop0.ch"
            return 5 ;
#line 435 "dchop0.ch"
#line 435 "dchop0.ch"
            goto _Case134 ;
#line 435 "dchop0.ch"
#line 436 "dchop0.ch"
        case cplus::CONTINUE : 
#line 436 "dchop0.ch"
#line 436 "dchop0.ch"
        _Case134 : 
#line 436 "dchop0.ch"
#line 436 "dchop0.ch"
            ;
#line 436 "dchop0.ch"
#line 436 "dchop0.ch"
            return 6 ;
#line 436 "dchop0.ch"
#line 436 "dchop0.ch"
            goto _Case135 ;
#line 436 "dchop0.ch"
#line 437 "dchop0.ch"
        case cplus::COMPOUND : 
#line 437 "dchop0.ch"
#line 437 "dchop0.ch"
        _Case135 : 
#line 437 "dchop0.ch"
#line 437 "dchop0.ch"
            ;
#line 437 "dchop0.ch"
#line 437 "dchop0.ch"
            return 7 ;
#line 437 "dchop0.ch"
#line 437 "dchop0.ch"
            goto _Case136 ;
#line 437 "dchop0.ch"
#line 438 "dchop0.ch"
        case cplus::GOTO : 
#line 438 "dchop0.ch"
#line 438 "dchop0.ch"
        _Case136 : 
#line 438 "dchop0.ch"
#line 438 "dchop0.ch"
            ;
#line 438 "dchop0.ch"
#line 438 "dchop0.ch"
            return 8 ;
#line 438 "dchop0.ch"
#line 438 "dchop0.ch"
            goto _Case137 ;
#line 438 "dchop0.ch"
#line 439 "dchop0.ch"
        case cplus::STAT_VOID : 
#line 439 "dchop0.ch"
#line 439 "dchop0.ch"
        _Case137 : 
#line 439 "dchop0.ch"
#line 439 "dchop0.ch"
            ;
#line 439 "dchop0.ch"
#line 439 "dchop0.ch"
            return 9 ;
#line 439 "dchop0.ch"
#line 439 "dchop0.ch"
            goto _Case138 ;
#line 439 "dchop0.ch"
#line 440 "dchop0.ch"
        case cplus::LABEL : 
#line 440 "dchop0.ch"
#line 440 "dchop0.ch"
        _Case138 : 
#line 440 "dchop0.ch"
#line 440 "dchop0.ch"
            ;
#line 440 "dchop0.ch"
#line 440 "dchop0.ch"
            return 10 ;
#line 440 "dchop0.ch"
#line 440 "dchop0.ch"
            goto _Case139 ;
#line 440 "dchop0.ch"
#line 441 "dchop0.ch"
        case cplus::RETURN : 
#line 441 "dchop0.ch"
#line 441 "dchop0.ch"
        _Case139 : 
#line 441 "dchop0.ch"
#line 441 "dchop0.ch"
            ;
#line 441 "dchop0.ch"
#line 441 "dchop0.ch"
            return 11 ;
#line 441 "dchop0.ch"
#line 441 "dchop0.ch"
            goto _Case140 ;
#line 441 "dchop0.ch"
#line 442 "dchop0.ch"
        case cplus::SWITCH : 
#line 442 "dchop0.ch"
#line 442 "dchop0.ch"
        _Case140 : 
#line 442 "dchop0.ch"
#line 442 "dchop0.ch"
            ;
#line 442 "dchop0.ch"
#line 442 "dchop0.ch"
            return 12 ;
#line 442 "dchop0.ch"
#line 442 "dchop0.ch"
            goto _Case141 ;
#line 442 "dchop0.ch"
#line 443 "dchop0.ch"
        case cplus::INCLUDE_DIR : 
#line 443 "dchop0.ch"
#line 443 "dchop0.ch"
        _Case141 : 
#line 443 "dchop0.ch"
#line 443 "dchop0.ch"
            ;
#line 443 "dchop0.ch"
#line 443 "dchop0.ch"
            return 14 ;
#line 443 "dchop0.ch"
#line 443 "dchop0.ch"
            goto _Case142 ;
#line 443 "dchop0.ch"
#line 444 "dchop0.ch"
        case cplus::IF_DIR : 
#line 444 "dchop0.ch"
#line 444 "dchop0.ch"
        _Case142 : 
#line 444 "dchop0.ch"
#line 444 "dchop0.ch"
            ;
#line 444 "dchop0.ch"
#line 444 "dchop0.ch"
            return 15 ;
#line 444 "dchop0.ch"
#line 444 "dchop0.ch"
            goto _Case143 ;
#line 444 "dchop0.ch"
#line 445 "dchop0.ch"
        case cplus::IFDEF_DIR : 
#line 445 "dchop0.ch"
#line 445 "dchop0.ch"
        _Case143 : 
#line 445 "dchop0.ch"
#line 445 "dchop0.ch"
            ;
#line 445 "dchop0.ch"
#line 445 "dchop0.ch"
            return 16 ;
#line 445 "dchop0.ch"
#line 445 "dchop0.ch"
            goto _Case144 ;
#line 445 "dchop0.ch"
#line 446 "dchop0.ch"
        case cplus::IFNDEF_DIR : 
#line 446 "dchop0.ch"
#line 446 "dchop0.ch"
        _Case144 : 
#line 446 "dchop0.ch"
#line 446 "dchop0.ch"
            ;
#line 446 "dchop0.ch"
#line 446 "dchop0.ch"
            return 17 ;
#line 446 "dchop0.ch"
#line 446 "dchop0.ch"
            goto _Case145 ;
#line 446 "dchop0.ch"
#line 447 "dchop0.ch"
        case cplus::NO_PRETTY : 
#line 447 "dchop0.ch"
#line 447 "dchop0.ch"
        _Case145 : 
#line 447 "dchop0.ch"
#line 447 "dchop0.ch"
            ;
#line 447 "dchop0.ch"
#line 447 "dchop0.ch"
            return 17 ;
#line 447 "dchop0.ch"
#line 447 "dchop0.ch"
            goto _Case146 ;
#line 447 "dchop0.ch"
#line 448 "dchop0.ch"
        case cplus::AFF : 
#line 448 "dchop0.ch"
#line 448 "dchop0.ch"
        _Case146 : 
#line 448 "dchop0.ch"
#line 448 "dchop0.ch"
            ;
#line 448 "dchop0.ch"
#line 448 "dchop0.ch"
            return 19 ;
#line 448 "dchop0.ch"
#line 448 "dchop0.ch"
            goto _Case147 ;
#line 448 "dchop0.ch"
#line 449 "dchop0.ch"
        case cplus::MUL_AFF : 
#line 449 "dchop0.ch"
#line 449 "dchop0.ch"
        _Case147 : 
#line 449 "dchop0.ch"
#line 449 "dchop0.ch"
            ;
#line 449 "dchop0.ch"
#line 449 "dchop0.ch"
            return 20 ;
#line 449 "dchop0.ch"
#line 449 "dchop0.ch"
            goto _Case148 ;
#line 449 "dchop0.ch"
#line 450 "dchop0.ch"
        case cplus::DIV_AFF : 
#line 450 "dchop0.ch"
#line 450 "dchop0.ch"
        _Case148 : 
#line 450 "dchop0.ch"
#line 450 "dchop0.ch"
            ;
#line 450 "dchop0.ch"
#line 450 "dchop0.ch"
            return 21 ;
#line 450 "dchop0.ch"
#line 450 "dchop0.ch"
            goto _Case149 ;
#line 450 "dchop0.ch"
#line 451 "dchop0.ch"
        case cplus::REM_AFF : 
#line 451 "dchop0.ch"
#line 451 "dchop0.ch"
        _Case149 : 
#line 451 "dchop0.ch"
#line 451 "dchop0.ch"
            ;
#line 451 "dchop0.ch"
#line 451 "dchop0.ch"
            return 22 ;
#line 451 "dchop0.ch"
#line 451 "dchop0.ch"
            goto _Case150 ;
#line 451 "dchop0.ch"
#line 452 "dchop0.ch"
        case cplus::PLU_AFF : 
#line 452 "dchop0.ch"
#line 452 "dchop0.ch"
        _Case150 : 
#line 452 "dchop0.ch"
#line 452 "dchop0.ch"
            ;
#line 452 "dchop0.ch"
#line 452 "dchop0.ch"
            return 23 ;
#line 452 "dchop0.ch"
#line 452 "dchop0.ch"
            goto _Case151 ;
#line 452 "dchop0.ch"
#line 453 "dchop0.ch"
        case cplus::MIN_AFF : 
#line 453 "dchop0.ch"
#line 453 "dchop0.ch"
        _Case151 : 
#line 453 "dchop0.ch"
#line 453 "dchop0.ch"
            ;
#line 453 "dchop0.ch"
#line 453 "dchop0.ch"
            return 24 ;
#line 453 "dchop0.ch"
#line 453 "dchop0.ch"
            goto _Case152 ;
#line 453 "dchop0.ch"
#line 454 "dchop0.ch"
        case cplus::LSH_AFF : 
#line 454 "dchop0.ch"
#line 454 "dchop0.ch"
        _Case152 : 
#line 454 "dchop0.ch"
#line 454 "dchop0.ch"
            ;
#line 454 "dchop0.ch"
#line 454 "dchop0.ch"
            return 25 ;
#line 454 "dchop0.ch"
#line 454 "dchop0.ch"
            goto _Case153 ;
#line 454 "dchop0.ch"
#line 455 "dchop0.ch"
        case cplus::RSH_AFF : 
#line 455 "dchop0.ch"
#line 455 "dchop0.ch"
        _Case153 : 
#line 455 "dchop0.ch"
#line 455 "dchop0.ch"
            ;
#line 455 "dchop0.ch"
#line 455 "dchop0.ch"
            return 26 ;
#line 455 "dchop0.ch"
#line 455 "dchop0.ch"
            goto _Case154 ;
#line 455 "dchop0.ch"
#line 456 "dchop0.ch"
        case cplus::AND_AFF : 
#line 456 "dchop0.ch"
#line 456 "dchop0.ch"
        _Case154 : 
#line 456 "dchop0.ch"
#line 456 "dchop0.ch"
            ;
#line 456 "dchop0.ch"
#line 456 "dchop0.ch"
            return 27 ;
#line 456 "dchop0.ch"
#line 456 "dchop0.ch"
            goto _Case155 ;
#line 456 "dchop0.ch"
#line 457 "dchop0.ch"
        case cplus::OR_AFF : 
#line 457 "dchop0.ch"
#line 457 "dchop0.ch"
        _Case155 : 
#line 457 "dchop0.ch"
#line 457 "dchop0.ch"
            ;
#line 457 "dchop0.ch"
#line 457 "dchop0.ch"
            return 28 ;
#line 457 "dchop0.ch"
#line 457 "dchop0.ch"
            goto _Case156 ;
#line 457 "dchop0.ch"
#line 458 "dchop0.ch"
        case cplus::XOR_AFF : 
#line 458 "dchop0.ch"
#line 458 "dchop0.ch"
        _Case156 : 
#line 458 "dchop0.ch"
#line 458 "dchop0.ch"
            ;
#line 458 "dchop0.ch"
#line 458 "dchop0.ch"
            return 29 ;
#line 458 "dchop0.ch"
#line 458 "dchop0.ch"
            goto _Case157 ;
#line 458 "dchop0.ch"
#line 459 "dchop0.ch"
        case cplus::COND_AFF : 
#line 459 "dchop0.ch"
#line 459 "dchop0.ch"
        _Case157 : 
#line 459 "dchop0.ch"
#line 459 "dchop0.ch"
            ;
#line 459 "dchop0.ch"
#line 459 "dchop0.ch"
            return 30 ;
#line 459 "dchop0.ch"
#line 459 "dchop0.ch"
            goto _Case158 ;
#line 459 "dchop0.ch"
#line 460 "dchop0.ch"
        case cplus::EXCEPTION_ANSI : 
#line 460 "dchop0.ch"
#line 460 "dchop0.ch"
        _Case158 : 
#line 460 "dchop0.ch"
#line 460 "dchop0.ch"
            ;
#line 460 "dchop0.ch"
#line 460 "dchop0.ch"
            return 31 ;
#line 460 "dchop0.ch"
#line 460 "dchop0.ch"
            goto _Case159 ;
#line 460 "dchop0.ch"
#line 461 "dchop0.ch"
        case cplus::THROW_ANSI : 
#line 461 "dchop0.ch"
#line 461 "dchop0.ch"
        _Case159 : 
#line 461 "dchop0.ch"
#line 461 "dchop0.ch"
            ;
#line 461 "dchop0.ch"
#line 461 "dchop0.ch"
            return 32 ;
#line 461 "dchop0.ch"
#line 461 "dchop0.ch"
            goto _Case160 ;
#line 461 "dchop0.ch"
#line 462 "dchop0.ch"
        case cplus::CATCH_ANSI : 
#line 462 "dchop0.ch"
#line 462 "dchop0.ch"
        _Case160 : 
#line 462 "dchop0.ch"
#line 462 "dchop0.ch"
            ;
#line 462 "dchop0.ch"
#line 462 "dchop0.ch"
            return 33 ;
#line 462 "dchop0.ch"
#line 462 "dchop0.ch"
            goto _Case161 ;
#line 462 "dchop0.ch"
#line 463 "dchop0.ch"
        default : 
#line 463 "dchop0.ch"
#line 463 "dchop0.ch"
        _Case161 : 
#line 463 "dchop0.ch"
#line 463 "dchop0.ch"
            ;
#line 463 "dchop0.ch"
#line 463 "dchop0.ch"
            return - 1 ;
#line 463 "dchop0.ch"
    }
#line 463 "dchop0.ch"
#line 463 "dchop0.ch"
#line 465 "dchop0.ch"
    SepBefore();
#line 465 "dchop0.ch"
#line 465 "dchop0.ch"
#line 465 "dchop0.ch"
    PrintString(";");
#line 465 "dchop0.ch"
#line 466 "dchop0.ch"
terminal : 
#line 466 "dchop0.ch"
#line 467 "dchop0.ch"
    LNewLine(1);
#line 467 "dchop0.ch"
#line 467 "dchop0.ch"
#line 468 "dchop0.ch"
}
#line 468 "dchop0.ch"

#line 470 "dchop0.ch"
#line 470 "dchop0.ch"
void DecompCplus::clean_tree ( PTREE tree )
#line 470 "dchop0.ch"
{
#line 470 "dchop0.ch"
    register PPTREE _inter ;
#line 470 "dchop0.ch"
#line 470 "dchop0.ch"
#line 472 "dchop0.ch"
    PTREE   father ;
#line 472 "dchop0.ch"
#line 472 "dchop0.ch"
#line 473 "dchop0.ch"
    PPTREE  _for_elem ;
#line 473 "dchop0.ch"
#line 474 "dchop0.ch"
    ItPtree it (tree) ;
#line 474 "dchop0.ch"
#line 476 "dchop0.ch"
    while ( _for_elem = it++ ) {
#line 476 "dchop0.ch"
#line 477 "dchop0.ch"
                                    switch ( NumberTree(for_elem) ) {
#line 477 "dchop0.ch"
#line 480 "dchop0.ch"
                                        case cplus::STAT_VOID : 
#line 480 "dchop0.ch"
#line 480 "dchop0.ch"
                                        _Case162 : 
#line 480 "dchop0.ch"
#line 480 "dchop0.ch"
                                            ;
#line 480 "dchop0.ch"
#line 479 "dchop0.ch"
                                            {
#line 479 "dchop0.ch"
#line 480 "dchop0.ch"
                                                PTREE   father = (PTREE)0 ;
#line 480 "dchop0.ch"
#line 480 "dchop0.ch"
#line 481 "dchop0.ch"
                                                PTREE   son ;
#line 481 "dchop0.ch"
#line 481 "dchop0.ch"
#line 480 "dchop0.ch"
                                                (father=FatherTree(for_elem));
#line 480 "dchop0.ch"
#line 480 "dchop0.ch"
#line 482 "dchop0.ch"
                                                if ( ((_inter = (PPTREE)father,1) && 
#line 482 "dchop0.ch"
                                                        (NumberTree(_inter) == LIST) &&
#line 482 "dchop0.ch"
                                                        1) ) {
#line 482 "dchop0.ch"
#line 483 "dchop0.ch"
                                                                (son=sontree(father, 2));
#line 483 "dchop0.ch"
#line 483 "dchop0.ch"
#line 484 "dchop0.ch"
                                                                if ( (!son) ) {
#line 484 "dchop0.ch"
#line 485 "dchop0.ch"
(father=FatherTree(father));
#line 485 "dchop0.ch"
#line 485 "dchop0.ch"
#line 486 "dchop0.ch"
if ( ((_inter = (PPTREE)father,1) && 
#line 486 "dchop0.ch"
        (NumberTree(_inter) == LIST) &&
#line 486 "dchop0.ch"
        1) ) {
#line 486 "dchop0.ch"
#line 487 "dchop0.ch"
                {
#line 487 "dchop0.ch"
                    PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 487 "dchop0.ch"
                    _ptTree0 = (PPTREE) 0;
#line 487 "dchop0.ch"
                    ReplaceTree(father, 2, _ptTree0);
#line 487 "dchop0.ch"
                }
#line 487 "dchop0.ch"
#line 487 "dchop0.ch"
#line 488 "dchop0.ch"
                it.Current(father);
#line 488 "dchop0.ch"
#line 488 "dchop0.ch"
             }
#line 488 "dchop0.ch"
#line 488 "dchop0.ch"
                                                                                } else 
#line 490 "dchop0.ch"
                                                                {
#line 490 "dchop0.ch"
#line 491 "dchop0.ch"
                                                                    {
#line 491 "dchop0.ch"
                                                                        PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 491 "dchop0.ch"
                                                                        _ptTree0 = StoreRef(sontree(son, 1));
#line 491 "dchop0.ch"
                                                                        ReplaceTree(father, 1, _ptTree0);
#line 491 "dchop0.ch"
                                                                        _ptTree0 = StoreRef(sontree(son, 2));
#line 491 "dchop0.ch"
                                                                        ReplaceTree(father, 2, _ptTree0);
#line 491 "dchop0.ch"
                                                                    }
#line 491 "dchop0.ch"
#line 491 "dchop0.ch"
#line 492 "dchop0.ch"
                                                                    it.Current(father);
#line 492 "dchop0.ch"
#line 492 "dchop0.ch"
                                                                }
#line 492 "dchop0.ch"
#line 492 "dchop0.ch"
                                                             }
#line 492 "dchop0.ch"
#line 495 "dchop0.ch"
                                                break ;
#line 495 "dchop0.ch"
#line 495 "dchop0.ch"
                                            }
#line 495 "dchop0.ch"
#line 495 "dchop0.ch"
                                            goto _Case163 ;
#line 495 "dchop0.ch"
#line 499 "dchop0.ch"
                                        case cplus::AND : 
#line 499 "dchop0.ch"
#line 499 "dchop0.ch"
                                        _Case163 : 
#line 499 "dchop0.ch"
#line 499 "dchop0.ch"
                                            ;
#line 499 "dchop0.ch"
#line 498 "dchop0.ch"
                                            {
#line 498 "dchop0.ch"
#line 499 "dchop0.ch"
                                                PTREE   father = (PTREE)0 ;
#line 499 "dchop0.ch"
#line 499 "dchop0.ch"
#line 500 "dchop0.ch"
                                                int rank ;
#line 500 "dchop0.ch"
#line 501 "dchop0.ch"
                                                PTREE   x, y ;
#line 501 "dchop0.ch"
#line 501 "dchop0.ch"
#line 502 "dchop0.ch"
                                                int modified = 0 ;
#line 502 "dchop0.ch"
#line 499 "dchop0.ch"
                                                (father=FatherTree(for_elem));
#line 499 "dchop0.ch"
#line 499 "dchop0.ch"
#line 503 "dchop0.ch"
                                                if ( ((_inter = (PPTREE)for_elem,1) && 
#line 503 "dchop0.ch"
                                                        (NumberTree(_inter) == cplus::AND) &&
#line 503 "dchop0.ch"
                                                        (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),1) &&
#line 503 "dchop0.ch"
                                                            (NumberTree(_inter) == cplus::INTEGER) &&
#line 503 "dchop0.ch"
                                                            ((x=SonTree(_inter,1)),1) &&
#line 503 "dchop0.ch"
                                                            1),
#line 503 "dchop0.ch"
                                                            (_inter=_storeVal[1],1),_retVal[1]) &&
#line 503 "dchop0.ch"
                                                        1) || ((_inter = (PPTREE)for_elem,1) && 
#line 503 "dchop0.ch"
                                                                    (NumberTree(_inter) == cplus::AND) &&
#line 503 "dchop0.ch"
                                                                    (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,2),1) &&
#line 503 "dchop0.ch"
                                                                        (NumberTree(_inter) == cplus::INTEGER) &&
#line 503 "dchop0.ch"
                                                                        ((y=SonTree(_inter,1)),1) &&
#line 503 "dchop0.ch"
                                                                        1),
#line 503 "dchop0.ch"
                                                                        (_inter=_storeVal[1],1),_retVal[1]) &&
#line 503 "dchop0.ch"
                                                                    1) ) {
#line 503 "dchop0.ch"
#line 505 "dchop0.ch"
rank = ranktree(for_elem);
#line 505 "dchop0.ch"
#line 506 "dchop0.ch"
if ( x && !strcmp(BrainyValue(x), "1") ) {
#line 506 "dchop0.ch"
#line 507 "dchop0.ch"
                                                replacetree(father, rank, sontree(for_elem, 2));
#line 507 "dchop0.ch"
#line 508 "dchop0.ch"
                                                modified = 1 ;
#line 508 "dchop0.ch"
#line 508 "dchop0.ch"
                                              }
#line 508 "dchop0.ch"
#line 510 "dchop0.ch"
if ( y && !strcmp(BrainyValue(y), "1") ) {
#line 510 "dchop0.ch"
#line 511 "dchop0.ch"
                                                replacetree(father, rank, sontree(for_elem, 1));
#line 511 "dchop0.ch"
#line 512 "dchop0.ch"
                                                modified = 1 ;
#line 512 "dchop0.ch"
#line 512 "dchop0.ch"
                                              }
#line 512 "dchop0.ch"
#line 514 "dchop0.ch"
if ( modified ) 
#line 514 "dchop0.ch"
#line 515 "dchop0.ch"
    it.Current(father);
#line 515 "dchop0.ch"
#line 515 "dchop0.ch"
                                                                         }
#line 515 "dchop0.ch"
#line 517 "dchop0.ch"
                                                break ;
#line 517 "dchop0.ch"
#line 517 "dchop0.ch"
                                            }
#line 517 "dchop0.ch"
#line 517 "dchop0.ch"
                                            goto _Case164 ;
#line 517 "dchop0.ch"
#line 521 "dchop0.ch"
                                        case cplus::NOT : 
#line 521 "dchop0.ch"
#line 521 "dchop0.ch"
                                        _Case164 : 
#line 521 "dchop0.ch"
#line 521 "dchop0.ch"
                                            ;
#line 521 "dchop0.ch"
#line 520 "dchop0.ch"
                                            {
#line 520 "dchop0.ch"
#line 521 "dchop0.ch"
                                                PTREE   father = (PTREE)0 ;
#line 521 "dchop0.ch"
#line 521 "dchop0.ch"
#line 522 "dchop0.ch"
                                                PTREE   exp ;
#line 522 "dchop0.ch"
#line 522 "dchop0.ch"
#line 521 "dchop0.ch"
                                                (father=FatherTree(for_elem));
#line 521 "dchop0.ch"
#line 521 "dchop0.ch"
#line 523 "dchop0.ch"
                                                if ( ((_inter = (PPTREE)for_elem,1) && 
#line 523 "dchop0.ch"
                                                        (NumberTree(_inter) == cplus::NOT) &&
#line 523 "dchop0.ch"
                                                        (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),1) &&
#line 523 "dchop0.ch"
                                                            (NumberTree(_inter) == cplus::NOT) &&
#line 523 "dchop0.ch"
                                                            ((exp=SonTree(_inter,1)),1) &&
#line 523 "dchop0.ch"
                                                            1),
#line 523 "dchop0.ch"
                                                            (_inter=_storeVal[1],1),_retVal[1]) &&
#line 523 "dchop0.ch"
                                                        1) ) {
#line 523 "dchop0.ch"
#line 524 "dchop0.ch"
                                                                {
#line 524 "dchop0.ch"
                                                                    PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 524 "dchop0.ch"
                                                                    if (_ptTree0= fathertree(for_elem)) {
#line 524 "dchop0.ch"
                                                                        int rank = ranktree(for_elem);
#line 524 "dchop0.ch"
                                                                        ReplaceTree(_ptTree0,rank,exp);
#line 524 "dchop0.ch"
                                                                    }
#line 524 "dchop0.ch"
                                                                }
#line 524 "dchop0.ch"
#line 524 "dchop0.ch"
#line 525 "dchop0.ch"
                                                                if ( father ) 
#line 525 "dchop0.ch"
#line 526 "dchop0.ch"
                                                                    it.Current(father);
#line 526 "dchop0.ch"
                                                                else 
#line 526 "dchop0.ch"
#line 528 "dchop0.ch"
                                                                    it.Current(exp);
#line 528 "dchop0.ch"
#line 528 "dchop0.ch"
#line 528 "dchop0.ch"
                                                             }
#line 528 "dchop0.ch"
#line 530 "dchop0.ch"
                                                break ;
#line 530 "dchop0.ch"
#line 530 "dchop0.ch"
                                            }
#line 530 "dchop0.ch"
#line 530 "dchop0.ch"
                                            goto _Case165 ;
#line 530 "dchop0.ch"
#line 534 "dchop0.ch"
                                        case cplus::EXP : 
#line 534 "dchop0.ch"
#line 534 "dchop0.ch"
                                        _Case165 : 
#line 534 "dchop0.ch"
#line 534 "dchop0.ch"
                                            ;
#line 534 "dchop0.ch"
#line 533 "dchop0.ch"
                                            {
#line 533 "dchop0.ch"
#line 534 "dchop0.ch"
                                                PTREE   father = (PTREE)0 ;
#line 534 "dchop0.ch"
#line 534 "dchop0.ch"
#line 534 "dchop0.ch"
                                                (father=FatherTree(for_elem));
#line 534 "dchop0.ch"
#line 534 "dchop0.ch"
#line 535 "dchop0.ch"
                                                if ( ((_inter = (PPTREE)father,1) && 
#line 535 "dchop0.ch"
                                                        (NumberTree(_inter) == cplus::CAST) &&
#line 535 "dchop0.ch"
                                                        1) || ( _inter = 
#line 535 "dchop0.ch"
                                                                FatherTree(father),((_inter = (PPTREE)_inter,1) && 
#line 535 "dchop0.ch"
(NumberTree(_inter) == cplus::PARAM_TYPE) &&
#line 535 "dchop0.ch"
1)                                                            ) ) 
#line 535 "dchop0.ch"
#line 536 "dchop0.ch"
                                                    break ;
#line 536 "dchop0.ch"
#line 537 "dchop0.ch"
                                                if ( OpPriority(father) < OpPriority(sontree(for_elem, 1)) ) {
#line 537 "dchop0.ch"
#line 539 "dchop0.ch"
PTREE   keep = (PTREE)0 ;
#line 539 "dchop0.ch"
#line 539 "dchop0.ch"
#line 539 "dchop0.ch"
(keep=father);
#line 539 "dchop0.ch"
#line 539 "dchop0.ch"
#line 540 "dchop0.ch"
replacetree(father, ranktree(for_elem), sontree(for_elem, 1));
#line 540 "dchop0.ch"
#line 542 "dchop0.ch"
it.Current(keep);
#line 542 "dchop0.ch"
#line 542 "dchop0.ch"
                                                                                                                   } else 
#line 543 "dchop0.ch"
                                                if ( OpPriority(father) == OpPriority(sontree(for_elem, 1)) ) {
#line 543 "dchop0.ch"
#line 545 "dchop0.ch"
PTREE   keep = (PTREE)0 ;
#line 545 "dchop0.ch"
#line 545 "dchop0.ch"
#line 545 "dchop0.ch"
(keep=father);
#line 545 "dchop0.ch"
#line 545 "dchop0.ch"
#line 546 "dchop0.ch"
switch ( treearity(keep) ) {
#line 546 "dchop0.ch"
#line 547 "dchop0.ch"
    case 2 : 
#line 547 "dchop0.ch"
#line 548 "dchop0.ch"
        if ( ranktree(for_elem) == 1 && OpAssociativity(keep) == LEFT_TO_RIGHT || ranktree(for_elem) == 2 && OpAssociativity(keep) == RIGHT_TO_LEFT ) {
#line 548 "dchop0.ch"
#line 554 "dchop0.ch"
replacetree(keep, ranktree(for_elem), sontree(for_elem, 1));
#line 554 "dchop0.ch"
#line 556 "dchop0.ch"
it.Current(keep);
#line 556 "dchop0.ch"
#line 556 "dchop0.ch"
                                                                                                                                                                  }
#line 556 "dchop0.ch"
#line 558 "dchop0.ch"
        break ;
#line 558 "dchop0.ch"
#line 559 "dchop0.ch"
    case 1 : 
#line 559 "dchop0.ch"
#line 560 "dchop0.ch"
        if ( OpAssociativity(keep) == RIGHT_TO_LEFT ) {
#line 560 "dchop0.ch"
#line 561 "dchop0.ch"
                                                            if ( !(((_inter = (PPTREE)keep,1) && 
#line 561 "dchop0.ch"
                                                                        (NumberTree(_inter) == cplus::AINCR) &&
#line 561 "dchop0.ch"
                                                                        1)) && !(((_inter = (PPTREE)keep,1) && 
#line 561 "dchop0.ch"
(NumberTree(_inter) == cplus::ADECR) &&
#line 561 "dchop0.ch"
1)                                                                             ) ) {
#line 561 "dchop0.ch"
#line 562 "dchop0.ch"
replacetree(keep, 1, sontree(for_elem, 1));
#line 562 "dchop0.ch"
#line 564 "dchop0.ch"
it.Current(keep);
#line 564 "dchop0.ch"
#line 564 "dchop0.ch"
                                                                                   }
#line 564 "dchop0.ch"
#line 564 "dchop0.ch"
                                                         }
#line 564 "dchop0.ch"
#line 567 "dchop0.ch"
        break ;
#line 567 "dchop0.ch"
#line 568 "dchop0.ch"
    default : 
#line 568 "dchop0.ch"
#line 568 "dchop0.ch"
        break ;
#line 568 "dchop0.ch"
}
#line 568 "dchop0.ch"
#line 568 "dchop0.ch"
#line 568 "dchop0.ch"
                                                                                                                    }
#line 568 "dchop0.ch"
#line 568 "dchop0.ch"
                                            }
#line 568 "dchop0.ch"
                                    }
#line 568 "dchop0.ch"
#line 568 "dchop0.ch"
#line 568 "dchop0.ch"
                                 }
#line 568 "dchop0.ch"
#line 574 "dchop0.ch"
}
#line 574 "dchop0.ch"
/*Well done my boy */ 
#line 574 "dchop0.ch"

