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

#line 31 "clpretty.ch"
#line 31 "clpretty.ch"
void clpretty::PutAttr ( PTREE tree, PTREE listAttr, int attr, int pos )
#line 31 "clpretty.ch"
{
#line 31 "clpretty.ch"
    register PPTREE _inter ;
#line 31 "clpretty.ch"
#line 31 "clpretty.ch"
#line 35 "clpretty.ch"
    PTREE   father = (PTREE)0 ;
#line 35 "clpretty.ch"
#line 35 "clpretty.ch"
#line 36 "clpretty.ch"
    int rank = ranktree(tree);
#line 36 "clpretty.ch"
#line 37 "clpretty.ch"
    PTREE   oldListAttr ;
#line 37 "clpretty.ch"
#line 37 "clpretty.ch"
#line 35 "clpretty.ch"
    (father=FatherTree(tree));
#line 35 "clpretty.ch"
#line 35 "clpretty.ch"
#line 40 "clpretty.ch"
    if ( ((_inter = (PPTREE)tree,1) && 
#line 40 "clpretty.ch"
            (NumberTree(_inter) == pretty::ATTRIBUTS) &&
#line 40 "clpretty.ch"
            1) ) 
#line 40 "clpretty.ch"
#line 41 "clpretty.ch"
        (father=tree);
#line 41 "clpretty.ch"
#line 41 "clpretty.ch"
#line 44 "clpretty.ch"
    oldListAttr = (PPTREE) 0 ;
#line 44 "clpretty.ch"
#line 44 "clpretty.ch"
#line 45 "clpretty.ch"
    if ( attr == POST_ATTR ) {
#line 45 "clpretty.ch"
#line 46 "clpretty.ch"
                                ((_inter = (PPTREE)father,1) && 
#line 46 "clpretty.ch"
                                    (NumberTree(_inter) == pretty::ATTRIBUTS) &&
#line 46 "clpretty.ch"
                                    ((oldListAttr=SonTree(_inter,3)),1) &&
#line 46 "clpretty.ch"
                                    1);
#line 46 "clpretty.ch"
                                ;
#line 46 "clpretty.ch"
#line 46 "clpretty.ch"
                               } else 
#line 47 "clpretty.ch"
    {
#line 47 "clpretty.ch"
#line 48 "clpretty.ch"
        ((_inter = (PPTREE)father,1) && 
#line 48 "clpretty.ch"
            (NumberTree(_inter) == pretty::ATTRIBUTS) &&
#line 48 "clpretty.ch"
            ((oldListAttr=SonTree(_inter,2)),1) &&
#line 48 "clpretty.ch"
            1);
#line 48 "clpretty.ch"
        ;
#line 48 "clpretty.ch"
#line 48 "clpretty.ch"
    }
#line 48 "clpretty.ch"
#line 52 "clpretty.ch"
    {
#line 52 "clpretty.ch"
#line 53 "clpretty.ch"
        if ( oldListAttr ) {
#line 53 "clpretty.ch"
#line 54 "clpretty.ch"
                                if ( pos == PUT_BEG ) {
#line 54 "clpretty.ch"
#line 55 "clpretty.ch"
                                                            (oldListAttr=AddListList(copytree(listAttr), oldListAttr));
#line 55 "clpretty.ch"
#line 55 "clpretty.ch"
#line 55 "clpretty.ch"
                                                        } else 
#line 56 "clpretty.ch"
                                {
#line 56 "clpretty.ch"
#line 57 "clpretty.ch"
                                    (oldListAttr=AddListList(oldListAttr, copytree(listAttr)));
#line 57 "clpretty.ch"
#line 57 "clpretty.ch"
#line 57 "clpretty.ch"
                                }
#line 57 "clpretty.ch"
#line 57 "clpretty.ch"
                            } else 
#line 57 "clpretty.ch"
#line 60 "clpretty.ch"
            (oldListAttr=copytree(listAttr));
#line 60 "clpretty.ch"
#line 60 "clpretty.ch"
#line 60 "clpretty.ch"
#line 60 "clpretty.ch"
    }
#line 60 "clpretty.ch"
#line 64 "clpretty.ch"
    if ( ((_inter = (PPTREE)father,1) && 
#line 64 "clpretty.ch"
            (NumberTree(_inter) == pretty::ATTRIBUTS) &&
#line 64 "clpretty.ch"
            1) ) {
#line 64 "clpretty.ch"
#line 65 "clpretty.ch"
                    if ( attr == PRE_ATTR ) {
#line 65 "clpretty.ch"
#line 66 "clpretty.ch"
                                                {
#line 66 "clpretty.ch"
                                                    PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 66 "clpretty.ch"
                                                    ReplaceTree(father, 2, oldListAttr);
#line 66 "clpretty.ch"
                                                }
#line 66 "clpretty.ch"
#line 66 "clpretty.ch"
#line 66 "clpretty.ch"
                                              } else 
#line 67 "clpretty.ch"
                    {
#line 67 "clpretty.ch"
#line 68 "clpretty.ch"
                        {
#line 68 "clpretty.ch"
                            PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 68 "clpretty.ch"
                            ReplaceTree(father, 3, oldListAttr);
#line 68 "clpretty.ch"
                        }
#line 68 "clpretty.ch"
#line 68 "clpretty.ch"
#line 68 "clpretty.ch"
                    }
#line 68 "clpretty.ch"
#line 68 "clpretty.ch"
                 } else 
#line 70 "clpretty.ch"
    {
#line 70 "clpretty.ch"
#line 71 "clpretty.ch"
        if ( attr == PRE_ATTR ) {
#line 71 "clpretty.ch"
#line 71 "clpretty.ch"
                                    PTREE   _Baum0 ;
#line 71 "clpretty.ch"
#line 71 "clpretty.ch"
#line 72 "clpretty.ch"
                                    {
#line 72 "clpretty.ch"
                                        PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 72 "clpretty.ch"
                                        _ptRes0 = MakeTree(pretty::ATTRIBUTS, 3);
#line 72 "clpretty.ch"
                                        ReplaceTree(_ptRes0, 1, tree);
#line 72 "clpretty.ch"
                                        ReplaceTree(_ptRes0, 2, oldListAttr);
#line 72 "clpretty.ch"
                                        _Baum0 = _ptRes0;
#line 72 "clpretty.ch"
                                    }
#line 72 "clpretty.ch"
#line 72 "clpretty.ch"
#line 72 "clpretty.ch"
                                    replacetree(father, rank, _Baum0);
#line 72 "clpretty.ch"
#line 72 "clpretty.ch"
                                  } else 
#line 73 "clpretty.ch"
        {
#line 73 "clpretty.ch"
#line 73 "clpretty.ch"
            PTREE   _Baum1 ;
#line 73 "clpretty.ch"
#line 73 "clpretty.ch"
#line 74 "clpretty.ch"
            {
#line 74 "clpretty.ch"
                PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 74 "clpretty.ch"
                _ptRes0 = MakeTree(pretty::ATTRIBUTS, 3);
#line 74 "clpretty.ch"
                ReplaceTree(_ptRes0, 1, tree);
#line 74 "clpretty.ch"
                ReplaceTree(_ptRes0, 3, oldListAttr);
#line 74 "clpretty.ch"
                _Baum1 = _ptRes0;
#line 74 "clpretty.ch"
            }
#line 74 "clpretty.ch"
#line 74 "clpretty.ch"
#line 74 "clpretty.ch"
            replacetree(father, rank, _Baum1);
#line 74 "clpretty.ch"
#line 74 "clpretty.ch"
        }
#line 74 "clpretty.ch"
#line 74 "clpretty.ch"
    }
#line 74 "clpretty.ch"
#line 77 "clpretty.ch"
}
#line 77 "clpretty.ch"

#line 82 "clpretty.ch"
#line 82 "clpretty.ch"
void clpretty::CompleteCoordinates ( PTREE currTree )
#line 82 "clpretty.ch"
{
#line 82 "clpretty.ch"
    register PPTREE _inter ;
#line 82 "clpretty.ch"
#line 82 "clpretty.ch"
#line 86 "clpretty.ch"
    int x ;
#line 86 "clpretty.ch"
#line 87 "clpretty.ch"
    int y ;
#line 87 "clpretty.ch"
#line 88 "clpretty.ch"
    int dx ;
#line 88 "clpretty.ch"
#line 89 "clpretty.ch"
    int maxDx = 0 ;
#line 89 "clpretty.ch"
#line 90 "clpretty.ch"
    int posMark ;
#line 90 "clpretty.ch"
#line 91 "clpretty.ch"
    int oldCurrMark = currMark ;
#line 91 "clpretty.ch"
#line 92 "clpretty.ch"
    int withCoordinate ;
#line 92 "clpretty.ch"
#line 93 "clpretty.ch"
    PTREE   inter ;
#line 93 "clpretty.ch"
#line 93 "clpretty.ch"
#line 96 "clpretty.ch"
    if ( ((_inter = (PPTREE)currTree,1) && 
#line 96 "clpretty.ch"
            (NumberTree(_inter) == pretty::ATTRIBUTS) &&
#line 96 "clpretty.ch"
            ((inter=SonTree(_inter,1)),1) &&
#line 96 "clpretty.ch"
            1) ) {
#line 96 "clpretty.ch"
#line 97 "clpretty.ch"
                    CompleteCoordinates(inter);
#line 97 "clpretty.ch"
#line 98 "clpretty.ch"
                    GetCoord(inter, &x, &y, &dx, &posMark);
#line 98 "clpretty.ch"
#line 99 "clpretty.ch"
                    PutCoord(currTree, x, y, dx, posMark);
#line 99 "clpretty.ch"
#line 100 "clpretty.ch"
                    return ;
#line 100 "clpretty.ch"
#line 100 "clpretty.ch"
                 }
#line 100 "clpretty.ch"
#line 102 "clpretty.ch"
    withCoordinate = GetCoord(currTree, &x, &y, &dx, &posMark);
#line 102 "clpretty.ch"
#line 105 "clpretty.ch"
    if ( withCoordinate ) {
#line 105 "clpretty.ch"
#line 106 "clpretty.ch"
                            currMark = posMark ;
#line 106 "clpretty.ch"
#line 106 "clpretty.ch"
                           }
#line 106 "clpretty.ch"
#line 110 "clpretty.ch"
    {
#line 110 "clpretty.ch"
#line 110 "clpretty.ch"
        int _for_slot = 1, _arity = treearity(currTree);
#line 110 "clpretty.ch"
#line 110 "clpretty.ch"
        MY_TREE _for_elem = (PPTREE)0 ;
#line 110 "clpretty.ch"
#line 110 "clpretty.ch"
#line 110 "clpretty.ch"
        for (; _for_slot <= _arity ; _for_slot++ ) {
#line 110 "clpretty.ch"
#line 110 "clpretty.ch"
            _for_elem = SonTree(currTree, _for_slot);
#line 110 "clpretty.ch"
#line 111 "clpretty.ch"
            if ( _for_elem && NumberTree(_for_elem) != IN_LANGUAGE ) 
#line 111 "clpretty.ch"
#line 111 "clpretty.ch"
                CompleteCoordinates(for_elem);
#line 111 "clpretty.ch"
#line 111 "clpretty.ch"
        }
#line 111 "clpretty.ch"
#line 111 "clpretty.ch"
#line 111 "clpretty.ch"
    }
#line 111 "clpretty.ch"
#line 115 "clpretty.ch"
    if ( !withCoordinate && !(((_inter = (PPTREE)currTree,1) && 
#line 115 "clpretty.ch"
                                    (NumberTree(_inter) == TERM_TREE) &&
#line 115 "clpretty.ch"
                                    1)) ) {
#line 115 "clpretty.ch"
#line 116 "clpretty.ch"
                                            int multiLine = 0 ;
#line 116 "clpretty.ch"
#line 117 "clpretty.ch"
                                            int newLine = 0 ;
#line 117 "clpretty.ch"
#line 120 "clpretty.ch"
                                            {
#line 120 "clpretty.ch"
#line 123 "clpretty.ch"
                                                {
#line 123 "clpretty.ch"
#line 123 "clpretty.ch"
                                                    int _for_slot = 1, _arity = treearity(currTree);
#line 123 "clpretty.ch"
#line 123 "clpretty.ch"
                                                    MY_TREE _for_elem = (PPTREE)0 ;
#line 123 "clpretty.ch"
#line 123 "clpretty.ch"
#line 123 "clpretty.ch"
                                                    for (; _for_slot <= _arity ; _for_slot++ ) {
#line 123 "clpretty.ch"
#line 123 "clpretty.ch"
                                                        _for_elem = SonTree(currTree, _for_slot);
#line 123 "clpretty.ch"
#line 124 "clpretty.ch"
                                                        if ( _for_elem && NumberTree(_for_elem) != IN_LANGUAGE ) {
#line 124 "clpretty.ch"
#line 124 "clpretty.ch"
GetCoord(for_elem, &x, &y, &dx, &posMark);
#line 124 "clpretty.ch"
#line 125 "clpretty.ch"
multiLine |= y & 0x2 ;
#line 125 "clpretty.ch"
#line 126 "clpretty.ch"
newLine |= y & 0x4 ;
#line 126 "clpretty.ch"
#line 127 "clpretty.ch"
if ( !dx ) {
#line 127 "clpretty.ch"
#line 128 "clpretty.ch"
                if ( ((_inter = (PPTREE)for_elem,1) && 
#line 128 "clpretty.ch"
                        (NumberTree(_inter) == TERM_TREE) &&
#line 128 "clpretty.ch"
                        1) ) 
#line 128 "clpretty.ch"
#line 129 "clpretty.ch"
                    dx = strlen(Value(for_elem));
#line 129 "clpretty.ch"
#line 129 "clpretty.ch"
             }
#line 129 "clpretty.ch"
#line 131 "clpretty.ch"
if ( x + dx > maxDx ) 
#line 131 "clpretty.ch"
#line 132 "clpretty.ch"
    maxDx = x + dx ;
#line 132 "clpretty.ch"
#line 132 "clpretty.ch"
                                                                                                                 }
#line 132 "clpretty.ch"
#line 132 "clpretty.ch"
                                                    }
#line 132 "clpretty.ch"
#line 132 "clpretty.ch"
#line 132 "clpretty.ch"
                                                }
#line 132 "clpretty.ch"
#line 132 "clpretty.ch"
                                            }
#line 132 "clpretty.ch"
#line 137 "clpretty.ch"
                                            if ( newLine ) 
#line 137 "clpretty.ch"
#line 138 "clpretty.ch"
                                                multiLine = 0x2 ;
#line 138 "clpretty.ch"
#line 139 "clpretty.ch"
                                            PutCoord(currTree, 0, newLine | multiLine, maxDx, currMark);
#line 139 "clpretty.ch"
#line 139 "clpretty.ch"
                                          }
#line 139 "clpretty.ch"
#line 143 "clpretty.ch"
    currMark = oldCurrMark ;
#line 143 "clpretty.ch"
#line 144 "clpretty.ch"
}
#line 144 "clpretty.ch"

#line 148 "clpretty.ch"
#line 148 "clpretty.ch"
int clpretty::GetBoxSize ( PTREE box )
#line 148 "clpretty.ch"
{
#line 148 "clpretty.ch"
    register PPTREE _inter ;
#line 148 "clpretty.ch"
#line 148 "clpretty.ch"
#line 151 "clpretty.ch"
    int x, y, dx, posMark ;
#line 151 "clpretty.ch"
#line 152 "clpretty.ch"
    int maxDx = - 10000 ;
#line 152 "clpretty.ch"
#line 154 "clpretty.ch"
    GetCoord(box, &x, &y, &dx, &posMark);
#line 154 "clpretty.ch"
#line 155 "clpretty.ch"
    if ( dx <= 1 ) {
#line 155 "clpretty.ch"
#line 156 "clpretty.ch"
                        if ( ((_inter = (PPTREE)box,1) && 
#line 156 "clpretty.ch"
                                (NumberTree(_inter) == TERM_TREE) &&
#line 156 "clpretty.ch"
                                1) ) 
#line 156 "clpretty.ch"
#line 157 "clpretty.ch"
                            return x + strlen(Value(box));
#line 157 "clpretty.ch"
                        else 
#line 158 "clpretty.ch"
                        {
#line 158 "clpretty.ch"
#line 159 "clpretty.ch"
                            {
#line 159 "clpretty.ch"
#line 159 "clpretty.ch"
                                int _for_slot = 1, _arity = treearity(box);
#line 159 "clpretty.ch"
#line 159 "clpretty.ch"
                                MY_TREE _for_elem = (PPTREE)0 ;
#line 159 "clpretty.ch"
#line 159 "clpretty.ch"
#line 159 "clpretty.ch"
                                for (; _for_slot <= _arity ; _for_slot++ ) {
#line 159 "clpretty.ch"
#line 159 "clpretty.ch"
                                    _for_elem = SonTree(box, _for_slot);
#line 159 "clpretty.ch"
#line 160 "clpretty.ch"
                                    if ( _for_elem && NumberTree(_for_elem) != IN_LANGUAGE ) {
#line 160 "clpretty.ch"
#line 160 "clpretty.ch"
dx = GetBoxSize(for_elem);
#line 160 "clpretty.ch"
#line 161 "clpretty.ch"
if ( dx > maxDx ) 
#line 161 "clpretty.ch"
#line 162 "clpretty.ch"
    maxDx = dx ;
#line 162 "clpretty.ch"
#line 162 "clpretty.ch"
                                                                                             }
#line 162 "clpretty.ch"
#line 162 "clpretty.ch"
                                }
#line 162 "clpretty.ch"
#line 162 "clpretty.ch"
#line 162 "clpretty.ch"
                            }
#line 162 "clpretty.ch"
#line 164 "clpretty.ch"
                            return x + maxDx ;
#line 164 "clpretty.ch"
#line 164 "clpretty.ch"
                        }
#line 164 "clpretty.ch"
#line 164 "clpretty.ch"
                     } else 
#line 164 "clpretty.ch"
#line 167 "clpretty.ch"
        return x + dx ;
#line 167 "clpretty.ch"
#line 167 "clpretty.ch"
#line 168 "clpretty.ch"
}
#line 168 "clpretty.ch"

#line 172 "clpretty.ch"
#line 172 "clpretty.ch"
void clpretty::TraitMark ( PTREE tree, int newMark )
#line 172 "clpretty.ch"
{
#line 172 "clpretty.ch"
#line 175 "clpretty.ch"
    int x, y, dx, dy ;
#line 175 "clpretty.ch"
#line 177 "clpretty.ch"
    {
#line 177 "clpretty.ch"
#line 177 "clpretty.ch"
        ItPtree _iterator1 (tree, (PPTREE) 0) ;
#line 177 "clpretty.ch"
#line 177 "clpretty.ch"
        PPTREE  _for_elem ;
#line 177 "clpretty.ch"
#line 177 "clpretty.ch"
        _iterator1.AllSearch(1);
#line 177 "clpretty.ch"
#line 178 "clpretty.ch"
        while ( _for_elem = _iterator1++ ) {
#line 178 "clpretty.ch"
#line 177 "clpretty.ch"
            {
#line 177 "clpretty.ch"
#line 178 "clpretty.ch"
                if ( GetCoord(for_elem, &x, &y, &dx, &dy) ) 
#line 178 "clpretty.ch"
#line 179 "clpretty.ch"
                    PutCoord(for_elem, x, y, dx, newMark);
#line 179 "clpretty.ch"
#line 179 "clpretty.ch"
            }
#line 179 "clpretty.ch"
#line 179 "clpretty.ch"
            _iterator1.Current(_for_elem);
#line 179 "clpretty.ch"
#line 179 "clpretty.ch"
            continue ;
#line 179 "clpretty.ch"
#line 179 "clpretty.ch"
        for_continue1 : 
#line 179 "clpretty.ch"
#line 179 "clpretty.ch"
            _iterator1.Current(_for_elem);
#line 179 "clpretty.ch"
#line 179 "clpretty.ch"
            _iterator1.SkipSon(1);
#line 179 "clpretty.ch"
#line 179 "clpretty.ch"
            continue ;
#line 179 "clpretty.ch"
#line 179 "clpretty.ch"
        for_break1 : 
#line 179 "clpretty.ch"
#line 179 "clpretty.ch"
            break ;
#line 179 "clpretty.ch"
#line 179 "clpretty.ch"
        }
#line 179 "clpretty.ch"
#line 179 "clpretty.ch"
    }
#line 179 "clpretty.ch"
#line 181 "clpretty.ch"
}
#line 181 "clpretty.ch"

#line 185 "clpretty.ch"
#line 185 "clpretty.ch"
void clpretty::TraiterExp3 ( PTREE tree, int x0 )
#line 185 "clpretty.ch"
{
#line 185 "clpretty.ch"
    register PPTREE _inter ;
#line 185 "clpretty.ch"
#line 185 "clpretty.ch"
#line 185 "clpretty.ch"
    PTREE   _Baum0 ;
#line 185 "clpretty.ch"
#line 185 "clpretty.ch"
#line 188 "clpretty.ch"
    PTREE   son1, son2, list1, list2 ;
#line 188 "clpretty.ch"
#line 188 "clpretty.ch"
#line 189 "clpretty.ch"
    PTREE   refTree ;
#line 189 "clpretty.ch"
#line 189 "clpretty.ch"
#line 190 "clpretty.ch"
    char    string [3];
#line 190 "clpretty.ch"
#line 191 "clpretty.ch"
    int posRef, colRef, x, y, dx, dy, delta, ret, y0 ;
#line 191 "clpretty.ch"
#line 192 "clpretty.ch"
    PTREE   postAttribute ;
#line 192 "clpretty.ch"
#line 192 "clpretty.ch"
#line 193 "clpretty.ch"
    PTREE   preAttribute ;
#line 193 "clpretty.ch"
#line 193 "clpretty.ch"
#line 194 "clpretty.ch"
    int maxDx = 0 ;
#line 194 "clpretty.ch"
#line 197 "clpretty.ch"
    GetCoord(tree, &x, &y, &dx, &colRef);
#line 197 "clpretty.ch"
#line 198 "clpretty.ch"
    x0 += x ;
#line 198 "clpretty.ch"
#line 199 "clpretty.ch"
    if ( x0 + dx <= rightMargin ) 
#line 199 "clpretty.ch"
#line 200 "clpretty.ch"
        return ;
#line 200 "clpretty.ch"
#line 201 "clpretty.ch"
    MarkCoordTree(tree, x0, 0);
#line 201 "clpretty.ch"
#line 204 "clpretty.ch"
    ((_inter = (PPTREE)tree,1) && 
#line 204 "clpretty.ch"
        ((son1=SonTree(_inter,2)),1) &&
#line 204 "clpretty.ch"
        ((son2=SonTree(_inter,3)),1) &&
#line 204 "clpretty.ch"
        1);
#line 204 "clpretty.ch"
    ;
#line 204 "clpretty.ch"
#line 207 "clpretty.ch"
    if ( colRef == markTab ) {
#line 207 "clpretty.ch"
#line 208 "clpretty.ch"
                                posRef = TAB_VALUE(colRef, nbTab + 1);
#line 208 "clpretty.ch"
#line 209 "clpretty.ch"
                                sprintf(string, "%d", nbTab + 1);
#line 209 "clpretty.ch"
#line 209 "clpretty.ch"
                               } else 
#line 210 "clpretty.ch"
    {
#line 210 "clpretty.ch"
#line 211 "clpretty.ch"
        posRef = TAB_VALUE(colRef, 1);
#line 211 "clpretty.ch"
#line 212 "clpretty.ch"
        strcpy(string, "1");
#line 212 "clpretty.ch"
#line 212 "clpretty.ch"
    }
#line 212 "clpretty.ch"
#line 214 "clpretty.ch"
    {
#line 214 "clpretty.ch"
        PPTREE _ptTree0=(PPTREE) 0;
#line 214 "clpretty.ch"
        _ptTree0 = (PPTREE) 0;
#line 214 "clpretty.ch"
        {
#line 214 "clpretty.ch"
            PPTREE _ptTree1= (PPTREE) 0 ;
#line 214 "clpretty.ch"
            {
#line 214 "clpretty.ch"
                PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 214 "clpretty.ch"
                _ptRes2 = MakeTree(pretty::NEWLINE, 1);
#line 214 "clpretty.ch"
                _ptTree2 = MakeString("1") ;
#line 214 "clpretty.ch"
                ReplaceTree(_ptRes2, 1, _ptTree2);
#line 214 "clpretty.ch"
                _ptTree1 = _ptRes2;
#line 214 "clpretty.ch"
            }
#line 214 "clpretty.ch"
            _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 214 "clpretty.ch"
        }
#line 214 "clpretty.ch"
        {
#line 214 "clpretty.ch"
            PPTREE _ptTree1= (PPTREE) 0 ;
#line 214 "clpretty.ch"
            {
#line 214 "clpretty.ch"
                PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 214 "clpretty.ch"
                _ptRes2 = MakeTree(pretty::TAB, 1);
#line 214 "clpretty.ch"
                _ptTree2 = StoreRef(MakeString(string));
#line 214 "clpretty.ch"
                ReplaceTree(_ptRes2, 1, _ptTree2);
#line 214 "clpretty.ch"
                _ptTree1 = _ptRes2;
#line 214 "clpretty.ch"
            }
#line 214 "clpretty.ch"
            _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 214 "clpretty.ch"
        }
#line 214 "clpretty.ch"
        {
#line 214 "clpretty.ch"
            PPTREE _ptTree1= (PPTREE) 0 ;
#line 214 "clpretty.ch"
            {
#line 214 "clpretty.ch"
                PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 214 "clpretty.ch"
                _ptRes2 = MakeTree(pretty::MARK, 0);
#line 214 "clpretty.ch"
                _ptTree1 = _ptRes2;
#line 214 "clpretty.ch"
            }
#line 214 "clpretty.ch"
            _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 214 "clpretty.ch"
        }
#line 214 "clpretty.ch"
        {
#line 214 "clpretty.ch"
            PPTREE _ptTree1= (PPTREE) 0 ;
#line 214 "clpretty.ch"
            {
#line 214 "clpretty.ch"
                PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 214 "clpretty.ch"
                _ptRes2 = MakeTree(pretty::STR, 1);
#line 214 "clpretty.ch"
                _ptTree2 = MakeString("   ") ;
#line 214 "clpretty.ch"
                ReplaceTree(_ptRes2, 1, _ptTree2);
#line 214 "clpretty.ch"
                _ptTree1 = _ptRes2;
#line 214 "clpretty.ch"
            }
#line 214 "clpretty.ch"
            _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 214 "clpretty.ch"
        }
#line 214 "clpretty.ch"
        preAttribute = _ptTree0;
#line 214 "clpretty.ch"
        ;
#line 214 "clpretty.ch"
    }
#line 214 "clpretty.ch"
#line 214 "clpretty.ch"
#line 217 "clpretty.ch"
    {
#line 217 "clpretty.ch"
        PPTREE _ptTree0=(PPTREE) 0;
#line 217 "clpretty.ch"
        _ptTree0 = (PPTREE) 0;
#line 217 "clpretty.ch"
        {
#line 217 "clpretty.ch"
            PPTREE _ptTree1= (PPTREE) 0 ;
#line 217 "clpretty.ch"
            {
#line 217 "clpretty.ch"
                PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 217 "clpretty.ch"
                _ptRes2 = MakeTree(pretty::NEWLINE, 1);
#line 217 "clpretty.ch"
                _ptTree2 = MakeString("1") ;
#line 217 "clpretty.ch"
                ReplaceTree(_ptRes2, 1, _ptTree2);
#line 217 "clpretty.ch"
                _ptTree1 = _ptRes2;
#line 217 "clpretty.ch"
            }
#line 217 "clpretty.ch"
            _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 217 "clpretty.ch"
        }
#line 217 "clpretty.ch"
        postAttribute = _ptTree0;
#line 217 "clpretty.ch"
        ;
#line 217 "clpretty.ch"
    }
#line 217 "clpretty.ch"
#line 217 "clpretty.ch"
#line 218 "clpretty.ch"
    PutAttr(son1, preAttribute, PRE_ATTR, PUT_BEG);
#line 218 "clpretty.ch"
#line 219 "clpretty.ch"
    PutAttr(son1, postAttribute, POST_ATTR, PUT_END);
#line 219 "clpretty.ch"
#line 222 "clpretty.ch"
    {
#line 222 "clpretty.ch"
        PPTREE _ptTree0=(PPTREE) 0;
#line 222 "clpretty.ch"
        _ptTree0 = (PPTREE) 0;
#line 222 "clpretty.ch"
        {
#line 222 "clpretty.ch"
            PPTREE _ptTree1= (PPTREE) 0 ;
#line 222 "clpretty.ch"
            {
#line 222 "clpretty.ch"
                PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 222 "clpretty.ch"
                _ptRes2 = MakeTree(pretty::UNMARK, 0);
#line 222 "clpretty.ch"
                _ptTree1 = _ptRes2;
#line 222 "clpretty.ch"
            }
#line 222 "clpretty.ch"
            _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 222 "clpretty.ch"
        }
#line 222 "clpretty.ch"
        postAttribute = _ptTree0;
#line 222 "clpretty.ch"
        ;
#line 222 "clpretty.ch"
    }
#line 222 "clpretty.ch"
#line 222 "clpretty.ch"
#line 223 "clpretty.ch"
    PutAttr(son2, postAttribute, POST_ATTR, PUT_END);
#line 223 "clpretty.ch"
#line 226 "clpretty.ch"
    GetCoord(son1, &x, &y, &dx, &dy);
#line 226 "clpretty.ch"
#line 227 "clpretty.ch"
    _Baum0 = (PPTREE) 0 ;
#line 227 "clpretty.ch"
#line 227 "clpretty.ch"
#line 227 "clpretty.ch"
    GetCoordAbs(son1, _Baum0, &x0, &y0);
#line 227 "clpretty.ch"
#line 228 "clpretty.ch"
    delta = posRef + 3 - x0 ;
#line 228 "clpretty.ch"
#line 229 "clpretty.ch"
    PutCoord(son1, x + delta, y, dx, dy);
#line 229 "clpretty.ch"
#line 230 "clpretty.ch"
    if ( x + delta + dx > maxDx ) 
#line 230 "clpretty.ch"
#line 231 "clpretty.ch"
        maxDx = x + delta + dx ;
#line 231 "clpretty.ch"
#line 232 "clpretty.ch"
    TraitMark(son1, posRef);
#line 232 "clpretty.ch"
#line 235 "clpretty.ch"
    delta = posRef - x0 - dx ;
#line 235 "clpretty.ch"
#line 236 "clpretty.ch"
    GetCoord(son2, &x, &y, &dx, &dy);
#line 236 "clpretty.ch"
#line 237 "clpretty.ch"
    PutCoord(son2, x + delta, y, dx, dy);
#line 237 "clpretty.ch"
#line 238 "clpretty.ch"
    if ( x + delta + dx > maxDx ) 
#line 238 "clpretty.ch"
#line 239 "clpretty.ch"
        maxDx = x + delta + dx ;
#line 239 "clpretty.ch"
#line 240 "clpretty.ch"
    TraitMark(son2, posRef);
#line 240 "clpretty.ch"
#line 243 "clpretty.ch"
    GetCoord(sontree(tree, 1), &x, &y, &dx, &dy);
#line 243 "clpretty.ch"
#line 244 "clpretty.ch"
    if ( x + dx > maxDx ) 
#line 244 "clpretty.ch"
#line 245 "clpretty.ch"
        maxDx = x + dx ;
#line 245 "clpretty.ch"
#line 246 "clpretty.ch"
    GetCoord(tree, &x, &y, &dx, &dy);
#line 246 "clpretty.ch"
#line 247 "clpretty.ch"
    PutCoord(tree, x, y, maxDx, dy);
#line 247 "clpretty.ch"
#line 250 "clpretty.ch"
    UnMarkCoordTree(tree);
#line 250 "clpretty.ch"
#line 251 "clpretty.ch"
}
#line 251 "clpretty.ch"

#line 255 "clpretty.ch"
#line 255 "clpretty.ch"
void clpretty::TraiterForDeclaration ( PTREE tree, int x0 )
#line 255 "clpretty.ch"
{
#line 255 "clpretty.ch"
    register PPTREE _inter ;
#line 255 "clpretty.ch"
#line 255 "clpretty.ch"
#line 258 "clpretty.ch"
    PTREE   son0, son1, son2 ;
#line 258 "clpretty.ch"
#line 258 "clpretty.ch"
#line 259 "clpretty.ch"
    PTREE   listAttrib ;
#line 259 "clpretty.ch"
#line 259 "clpretty.ch"
#line 260 "clpretty.ch"
    int delta = 0 ;
#line 260 "clpretty.ch"
#line 261 "clpretty.ch"
    int x, y, dx, colRef, colRefOrg ;
#line 261 "clpretty.ch"
#line 262 "clpretty.ch"
    int aTreatment = 0 ;
#line 262 "clpretty.ch"
#line 265 "clpretty.ch"
    GetCoord(tree, &x, &y, &dx, &colRefOrg);
#line 265 "clpretty.ch"
#line 266 "clpretty.ch"
    x0 += x ;
#line 266 "clpretty.ch"
#line 267 "clpretty.ch"
    if ( x0 + dx <= rightMargin ) 
#line 267 "clpretty.ch"
#line 268 "clpretty.ch"
        return ;
#line 268 "clpretty.ch"
#line 269 "clpretty.ch"
    MarkCoordTree(tree, x0, 0);
#line 269 "clpretty.ch"
#line 272 "clpretty.ch"
    ((_inter = (PPTREE)tree,1) && 
#line 272 "clpretty.ch"
        ((son0=SonTree(_inter,1)),1) &&
#line 272 "clpretty.ch"
        ((son1=SonTree(_inter,2)),1) &&
#line 272 "clpretty.ch"
        ((son2=SonTree(_inter,3)),1) &&
#line 272 "clpretty.ch"
        1);
#line 272 "clpretty.ch"
    ;
#line 272 "clpretty.ch"
#line 275 "clpretty.ch"
    {
#line 275 "clpretty.ch"
#line 276 "clpretty.ch"
        GetCoord(son1, &x, &y, &dx, &colRef);
#line 276 "clpretty.ch"
#line 277 "clpretty.ch"
        colRef = TAB_VALUE(colRef, 1);
#line 277 "clpretty.ch"
#line 278 "clpretty.ch"
        if ( x0 + x + dx >= rightMargin && (delta = colRef - x0 - x) < 0 ) {
#line 278 "clpretty.ch"
#line 279 "clpretty.ch"
{
#line 279 "clpretty.ch"
    PPTREE _ptTree0=(PPTREE) 0;
#line 279 "clpretty.ch"
    _ptTree0 = (PPTREE) 0;
#line 279 "clpretty.ch"
    {
#line 279 "clpretty.ch"
        PPTREE _ptTree1= (PPTREE) 0 ;
#line 279 "clpretty.ch"
        {
#line 279 "clpretty.ch"
            PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 279 "clpretty.ch"
            _ptRes2 = MakeTree(pretty::NEWLINE, 1);
#line 279 "clpretty.ch"
            _ptTree2 = MakeString("1") ;
#line 279 "clpretty.ch"
            ReplaceTree(_ptRes2, 1, _ptTree2);
#line 279 "clpretty.ch"
            _ptTree1 = _ptRes2;
#line 279 "clpretty.ch"
        }
#line 279 "clpretty.ch"
        _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 279 "clpretty.ch"
    }
#line 279 "clpretty.ch"
    {
#line 279 "clpretty.ch"
        PPTREE _ptTree1= (PPTREE) 0 ;
#line 279 "clpretty.ch"
        {
#line 279 "clpretty.ch"
            PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 279 "clpretty.ch"
            _ptRes2 = MakeTree(pretty::TAB, 1);
#line 279 "clpretty.ch"
            _ptTree2 = MakeString("1") ;
#line 279 "clpretty.ch"
            ReplaceTree(_ptRes2, 1, _ptTree2);
#line 279 "clpretty.ch"
            _ptTree1 = _ptRes2;
#line 279 "clpretty.ch"
        }
#line 279 "clpretty.ch"
        _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 279 "clpretty.ch"
    }
#line 279 "clpretty.ch"
    {
#line 279 "clpretty.ch"
        PPTREE _ptTree1= (PPTREE) 0 ;
#line 279 "clpretty.ch"
        {
#line 279 "clpretty.ch"
            PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 279 "clpretty.ch"
            _ptRes2 = MakeTree(pretty::MARK, 0);
#line 279 "clpretty.ch"
            _ptTree1 = _ptRes2;
#line 279 "clpretty.ch"
        }
#line 279 "clpretty.ch"
        _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 279 "clpretty.ch"
    }
#line 279 "clpretty.ch"
    listAttrib = _ptTree0;
#line 279 "clpretty.ch"
    ;
#line 279 "clpretty.ch"
}
#line 279 "clpretty.ch"
#line 279 "clpretty.ch"
#line 280 "clpretty.ch"
PutAttr(son1, listAttrib, PRE_ATTR, PUT_BEG);
#line 280 "clpretty.ch"
#line 281 "clpretty.ch"
{
#line 281 "clpretty.ch"
    PPTREE _ptTree0=(PPTREE) 0;
#line 281 "clpretty.ch"
    _ptTree0 = (PPTREE) 0;
#line 281 "clpretty.ch"
    {
#line 281 "clpretty.ch"
        PPTREE _ptTree1= (PPTREE) 0 ;
#line 281 "clpretty.ch"
        {
#line 281 "clpretty.ch"
            PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 281 "clpretty.ch"
            _ptRes2 = MakeTree(pretty::UNMARK, 0);
#line 281 "clpretty.ch"
            _ptTree1 = _ptRes2;
#line 281 "clpretty.ch"
        }
#line 281 "clpretty.ch"
        _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 281 "clpretty.ch"
    }
#line 281 "clpretty.ch"
    listAttrib = _ptTree0;
#line 281 "clpretty.ch"
    ;
#line 281 "clpretty.ch"
}
#line 281 "clpretty.ch"
#line 281 "clpretty.ch"
#line 282 "clpretty.ch"
PutAttr(son1, listAttrib, POST_ATTR, PUT_END);
#line 282 "clpretty.ch"
#line 283 "clpretty.ch"
PutCoord(son1, x + delta, y, dx, colRef);
#line 283 "clpretty.ch"
#line 284 "clpretty.ch"
TraitMark(son1, colRef);
#line 284 "clpretty.ch"
#line 285 "clpretty.ch"
aTreatment = 1 ;
#line 285 "clpretty.ch"
#line 285 "clpretty.ch"
                                                                                     }
#line 285 "clpretty.ch"
#line 285 "clpretty.ch"
    }
#line 285 "clpretty.ch"
#line 290 "clpretty.ch"
    {
#line 290 "clpretty.ch"
#line 291 "clpretty.ch"
        GetCoord(son2, &x, &y, &dx, &colRef);
#line 291 "clpretty.ch"
#line 292 "clpretty.ch"
        colRef = TAB_VALUE(colRef, 1);
#line 292 "clpretty.ch"
#line 293 "clpretty.ch"
        if ( x0 + x + dx >= rightMargin && (delta = colRef - x0 - x) < 0 || aTreatment ) {
#line 293 "clpretty.ch"
#line 295 "clpretty.ch"
{
#line 295 "clpretty.ch"
    PPTREE _ptTree0=(PPTREE) 0;
#line 295 "clpretty.ch"
    _ptTree0 = (PPTREE) 0;
#line 295 "clpretty.ch"
    {
#line 295 "clpretty.ch"
        PPTREE _ptTree1= (PPTREE) 0 ;
#line 295 "clpretty.ch"
        {
#line 295 "clpretty.ch"
            PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 295 "clpretty.ch"
            _ptRes2 = MakeTree(pretty::NEWLINE, 1);
#line 295 "clpretty.ch"
            _ptTree2 = MakeString("1") ;
#line 295 "clpretty.ch"
            ReplaceTree(_ptRes2, 1, _ptTree2);
#line 295 "clpretty.ch"
            _ptTree1 = _ptRes2;
#line 295 "clpretty.ch"
        }
#line 295 "clpretty.ch"
        _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 295 "clpretty.ch"
    }
#line 295 "clpretty.ch"
    {
#line 295 "clpretty.ch"
        PPTREE _ptTree1= (PPTREE) 0 ;
#line 295 "clpretty.ch"
        {
#line 295 "clpretty.ch"
            PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 295 "clpretty.ch"
            _ptRes2 = MakeTree(pretty::TAB, 1);
#line 295 "clpretty.ch"
            _ptTree2 = MakeString("1") ;
#line 295 "clpretty.ch"
            ReplaceTree(_ptRes2, 1, _ptTree2);
#line 295 "clpretty.ch"
            _ptTree1 = _ptRes2;
#line 295 "clpretty.ch"
        }
#line 295 "clpretty.ch"
        _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 295 "clpretty.ch"
    }
#line 295 "clpretty.ch"
    {
#line 295 "clpretty.ch"
        PPTREE _ptTree1= (PPTREE) 0 ;
#line 295 "clpretty.ch"
        {
#line 295 "clpretty.ch"
            PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 295 "clpretty.ch"
            _ptRes2 = MakeTree(pretty::MARK, 0);
#line 295 "clpretty.ch"
            _ptTree1 = _ptRes2;
#line 295 "clpretty.ch"
        }
#line 295 "clpretty.ch"
        _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 295 "clpretty.ch"
    }
#line 295 "clpretty.ch"
    listAttrib = _ptTree0;
#line 295 "clpretty.ch"
    ;
#line 295 "clpretty.ch"
}
#line 295 "clpretty.ch"
#line 295 "clpretty.ch"
#line 296 "clpretty.ch"
PutAttr(son2, listAttrib, PRE_ATTR, PUT_BEG);
#line 296 "clpretty.ch"
#line 297 "clpretty.ch"
{
#line 297 "clpretty.ch"
    PPTREE _ptTree0=(PPTREE) 0;
#line 297 "clpretty.ch"
    _ptTree0 = (PPTREE) 0;
#line 297 "clpretty.ch"
    {
#line 297 "clpretty.ch"
        PPTREE _ptTree1= (PPTREE) 0 ;
#line 297 "clpretty.ch"
        {
#line 297 "clpretty.ch"
            PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 297 "clpretty.ch"
            _ptRes2 = MakeTree(pretty::UNMARK, 0);
#line 297 "clpretty.ch"
            _ptTree1 = _ptRes2;
#line 297 "clpretty.ch"
        }
#line 297 "clpretty.ch"
        _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 297 "clpretty.ch"
    }
#line 297 "clpretty.ch"
    listAttrib = _ptTree0;
#line 297 "clpretty.ch"
    ;
#line 297 "clpretty.ch"
}
#line 297 "clpretty.ch"
#line 297 "clpretty.ch"
#line 298 "clpretty.ch"
PutAttr(son2, listAttrib, POST_ATTR, PUT_END);
#line 298 "clpretty.ch"
#line 299 "clpretty.ch"
TraitMark(son2, colRef);
#line 299 "clpretty.ch"
#line 300 "clpretty.ch"
aTreatment = 1 ;
#line 300 "clpretty.ch"
#line 300 "clpretty.ch"
                                                                                                    }
#line 300 "clpretty.ch"
#line 302 "clpretty.ch"
        PutCoord(son2, x + delta, y, dx, colRef);
#line 302 "clpretty.ch"
#line 302 "clpretty.ch"
    }
#line 302 "clpretty.ch"
#line 306 "clpretty.ch"
    if ( aTreatment ) {
#line 306 "clpretty.ch"
#line 307 "clpretty.ch"
                        char    string [10];
#line 307 "clpretty.ch"
#line 308 "clpretty.ch"
                        GetCoord(son0, &x, &y, &dx, &colRefOrg);
#line 308 "clpretty.ch"
#line 309 "clpretty.ch"
                        sprintf(string, "%d", colRefOrg);
#line 309 "clpretty.ch"
#line 310 "clpretty.ch"
                        {
#line 310 "clpretty.ch"
                            PPTREE _ptTree0=(PPTREE) 0;
#line 310 "clpretty.ch"
                            _ptTree0 = (PPTREE) 0;
#line 310 "clpretty.ch"
                            {
#line 310 "clpretty.ch"
                                PPTREE _ptTree1= (PPTREE) 0 ;
#line 310 "clpretty.ch"
                                {
#line 310 "clpretty.ch"
                                    PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 310 "clpretty.ch"
                                    _ptRes2 = MakeTree(pretty::TAB_VIRT, 2);
#line 310 "clpretty.ch"
                                    _ptTree2 = StoreRef(MakeString(string));
#line 310 "clpretty.ch"
                                    ReplaceTree(_ptRes2, 1, _ptTree2);
#line 310 "clpretty.ch"
                                    _ptTree2 = MakeString("1") ;
#line 310 "clpretty.ch"
                                    ReplaceTree(_ptRes2, 2, _ptTree2);
#line 310 "clpretty.ch"
                                    _ptTree1 = _ptRes2;
#line 310 "clpretty.ch"
                                }
#line 310 "clpretty.ch"
                                _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 310 "clpretty.ch"
                            }
#line 310 "clpretty.ch"
                            listAttrib = _ptTree0;
#line 310 "clpretty.ch"
                            ;
#line 310 "clpretty.ch"
                        }
#line 310 "clpretty.ch"
#line 310 "clpretty.ch"
#line 311 "clpretty.ch"
                        PutAttr(son0, listAttrib, PRE_ATTR, PUT_BEG);
#line 311 "clpretty.ch"
#line 311 "clpretty.ch"
                       }
#line 311 "clpretty.ch"
#line 316 "clpretty.ch"
    UnMarkCoordTree(tree);
#line 316 "clpretty.ch"
#line 317 "clpretty.ch"
}
#line 317 "clpretty.ch"

#line 321 "clpretty.ch"
#line 321 "clpretty.ch"
void clpretty::AddTree ( PTREE tree, int delta )
#line 321 "clpretty.ch"
{
#line 321 "clpretty.ch"
#line 326 "clpretty.ch"
    if ( currTabTree >= sizeTabTree ) {
#line 326 "clpretty.ch"
#line 327 "clpretty.ch"
                                            if ( sizeTabTree && (tabTree = (PPTREE_DELTA)realloc(tabTree, sizeof(TREE_DELTA) * (sizeTabTree + 10))) || (tabTree = (PPTREE_DELTA)malloc(sizeof(TREE_DELTA) * (10))) ) 
#line 327 "clpretty.ch"
#line 333 "clpretty.ch"
                                                sizeTabTree += 10 ;
#line 333 "clpretty.ch"
#line 333 "clpretty.ch"
                                        }
#line 333 "clpretty.ch"
#line 337 "clpretty.ch"
#line 337 "clpretty.ch"
    for ( int i = 0 ; i < currTabTree ; i++ ) 
#line 337 "clpretty.ch"
#line 338 "clpretty.ch"
        if ( tabTree [i].tree == tree ) {
#line 338 "clpretty.ch"
#line 339 "clpretty.ch"
                                                tabTree [i].delta = delta ;
#line 339 "clpretty.ch"
#line 340 "clpretty.ch"
                                                return ;
#line 340 "clpretty.ch"
#line 340 "clpretty.ch"
                                            }
#line 340 "clpretty.ch"
#line 340 "clpretty.ch"
#line 344 "clpretty.ch"
    if ( currTabTree < sizeTabTree ) {
#line 344 "clpretty.ch"
#line 345 "clpretty.ch"
                                        tabTree [currTabTree].tree = tree ;
#line 345 "clpretty.ch"
#line 346 "clpretty.ch"
                                        tabTree [currTabTree].delta = delta ;
#line 346 "clpretty.ch"
#line 347 "clpretty.ch"
                                        currTabTree++ ;
#line 347 "clpretty.ch"
#line 347 "clpretty.ch"
                                       }
#line 347 "clpretty.ch"
#line 349 "clpretty.ch"
}
#line 349 "clpretty.ch"

#line 353 "clpretty.ch"
#line 353 "clpretty.ch"
int clpretty::FindDelta ( PTREE tree )
#line 353 "clpretty.ch"
{
#line 353 "clpretty.ch"
#line 359 "clpretty.ch"
    (tree=fathertree(tree));
#line 359 "clpretty.ch"
#line 359 "clpretty.ch"
#line 360 "clpretty.ch"
    while ( tree ) {
#line 360 "clpretty.ch"
#line 361 "clpretty.ch"
#line 361 "clpretty.ch"
                        for ( int i = 0 ; i < currTabTree ; i++ ) 
#line 361 "clpretty.ch"
#line 362 "clpretty.ch"
                            if ( tabTree [i].tree == tree ) 
#line 362 "clpretty.ch"
#line 363 "clpretty.ch"
                                return tabTree [i].delta ;
#line 363 "clpretty.ch"
#line 363 "clpretty.ch"
#line 364 "clpretty.ch"
                        (tree=fathertree(tree));
#line 364 "clpretty.ch"
#line 364 "clpretty.ch"
#line 364 "clpretty.ch"
                    }
#line 364 "clpretty.ch"
#line 368 "clpretty.ch"
    return 0 ;
#line 368 "clpretty.ch"
#line 369 "clpretty.ch"
}
#line 369 "clpretty.ch"

#line 373 "clpretty.ch"
#line 373 "clpretty.ch"
void clpretty::TraiterExpList ( PTREE tree, int x0, int valTab, int inParam )
#line 373 "clpretty.ch"
{
#line 373 "clpretty.ch"
    register PPTREE _inter ;
#line 373 "clpretty.ch"
#line 373 "clpretty.ch"
#line 376 "clpretty.ch"
    PTREE   list, inter ;
#line 376 "clpretty.ch"
#line 376 "clpretty.ch"
#line 377 "clpretty.ch"
    PTREE   postAttribute ;
#line 377 "clpretty.ch"
#line 377 "clpretty.ch"
#line 378 "clpretty.ch"
    int y0 ;
#line 378 "clpretty.ch"
#line 379 "clpretty.ch"
    int x, y, dx, dy ;
#line 379 "clpretty.ch"
#line 380 "clpretty.ch"
    int xRef ;
#line 380 "clpretty.ch"
#line 381 "clpretty.ch"
    int posMark ;
#line 381 "clpretty.ch"
#line 382 "clpretty.ch"
    PTREE   listElem ;
#line 382 "clpretty.ch"
#line 382 "clpretty.ch"
#line 383 "clpretty.ch"
    PTREE   currElem ;
#line 383 "clpretty.ch"
#line 383 "clpretty.ch"
#line 384 "clpretty.ch"
    PTREE   refTree ;
#line 384 "clpretty.ch"
#line 384 "clpretty.ch"
#line 385 "clpretty.ch"
    PTREE   lastTree ;
#line 385 "clpretty.ch"
#line 385 "clpretty.ch"
#line 386 "clpretty.ch"
    int posRef ;
#line 386 "clpretty.ch"
#line 388 "clpretty.ch"
    int colRef ;
#line 388 "clpretty.ch"
#line 389 "clpretty.ch"
    PTREE   father ;
#line 389 "clpretty.ch"
#line 389 "clpretty.ch"
#line 390 "clpretty.ch"
    int rank ;
#line 390 "clpretty.ch"
#line 391 "clpretty.ch"
    int hasIndented = 0 ;
#line 391 "clpretty.ch"
#line 393 "clpretty.ch"
    int deltaInhibitIndent = 0 ;
#line 393 "clpretty.ch"
#line 395 "clpretty.ch"
    int delta = 0 ;
#line 395 "clpretty.ch"
#line 397 "clpretty.ch"
    int deltaRef = 0 ;
#line 397 "clpretty.ch"
#line 400 "clpretty.ch"
    int ret = 1 ;
#line 400 "clpretty.ch"
#line 401 "clpretty.ch"
    int oldNbTab = nbTab ;
#line 401 "clpretty.ch"
#line 402 "clpretty.ch"
    int rightX = 0 ;
#line 402 "clpretty.ch"
#line 403 "clpretty.ch"
    PTREE   hasToPutVirt = (PTREE)0 ;
#line 403 "clpretty.ch"
#line 403 "clpretty.ch"
#line 403 "clpretty.ch"
    hasToPutVirt = (PPTREE) 0 ;
#line 403 "clpretty.ch"
#line 403 "clpretty.ch"
#line 406 "clpretty.ch"
    GetCoord(tree, &x, &y, &dx, &y);
#line 406 "clpretty.ch"
#line 407 "clpretty.ch"
    x0 += x ;
#line 407 "clpretty.ch"
#line 408 "clpretty.ch"
    if ( x0 + dx <= rightMargin ) 
#line 408 "clpretty.ch"
#line 409 "clpretty.ch"
        return ;
#line 409 "clpretty.ch"
#line 410 "clpretty.ch"
    MarkCoordTree(tree, x0, 0);
#line 410 "clpretty.ch"
#line 414 "clpretty.ch"
    if ( !(((_inter = (PPTREE)tree,1) && 
#line 414 "clpretty.ch"
                (NumberTree(_inter) == LIST) &&
#line 414 "clpretty.ch"
                1)) ) {
#line 414 "clpretty.ch"
#line 415 "clpretty.ch"
                        ((_inter = (PPTREE)tree,1) && 
#line 415 "clpretty.ch"
                            (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),(listElem=_inter),1) &&
#line 415 "clpretty.ch"
                                ((refTree=SonTree(_inter,1)),1) &&
#line 415 "clpretty.ch"
                                1),
#line 415 "clpretty.ch"
                                (_inter=_storeVal[1],1),_retVal[1]) &&
#line 415 "clpretty.ch"
                            1);
#line 415 "clpretty.ch"
                        ;
#line 415 "clpretty.ch"
#line 415 "clpretty.ch"
                      } else 
#line 416 "clpretty.ch"
    {
#line 416 "clpretty.ch"
#line 417 "clpretty.ch"
        ((_inter = (PPTREE)tree,1) && 
#line 417 "clpretty.ch"
            ((refTree=SonTree(_inter,1)),1) &&
#line 417 "clpretty.ch"
            1);
#line 417 "clpretty.ch"
        ;
#line 417 "clpretty.ch"
#line 418 "clpretty.ch"
        (listElem=tree);
#line 418 "clpretty.ch"
#line 418 "clpretty.ch"
#line 418 "clpretty.ch"
    }
#line 418 "clpretty.ch"
#line 420 "clpretty.ch"
    if ( !(((_inter = (PPTREE)listElem,1) && 
#line 420 "clpretty.ch"
                (NumberTree(_inter) == LIST) &&
#line 420 "clpretty.ch"
                1)) ) 
#line 420 "clpretty.ch"
#line 421 "clpretty.ch"
        return ;
#line 421 "clpretty.ch"
#line 425 "clpretty.ch"
    GetCoord(refTree, &x, &y, &dx, &colRef);
#line 425 "clpretty.ch"
#line 428 "clpretty.ch"
    if ( colRef != markTab ) 
#line 428 "clpretty.ch"
#line 429 "clpretty.ch"
        nbTab = 0 ;
#line 429 "clpretty.ch"
#line 430 "clpretty.ch"
    nbTab += valTab ;
#line 430 "clpretty.ch"
#line 431 "clpretty.ch"
    posRef = TAB_VALUE(colRef, nbTab);
#line 431 "clpretty.ch"
#line 432 "clpretty.ch"
    delta = 0 ;
#line 432 "clpretty.ch"
#line 435 "clpretty.ch"
    while ( listElem ) {
#line 435 "clpretty.ch"
#line 435 "clpretty.ch"
                            PTREE   _Baum0 ;
#line 435 "clpretty.ch"
#line 435 "clpretty.ch"
#line 436 "clpretty.ch"
                            (currElem=(listElem?listElem.Nextl():(PPTREE)0));
#line 436 "clpretty.ch"
#line 436 "clpretty.ch"
#line 437 "clpretty.ch"
                            _Baum0 = (PPTREE) 0 ;
#line 437 "clpretty.ch"
#line 437 "clpretty.ch"
#line 437 "clpretty.ch"
                            GetCoordAbs(currElem, _Baum0, &x0, &y0);
#line 437 "clpretty.ch"
#line 438 "clpretty.ch"
                            GetCoord(currElem, &x, &y, &dx, &dy);
#line 438 "clpretty.ch"
#line 442 "clpretty.ch"
                            if ( x0 <= rightX ) {
#line 442 "clpretty.ch"
#line 443 "clpretty.ch"
                                                    delta = 0 ;
#line 443 "clpretty.ch"
#line 443 "clpretty.ch"
                                                  }
#line 443 "clpretty.ch"
#line 445 "clpretty.ch"
                            rightX = x0 + dx ;
#line 445 "clpretty.ch"
#line 449 "clpretty.ch"
                            if ( !lastTree && x0 + dx + delta > rightMargin ) {
#line 449 "clpretty.ch"
#line 450 "clpretty.ch"
if ( inParam && x0 + dx > posRef ) {
#line 450 "clpretty.ch"
#line 453 "clpretty.ch"
                                        {
#line 453 "clpretty.ch"
                                            PPTREE _ptTree0=(PPTREE) 0;
#line 453 "clpretty.ch"
                                            _ptTree0 = (PPTREE) 0;
#line 453 "clpretty.ch"
                                            {
#line 453 "clpretty.ch"
                                                PPTREE _ptTree1= (PPTREE) 0 ;
#line 453 "clpretty.ch"
                                                {
#line 453 "clpretty.ch"
                                                    PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 453 "clpretty.ch"
                                                    _ptRes2 = MakeTree(pretty::NEWLINE, 1);
#line 453 "clpretty.ch"
                                                    _ptTree2 = MakeString("1") ;
#line 453 "clpretty.ch"
                                                    ReplaceTree(_ptRes2, 1, _ptTree2);
#line 453 "clpretty.ch"
                                                    _ptTree1 = _ptRes2;
#line 453 "clpretty.ch"
                                                }
#line 453 "clpretty.ch"
                                                _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 453 "clpretty.ch"
                                            }
#line 453 "clpretty.ch"
                                            postAttribute = _ptTree0;
#line 453 "clpretty.ch"
                                            ;
#line 453 "clpretty.ch"
                                        }
#line 453 "clpretty.ch"
#line 453 "clpretty.ch"
#line 455 "clpretty.ch"
                                        {
#line 455 "clpretty.ch"
#line 455 "clpretty.ch"
                                            char    string [10];
#line 455 "clpretty.ch"
#line 456 "clpretty.ch"
                                            sprintf(string, "%d", nbTab);
#line 456 "clpretty.ch"
#line 457 "clpretty.ch"
                                            {
#line 457 "clpretty.ch"
                                                PPTREE _ptTree0= (PPTREE) 0 ;
#line 457 "clpretty.ch"
                                                {
#line 457 "clpretty.ch"
                                                    PPTREE _ptTree1= (PPTREE) 0 ;
#line 457 "clpretty.ch"
                                                    {
#line 457 "clpretty.ch"
                                                        PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 457 "clpretty.ch"
                                                        _ptRes2 = MakeTree(pretty::TAB, 1);
#line 457 "clpretty.ch"
                                                        _ptTree2 = StoreRef(MakeString(string));
#line 457 "clpretty.ch"
                                                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 457 "clpretty.ch"
                                                        _ptTree1 = _ptRes2;
#line 457 "clpretty.ch"
                                                    }
#line 457 "clpretty.ch"
                                                    postAttribute =  AddList( postAttribute,_ptTree1);
#line 457 "clpretty.ch"
                                                }
#line 457 "clpretty.ch"
                                                {
#line 457 "clpretty.ch"
                                                    PPTREE _ptTree1= (PPTREE) 0 ;
#line 457 "clpretty.ch"
                                                    {
#line 457 "clpretty.ch"
                                                        PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 457 "clpretty.ch"
                                                        _ptRes2 = MakeTree(pretty::MARK, 0);
#line 457 "clpretty.ch"
                                                        _ptTree1 = _ptRes2;
#line 457 "clpretty.ch"
                                                    }
#line 457 "clpretty.ch"
                                                    postAttribute =  AddList( postAttribute,_ptTree1);
#line 457 "clpretty.ch"
                                                }
#line 457 "clpretty.ch"
                                            }
#line 457 "clpretty.ch"
#line 457 "clpretty.ch"
#line 458 "clpretty.ch"
                                        }
#line 458 "clpretty.ch"
#line 459 "clpretty.ch"
                                        hasIndented = 1 ;
#line 459 "clpretty.ch"
#line 460 "clpretty.ch"
                                        PutAttr(currElem, postAttribute, PRE_ATTR, PUT_BEG);
#line 460 "clpretty.ch"
#line 464 "clpretty.ch"
#if 0
#line 464 "clpretty.ch"
#line 465 "clpretty.ch"
                                        delta = posRef - x0 - dx ;
#line 465 "clpretty.ch"
#else 
                                        delta = posRef - x0 ;
#endif
#line 465 "clpretty.ch"
#line 469 "clpretty.ch"
                                        PutCoord(currElem, x + delta, y, dx, dy);
#line 469 "clpretty.ch"
#line 472 "clpretty.ch"
                                        TraitMark(currElem, posRef);
#line 472 "clpretty.ch"
#line 472 "clpretty.ch"
                                       } else 
#line 472 "clpretty.ch"
#line 474 "clpretty.ch"
    (hasToPutVirt=currElem);
#line 474 "clpretty.ch"
#line 474 "clpretty.ch"
#line 474 "clpretty.ch"
#line 474 "clpretty.ch"
                                                                                    }
#line 474 "clpretty.ch"
#line 479 "clpretty.ch"
                            if ( x0 + dx + delta > rightMargin && lastTree ) {
#line 479 "clpretty.ch"
#line 484 "clpretty.ch"
if ( deltaRef < 0 ) {
#line 484 "clpretty.ch"
#line 487 "clpretty.ch"
                        {
#line 487 "clpretty.ch"
                            PPTREE _ptTree0=(PPTREE) 0;
#line 487 "clpretty.ch"
                            _ptTree0 = (PPTREE) 0;
#line 487 "clpretty.ch"
                            {
#line 487 "clpretty.ch"
                                PPTREE _ptTree1= (PPTREE) 0 ;
#line 487 "clpretty.ch"
                                {
#line 487 "clpretty.ch"
                                    PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 487 "clpretty.ch"
                                    _ptRes2 = MakeTree(pretty::NEWLINE, 1);
#line 487 "clpretty.ch"
                                    _ptTree2 = MakeString("1") ;
#line 487 "clpretty.ch"
                                    ReplaceTree(_ptRes2, 1, _ptTree2);
#line 487 "clpretty.ch"
                                    _ptTree1 = _ptRes2;
#line 487 "clpretty.ch"
                                }
#line 487 "clpretty.ch"
                                _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 487 "clpretty.ch"
                            }
#line 487 "clpretty.ch"
                            postAttribute = _ptTree0;
#line 487 "clpretty.ch"
                            ;
#line 487 "clpretty.ch"
                        }
#line 487 "clpretty.ch"
#line 487 "clpretty.ch"
#line 488 "clpretty.ch"
                        if ( !hasIndented ) {
#line 488 "clpretty.ch"
#line 489 "clpretty.ch"
                                                {
#line 489 "clpretty.ch"
#line 490 "clpretty.ch"
                                                    char    string [10];
#line 490 "clpretty.ch"
#line 491 "clpretty.ch"
                                                    sprintf(string, "%d", nbTab);
#line 491 "clpretty.ch"
#line 492 "clpretty.ch"
                                                    {
#line 492 "clpretty.ch"
                                                        PPTREE _ptTree0= (PPTREE) 0 ;
#line 492 "clpretty.ch"
                                                        {
#line 492 "clpretty.ch"
                                                            PPTREE _ptTree1= (PPTREE) 0 ;
#line 492 "clpretty.ch"
                                                            {
#line 492 "clpretty.ch"
                                                                PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 492 "clpretty.ch"
                                                                _ptRes2 = MakeTree(pretty::TAB, 1);
#line 492 "clpretty.ch"
                                                                _ptTree2 = StoreRef(MakeString(string));
#line 492 "clpretty.ch"
                                                                ReplaceTree(_ptRes2, 1, _ptTree2);
#line 492 "clpretty.ch"
                                                                _ptTree1 = _ptRes2;
#line 492 "clpretty.ch"
                                                            }
#line 492 "clpretty.ch"
                                                            postAttribute =  AddList( postAttribute,_ptTree1);
#line 492 "clpretty.ch"
                                                        }
#line 492 "clpretty.ch"
                                                        {
#line 492 "clpretty.ch"
                                                            PPTREE _ptTree1= (PPTREE) 0 ;
#line 492 "clpretty.ch"
                                                            {
#line 492 "clpretty.ch"
                                                                PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 492 "clpretty.ch"
                                                                _ptRes2 = MakeTree(pretty::MARK, 0);
#line 492 "clpretty.ch"
                                                                _ptTree1 = _ptRes2;
#line 492 "clpretty.ch"
                                                            }
#line 492 "clpretty.ch"
                                                            postAttribute =  AddList( postAttribute,_ptTree1);
#line 492 "clpretty.ch"
                                                        }
#line 492 "clpretty.ch"
                                                    }
#line 492 "clpretty.ch"
#line 492 "clpretty.ch"
#line 492 "clpretty.ch"
                                                }
#line 492 "clpretty.ch"
#line 494 "clpretty.ch"
                                                hasIndented = 1 ;
#line 494 "clpretty.ch"
#line 494 "clpretty.ch"
                                              }
#line 494 "clpretty.ch"
#line 496 "clpretty.ch"
                        PutAttr(lastTree, postAttribute, POST_ATTR, PUT_END);
#line 496 "clpretty.ch"
#line 499 "clpretty.ch"
                        delta = deltaRef ;
#line 499 "clpretty.ch"
#line 500 "clpretty.ch"
                        PutCoord(currElem, x + delta, y, dx, dy);
#line 500 "clpretty.ch"
#line 503 "clpretty.ch"
                        TraitMark(currElem, posRef);
#line 503 "clpretty.ch"
#line 503 "clpretty.ch"
                      } else 
#line 504 "clpretty.ch"
{
#line 504 "clpretty.ch"
#line 505 "clpretty.ch"
    deltaInhibitIndent = 1 ;
#line 505 "clpretty.ch"
#line 508 "clpretty.ch"
    TraitMark(currElem, colRef);
#line 508 "clpretty.ch"
#line 508 "clpretty.ch"
}
#line 508 "clpretty.ch"
#line 508 "clpretty.ch"
                                                                                  } else 
#line 510 "clpretty.ch"
                            if ( hasIndented ) {
#line 510 "clpretty.ch"
#line 513 "clpretty.ch"
                                                    PutCoord(currElem, x + delta, y, dx, dy);
#line 513 "clpretty.ch"
#line 516 "clpretty.ch"
                                                    TraitMark(currElem, posRef);
#line 516 "clpretty.ch"
#line 516 "clpretty.ch"
                                                } else 
#line 517 "clpretty.ch"
                            if ( deltaInhibitIndent ) {
#line 517 "clpretty.ch"
#line 520 "clpretty.ch"
                                                        TraitMark(currElem, colRef);
#line 520 "clpretty.ch"
#line 520 "clpretty.ch"
                                                       }
#line 520 "clpretty.ch"
#line 528 "clpretty.ch"
                            deltaRef = posRef - x0 - dx ;
#line 528 "clpretty.ch"
#line 529 "clpretty.ch"
                            (lastTree=currElem);
#line 529 "clpretty.ch"
#line 529 "clpretty.ch"
#line 529 "clpretty.ch"
                        }
#line 529 "clpretty.ch"
#line 534 "clpretty.ch"
    if ( hasIndented ) {
#line 534 "clpretty.ch"
#line 535 "clpretty.ch"
                            {
#line 535 "clpretty.ch"
                                PPTREE _ptTree0=(PPTREE) 0;
#line 535 "clpretty.ch"
                                _ptTree0 = (PPTREE) 0;
#line 535 "clpretty.ch"
                                {
#line 535 "clpretty.ch"
                                    PPTREE _ptTree1= (PPTREE) 0 ;
#line 535 "clpretty.ch"
                                    {
#line 535 "clpretty.ch"
                                        PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 535 "clpretty.ch"
                                        _ptRes2 = MakeTree(pretty::UNMARK, 0);
#line 535 "clpretty.ch"
                                        _ptTree1 = _ptRes2;
#line 535 "clpretty.ch"
                                    }
#line 535 "clpretty.ch"
                                    _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 535 "clpretty.ch"
                                }
#line 535 "clpretty.ch"
                                list = _ptTree0;
#line 535 "clpretty.ch"
                                ;
#line 535 "clpretty.ch"
                            }
#line 535 "clpretty.ch"
#line 535 "clpretty.ch"
#line 536 "clpretty.ch"
                            PutAttr(lastTree, list, POST_ATTR, PUT_END);
#line 536 "clpretty.ch"
#line 536 "clpretty.ch"
                        }
#line 536 "clpretty.ch"
#line 540 "clpretty.ch"
    if ( hasIndented && hasToPutVirt ) {
#line 540 "clpretty.ch"
#line 541 "clpretty.ch"
                                            char    string [10];
#line 541 "clpretty.ch"
#line 542 "clpretty.ch"
                                            sprintf(string, "%d", colRef);
#line 542 "clpretty.ch"
#line 543 "clpretty.ch"
                                            {
#line 543 "clpretty.ch"
                                                PPTREE _ptTree0=(PPTREE) 0;
#line 543 "clpretty.ch"
                                                _ptTree0 = (PPTREE) 0;
#line 543 "clpretty.ch"
                                                {
#line 543 "clpretty.ch"
                                                    PPTREE _ptTree1= (PPTREE) 0 ;
#line 543 "clpretty.ch"
                                                    {
#line 543 "clpretty.ch"
                                                        PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 543 "clpretty.ch"
                                                        _ptRes2 = MakeTree(pretty::TAB_VIRT, 2);
#line 543 "clpretty.ch"
                                                        _ptTree2 = StoreRef(MakeString(string));
#line 543 "clpretty.ch"
                                                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 543 "clpretty.ch"
                                                        _ptTree2 = MakeString("1") ;
#line 543 "clpretty.ch"
                                                        ReplaceTree(_ptRes2, 2, _ptTree2);
#line 543 "clpretty.ch"
                                                        _ptTree1 = _ptRes2;
#line 543 "clpretty.ch"
                                                    }
#line 543 "clpretty.ch"
                                                    _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 543 "clpretty.ch"
                                                }
#line 543 "clpretty.ch"
                                                list = _ptTree0;
#line 543 "clpretty.ch"
                                                ;
#line 543 "clpretty.ch"
                                            }
#line 543 "clpretty.ch"
#line 543 "clpretty.ch"
#line 544 "clpretty.ch"
                                            PutAttr(hasToPutVirt, list, PRE_ATTR, PUT_END);
#line 544 "clpretty.ch"
#line 544 "clpretty.ch"
                                         }
#line 544 "clpretty.ch"
#line 548 "clpretty.ch"
    (listElem=tree);
#line 548 "clpretty.ch"
#line 548 "clpretty.ch"
#line 549 "clpretty.ch"
    if ( !(((_inter = (PPTREE)tree,1) && 
#line 549 "clpretty.ch"
                (NumberTree(_inter) == LIST) &&
#line 549 "clpretty.ch"
                1)) ) 
#line 549 "clpretty.ch"
#line 550 "clpretty.ch"
        ((_inter = (PPTREE)tree,1) && 
#line 550 "clpretty.ch"
            ((listElem=SonTree(_inter,1)),1) &&
#line 550 "clpretty.ch"
            1);
#line 550 "clpretty.ch"
        ;
#line 550 "clpretty.ch"
#line 551 "clpretty.ch"
    UpdateSize(listElem, OpType(listElem));
#line 551 "clpretty.ch"
#line 554 "clpretty.ch"
    if ( !(((_inter = (PPTREE)tree,1) && 
#line 554 "clpretty.ch"
                (NumberTree(_inter) == LIST) &&
#line 554 "clpretty.ch"
                1)) ) {
#line 554 "clpretty.ch"
#line 555 "clpretty.ch"
                        int yy ;
#line 555 "clpretty.ch"
#line 556 "clpretty.ch"
                        GetCoord(tree, &xRef, &yy, &dx, &posMark);
#line 556 "clpretty.ch"
#line 557 "clpretty.ch"
                        GetCoord(sontree(tree, 1), &x, &y, &dx, &posMark);
#line 557 "clpretty.ch"
#line 560 "clpretty.ch"
                        if ( !(yy & 0x2) ) 
#line 560 "clpretty.ch"
#line 561 "clpretty.ch"
                            PutCoord(tree, xRef, y, x + dx, posMark);
#line 561 "clpretty.ch"
#line 561 "clpretty.ch"
                      }
#line 561 "clpretty.ch"
#line 565 "clpretty.ch"
    UnMarkCoordTree(tree);
#line 565 "clpretty.ch"
#line 566 "clpretty.ch"
    nbTab = oldNbTab ;
#line 566 "clpretty.ch"
#line 567 "clpretty.ch"
}
#line 567 "clpretty.ch"

#line 571 "clpretty.ch"
#line 571 "clpretty.ch"
void clpretty::TraiterMonoParam ( PTREE tree, int x0 )
#line 571 "clpretty.ch"
{
#line 571 "clpretty.ch"
    register PPTREE _inter ;
#line 571 "clpretty.ch"
#line 571 "clpretty.ch"
#line 574 "clpretty.ch"
    PTREE   list, inter ;
#line 574 "clpretty.ch"
#line 574 "clpretty.ch"
#line 575 "clpretty.ch"
    PTREE   postAttribute ;
#line 575 "clpretty.ch"
#line 575 "clpretty.ch"
#line 576 "clpretty.ch"
    int y0 ;
#line 576 "clpretty.ch"
#line 577 "clpretty.ch"
    int x, y, dx ;
#line 577 "clpretty.ch"
#line 578 "clpretty.ch"
    int xRef ;
#line 578 "clpretty.ch"
#line 579 "clpretty.ch"
    int posMark ;
#line 579 "clpretty.ch"
#line 580 "clpretty.ch"
    PTREE   listElem ;
#line 580 "clpretty.ch"
#line 580 "clpretty.ch"
#line 581 "clpretty.ch"
    PTREE   refTree ;
#line 581 "clpretty.ch"
#line 581 "clpretty.ch"
#line 582 "clpretty.ch"
    PTREE   lastTree ;
#line 582 "clpretty.ch"
#line 582 "clpretty.ch"
#line 583 "clpretty.ch"
    int posRef ;
#line 583 "clpretty.ch"
#line 585 "clpretty.ch"
    int colRef ;
#line 585 "clpretty.ch"
#line 586 "clpretty.ch"
    PTREE   father ;
#line 586 "clpretty.ch"
#line 586 "clpretty.ch"
#line 587 "clpretty.ch"
    int rank ;
#line 587 "clpretty.ch"
#line 588 "clpretty.ch"
    int hasIndented = 0 ;
#line 588 "clpretty.ch"
#line 590 "clpretty.ch"
    int deltaInhibitIndent = 0 ;
#line 590 "clpretty.ch"
#line 592 "clpretty.ch"
    int delta ;
#line 592 "clpretty.ch"
#line 594 "clpretty.ch"
    int deltaRef ;
#line 594 "clpretty.ch"
#line 596 "clpretty.ch"
    int ret = 1 ;
#line 596 "clpretty.ch"
#line 597 "clpretty.ch"
    int oldNbTab = nbTab ;
#line 597 "clpretty.ch"
#line 598 "clpretty.ch"
    int rightX = 0 ;
#line 598 "clpretty.ch"
#line 599 "clpretty.ch"
    PTREE   hasToPutVirt = (PTREE)0 ;
#line 599 "clpretty.ch"
#line 599 "clpretty.ch"
#line 599 "clpretty.ch"
    hasToPutVirt = (PPTREE) 0 ;
#line 599 "clpretty.ch"
#line 599 "clpretty.ch"
#line 602 "clpretty.ch"
    GetCoord(tree, &x, &y, &dx, &colRef);
#line 602 "clpretty.ch"
#line 603 "clpretty.ch"
    x0 += x ;
#line 603 "clpretty.ch"
#line 604 "clpretty.ch"
    if ( x0 + dx <= rightMargin ) 
#line 604 "clpretty.ch"
#line 605 "clpretty.ch"
        return ;
#line 605 "clpretty.ch"
#line 608 "clpretty.ch"
    nbTab = 1 ;
#line 608 "clpretty.ch"
#line 609 "clpretty.ch"
    if ( colRef != markTab ) 
#line 609 "clpretty.ch"
#line 610 "clpretty.ch"
        nbTab = 0 ;
#line 610 "clpretty.ch"
#line 611 "clpretty.ch"
    nbTab += 1 ;
#line 611 "clpretty.ch"
#line 612 "clpretty.ch"
    posRef = TAB_VALUE(colRef, nbTab);
#line 612 "clpretty.ch"
#line 613 "clpretty.ch"
    delta = 0 ;
#line 613 "clpretty.ch"
#line 617 "clpretty.ch"
    {
#line 617 "clpretty.ch"
#line 617 "clpretty.ch"
        {
#line 617 "clpretty.ch"
            PPTREE _ptTree0=(PPTREE) 0;
#line 617 "clpretty.ch"
            _ptTree0 = (PPTREE) 0;
#line 617 "clpretty.ch"
            {
#line 617 "clpretty.ch"
                PPTREE _ptTree1= (PPTREE) 0 ;
#line 617 "clpretty.ch"
                {
#line 617 "clpretty.ch"
                    PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 617 "clpretty.ch"
                    _ptRes2 = MakeTree(pretty::NEWLINE, 1);
#line 617 "clpretty.ch"
                    _ptTree2 = MakeString("1") ;
#line 617 "clpretty.ch"
                    ReplaceTree(_ptRes2, 1, _ptTree2);
#line 617 "clpretty.ch"
                    _ptTree1 = _ptRes2;
#line 617 "clpretty.ch"
                }
#line 617 "clpretty.ch"
                _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 617 "clpretty.ch"
            }
#line 617 "clpretty.ch"
            postAttribute = _ptTree0;
#line 617 "clpretty.ch"
            ;
#line 617 "clpretty.ch"
        }
#line 617 "clpretty.ch"
#line 617 "clpretty.ch"
#line 619 "clpretty.ch"
        {
#line 619 "clpretty.ch"
#line 619 "clpretty.ch"
            char    string [10];
#line 619 "clpretty.ch"
#line 620 "clpretty.ch"
            sprintf(string, "%d", nbTab);
#line 620 "clpretty.ch"
#line 621 "clpretty.ch"
            {
#line 621 "clpretty.ch"
                PPTREE _ptTree0= (PPTREE) 0 ;
#line 621 "clpretty.ch"
                {
#line 621 "clpretty.ch"
                    PPTREE _ptTree1= (PPTREE) 0 ;
#line 621 "clpretty.ch"
                    {
#line 621 "clpretty.ch"
                        PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 621 "clpretty.ch"
                        _ptRes2 = MakeTree(pretty::TAB, 1);
#line 621 "clpretty.ch"
                        _ptTree2 = StoreRef(MakeString(string));
#line 621 "clpretty.ch"
                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 621 "clpretty.ch"
                        _ptTree1 = _ptRes2;
#line 621 "clpretty.ch"
                    }
#line 621 "clpretty.ch"
                    postAttribute =  AddList( postAttribute,_ptTree1);
#line 621 "clpretty.ch"
                }
#line 621 "clpretty.ch"
                {
#line 621 "clpretty.ch"
                    PPTREE _ptTree1= (PPTREE) 0 ;
#line 621 "clpretty.ch"
                    {
#line 621 "clpretty.ch"
                        PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 621 "clpretty.ch"
                        _ptRes2 = MakeTree(pretty::MARK, 0);
#line 621 "clpretty.ch"
                        _ptTree1 = _ptRes2;
#line 621 "clpretty.ch"
                    }
#line 621 "clpretty.ch"
                    postAttribute =  AddList( postAttribute,_ptTree1);
#line 621 "clpretty.ch"
                }
#line 621 "clpretty.ch"
            }
#line 621 "clpretty.ch"
#line 621 "clpretty.ch"
#line 622 "clpretty.ch"
        }
#line 622 "clpretty.ch"
#line 623 "clpretty.ch"
        hasIndented = 1 ;
#line 623 "clpretty.ch"
#line 624 "clpretty.ch"
        PutAttr(tree, postAttribute, PRE_ATTR, PUT_BEG);
#line 624 "clpretty.ch"
#line 627 "clpretty.ch"
        delta = posRef - x0 ;
#line 627 "clpretty.ch"
#line 628 "clpretty.ch"
        PutCoord(tree, x + delta, y, dx, colRef);
#line 628 "clpretty.ch"
#line 631 "clpretty.ch"
        TraitMark(tree, posRef);
#line 631 "clpretty.ch"
#line 632 "clpretty.ch"
    }
#line 632 "clpretty.ch"
#line 633 "clpretty.ch"
    {
#line 633 "clpretty.ch"
        PPTREE _ptTree0=(PPTREE) 0;
#line 633 "clpretty.ch"
        _ptTree0 = (PPTREE) 0;
#line 633 "clpretty.ch"
        {
#line 633 "clpretty.ch"
            PPTREE _ptTree1= (PPTREE) 0 ;
#line 633 "clpretty.ch"
            {
#line 633 "clpretty.ch"
                PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 633 "clpretty.ch"
                _ptRes2 = MakeTree(pretty::UNMARK, 0);
#line 633 "clpretty.ch"
                _ptTree1 = _ptRes2;
#line 633 "clpretty.ch"
            }
#line 633 "clpretty.ch"
            _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 633 "clpretty.ch"
        }
#line 633 "clpretty.ch"
        list = _ptTree0;
#line 633 "clpretty.ch"
        ;
#line 633 "clpretty.ch"
    }
#line 633 "clpretty.ch"
#line 633 "clpretty.ch"
#line 634 "clpretty.ch"
    PutAttr(tree, list, POST_ATTR, PUT_END);
#line 634 "clpretty.ch"
#line 635 "clpretty.ch"
    nbTab = oldNbTab ;
#line 635 "clpretty.ch"
#line 636 "clpretty.ch"
}
#line 636 "clpretty.ch"

#line 639 "clpretty.ch"
#line 639 "clpretty.ch"
void clpretty::TraiterExpListParam ( PTREE tree, int x0 )
#line 639 "clpretty.ch"
{
#line 639 "clpretty.ch"
#line 642 "clpretty.ch"
    TraiterExpList(tree, x0, 1, 1);
#line 642 "clpretty.ch"
#line 643 "clpretty.ch"
}
#line 643 "clpretty.ch"

#line 647 "clpretty.ch"
#line 647 "clpretty.ch"
void clpretty::Treat ( PTREE tree )
#line 647 "clpretty.ch"
{
#line 647 "clpretty.ch"
    register PPTREE _inter ;
#line 647 "clpretty.ch"
#line 647 "clpretty.ch"
#line 650 "clpretty.ch"
    int oldNbTab = nbTab ;
#line 650 "clpretty.ch"
#line 651 "clpretty.ch"
    int x, y, dx, dy ;
#line 651 "clpretty.ch"
#line 652 "clpretty.ch"
    int x0, y0 ;
#line 652 "clpretty.ch"
#line 653 "clpretty.ch"
    PTREE   content ;
#line 653 "clpretty.ch"
#line 653 "clpretty.ch"
#line 656 "clpretty.ch"
    DecompVirt(tree);
#line 656 "clpretty.ch"
#line 657 "clpretty.ch"
    CompleteCoordinates(tree);
#line 657 "clpretty.ch"
#line 658 "clpretty.ch"
    if ( ((_inter = (PPTREE)tree,1) && 
#line 658 "clpretty.ch"
            (NumberTree(_inter) == pretty::ATTRIBUTS) &&
#line 658 "clpretty.ch"
            1) ) 
#line 658 "clpretty.ch"
#line 659 "clpretty.ch"
        FreeCoord(tree);
#line 659 "clpretty.ch"
#line 662 "clpretty.ch"
    nbTab = 0 ;
#line 662 "clpretty.ch"
#line 663 "clpretty.ch"
    if ( FatherTree(tree) ) {
#line 663 "clpretty.ch"
#line 664 "clpretty.ch"
                                GetCoord(tree, &x, &y, &dx, &dy);
#line 664 "clpretty.ch"
#line 665 "clpretty.ch"
                                TreatGeometry(tree, - x + 3);
#line 665 "clpretty.ch"
#line 665 "clpretty.ch"
                             } else 
#line 665 "clpretty.ch"
#line 667 "clpretty.ch"
        TreatGeometry(tree, 0);
#line 667 "clpretty.ch"
#line 667 "clpretty.ch"
#line 670 "clpretty.ch"
    nbTab = oldNbTab ;
#line 670 "clpretty.ch"
#line 671 "clpretty.ch"
}
#line 671 "clpretty.ch"

#line 676 "clpretty.ch"
#line 676 "clpretty.ch"
void clpretty::TreatGeometry ( PTREE tree, int x0 )
#line 676 "clpretty.ch"
{
#line 676 "clpretty.ch"
    register PPTREE _inter ;
#line 676 "clpretty.ch"
#line 676 "clpretty.ch"
#line 679 "clpretty.ch"
    int x, y, dx, posMark ;
#line 679 "clpretty.ch"
#line 680 "clpretty.ch"
    int xRef, yRef, dxRef, posMarkRef ;
#line 680 "clpretty.ch"
#line 681 "clpretty.ch"
    int success = 0 ;
#line 681 "clpretty.ch"
#line 682 "clpretty.ch"
    PTREE   preAttribute ;
#line 682 "clpretty.ch"
#line 682 "clpretty.ch"
#line 683 "clpretty.ch"
    PTREE   elem ;
#line 683 "clpretty.ch"
#line 683 "clpretty.ch"
#line 684 "clpretty.ch"
    PTREE   list ;
#line 684 "clpretty.ch"
#line 684 "clpretty.ch"
#line 685 "clpretty.ch"
    PTREE   tree1, tree2 ;
#line 685 "clpretty.ch"
#line 685 "clpretty.ch"
#line 688 "clpretty.ch"
    if ( GetCoordOrg(tree, &x, &y, &dx, &posMark) ) {
#line 688 "clpretty.ch"
#line 691 "clpretty.ch"
                                                                if ( x0 + x + dx > rightMargin ) {
#line 691 "clpretty.ch"
#line 696 "clpretty.ch"
if ( !(y & 0x1) ) {
#line 696 "clpretty.ch"
#line 697 "clpretty.ch"
                        switch ( OpTypeAlign(tree) ) {
#line 697 "clpretty.ch"
#line 698 "clpretty.ch"
                            case H_ALIGN : 
#line 698 "clpretty.ch"
#line 699 "clpretty.ch"
                                TraiterExp2H(tree, x0);
#line 699 "clpretty.ch"
#line 700 "clpretty.ch"
                                break ;
#line 700 "clpretty.ch"
#line 701 "clpretty.ch"
                            case V_ALIGN : 
#line 701 "clpretty.ch"
#line 702 "clpretty.ch"
                                TraiterExp2V(tree, x0);
#line 702 "clpretty.ch"
#line 703 "clpretty.ch"
                                break ;
#line 703 "clpretty.ch"
#line 704 "clpretty.ch"
                            case COND_ALIGN : 
#line 704 "clpretty.ch"
#line 705 "clpretty.ch"
                                TraiterExp3(tree, x0);
#line 705 "clpretty.ch"
#line 706 "clpretty.ch"
                                break ;
#line 706 "clpretty.ch"
#line 707 "clpretty.ch"
                            case LIST_ALIGN : 
#line 707 "clpretty.ch"
#line 708 "clpretty.ch"
                                TraiterExpList(tree, x0);
#line 708 "clpretty.ch"
#line 709 "clpretty.ch"
                                break ;
#line 709 "clpretty.ch"
                        }
#line 709 "clpretty.ch"
#line 709 "clpretty.ch"
#line 709 "clpretty.ch"
                      }
#line 709 "clpretty.ch"
#line 715 "clpretty.ch"
if ( TreatGeometrySpecific(tree, x0, x) ) {
#line 715 "clpretty.ch"
#line 716 "clpretty.ch"
                                                int maxDx = 0 ;
#line 716 "clpretty.ch"
#line 717 "clpretty.ch"
                                                GetCoord(tree, &xRef, &yRef, &dxRef, &posMarkRef);
#line 717 "clpretty.ch"
#line 718 "clpretty.ch"
                                                {
#line 718 "clpretty.ch"
#line 718 "clpretty.ch"
                                                    int _for_slot = 1, _arity = treearity(tree);
#line 718 "clpretty.ch"
#line 718 "clpretty.ch"
                                                    MY_TREE _for_elem = (PPTREE)0 ;
#line 718 "clpretty.ch"
#line 718 "clpretty.ch"
#line 718 "clpretty.ch"
                                                    for (; _for_slot <= _arity ; _for_slot++ ) {
#line 718 "clpretty.ch"
#line 718 "clpretty.ch"
                                                        _for_elem = SonTree(tree, _for_slot);
#line 718 "clpretty.ch"
#line 719 "clpretty.ch"
                                                        if ( _for_elem && NumberTree(_for_elem) != IN_LANGUAGE ) {
#line 719 "clpretty.ch"
#line 719 "clpretty.ch"
(elem=for_elem);
#line 719 "clpretty.ch"
#line 719 "clpretty.ch"
#line 720 "clpretty.ch"
dx = GetBoxSize(elem);
#line 720 "clpretty.ch"
#line 721 "clpretty.ch"
if ( dx > maxDx ) 
#line 721 "clpretty.ch"
#line 722 "clpretty.ch"
    maxDx = dx ;
#line 722 "clpretty.ch"
#line 722 "clpretty.ch"
                                                                                                                 }
#line 722 "clpretty.ch"
#line 722 "clpretty.ch"
                                                    }
#line 722 "clpretty.ch"
#line 722 "clpretty.ch"
#line 722 "clpretty.ch"
                                                }
#line 722 "clpretty.ch"
#line 724 "clpretty.ch"
                                                PutCoord(tree, xRef, yRef |= 1, maxDx, posMarkRef);
#line 724 "clpretty.ch"
#line 724 "clpretty.ch"
                                              }
#line 724 "clpretty.ch"
#line 728 "clpretty.ch"
if ( treearity(tree) > 0 ) {
#line 728 "clpretty.ch"
#line 729 "clpretty.ch"
                                GetCoord(tree, &xRef, &yRef, &dxRef, &posMarkRef);
#line 729 "clpretty.ch"
#line 730 "clpretty.ch"
                                if ( x0 + xRef + dxRef > rightMargin ) {
#line 730 "clpretty.ch"
#line 731 "clpretty.ch"
int maxDx = 0 ;
#line 731 "clpretty.ch"
#line 732 "clpretty.ch"
{
#line 732 "clpretty.ch"
#line 732 "clpretty.ch"
    int _for_slot = 1, _arity = treearity(tree);
#line 732 "clpretty.ch"
#line 732 "clpretty.ch"
    MY_TREE _for_elem = (PPTREE)0 ;
#line 732 "clpretty.ch"
#line 732 "clpretty.ch"
#line 732 "clpretty.ch"
    for (; _for_slot <= _arity ; _for_slot++ ) {
#line 732 "clpretty.ch"
#line 732 "clpretty.ch"
        _for_elem = SonTree(tree, _for_slot);
#line 732 "clpretty.ch"
#line 733 "clpretty.ch"
        if ( _for_elem && NumberTree(_for_elem) != IN_LANGUAGE ) {
#line 733 "clpretty.ch"
#line 733 "clpretty.ch"
                                                                    (elem=for_elem);
#line 733 "clpretty.ch"
#line 733 "clpretty.ch"
#line 734 "clpretty.ch"
                                                                    TreatGeometry(elem, x0 + xRef);
#line 734 "clpretty.ch"
#line 735 "clpretty.ch"
                                                                    dx = GetBoxSize(elem);
#line 735 "clpretty.ch"
#line 736 "clpretty.ch"
                                                                    if ( dx > maxDx ) 
#line 736 "clpretty.ch"
#line 737 "clpretty.ch"
                                                                        maxDx = dx ;
#line 737 "clpretty.ch"
#line 737 "clpretty.ch"
                                                                 }
#line 737 "clpretty.ch"
#line 737 "clpretty.ch"
    }
#line 737 "clpretty.ch"
#line 737 "clpretty.ch"
#line 737 "clpretty.ch"
}
#line 737 "clpretty.ch"
#line 739 "clpretty.ch"
PutCoord(tree, xRef, yRef |= 1, maxDx, posMarkRef);
#line 739 "clpretty.ch"
#line 739 "clpretty.ch"
                                                                           }
#line 739 "clpretty.ch"
#line 739 "clpretty.ch"
                              }
#line 739 "clpretty.ch"
#line 744 "clpretty.ch"
GetCoord(tree, &xRef, &yRef, &dxRef, &posMarkRef);
#line 744 "clpretty.ch"
#line 745 "clpretty.ch"
if ( x0 + xRef + dxRef > rightMargin ) {
#line 745 "clpretty.ch"
#line 746 "clpretty.ch"
                                            if ( IsTop(tree) != - 1 && x0 + xRef > 3 ) {
#line 746 "clpretty.ch"
#line 749 "clpretty.ch"
CleanAttributs(tree);
#line 749 "clpretty.ch"
#line 752 "clpretty.ch"
{
#line 752 "clpretty.ch"
    PPTREE _ptTree0=(PPTREE) 0;
#line 752 "clpretty.ch"
    _ptTree0 = (PPTREE) 0;
#line 752 "clpretty.ch"
    {
#line 752 "clpretty.ch"
        PPTREE _ptTree1= (PPTREE) 0 ;
#line 752 "clpretty.ch"
        {
#line 752 "clpretty.ch"
            PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 752 "clpretty.ch"
            _ptRes2 = MakeTree(pretty::GOTO, 1);
#line 752 "clpretty.ch"
            _ptTree2 = MakeString("3") ;
#line 752 "clpretty.ch"
            ReplaceTree(_ptRes2, 1, _ptTree2);
#line 752 "clpretty.ch"
            _ptTree1 = _ptRes2;
#line 752 "clpretty.ch"
        }
#line 752 "clpretty.ch"
        _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 752 "clpretty.ch"
    }
#line 752 "clpretty.ch"
    {
#line 752 "clpretty.ch"
        PPTREE _ptTree1= (PPTREE) 0 ;
#line 752 "clpretty.ch"
        {
#line 752 "clpretty.ch"
            PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 752 "clpretty.ch"
            _ptRes2 = MakeTree(pretty::MARK, 0);
#line 752 "clpretty.ch"
            _ptTree1 = _ptRes2;
#line 752 "clpretty.ch"
        }
#line 752 "clpretty.ch"
        _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 752 "clpretty.ch"
    }
#line 752 "clpretty.ch"
    list = _ptTree0;
#line 752 "clpretty.ch"
    ;
#line 752 "clpretty.ch"
}
#line 752 "clpretty.ch"
#line 752 "clpretty.ch"
#line 753 "clpretty.ch"
PutAttr(tree, list, PRE_ATTR, PUT_END);
#line 753 "clpretty.ch"
#line 754 "clpretty.ch"
{
#line 754 "clpretty.ch"
    PPTREE _ptTree0=(PPTREE) 0;
#line 754 "clpretty.ch"
    _ptTree0 = (PPTREE) 0;
#line 754 "clpretty.ch"
    {
#line 754 "clpretty.ch"
        PPTREE _ptTree1= (PPTREE) 0 ;
#line 754 "clpretty.ch"
        {
#line 754 "clpretty.ch"
            PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 754 "clpretty.ch"
            _ptRes2 = MakeTree(pretty::UNMARK, 0);
#line 754 "clpretty.ch"
            _ptTree1 = _ptRes2;
#line 754 "clpretty.ch"
        }
#line 754 "clpretty.ch"
        _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 754 "clpretty.ch"
    }
#line 754 "clpretty.ch"
    list = _ptTree0;
#line 754 "clpretty.ch"
    ;
#line 754 "clpretty.ch"
}
#line 754 "clpretty.ch"
#line 754 "clpretty.ch"
#line 755 "clpretty.ch"
PutAttr(tree, list, POST_ATTR, PUT_END);
#line 755 "clpretty.ch"
#line 758 "clpretty.ch"
Treat(FatherTree(tree));
#line 758 "clpretty.ch"
#line 761 "clpretty.ch"
GetCoord(tree, &xRef, &yRef, &dxRef, &posMarkRef);
#line 761 "clpretty.ch"
#line 762 "clpretty.ch"
PutCoord(tree, xRef, yRef, 3, posMarkRef);
#line 762 "clpretty.ch"
#line 762 "clpretty.ch"
                                                                                              }
#line 762 "clpretty.ch"
#line 762 "clpretty.ch"
                                           }
#line 762 "clpretty.ch"
#line 762 "clpretty.ch"
                                                                                                     }
#line 762 "clpretty.ch"
#line 762 "clpretty.ch"
                                                              } else 
#line 766 "clpretty.ch"
    if ( ((_inter = (PPTREE)tree,1) && 
#line 766 "clpretty.ch"
            (NumberTree(_inter) == pretty::ATTRIBUTS) &&
#line 766 "clpretty.ch"
            ((tree=SonTree(_inter,1)),1) &&
#line 766 "clpretty.ch"
            ((preAttribute=SonTree(_inter,2)),1) &&
#line 766 "clpretty.ch"
            1) ) {
#line 766 "clpretty.ch"
#line 767 "clpretty.ch"
                    int gotTabVirt = 0 ;
#line 767 "clpretty.ch"
#line 768 "clpretty.ch"
                    int oldNbTab = nbTab ;
#line 768 "clpretty.ch"
#line 769 "clpretty.ch"
                    int oldMarkTab = markTab ;
#line 769 "clpretty.ch"
#line 770 "clpretty.ch"
                    PTREE   elem ;
#line 770 "clpretty.ch"
#line 770 "clpretty.ch"
#line 771 "clpretty.ch"
                    while ( (elem=(preAttribute?preAttribute.Nextl():(PPTREE)0)) ) {
#line 771 "clpretty.ch"
#line 772 "clpretty.ch"
switch ( NumberTree(elem) ) {
#line 772 "clpretty.ch"
#line 773 "clpretty.ch"
    case pretty::TAB_VIRT : 
#line 773 "clpretty.ch"
#line 773 "clpretty.ch"
        (tree1=SonTree(elem, 1));
#line 773 "clpretty.ch"
#line 773 "clpretty.ch"
#line 773 "clpretty.ch"
        (tree2=SonTree(elem, 2));
#line 773 "clpretty.ch"
#line 773 "clpretty.ch"
#line 773 "clpretty.ch"
    _Case0 : 
#line 773 "clpretty.ch"
#line 773 "clpretty.ch"
        ;
#line 773 "clpretty.ch"
#line 774 "clpretty.ch"
        gotTabVirt = 1 ;
#line 774 "clpretty.ch"
#line 775 "clpretty.ch"
        break ;
#line 775 "clpretty.ch"
}
#line 775 "clpretty.ch"
#line 775 "clpretty.ch"
#line 775 "clpretty.ch"
                                                                                       }
#line 775 "clpretty.ch"
#line 778 "clpretty.ch"
                    if ( gotTabVirt ) {
#line 778 "clpretty.ch"
#line 779 "clpretty.ch"
                                        GetCoord(tree, &x, &y, &dx, &posMark);
#line 779 "clpretty.ch"
#line 780 "clpretty.ch"
                                        markTab = atoi(Value(tree1));
#line 780 "clpretty.ch"
#line 781 "clpretty.ch"
                                        if ( oldMarkTab == - 1 || posMark == oldMarkTab ) 
#line 781 "clpretty.ch"
#line 782 "clpretty.ch"
                                            nbTab += atoi(Value(tree2));
#line 782 "clpretty.ch"
                                        else 
#line 782 "clpretty.ch"
#line 784 "clpretty.ch"
                                            nbTab = 1 ;
#line 784 "clpretty.ch"
#line 784 "clpretty.ch"
#line 784 "clpretty.ch"
                                       }
#line 784 "clpretty.ch"
#line 786 "clpretty.ch"
                    TreatGeometry(tree, x0);
#line 786 "clpretty.ch"
#line 789 "clpretty.ch"
                    nbTab = oldNbTab ;
#line 789 "clpretty.ch"
#line 790 "clpretty.ch"
                    markTab = oldMarkTab ;
#line 790 "clpretty.ch"
#line 790 "clpretty.ch"
                 }
#line 790 "clpretty.ch"
#line 792 "clpretty.ch"
}
#line 792 "clpretty.ch"

#line 796 "clpretty.ch"
#line 796 "clpretty.ch"
void clpretty::UpdateSize ( PTREE tree, int type )
#line 796 "clpretty.ch"
{
#line 796 "clpretty.ch"
#line 799 "clpretty.ch"
    int x, y, dx, dy ;
#line 799 "clpretty.ch"
#line 800 "clpretty.ch"
    int maxDx ;
#line 800 "clpretty.ch"
#line 801 "clpretty.ch"
    int xRef, yRef, dxRef, dyRef ;
#line 801 "clpretty.ch"
#line 803 "clpretty.ch"
    if ( OpType(tree) == type ) {
#line 803 "clpretty.ch"
#line 806 "clpretty.ch"
                                    UpdateSize(SonTreeAttr(tree, 1), type);
#line 806 "clpretty.ch"
#line 807 "clpretty.ch"
                                    UpdateSize(SonTreeAttr(tree, 2), type);
#line 807 "clpretty.ch"
#line 810 "clpretty.ch"
                                    GetCoord(sontree(tree, 1), &x, &y, &dx, &dy);
#line 810 "clpretty.ch"
#line 811 "clpretty.ch"
                                    maxDx = x + dx ;
#line 811 "clpretty.ch"
#line 812 "clpretty.ch"
                                    GetCoord(sontree(tree, 2), &x, &y, &dx, &dy);
#line 812 "clpretty.ch"
#line 813 "clpretty.ch"
                                    if ( x + dx > maxDx ) 
#line 813 "clpretty.ch"
#line 814 "clpretty.ch"
                                        maxDx = x + dx ;
#line 814 "clpretty.ch"
#line 817 "clpretty.ch"
                                    GetCoord(tree, &x, &y, &dx, &dy);
#line 817 "clpretty.ch"
#line 818 "clpretty.ch"
                                    PutCoord(tree, x, y | 1, maxDx, dy);
#line 818 "clpretty.ch"
#line 818 "clpretty.ch"
                                   }
#line 818 "clpretty.ch"
#line 820 "clpretty.ch"
}
#line 820 "clpretty.ch"

#line 825 "clpretty.ch"
#line 825 "clpretty.ch"
void clpretty::TraiterExp2H ( PTREE tree, int x0 )
#line 825 "clpretty.ch"
{
#line 825 "clpretty.ch"
    register PPTREE _inter ;
#line 825 "clpretty.ch"
#line 825 "clpretty.ch"
#line 829 "clpretty.ch"
    int y0 ;
#line 829 "clpretty.ch"
#line 830 "clpretty.ch"
    int x ;
#line 830 "clpretty.ch"
#line 831 "clpretty.ch"
    int y ;
#line 831 "clpretty.ch"
#line 832 "clpretty.ch"
    int dx ;
#line 832 "clpretty.ch"
#line 833 "clpretty.ch"
    int lastMark ;
#line 833 "clpretty.ch"
#line 834 "clpretty.ch"
    int deltaRef ;
#line 834 "clpretty.ch"
#line 835 "clpretty.ch"
    int delta ;
#line 835 "clpretty.ch"
#line 836 "clpretty.ch"
    PTREE   lastTree ;
#line 836 "clpretty.ch"
#line 836 "clpretty.ch"
#line 837 "clpretty.ch"
    PTREE   attributeList ;
#line 837 "clpretty.ch"
#line 837 "clpretty.ch"
#line 838 "clpretty.ch"
    PTREE   father ;
#line 838 "clpretty.ch"
#line 838 "clpretty.ch"
#line 839 "clpretty.ch"
    PTREE   treeWithAttribute ;
#line 839 "clpretty.ch"
#line 839 "clpretty.ch"
#line 840 "clpretty.ch"
    int posTree ;
#line 840 "clpretty.ch"
#line 841 "clpretty.ch"
    PTREE   preAttribute ;
#line 841 "clpretty.ch"
#line 841 "clpretty.ch"
#line 842 "clpretty.ch"
    PTREE   postAttribute ;
#line 842 "clpretty.ch"
#line 842 "clpretty.ch"
#line 843 "clpretty.ch"
    PTREE   firstElem = (PTREE)0 ;
#line 843 "clpretty.ch"
#line 843 "clpretty.ch"
#line 844 "clpretty.ch"
    int hasIndented = 0 ;
#line 844 "clpretty.ch"
#line 845 "clpretty.ch"
    int priority ;
#line 845 "clpretty.ch"
#line 846 "clpretty.ch"
    int nPriority ;
#line 846 "clpretty.ch"
#line 847 "clpretty.ch"
    int posRef ;
#line 847 "clpretty.ch"
#line 848 "clpretty.ch"
    int colRef ;
#line 848 "clpretty.ch"
#line 849 "clpretty.ch"
    int ret = 1 ;
#line 849 "clpretty.ch"
#line 850 "clpretty.ch"
    int maxDx = 0 ;
#line 850 "clpretty.ch"
#line 851 "clpretty.ch"
    PTREE   list ;
#line 851 "clpretty.ch"
#line 851 "clpretty.ch"
#line 852 "clpretty.ch"
    int oldNbTab = nbTab ;
#line 852 "clpretty.ch"
#line 853 "clpretty.ch"
    PTREE   hasToPutVirt = (PTREE)0 ;
#line 853 "clpretty.ch"
#line 853 "clpretty.ch"
#line 854 "clpretty.ch"
    int deltaLoc ;
#line 854 "clpretty.ch"
#line 855 "clpretty.ch"
    PTREE   inter ;
#line 855 "clpretty.ch"
#line 855 "clpretty.ch"
#line 843 "clpretty.ch"
    firstElem = (PPTREE) 0 ;
#line 843 "clpretty.ch"
#line 843 "clpretty.ch"
#line 853 "clpretty.ch"
    hasToPutVirt = (PPTREE) 0 ;
#line 853 "clpretty.ch"
#line 853 "clpretty.ch"
#line 858 "clpretty.ch"
    GetCoord(tree, &x, &y, &dx, &colRef);
#line 858 "clpretty.ch"
#line 859 "clpretty.ch"
    x0 += x ;
#line 859 "clpretty.ch"
#line 860 "clpretty.ch"
    MarkCoordTree(tree, x0, 0);
#line 860 "clpretty.ch"
#line 863 "clpretty.ch"
    priority = OpType(tree);
#line 863 "clpretty.ch"
#line 864 "clpretty.ch"
    if ( colRef != markTab ) 
#line 864 "clpretty.ch"
#line 865 "clpretty.ch"
        nbTab = 0 ;
#line 865 "clpretty.ch"
#line 866 "clpretty.ch"
    posRef = TAB_VALUE(colRef, nbTab + 1);
#line 866 "clpretty.ch"
#line 867 "clpretty.ch"
    deltaRef = delta = 0 ;
#line 867 "clpretty.ch"
#line 868 "clpretty.ch"
    currTabTree = 0 ;
#line 868 "clpretty.ch"
#line 871 "clpretty.ch"
    AddTree(tree, 0);
#line 871 "clpretty.ch"
#line 874 "clpretty.ch"
    {
#line 874 "clpretty.ch"
#line 874 "clpretty.ch"
        ItPtree _iterator1 (tree, (PPTREE) 0) ;
#line 874 "clpretty.ch"
#line 874 "clpretty.ch"
        PPTREE  _for_elem ;
#line 874 "clpretty.ch"
#line 874 "clpretty.ch"
        _iterator1.AllSearch(1);
#line 874 "clpretty.ch"
#line 875 "clpretty.ch"
        while ( _for_elem = _iterator1++ ) {
#line 875 "clpretty.ch"
#line 874 "clpretty.ch"
            {
#line 874 "clpretty.ch"
#line 875 "clpretty.ch"
                nPriority = OpType(for_elem);
#line 875 "clpretty.ch"
#line 876 "clpretty.ch"
                GetCoord(for_elem, &x, &y, &dx, &lastMark);
#line 876 "clpretty.ch"
#line 877 "clpretty.ch"
                if ( nPriority != priority ) {
#line 877 "clpretty.ch"
#line 877 "clpretty.ch"
                                                PTREE   _Baum0 ;
#line 877 "clpretty.ch"
#line 877 "clpretty.ch"
#line 878 "clpretty.ch"
                                                _Baum0 = (PPTREE) 0 ;
#line 878 "clpretty.ch"
#line 878 "clpretty.ch"
#line 878 "clpretty.ch"
                                                GetCoordAbs(for_elem, _Baum0, &x0, &y0);
#line 878 "clpretty.ch"
#line 882 "clpretty.ch"
                                                if ( (!lastTree || deltaRef >= 0) && x0 + dx + delta > rightMargin ) {
#line 882 "clpretty.ch"
#line 884 "clpretty.ch"
if ( !hasToPutVirt ) {
#line 884 "clpretty.ch"
#line 885 "clpretty.ch"
                        (hasToPutVirt=for_elem);
#line 885 "clpretty.ch"
#line 885 "clpretty.ch"
#line 886 "clpretty.ch"
                        (lastTree=for_elem);
#line 886 "clpretty.ch"
#line 886 "clpretty.ch"
#line 886 "clpretty.ch"
                       } else 
#line 887 "clpretty.ch"
{
#line 887 "clpretty.ch"
#line 888 "clpretty.ch"
    char    string [10];
#line 888 "clpretty.ch"
#line 889 "clpretty.ch"
    sprintf(string, "%d", colRef);
#line 889 "clpretty.ch"
#line 890 "clpretty.ch"
    {
#line 890 "clpretty.ch"
        PPTREE _ptTree0=(PPTREE) 0;
#line 890 "clpretty.ch"
        _ptTree0 = (PPTREE) 0;
#line 890 "clpretty.ch"
        {
#line 890 "clpretty.ch"
            PPTREE _ptTree1= (PPTREE) 0 ;
#line 890 "clpretty.ch"
            {
#line 890 "clpretty.ch"
                PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 890 "clpretty.ch"
                _ptRes2 = MakeTree(pretty::TAB_VIRT, 2);
#line 890 "clpretty.ch"
                _ptTree2 = StoreRef(MakeString(string));
#line 890 "clpretty.ch"
                ReplaceTree(_ptRes2, 1, _ptTree2);
#line 890 "clpretty.ch"
                _ptTree2 = MakeString("1") ;
#line 890 "clpretty.ch"
                ReplaceTree(_ptRes2, 2, _ptTree2);
#line 890 "clpretty.ch"
                _ptTree1 = _ptRes2;
#line 890 "clpretty.ch"
            }
#line 890 "clpretty.ch"
            _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 890 "clpretty.ch"
        }
#line 890 "clpretty.ch"
        list = _ptTree0;
#line 890 "clpretty.ch"
        ;
#line 890 "clpretty.ch"
    }
#line 890 "clpretty.ch"
#line 890 "clpretty.ch"
#line 891 "clpretty.ch"
    PutAttr(for_elem, list, PRE_ATTR, PUT_END);
#line 891 "clpretty.ch"
#line 892 "clpretty.ch"
    (lastTree=for_elem);
#line 892 "clpretty.ch"
#line 892 "clpretty.ch"
#line 893 "clpretty.ch"
    for_elem = FatherTree(for_elem);
#line 893 "clpretty.ch"
#line 893 "clpretty.ch"
}
#line 893 "clpretty.ch"
#line 893 "clpretty.ch"
                                                                                                                              } else 
#line 895 "clpretty.ch"
                                                {
#line 895 "clpretty.ch"
#line 899 "clpretty.ch"
                                                    if ( x0 + dx + delta > rightMargin && lastTree && deltaRef < - 1 ) {
#line 899 "clpretty.ch"
#line 899 "clpretty.ch"
PTREE   _Baum1 ;
#line 899 "clpretty.ch"
#line 899 "clpretty.ch"
#line 904 "clpretty.ch"
{
#line 904 "clpretty.ch"
    PPTREE _ptTree0=(PPTREE) 0;
#line 904 "clpretty.ch"
    _ptTree0 = (PPTREE) 0;
#line 904 "clpretty.ch"
    {
#line 904 "clpretty.ch"
        PPTREE _ptTree1= (PPTREE) 0 ;
#line 904 "clpretty.ch"
        {
#line 904 "clpretty.ch"
            PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 904 "clpretty.ch"
            _ptRes2 = MakeTree(pretty::NEWLINE, 1);
#line 904 "clpretty.ch"
            _ptTree2 = MakeString("1") ;
#line 904 "clpretty.ch"
            ReplaceTree(_ptRes2, 1, _ptTree2);
#line 904 "clpretty.ch"
            _ptTree1 = _ptRes2;
#line 904 "clpretty.ch"
        }
#line 904 "clpretty.ch"
        _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 904 "clpretty.ch"
    }
#line 904 "clpretty.ch"
    attributeList = _ptTree0;
#line 904 "clpretty.ch"
    ;
#line 904 "clpretty.ch"
}
#line 904 "clpretty.ch"
#line 904 "clpretty.ch"
#line 905 "clpretty.ch"
if ( !hasIndented ) {
#line 905 "clpretty.ch"
#line 906 "clpretty.ch"
                        {
#line 906 "clpretty.ch"
#line 907 "clpretty.ch"
                            char    string [3];
#line 907 "clpretty.ch"
#line 908 "clpretty.ch"
                            sprintf(string, "%d", nbTab + 1);
#line 908 "clpretty.ch"
#line 909 "clpretty.ch"
                            {
#line 909 "clpretty.ch"
                                PPTREE _ptTree0= (PPTREE) 0 ;
#line 909 "clpretty.ch"
                                {
#line 909 "clpretty.ch"
                                    PPTREE _ptTree1= (PPTREE) 0 ;
#line 909 "clpretty.ch"
                                    {
#line 909 "clpretty.ch"
                                        PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 909 "clpretty.ch"
                                        _ptRes2 = MakeTree(pretty::TAB, 1);
#line 909 "clpretty.ch"
                                        _ptTree2 = StoreRef(MakeString(string));
#line 909 "clpretty.ch"
                                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 909 "clpretty.ch"
                                        _ptTree1 = _ptRes2;
#line 909 "clpretty.ch"
                                    }
#line 909 "clpretty.ch"
                                    attributeList =  AddList( attributeList,_ptTree1);
#line 909 "clpretty.ch"
                                }
#line 909 "clpretty.ch"
                                {
#line 909 "clpretty.ch"
                                    PPTREE _ptTree1= (PPTREE) 0 ;
#line 909 "clpretty.ch"
                                    {
#line 909 "clpretty.ch"
                                        PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 909 "clpretty.ch"
                                        _ptRes2 = MakeTree(pretty::MARK, 0);
#line 909 "clpretty.ch"
                                        _ptTree1 = _ptRes2;
#line 909 "clpretty.ch"
                                    }
#line 909 "clpretty.ch"
                                    attributeList =  AddList( attributeList,_ptTree1);
#line 909 "clpretty.ch"
                                }
#line 909 "clpretty.ch"
                            }
#line 909 "clpretty.ch"
#line 909 "clpretty.ch"
#line 909 "clpretty.ch"
                        }
#line 909 "clpretty.ch"
#line 912 "clpretty.ch"
                        hasIndented = 1 ;
#line 912 "clpretty.ch"
#line 912 "clpretty.ch"
                      }
#line 912 "clpretty.ch"
#line 914 "clpretty.ch"
PutAttr(lastTree, attributeList, POST_ATTR, PUT_END);
#line 914 "clpretty.ch"
#line 917 "clpretty.ch"
delta = deltaRef ;
#line 917 "clpretty.ch"
#line 918 "clpretty.ch"
_Baum1 = (PPTREE) 0 ;
#line 918 "clpretty.ch"
#line 918 "clpretty.ch"
#line 918 "clpretty.ch"
(inter=SNextTree(lastTree, _Baum1));
#line 918 "clpretty.ch"
#line 918 "clpretty.ch"
#line 919 "clpretty.ch"
while ( 1 ) {
#line 919 "clpretty.ch"
#line 919 "clpretty.ch"
                PTREE   _Baum3 ;
#line 919 "clpretty.ch"
#line 919 "clpretty.ch"
#line 920 "clpretty.ch"
                (father=FatherTree(inter));
#line 920 "clpretty.ch"
#line 920 "clpretty.ch"
#line 921 "clpretty.ch"
                while ( inter && ((_inter = (PPTREE)father,1) && 
#line 921 "clpretty.ch"
                                        (NumberTree(_inter) == pretty::ATTRIBUTS) &&
#line 921 "clpretty.ch"
                                        1) && ranktree(inter) != 1 ) {
#line 921 "clpretty.ch"
#line 921 "clpretty.ch"
PTREE   _Baum2 ;
#line 921 "clpretty.ch"
#line 921 "clpretty.ch"
#line 923 "clpretty.ch"
_Baum2 = (PPTREE) 0 ;
#line 923 "clpretty.ch"
#line 923 "clpretty.ch"
#line 923 "clpretty.ch"
(inter=SNextTree(father, _Baum2));
#line 923 "clpretty.ch"
#line 923 "clpretty.ch"
#line 924 "clpretty.ch"
(father=FatherTree(inter));
#line 924 "clpretty.ch"
#line 924 "clpretty.ch"
#line 924 "clpretty.ch"
                                                                        }
#line 924 "clpretty.ch"
#line 926 "clpretty.ch"
                if ( inter != for_elem ) 
#line 926 "clpretty.ch"
#line 927 "clpretty.ch"
                    AddTree(inter, delta);
#line 927 "clpretty.ch"
                else 
#line 928 "clpretty.ch"
                {
#line 928 "clpretty.ch"
#line 929 "clpretty.ch"
                    deltaLoc = delta - FindDelta(inter);
#line 929 "clpretty.ch"
#line 930 "clpretty.ch"
                    PutCoord(inter, x + deltaLoc, y, dx, lastMark);
#line 930 "clpretty.ch"
#line 931 "clpretty.ch"
                    break ;
#line 931 "clpretty.ch"
#line 931 "clpretty.ch"
                }
#line 931 "clpretty.ch"
#line 933 "clpretty.ch"
                _Baum3 = (PPTREE) 0 ;
#line 933 "clpretty.ch"
#line 933 "clpretty.ch"
#line 933 "clpretty.ch"
                (inter=NextTree(inter, _Baum3));
#line 933 "clpretty.ch"
#line 933 "clpretty.ch"
#line 933 "clpretty.ch"
             }
#line 933 "clpretty.ch"
#line 937 "clpretty.ch"
TraitMark(for_elem, posRef);
#line 937 "clpretty.ch"
#line 937 "clpretty.ch"
                                                                                                                               } else 
#line 938 "clpretty.ch"
                                                    if ( hasIndented ) {
#line 938 "clpretty.ch"
#line 941 "clpretty.ch"
deltaLoc = delta - FindDelta(for_elem);
#line 941 "clpretty.ch"
#line 942 "clpretty.ch"
PutCoord(for_elem, x + deltaLoc, y, dx, lastMark);
#line 942 "clpretty.ch"
#line 945 "clpretty.ch"
TraitMark(for_elem, posRef);
#line 945 "clpretty.ch"
#line 945 "clpretty.ch"
                                                                        }
#line 945 "clpretty.ch"
#line 947 "clpretty.ch"
                                                    (lastTree=for_elem);
#line 947 "clpretty.ch"
#line 947 "clpretty.ch"
#line 947 "clpretty.ch"
                                                }
#line 947 "clpretty.ch"
#line 952 "clpretty.ch"
                                                if ( y & 0x2 ) {
#line 952 "clpretty.ch"
#line 953 "clpretty.ch"
                                                                    delta = deltaRef = posRef - colRef ;
#line 953 "clpretty.ch"
#line 953 "clpretty.ch"
                                                                 } else 
#line 953 "clpretty.ch"
#line 955 "clpretty.ch"
                                                    deltaRef = posRef - x0 - dx ;
#line 955 "clpretty.ch"
#line 955 "clpretty.ch"
#line 958 "clpretty.ch"
                                                goto for_continue1 ;
#line 958 "clpretty.ch"
#line 958 "clpretty.ch"
                                               } else 
#line 959 "clpretty.ch"
                if ( hasIndented ) {
#line 959 "clpretty.ch"
#line 960 "clpretty.ch"
                                        AddTree(for_elem, delta);
#line 960 "clpretty.ch"
#line 960 "clpretty.ch"
                                    }
#line 960 "clpretty.ch"
#line 960 "clpretty.ch"
            }
#line 960 "clpretty.ch"
#line 960 "clpretty.ch"
            _iterator1.Current(_for_elem);
#line 960 "clpretty.ch"
#line 960 "clpretty.ch"
            continue ;
#line 960 "clpretty.ch"
#line 960 "clpretty.ch"
        for_continue1 : 
#line 960 "clpretty.ch"
#line 960 "clpretty.ch"
            _iterator1.Current(_for_elem);
#line 960 "clpretty.ch"
#line 960 "clpretty.ch"
            _iterator1.SkipSon(1);
#line 960 "clpretty.ch"
#line 960 "clpretty.ch"
            continue ;
#line 960 "clpretty.ch"
#line 960 "clpretty.ch"
        for_break1 : 
#line 960 "clpretty.ch"
#line 960 "clpretty.ch"
            break ;
#line 960 "clpretty.ch"
#line 960 "clpretty.ch"
        }
#line 960 "clpretty.ch"
#line 960 "clpretty.ch"
    }
#line 960 "clpretty.ch"
#line 965 "clpretty.ch"
    if ( hasIndented ) {
#line 965 "clpretty.ch"
#line 966 "clpretty.ch"
                            {
#line 966 "clpretty.ch"
                                PPTREE _ptTree0=(PPTREE) 0;
#line 966 "clpretty.ch"
                                _ptTree0 = (PPTREE) 0;
#line 966 "clpretty.ch"
                                {
#line 966 "clpretty.ch"
                                    PPTREE _ptTree1= (PPTREE) 0 ;
#line 966 "clpretty.ch"
                                    {
#line 966 "clpretty.ch"
                                        PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 966 "clpretty.ch"
                                        _ptRes2 = MakeTree(pretty::UNMARK, 0);
#line 966 "clpretty.ch"
                                        _ptTree1 = _ptRes2;
#line 966 "clpretty.ch"
                                    }
#line 966 "clpretty.ch"
                                    _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 966 "clpretty.ch"
                                }
#line 966 "clpretty.ch"
                                list = _ptTree0;
#line 966 "clpretty.ch"
                                ;
#line 966 "clpretty.ch"
                            }
#line 966 "clpretty.ch"
#line 966 "clpretty.ch"
#line 967 "clpretty.ch"
                            PutAttr(lastTree, list, POST_ATTR, PUT_BEG);
#line 967 "clpretty.ch"
#line 967 "clpretty.ch"
                        }
#line 967 "clpretty.ch"
#line 971 "clpretty.ch"
    if ( hasIndented && hasToPutVirt ) {
#line 971 "clpretty.ch"
#line 972 "clpretty.ch"
                                            char    string [10];
#line 972 "clpretty.ch"
#line 973 "clpretty.ch"
                                            sprintf(string, "%d", colRef);
#line 973 "clpretty.ch"
#line 974 "clpretty.ch"
                                            {
#line 974 "clpretty.ch"
                                                PPTREE _ptTree0=(PPTREE) 0;
#line 974 "clpretty.ch"
                                                _ptTree0 = (PPTREE) 0;
#line 974 "clpretty.ch"
                                                {
#line 974 "clpretty.ch"
                                                    PPTREE _ptTree1= (PPTREE) 0 ;
#line 974 "clpretty.ch"
                                                    {
#line 974 "clpretty.ch"
                                                        PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 974 "clpretty.ch"
                                                        _ptRes2 = MakeTree(pretty::TAB_VIRT, 2);
#line 974 "clpretty.ch"
                                                        _ptTree2 = StoreRef(MakeString(string));
#line 974 "clpretty.ch"
                                                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 974 "clpretty.ch"
                                                        _ptTree2 = MakeString("1") ;
#line 974 "clpretty.ch"
                                                        ReplaceTree(_ptRes2, 2, _ptTree2);
#line 974 "clpretty.ch"
                                                        _ptTree1 = _ptRes2;
#line 974 "clpretty.ch"
                                                    }
#line 974 "clpretty.ch"
                                                    _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 974 "clpretty.ch"
                                                }
#line 974 "clpretty.ch"
                                                list = _ptTree0;
#line 974 "clpretty.ch"
                                                ;
#line 974 "clpretty.ch"
                                            }
#line 974 "clpretty.ch"
#line 974 "clpretty.ch"
#line 975 "clpretty.ch"
                                            PutAttr(hasToPutVirt, list, PRE_ATTR, PUT_END);
#line 975 "clpretty.ch"
#line 975 "clpretty.ch"
                                         }
#line 975 "clpretty.ch"
#line 979 "clpretty.ch"
#line 979 "clpretty.ch"
    for ( int nbNode = 0 ; nbNode < currTabTree ; nbNode++ ) {
#line 979 "clpretty.ch"
#line 980 "clpretty.ch"
                                                                    GetCoord(tabTree [nbNode].tree, &x, &y, &dx, &lastMark);
#line 980 "clpretty.ch"
#line 981 "clpretty.ch"
                                                                    deltaLoc = tabTree [nbNode].delta - FindDelta(tabTree [nbNode].tree);
#line 981 "clpretty.ch"
#line 983 "clpretty.ch"
                                                                    PutCoord(tabTree [nbNode].tree, x + deltaLoc, y, dx, lastMark);
#line 983 "clpretty.ch"
#line 983 "clpretty.ch"
                                                                  }
#line 983 "clpretty.ch"
#line 983 "clpretty.ch"
#line 987 "clpretty.ch"
    UpdateSize(tree, OpType(tree));
#line 987 "clpretty.ch"
#line 990 "clpretty.ch"
    UnMarkCoordTree(tree);
#line 990 "clpretty.ch"
#line 991 "clpretty.ch"
    nbTab = oldNbTab ;
#line 991 "clpretty.ch"
#line 992 "clpretty.ch"
}
#line 992 "clpretty.ch"

#line 997 "clpretty.ch"
#line 997 "clpretty.ch"
void clpretty::TraiterExp2V ( PTREE tree, int x0 )
#line 997 "clpretty.ch"
{
#line 997 "clpretty.ch"
    register PPTREE _inter ;
#line 997 "clpretty.ch"
#line 997 "clpretty.ch"
#line 1001 "clpretty.ch"
    int y0 ;
#line 1001 "clpretty.ch"
#line 1002 "clpretty.ch"
    int x ;
#line 1002 "clpretty.ch"
#line 1003 "clpretty.ch"
    int y ;
#line 1003 "clpretty.ch"
#line 1004 "clpretty.ch"
    int dx ;
#line 1004 "clpretty.ch"
#line 1005 "clpretty.ch"
    int lastMark ;
#line 1005 "clpretty.ch"
#line 1006 "clpretty.ch"
    int deltaRef ;
#line 1006 "clpretty.ch"
#line 1007 "clpretty.ch"
    int delta ;
#line 1007 "clpretty.ch"
#line 1008 "clpretty.ch"
    PTREE   lastTree ;
#line 1008 "clpretty.ch"
#line 1008 "clpretty.ch"
#line 1009 "clpretty.ch"
    PTREE   attributeList ;
#line 1009 "clpretty.ch"
#line 1009 "clpretty.ch"
#line 1010 "clpretty.ch"
    PTREE   father ;
#line 1010 "clpretty.ch"
#line 1010 "clpretty.ch"
#line 1011 "clpretty.ch"
    PTREE   treeWithAttribute ;
#line 1011 "clpretty.ch"
#line 1011 "clpretty.ch"
#line 1012 "clpretty.ch"
    int posTree ;
#line 1012 "clpretty.ch"
#line 1013 "clpretty.ch"
    PTREE   preAttribute ;
#line 1013 "clpretty.ch"
#line 1013 "clpretty.ch"
#line 1014 "clpretty.ch"
    PTREE   postAttribute ;
#line 1014 "clpretty.ch"
#line 1014 "clpretty.ch"
#line 1015 "clpretty.ch"
    PTREE   firstElem = (PTREE)0 ;
#line 1015 "clpretty.ch"
#line 1015 "clpretty.ch"
#line 1016 "clpretty.ch"
    int hasIndented = 0 ;
#line 1016 "clpretty.ch"
#line 1017 "clpretty.ch"
    int priority ;
#line 1017 "clpretty.ch"
#line 1018 "clpretty.ch"
    int nPriority ;
#line 1018 "clpretty.ch"
#line 1019 "clpretty.ch"
    int posRef ;
#line 1019 "clpretty.ch"
#line 1020 "clpretty.ch"
    int colRef ;
#line 1020 "clpretty.ch"
#line 1021 "clpretty.ch"
    int ret = 1 ;
#line 1021 "clpretty.ch"
#line 1022 "clpretty.ch"
    PTREE   list ;
#line 1022 "clpretty.ch"
#line 1022 "clpretty.ch"
#line 1023 "clpretty.ch"
    PTREE   hasToPutVirt ;
#line 1023 "clpretty.ch"
#line 1023 "clpretty.ch"
#line 1024 "clpretty.ch"
    int oldNbTab = nbTab ;
#line 1024 "clpretty.ch"
#line 1025 "clpretty.ch"
    int deltaLoc ;
#line 1025 "clpretty.ch"
#line 1026 "clpretty.ch"
    PTREE   inter ;
#line 1026 "clpretty.ch"
#line 1026 "clpretty.ch"
#line 1015 "clpretty.ch"
    firstElem = (PPTREE) 0 ;
#line 1015 "clpretty.ch"
#line 1015 "clpretty.ch"
#line 1029 "clpretty.ch"
    GetCoord(tree, &x, &y, &dx, &colRef);
#line 1029 "clpretty.ch"
#line 1030 "clpretty.ch"
    x0 += x ;
#line 1030 "clpretty.ch"
#line 1031 "clpretty.ch"
    MarkCoordTree(tree, x0, 0);
#line 1031 "clpretty.ch"
#line 1032 "clpretty.ch"
    colRef = x0 ;
#line 1032 "clpretty.ch"
#line 1035 "clpretty.ch"
    {
#line 1035 "clpretty.ch"
        PPTREE _ptTree0=(PPTREE) 0;
#line 1035 "clpretty.ch"
        _ptTree0 = (PPTREE) 0;
#line 1035 "clpretty.ch"
        {
#line 1035 "clpretty.ch"
            PPTREE _ptTree1= (PPTREE) 0 ;
#line 1035 "clpretty.ch"
            {
#line 1035 "clpretty.ch"
                PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 1035 "clpretty.ch"
                _ptRes2 = MakeTree(pretty::MARK, 0);
#line 1035 "clpretty.ch"
                _ptTree1 = _ptRes2;
#line 1035 "clpretty.ch"
            }
#line 1035 "clpretty.ch"
            _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 1035 "clpretty.ch"
        }
#line 1035 "clpretty.ch"
        list = _ptTree0;
#line 1035 "clpretty.ch"
        ;
#line 1035 "clpretty.ch"
    }
#line 1035 "clpretty.ch"
#line 1035 "clpretty.ch"
#line 1036 "clpretty.ch"
    PutAttr(tree, list, PRE_ATTR, PUT_END);
#line 1036 "clpretty.ch"
#line 1037 "clpretty.ch"
    {
#line 1037 "clpretty.ch"
        PPTREE _ptTree0=(PPTREE) 0;
#line 1037 "clpretty.ch"
        _ptTree0 = (PPTREE) 0;
#line 1037 "clpretty.ch"
        {
#line 1037 "clpretty.ch"
            PPTREE _ptTree1= (PPTREE) 0 ;
#line 1037 "clpretty.ch"
            {
#line 1037 "clpretty.ch"
                PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 1037 "clpretty.ch"
                _ptRes2 = MakeTree(pretty::UNMARK, 0);
#line 1037 "clpretty.ch"
                _ptTree1 = _ptRes2;
#line 1037 "clpretty.ch"
            }
#line 1037 "clpretty.ch"
            _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 1037 "clpretty.ch"
        }
#line 1037 "clpretty.ch"
        list = _ptTree0;
#line 1037 "clpretty.ch"
        ;
#line 1037 "clpretty.ch"
    }
#line 1037 "clpretty.ch"
#line 1037 "clpretty.ch"
#line 1038 "clpretty.ch"
    PutAttr(tree, list, POST_ATTR, PUT_BEG);
#line 1038 "clpretty.ch"
#line 1039 "clpretty.ch"
    TraitMark(tree, colRef);
#line 1039 "clpretty.ch"
#line 1042 "clpretty.ch"
    priority = OpType(tree);
#line 1042 "clpretty.ch"
#line 1043 "clpretty.ch"
    if ( markTab != colRef ) 
#line 1043 "clpretty.ch"
#line 1044 "clpretty.ch"
        nbTab = 0 ;
#line 1044 "clpretty.ch"
#line 1045 "clpretty.ch"
    posRef = TAB_VALUE(x0, nbTab + 1);
#line 1045 "clpretty.ch"
#line 1046 "clpretty.ch"
    deltaRef = delta = 0 ;
#line 1046 "clpretty.ch"
#line 1049 "clpretty.ch"
    AddTree(tree, 0);
#line 1049 "clpretty.ch"
#line 1050 "clpretty.ch"
    {
#line 1050 "clpretty.ch"
#line 1050 "clpretty.ch"
        ItPtree _iterator1 (tree, (PPTREE) 0) ;
#line 1050 "clpretty.ch"
#line 1050 "clpretty.ch"
        PPTREE  _for_elem ;
#line 1050 "clpretty.ch"
#line 1050 "clpretty.ch"
        _iterator1.AllSearch(1);
#line 1050 "clpretty.ch"
#line 1053 "clpretty.ch"
        while ( _for_elem = _iterator1++ ) {
#line 1053 "clpretty.ch"
#line 1050 "clpretty.ch"
            {
#line 1050 "clpretty.ch"
#line 1053 "clpretty.ch"
                nPriority = OpType(for_elem);
#line 1053 "clpretty.ch"
#line 1054 "clpretty.ch"
                GetCoord(for_elem, &x, &y, &dx, &lastMark);
#line 1054 "clpretty.ch"
#line 1055 "clpretty.ch"
                if ( nPriority != priority ) {
#line 1055 "clpretty.ch"
#line 1055 "clpretty.ch"
                                                PTREE   _Baum0 ;
#line 1055 "clpretty.ch"
#line 1055 "clpretty.ch"
#line 1056 "clpretty.ch"
                                                _Baum0 = (PPTREE) 0 ;
#line 1056 "clpretty.ch"
#line 1056 "clpretty.ch"
#line 1056 "clpretty.ch"
                                                GetCoordAbs(for_elem, _Baum0, &x0, &y0);
#line 1056 "clpretty.ch"
#line 1060 "clpretty.ch"
                                                if ( !lastTree || deltaRef >= 0 ) {
#line 1060 "clpretty.ch"
#line 1061 "clpretty.ch"
if ( !hasToPutVirt ) {
#line 1061 "clpretty.ch"
#line 1062 "clpretty.ch"
                        (hasToPutVirt=for_elem);
#line 1062 "clpretty.ch"
#line 1062 "clpretty.ch"
#line 1063 "clpretty.ch"
                        (lastTree=for_elem);
#line 1063 "clpretty.ch"
#line 1063 "clpretty.ch"
#line 1063 "clpretty.ch"
                       } else 
#line 1064 "clpretty.ch"
{
#line 1064 "clpretty.ch"
#line 1065 "clpretty.ch"
    char    string [10];
#line 1065 "clpretty.ch"
#line 1066 "clpretty.ch"
    sprintf(string, "%d", colRef);
#line 1066 "clpretty.ch"
#line 1067 "clpretty.ch"
    {
#line 1067 "clpretty.ch"
        PPTREE _ptTree0=(PPTREE) 0;
#line 1067 "clpretty.ch"
        _ptTree0 = (PPTREE) 0;
#line 1067 "clpretty.ch"
        {
#line 1067 "clpretty.ch"
            PPTREE _ptTree1= (PPTREE) 0 ;
#line 1067 "clpretty.ch"
            {
#line 1067 "clpretty.ch"
                PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 1067 "clpretty.ch"
                _ptRes2 = MakeTree(pretty::TAB_VIRT, 2);
#line 1067 "clpretty.ch"
                _ptTree2 = StoreRef(MakeString(string));
#line 1067 "clpretty.ch"
                ReplaceTree(_ptRes2, 1, _ptTree2);
#line 1067 "clpretty.ch"
                _ptTree2 = MakeString("1") ;
#line 1067 "clpretty.ch"
                ReplaceTree(_ptRes2, 2, _ptTree2);
#line 1067 "clpretty.ch"
                _ptTree1 = _ptRes2;
#line 1067 "clpretty.ch"
            }
#line 1067 "clpretty.ch"
            _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 1067 "clpretty.ch"
        }
#line 1067 "clpretty.ch"
        list = _ptTree0;
#line 1067 "clpretty.ch"
        ;
#line 1067 "clpretty.ch"
    }
#line 1067 "clpretty.ch"
#line 1067 "clpretty.ch"
#line 1068 "clpretty.ch"
    PutAttr(for_elem, list, PRE_ATTR, PUT_END);
#line 1068 "clpretty.ch"
#line 1069 "clpretty.ch"
    (lastTree=for_elem);
#line 1069 "clpretty.ch"
#line 1069 "clpretty.ch"
#line 1070 "clpretty.ch"
    for_elem = FatherTree(for_elem);
#line 1070 "clpretty.ch"
#line 1070 "clpretty.ch"
}
#line 1070 "clpretty.ch"
#line 1070 "clpretty.ch"
                                                                                      } else 
#line 1072 "clpretty.ch"
                                                {
#line 1072 "clpretty.ch"
#line 1075 "clpretty.ch"
                                                    if ( lastTree && deltaRef < - 1 ) {
#line 1075 "clpretty.ch"
#line 1078 "clpretty.ch"
if ( !(((_inter = (PPTREE)lastTree,1) && 
#line 1078 "clpretty.ch"
            (NumberTree(_inter) == pretty::ATTRIBUTS) &&
#line 1078 "clpretty.ch"
            1)) ) {
#line 1078 "clpretty.ch"
#line 1078 "clpretty.ch"
                    PTREE   _Baum1 ;
#line 1078 "clpretty.ch"
#line 1078 "clpretty.ch"
#line 1081 "clpretty.ch"
                    {
#line 1081 "clpretty.ch"
                        PPTREE _ptTree0=(PPTREE) 0;
#line 1081 "clpretty.ch"
                        _ptTree0 = (PPTREE) 0;
#line 1081 "clpretty.ch"
                        {
#line 1081 "clpretty.ch"
                            PPTREE _ptTree1= (PPTREE) 0 ;
#line 1081 "clpretty.ch"
                            {
#line 1081 "clpretty.ch"
                                PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 1081 "clpretty.ch"
                                _ptRes2 = MakeTree(pretty::NEWLINE, 1);
#line 1081 "clpretty.ch"
                                _ptTree2 = MakeString("1") ;
#line 1081 "clpretty.ch"
                                ReplaceTree(_ptRes2, 1, _ptTree2);
#line 1081 "clpretty.ch"
                                _ptTree1 = _ptRes2;
#line 1081 "clpretty.ch"
                            }
#line 1081 "clpretty.ch"
                            _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 1081 "clpretty.ch"
                        }
#line 1081 "clpretty.ch"
                        attributeList = _ptTree0;
#line 1081 "clpretty.ch"
                        ;
#line 1081 "clpretty.ch"
                    }
#line 1081 "clpretty.ch"
#line 1081 "clpretty.ch"
#line 1082 "clpretty.ch"
                    if ( !hasIndented ) {
#line 1082 "clpretty.ch"
#line 1083 "clpretty.ch"
                                            char    string [10];
#line 1083 "clpretty.ch"
#line 1084 "clpretty.ch"
                                            sprintf(string, "%d", nbTab + 1);
#line 1084 "clpretty.ch"
#line 1085 "clpretty.ch"
                                            {
#line 1085 "clpretty.ch"
                                                PPTREE _ptTree0= (PPTREE) 0 ;
#line 1085 "clpretty.ch"
                                                {
#line 1085 "clpretty.ch"
                                                    PPTREE _ptTree1= (PPTREE) 0 ;
#line 1085 "clpretty.ch"
                                                    {
#line 1085 "clpretty.ch"
                                                        PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 1085 "clpretty.ch"
                                                        _ptRes2 = MakeTree(pretty::TAB, 1);
#line 1085 "clpretty.ch"
                                                        _ptTree2 = StoreRef(MakeString(string));
#line 1085 "clpretty.ch"
                                                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 1085 "clpretty.ch"
                                                        _ptTree1 = _ptRes2;
#line 1085 "clpretty.ch"
                                                    }
#line 1085 "clpretty.ch"
                                                    attributeList =  AddList( attributeList,_ptTree1);
#line 1085 "clpretty.ch"
                                                }
#line 1085 "clpretty.ch"
                                                {
#line 1085 "clpretty.ch"
                                                    PPTREE _ptTree1= (PPTREE) 0 ;
#line 1085 "clpretty.ch"
                                                    {
#line 1085 "clpretty.ch"
                                                        PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 1085 "clpretty.ch"
                                                        _ptRes2 = MakeTree(pretty::MARK, 0);
#line 1085 "clpretty.ch"
                                                        _ptTree1 = _ptRes2;
#line 1085 "clpretty.ch"
                                                    }
#line 1085 "clpretty.ch"
                                                    attributeList =  AddList( attributeList,_ptTree1);
#line 1085 "clpretty.ch"
                                                }
#line 1085 "clpretty.ch"
                                            }
#line 1085 "clpretty.ch"
#line 1085 "clpretty.ch"
#line 1087 "clpretty.ch"
                                            hasIndented = 1 ;
#line 1087 "clpretty.ch"
#line 1087 "clpretty.ch"
                                          }
#line 1087 "clpretty.ch"
#line 1089 "clpretty.ch"
                    PutAttr(lastTree, attributeList, POST_ATTR, PUT_END);
#line 1089 "clpretty.ch"
#line 1092 "clpretty.ch"
                    delta = deltaRef ;
#line 1092 "clpretty.ch"
#line 1093 "clpretty.ch"
                    _Baum1 = (PPTREE) 0 ;
#line 1093 "clpretty.ch"
#line 1093 "clpretty.ch"
#line 1093 "clpretty.ch"
                    (inter=SNextTree(lastTree, _Baum1));
#line 1093 "clpretty.ch"
#line 1093 "clpretty.ch"
#line 1094 "clpretty.ch"
                    while ( 1 ) {
#line 1094 "clpretty.ch"
#line 1094 "clpretty.ch"
                                    PTREE   _Baum3 ;
#line 1094 "clpretty.ch"
#line 1094 "clpretty.ch"
#line 1095 "clpretty.ch"
                                    (father=FatherTree(inter));
#line 1095 "clpretty.ch"
#line 1095 "clpretty.ch"
#line 1096 "clpretty.ch"
                                    while ( inter && ((_inter = (PPTREE)father,1) && 
#line 1096 "clpretty.ch"
                                                            (NumberTree(_inter) == pretty::ATTRIBUTS) &&
#line 1096 "clpretty.ch"
                                                            1) && ranktree(inter) != 1 ) {
#line 1096 "clpretty.ch"
#line 1096 "clpretty.ch"
PTREE   _Baum2 ;
#line 1096 "clpretty.ch"
#line 1096 "clpretty.ch"
#line 1098 "clpretty.ch"
_Baum2 = (PPTREE) 0 ;
#line 1098 "clpretty.ch"
#line 1098 "clpretty.ch"
#line 1098 "clpretty.ch"
(inter=SNextTree(father, _Baum2));
#line 1098 "clpretty.ch"
#line 1098 "clpretty.ch"
#line 1099 "clpretty.ch"
(father=FatherTree(inter));
#line 1099 "clpretty.ch"
#line 1099 "clpretty.ch"
#line 1099 "clpretty.ch"
                                                                                            }
#line 1099 "clpretty.ch"
#line 1101 "clpretty.ch"
                                    if ( inter != for_elem ) 
#line 1101 "clpretty.ch"
#line 1102 "clpretty.ch"
                                        AddTree(inter, delta);
#line 1102 "clpretty.ch"
                                    else 
#line 1103 "clpretty.ch"
                                    {
#line 1103 "clpretty.ch"
#line 1104 "clpretty.ch"
                                        deltaLoc = delta - FindDelta(inter);
#line 1104 "clpretty.ch"
#line 1105 "clpretty.ch"
                                        PutCoord(inter, x + deltaLoc, y, dx, lastMark);
#line 1105 "clpretty.ch"
#line 1107 "clpretty.ch"
                                        break ;
#line 1107 "clpretty.ch"
#line 1107 "clpretty.ch"
                                    }
#line 1107 "clpretty.ch"
#line 1109 "clpretty.ch"
                                    _Baum3 = (PPTREE) 0 ;
#line 1109 "clpretty.ch"
#line 1109 "clpretty.ch"
#line 1109 "clpretty.ch"
                                    (inter=NextTree(inter, _Baum3));
#line 1109 "clpretty.ch"
#line 1109 "clpretty.ch"
#line 1109 "clpretty.ch"
                                 }
#line 1109 "clpretty.ch"
#line 1113 "clpretty.ch"
                    TraitMark(for_elem, posRef);
#line 1113 "clpretty.ch"
#line 1113 "clpretty.ch"
                  }
#line 1113 "clpretty.ch"
#line 1113 "clpretty.ch"
                                                                                          } else 
#line 1115 "clpretty.ch"
                                                    if ( hasIndented ) {
#line 1115 "clpretty.ch"
#line 1118 "clpretty.ch"
deltaLoc = delta - FindDelta(for_elem);
#line 1118 "clpretty.ch"
#line 1119 "clpretty.ch"
PutCoord(for_elem, x + deltaLoc, y, dx, lastMark);
#line 1119 "clpretty.ch"
#line 1122 "clpretty.ch"
TraitMark(for_elem, posRef);
#line 1122 "clpretty.ch"
#line 1122 "clpretty.ch"
                                                                        }
#line 1122 "clpretty.ch"
#line 1124 "clpretty.ch"
                                                    (lastTree=for_elem);
#line 1124 "clpretty.ch"
#line 1124 "clpretty.ch"
#line 1124 "clpretty.ch"
                                                }
#line 1124 "clpretty.ch"
#line 1129 "clpretty.ch"
                                                if ( y & 0x2 ) {
#line 1129 "clpretty.ch"
#line 1130 "clpretty.ch"
                                                                    delta = deltaRef = posRef - colRef ;
#line 1130 "clpretty.ch"
#line 1130 "clpretty.ch"
                                                                 } else 
#line 1130 "clpretty.ch"
#line 1132 "clpretty.ch"
                                                    deltaRef = posRef - x0 - dx ;
#line 1132 "clpretty.ch"
#line 1132 "clpretty.ch"
#line 1135 "clpretty.ch"
                                                goto for_continue1 ;
#line 1135 "clpretty.ch"
#line 1135 "clpretty.ch"
                                               } else 
#line 1136 "clpretty.ch"
                if ( hasIndented ) {
#line 1136 "clpretty.ch"
#line 1137 "clpretty.ch"
                                        AddTree(for_elem, delta);
#line 1137 "clpretty.ch"
#line 1137 "clpretty.ch"
                                    }
#line 1137 "clpretty.ch"
#line 1137 "clpretty.ch"
            }
#line 1137 "clpretty.ch"
#line 1137 "clpretty.ch"
            _iterator1.Current(_for_elem);
#line 1137 "clpretty.ch"
#line 1137 "clpretty.ch"
            continue ;
#line 1137 "clpretty.ch"
#line 1137 "clpretty.ch"
        for_continue1 : 
#line 1137 "clpretty.ch"
#line 1137 "clpretty.ch"
            _iterator1.Current(_for_elem);
#line 1137 "clpretty.ch"
#line 1137 "clpretty.ch"
            _iterator1.SkipSon(1);
#line 1137 "clpretty.ch"
#line 1137 "clpretty.ch"
            continue ;
#line 1137 "clpretty.ch"
#line 1137 "clpretty.ch"
        for_break1 : 
#line 1137 "clpretty.ch"
#line 1137 "clpretty.ch"
            break ;
#line 1137 "clpretty.ch"
#line 1137 "clpretty.ch"
        }
#line 1137 "clpretty.ch"
#line 1137 "clpretty.ch"
    }
#line 1137 "clpretty.ch"
#line 1142 "clpretty.ch"
    if ( hasIndented ) {
#line 1142 "clpretty.ch"
#line 1143 "clpretty.ch"
                            {
#line 1143 "clpretty.ch"
                                PPTREE _ptTree0=(PPTREE) 0;
#line 1143 "clpretty.ch"
                                _ptTree0 = (PPTREE) 0;
#line 1143 "clpretty.ch"
                                {
#line 1143 "clpretty.ch"
                                    PPTREE _ptTree1= (PPTREE) 0 ;
#line 1143 "clpretty.ch"
                                    {
#line 1143 "clpretty.ch"
                                        PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 1143 "clpretty.ch"
                                        _ptRes2 = MakeTree(pretty::UNMARK, 0);
#line 1143 "clpretty.ch"
                                        _ptTree1 = _ptRes2;
#line 1143 "clpretty.ch"
                                    }
#line 1143 "clpretty.ch"
                                    _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 1143 "clpretty.ch"
                                }
#line 1143 "clpretty.ch"
                                list = _ptTree0;
#line 1143 "clpretty.ch"
                                ;
#line 1143 "clpretty.ch"
                            }
#line 1143 "clpretty.ch"
#line 1143 "clpretty.ch"
#line 1144 "clpretty.ch"
                            PutAttr(lastTree, list, POST_ATTR, PUT_BEG);
#line 1144 "clpretty.ch"
#line 1144 "clpretty.ch"
                        }
#line 1144 "clpretty.ch"
#line 1148 "clpretty.ch"
    if ( hasIndented && hasToPutVirt ) {
#line 1148 "clpretty.ch"
#line 1149 "clpretty.ch"
                                            char    string [10];
#line 1149 "clpretty.ch"
#line 1150 "clpretty.ch"
                                            sprintf(string, "%d", colRef);
#line 1150 "clpretty.ch"
#line 1151 "clpretty.ch"
                                            {
#line 1151 "clpretty.ch"
                                                PPTREE _ptTree0=(PPTREE) 0;
#line 1151 "clpretty.ch"
                                                _ptTree0 = (PPTREE) 0;
#line 1151 "clpretty.ch"
                                                {
#line 1151 "clpretty.ch"
                                                    PPTREE _ptTree1= (PPTREE) 0 ;
#line 1151 "clpretty.ch"
                                                    {
#line 1151 "clpretty.ch"
                                                        PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 1151 "clpretty.ch"
                                                        _ptRes2 = MakeTree(pretty::TAB_VIRT, 2);
#line 1151 "clpretty.ch"
                                                        _ptTree2 = StoreRef(MakeString(string));
#line 1151 "clpretty.ch"
                                                        ReplaceTree(_ptRes2, 1, _ptTree2);
#line 1151 "clpretty.ch"
                                                        _ptTree2 = MakeString("1") ;
#line 1151 "clpretty.ch"
                                                        ReplaceTree(_ptRes2, 2, _ptTree2);
#line 1151 "clpretty.ch"
                                                        _ptTree1 = _ptRes2;
#line 1151 "clpretty.ch"
                                                    }
#line 1151 "clpretty.ch"
                                                    _ptTree0 = AddList( _ptTree0,_ptTree1);
#line 1151 "clpretty.ch"
                                                }
#line 1151 "clpretty.ch"
                                                list = _ptTree0;
#line 1151 "clpretty.ch"
                                                ;
#line 1151 "clpretty.ch"
                                            }
#line 1151 "clpretty.ch"
#line 1151 "clpretty.ch"
#line 1152 "clpretty.ch"
                                            PutAttr(hasToPutVirt, list, PRE_ATTR, PUT_END);
#line 1152 "clpretty.ch"
#line 1152 "clpretty.ch"
                                         }
#line 1152 "clpretty.ch"
#line 1156 "clpretty.ch"
#line 1156 "clpretty.ch"
    for ( int nbNode = 0 ; nbNode < currTabTree ; nbNode++ ) {
#line 1156 "clpretty.ch"
#line 1157 "clpretty.ch"
                                                                    GetCoord(tabTree [nbNode].tree, &x, &y, &dx, &lastMark);
#line 1157 "clpretty.ch"
#line 1158 "clpretty.ch"
                                                                    deltaLoc = tabTree [nbNode].delta - FindDelta(tabTree [nbNode].tree);
#line 1158 "clpretty.ch"
#line 1160 "clpretty.ch"
                                                                    PutCoord(tabTree [nbNode].tree, x + deltaLoc, y, dx, lastMark);
#line 1160 "clpretty.ch"
#line 1160 "clpretty.ch"
                                                                  }
#line 1160 "clpretty.ch"
#line 1160 "clpretty.ch"
#line 1164 "clpretty.ch"
    UpdateSize(tree, OpType(tree));
#line 1164 "clpretty.ch"
#line 1167 "clpretty.ch"
    UnMarkCoordTree(tree);
#line 1167 "clpretty.ch"
#line 1168 "clpretty.ch"
    nbTab = oldNbTab ;
#line 1168 "clpretty.ch"
#line 1169 "clpretty.ch"
}
#line 1169 "clpretty.ch"

#line 1171 "clpretty.ch"
#line 1171 "clpretty.ch"
static  inline void LNewLineOrg ( int i )
#line 1171 "clpretty.ch"
{
#line 1171 "clpretty.ch"
#line 1173 "clpretty.ch"
    LNewLine(i);
#line 1173 "clpretty.ch"
#line 1174 "clpretty.ch"
}
#line 1174 "clpretty.ch"

#line 1176 "clpretty.ch"
#line 1176 "clpretty.ch"
void clpretty::LNewLine ( int i )
#line 1176 "clpretty.ch"
{
#line 1176 "clpretty.ch"
#line 1178 "clpretty.ch"
    if ( currCol > maxX ) 
#line 1178 "clpretty.ch"
#line 1179 "clpretty.ch"
        maxX = currCol ;
#line 1179 "clpretty.ch"
#line 1180 "clpretty.ch"
    LNewLineOrg(i);
#line 1180 "clpretty.ch"
#line 1181 "clpretty.ch"
}
#line 1181 "clpretty.ch"

#line 1185 "clpretty.ch"
#line 1185 "clpretty.ch"
void clpretty::DecompVirt ( PTREE paramTree )
#line 1185 "clpretty.ch"
{
#line 1185 "clpretty.ch"
#line 1188 "clpretty.ch"
    int x0, y0, x, y, dx, dy ;
#line 1188 "clpretty.ch"
#line 1190 "clpretty.ch"
    GetCoord(paramTree, &x, &y, &dx, &dy);
#line 1190 "clpretty.ch"
#line 1191 "clpretty.ch"
    GetCoordAbs(paramTree, 0, &x0, &y0);
#line 1191 "clpretty.ch"
#line 1192 "clpretty.ch"
    GetCoordAbs(FatherTree(paramTree), 0, &xFather, &yFather);
#line 1192 "clpretty.ch"
#line 1193 "clpretty.ch"
    isVirtMod = 1 ;
#line 1193 "clpretty.ch"
#line 1194 "clpretty.ch"
    GotoCol(dy + 1);
#line 1194 "clpretty.ch"
#line 1197 "clpretty.ch"
    Mark();
#line 1197 "clpretty.ch"
#line 1198 "clpretty.ch"
    currCol = x0 ;
#line 1198 "clpretty.ch"
#line 1199 "clpretty.ch"
    currLine = y0 ;
#line 1199 "clpretty.ch"
#line 1200 "clpretty.ch"
    maxX = 0 ;
#line 1200 "clpretty.ch"
#line 1201 "clpretty.ch"
    Decomp(paramTree);
#line 1201 "clpretty.ch"
#line 1202 "clpretty.ch"
    UnMark();
#line 1202 "clpretty.ch"
#line 1203 "clpretty.ch"
    isVirtMod = 0 ;
#line 1203 "clpretty.ch"
#line 1204 "clpretty.ch"
    currLine = currCol = 0 ;
#line 1204 "clpretty.ch"
#line 1205 "clpretty.ch"
}
#line 1205 "clpretty.ch"

#line 1207 "clpretty.ch"
#line 1207 "clpretty.ch"
void clpretty::TraitAttribut ( PTREE tree )
#line 1207 "clpretty.ch"
{
#line 1207 "clpretty.ch"
    register PPTREE _inter ;
#line 1207 "clpretty.ch"
#line 1207 "clpretty.ch"
#line 1209 "clpretty.ch"
    PTREE   son ;
#line 1209 "clpretty.ch"
#line 1209 "clpretty.ch"
#line 1210 "clpretty.ch"
    int i ;
#line 1210 "clpretty.ch"
#line 1212 "clpretty.ch"
    switch ( NumberTree(tree) ) {
#line 1212 "clpretty.ch"
#line 1213 "clpretty.ch"
        case pretty::NEWLINE : 
#line 1213 "clpretty.ch"
#line 1213 "clpretty.ch"
            (son=SonTree(tree, 1));
#line 1213 "clpretty.ch"
#line 1213 "clpretty.ch"
#line 1213 "clpretty.ch"
        _Case1 : 
#line 1213 "clpretty.ch"
#line 1213 "clpretty.ch"
            ;
#line 1213 "clpretty.ch"
#line 1214 "clpretty.ch"
            LNewLine(atoi(BrainyValue(son)));
#line 1214 "clpretty.ch"
#line 1215 "clpretty.ch"
            break ;
#line 1215 "clpretty.ch"
#line 1216 "clpretty.ch"
        case pretty::TAB : 
#line 1216 "clpretty.ch"
#line 1216 "clpretty.ch"
            (son=SonTree(tree, 1));
#line 1216 "clpretty.ch"
#line 1216 "clpretty.ch"
#line 1216 "clpretty.ch"
        _Case2 : 
#line 1216 "clpretty.ch"
#line 1216 "clpretty.ch"
            ;
#line 1216 "clpretty.ch"
#line 1217 "clpretty.ch"
            i = atoi(BrainyValue(son));
#line 1217 "clpretty.ch"
#line 1218 "clpretty.ch"
            while ( i-- > 0 ) 
#line 1218 "clpretty.ch"
#line 1219 "clpretty.ch"
                Tab();
#line 1219 "clpretty.ch"
#line 1219 "clpretty.ch"
#line 1220 "clpretty.ch"
            break ;
#line 1220 "clpretty.ch"
#line 1221 "clpretty.ch"
        case pretty::STR : 
#line 1221 "clpretty.ch"
#line 1221 "clpretty.ch"
            (son=SonTree(tree, 1));
#line 1221 "clpretty.ch"
#line 1221 "clpretty.ch"
#line 1221 "clpretty.ch"
        _Case3 : 
#line 1221 "clpretty.ch"
#line 1221 "clpretty.ch"
            ;
#line 1221 "clpretty.ch"
#line 1222 "clpretty.ch"
            DumpBrainyValue(son);
#line 1222 "clpretty.ch"
#line 1222 "clpretty.ch"
#line 1223 "clpretty.ch"
            break ;
#line 1223 "clpretty.ch"
#line 1225 "clpretty.ch"
        case pretty::MARK : 
#line 1225 "clpretty.ch"
#line 1225 "clpretty.ch"
        _Case4 : 
#line 1225 "clpretty.ch"
#line 1225 "clpretty.ch"
            ;
#line 1225 "clpretty.ch"
#line 1225 "clpretty.ch"
            Mark();
#line 1225 "clpretty.ch"
#line 1226 "clpretty.ch"
            break ;
#line 1226 "clpretty.ch"
#line 1228 "clpretty.ch"
        case pretty::UNMARK : 
#line 1228 "clpretty.ch"
#line 1228 "clpretty.ch"
        _Case5 : 
#line 1228 "clpretty.ch"
#line 1228 "clpretty.ch"
            ;
#line 1228 "clpretty.ch"
#line 1228 "clpretty.ch"
            UnMark();
#line 1228 "clpretty.ch"
#line 1229 "clpretty.ch"
            break ;
#line 1229 "clpretty.ch"
#line 1230 "clpretty.ch"
        case pretty::GOTO : 
#line 1230 "clpretty.ch"
#line 1230 "clpretty.ch"
            (son=SonTree(tree, 1));
#line 1230 "clpretty.ch"
#line 1230 "clpretty.ch"
#line 1230 "clpretty.ch"
        _Case6 : 
#line 1230 "clpretty.ch"
#line 1230 "clpretty.ch"
            ;
#line 1230 "clpretty.ch"
#line 1231 "clpretty.ch"
            GotoCol(atoi(BrainyValue(son)));
#line 1231 "clpretty.ch"
#line 1232 "clpretty.ch"
            break ;
#line 1232 "clpretty.ch"
    }
#line 1232 "clpretty.ch"
#line 1232 "clpretty.ch"
#line 1234 "clpretty.ch"
}
#line 1234 "clpretty.ch"

#line 1238 "clpretty.ch"
#line 1238 "clpretty.ch"
void clpretty::DecompList ( PTREE list, char *sep, char *term, int nbNl )
#line 1238 "clpretty.ch"
{
#line 1238 "clpretty.ch"
#line 1241 "clpretty.ch"
    PTREE   elem ;
#line 1241 "clpretty.ch"
#line 1241 "clpretty.ch"
#line 1242 "clpretty.ch"
    int nbNewLine ;
#line 1242 "clpretty.ch"
#line 1244 "clpretty.ch"
    while ( (elem=list.Nextl()) ) {
#line 1244 "clpretty.ch"
#line 1245 "clpretty.ch"
                                        Decomp(elem);
#line 1245 "clpretty.ch"
#line 1246 "clpretty.ch"
                                        if ( list ) {
#line 1246 "clpretty.ch"
#line 1247 "clpretty.ch"
                                                        if ( sep ) 
#line 1247 "clpretty.ch"
#line 1248 "clpretty.ch"
                                                            PrintString(sep);
#line 1248 "clpretty.ch"
#line 1249 "clpretty.ch"
                                                        if ( nbNewLine = nbNl ) 
#line 1249 "clpretty.ch"
#line 1250 "clpretty.ch"
                                                            LNewLine(nbNewLine);
#line 1250 "clpretty.ch"
#line 1250 "clpretty.ch"
                                                     }
#line 1250 "clpretty.ch"
#line 1250 "clpretty.ch"
                                     }
#line 1250 "clpretty.ch"
#line 1253 "clpretty.ch"
    if ( term ) 
#line 1253 "clpretty.ch"
#line 1254 "clpretty.ch"
        PrintString(term);
#line 1254 "clpretty.ch"
#line 1255 "clpretty.ch"
}
#line 1255 "clpretty.ch"

#line 1259 "clpretty.ch"
#line 1259 "clpretty.ch"
int clpretty::commAtBeginning ( PTREE tree )
#line 1259 "clpretty.ch"
{
#line 1259 "clpretty.ch"
    register PPTREE _inter ;
#line 1259 "clpretty.ch"
#line 1259 "clpretty.ch"
#line 1262 "clpretty.ch"
    PTREE   father ;
#line 1262 "clpretty.ch"
#line 1262 "clpretty.ch"
#line 1264 "clpretty.ch"
    if ( ( _inter = 
#line 1264 "clpretty.ch"
            FatherTree(tree),((_inter = (PPTREE)_inter,1) && 
#line 1264 "clpretty.ch"
                                (NumberTree(_inter) == pretty::ATTRIBUTS) &&
#line 1264 "clpretty.ch"
                                1)) ) 
#line 1264 "clpretty.ch"
#line 1265 "clpretty.ch"
        (father=NFatherTree(tree,2));
#line 1265 "clpretty.ch"
#line 1265 "clpretty.ch"
    else 
#line 1265 "clpretty.ch"
#line 1267 "clpretty.ch"
        (father=FatherTree(tree));
#line 1267 "clpretty.ch"
#line 1267 "clpretty.ch"
#line 1267 "clpretty.ch"
#line 1268 "clpretty.ch"
    if ( (!father) ) 
#line 1268 "clpretty.ch"
#line 1269 "clpretty.ch"
        return 1 ;
#line 1269 "clpretty.ch"
#line 1270 "clpretty.ch"
    if ( ((_inter = (PPTREE)father,1) && 
#line 1270 "clpretty.ch"
            (NumberTree(_inter) == LIST) &&
#line 1270 "clpretty.ch"
            1) ) {
#line 1270 "clpretty.ch"
#line 1271 "clpretty.ch"
                    (father=NFatherTree(father,2));
#line 1271 "clpretty.ch"
#line 1271 "clpretty.ch"
#line 1272 "clpretty.ch"
                    if ( (!father) ) {
#line 1272 "clpretty.ch"
#line 1273 "clpretty.ch"
                                        return 1 ;
#line 1273 "clpretty.ch"
#line 1273 "clpretty.ch"
                                       }
#line 1273 "clpretty.ch"
#line 1273 "clpretty.ch"
                 }
#line 1273 "clpretty.ch"
#line 1276 "clpretty.ch"
    return 0 ;
#line 1276 "clpretty.ch"
#line 1277 "clpretty.ch"
}
#line 1277 "clpretty.ch"

#line 1281 "clpretty.ch"
#line 1281 "clpretty.ch"
int clpretty::comm ( PTREE paramTree, int type )
#line 1281 "clpretty.ch"
{
#line 1281 "clpretty.ch"
#line 1284 "clpretty.ch"
    char    *comment ;
#line 1284 "clpretty.ch"
#line 1285 "clpretty.ch"
    PTREE   father ;
#line 1285 "clpretty.ch"
#line 1285 "clpretty.ch"
#line 1286 "clpretty.ch"
    char    *intStartComment, *intMiddleComment, *intEndComment, *intPlusComment ;
#line 1286 "clpretty.ch"
#line 1289 "clpretty.ch"
    intStartComment = startComment ? startComment : "/*";
#line 1289 "clpretty.ch"
#line 1290 "clpretty.ch"
    intMiddleComment = middleComment ? middleComment : "  ";
#line 1290 "clpretty.ch"
#line 1291 "clpretty.ch"
    intEndComment = endComment ? endComment : "*/";
#line 1291 "clpretty.ch"
#line 1292 "clpretty.ch"
    intPlusComment = plusComment ? plusComment : "//";
#line 1292 "clpretty.ch"
#line 1293 "clpretty.ch"
    if ( (!paramTree) || inhibateComment ) 
#line 1293 "clpretty.ch"
#line 1294 "clpretty.ch"
        return 0 ;
#line 1294 "clpretty.ch"
#line 1295 "clpretty.ch"
    if ( type == PRE && (comment = IsComm(paramTree, PRE)) ) {
#line 1295 "clpretty.ch"
#line 1296 "clpretty.ch"
                                                                        PTREE   inter = (PTREE)0 ;
#line 1296 "clpretty.ch"
#line 1296 "clpretty.ch"
#line 1297 "clpretty.ch"
                                                                        int beginning = Beginning();
#line 1297 "clpretty.ch"
#line 1296 "clpretty.ch"
                                                                        (inter=(PTREE)0);
#line 1296 "clpretty.ch"
#line 1296 "clpretty.ch"
#line 1298 "clpretty.ch"
                                                                        if ( !commAtBeginning(paramTree) ) {
#line 1298 "clpretty.ch"
#line 1303 "clpretty.ch"
if ( beginning ) {
#line 1303 "clpretty.ch"
#line 1304 "clpretty.ch"
                    if ( *comment == *(intPlusComment + 1) && *(comment + 1) == ' ' ) 
#line 1304 "clpretty.ch"
#line 1306 "clpretty.ch"
                        LNewLine(2);
#line 1306 "clpretty.ch"
                    else 
#line 1307 "clpretty.ch"
                    if ( *comment == ' ' ) 
#line 1307 "clpretty.ch"
#line 1308 "clpretty.ch"
                        LNewLine(2);
#line 1308 "clpretty.ch"
                    else 
#line 1308 "clpretty.ch"
#line 1310 "clpretty.ch"
                        LNewLine(1);
#line 1310 "clpretty.ch"
#line 1310 "clpretty.ch"
#line 1310 "clpretty.ch"
#line 1310 "clpretty.ch"
                  } else 
#line 1310 "clpretty.ch"
#line 1312 "clpretty.ch"
    Space(1);
#line 1312 "clpretty.ch"
#line 1312 "clpretty.ch"
#line 1312 "clpretty.ch"
#line 1312 "clpretty.ch"
                                                                                                              }
#line 1312 "clpretty.ch"
#line 1315 "clpretty.ch"
                                                                        do {
#line 1315 "clpretty.ch"
#line 1315 "clpretty.ch"
if ( inter ) 
#line 1315 "clpretty.ch"
#line 1316 "clpretty.ch"
    comment = BrainyValue(inter);
#line 1316 "clpretty.ch"
#line 1318 "clpretty.ch"
Mark();
#line 1318 "clpretty.ch"
if ( *comment == *(intPlusComment + 1) ) 
#line 1318 "clpretty.ch"
#line 1319 "clpretty.ch"
    (inter=PrintCommE(paramTree, PRE, inter, intPlusComment + 1, intPlusComment + 1, ""));
#line 1319 "clpretty.ch"
#line 1319 "clpretty.ch"
else 
#line 1319 "clpretty.ch"
#line 1322 "clpretty.ch"
    (inter=PrintCommE(paramTree, PRE, inter, intMiddleComment, intStartComment, intEndComment));
#line 1322 "clpretty.ch"
#line 1322 "clpretty.ch"
#line 1322 "clpretty.ch"
UnMark();
#line 1322 "clpretty.ch"
#line 1322 "clpretty.ch"
#line 1327 "clpretty.ch"
if ( beginning || *comment == *(intPlusComment + 1) ) {
#line 1327 "clpretty.ch"
#line 1328 "clpretty.ch"
                                                                LNewLine(1);
#line 1328 "clpretty.ch"
#line 1328 "clpretty.ch"
#line 1328 "clpretty.ch"
                                                             } else 
#line 1328 "clpretty.ch"
#line 1330 "clpretty.ch"
    Space(1);
#line 1330 "clpretty.ch"
#line 1330 "clpretty.ch"
#line 1330 "clpretty.ch"
#line 1330 "clpretty.ch"
                                                                           } 
#line 1331 "clpretty.ch"
                                                                        while ( inter );
#line 1331 "clpretty.ch"
#line 1331 "clpretty.ch"
#line 1332 "clpretty.ch"
                                                                        return 1 ;
#line 1332 "clpretty.ch"
#line 1332 "clpretty.ch"
                                                                    } else 
#line 1333 "clpretty.ch"
    if ( type == POST && (comment = IsComm(paramTree, POST)) ) {
#line 1333 "clpretty.ch"
#line 1334 "clpretty.ch"
                                                                        PTREE   inter = (PTREE)0 ;
#line 1334 "clpretty.ch"
#line 1334 "clpretty.ch"
#line 1334 "clpretty.ch"
                                                                        (inter=(PTREE)0);
#line 1334 "clpretty.ch"
#line 1334 "clpretty.ch"
#line 1337 "clpretty.ch"
                                                                        Mark();
#line 1337 "clpretty.ch"
                                                                        do {
#line 1337 "clpretty.ch"
#line 1337 "clpretty.ch"
if ( inter ) 
#line 1337 "clpretty.ch"
#line 1338 "clpretty.ch"
    comment = BrainyValue(inter);
#line 1338 "clpretty.ch"
#line 1339 "clpretty.ch"
Space(1);
#line 1339 "clpretty.ch"
#line 1339 "clpretty.ch"
#line 1341 "clpretty.ch"
Mark();
#line 1341 "clpretty.ch"
if ( *comment == *(intPlusComment + 1) ) 
#line 1341 "clpretty.ch"
#line 1342 "clpretty.ch"
    (inter=PrintCommE(paramTree, POST, inter, intPlusComment + 1, intPlusComment + 1, ""));
#line 1342 "clpretty.ch"
#line 1342 "clpretty.ch"
else 
#line 1342 "clpretty.ch"
#line 1346 "clpretty.ch"
    (inter=PrintCommE(paramTree, POST, inter, intMiddleComment, intStartComment, intEndComment));
#line 1346 "clpretty.ch"
#line 1346 "clpretty.ch"
#line 1346 "clpretty.ch"
UnMark();
#line 1346 "clpretty.ch"
#line 1346 "clpretty.ch"
#line 1350 "clpretty.ch"
if ( PrePost() && inter || *comment == *(intPlusComment + 1) ) {
#line 1350 "clpretty.ch"
#line 1352 "clpretty.ch"
                                                                        LNewLine(1);
#line 1352 "clpretty.ch"
#line 1352 "clpretty.ch"
#line 1352 "clpretty.ch"
                                                                       } else 
#line 1352 "clpretty.ch"
#line 1354 "clpretty.ch"
    Space(1);
#line 1354 "clpretty.ch"
#line 1354 "clpretty.ch"
#line 1354 "clpretty.ch"
#line 1354 "clpretty.ch"
                                                                           } 
#line 1355 "clpretty.ch"
                                                                        while ( inter );
#line 1355 "clpretty.ch"
#line 1355 "clpretty.ch"
                                                                        UnMark();
#line 1355 "clpretty.ch"
#line 1355 "clpretty.ch"
#line 1357 "clpretty.ch"
                                                                        return 1 ;
#line 1357 "clpretty.ch"
#line 1357 "clpretty.ch"
                                                                      }
#line 1357 "clpretty.ch"
#line 1359 "clpretty.ch"
    return 0 ;
#line 1359 "clpretty.ch"
#line 1360 "clpretty.ch"
}
#line 1360 "clpretty.ch"

#line 1364 "clpretty.ch"
#line 1364 "clpretty.ch"
void clpretty::Decomp ( PTREE paramTree, int funcAlone )
#line 1364 "clpretty.ch"
{
#line 1364 "clpretty.ch"
    register PPTREE _inter ;
#line 1364 "clpretty.ch"
#line 1364 "clpretty.ch"
#line 1367 "clpretty.ch"
    PTREE   exp, stat, name ;
#line 1367 "clpretty.ch"
#line 1367 "clpretty.ch"
#line 1368 "clpretty.ch"
    int oldXFather = xFather, oldYFather = yFather ;
#line 1368 "clpretty.ch"
#line 1369 "clpretty.ch"
    int oldMaxX = maxX ;
#line 1369 "clpretty.ch"
#line 1370 "clpretty.ch"
    int begCurrCol = currCol, begCurrLine = currLine ;
#line 1370 "clpretty.ch"
#line 1371 "clpretty.ch"
    int theMark = GetMark();
#line 1371 "clpretty.ch"
#line 1372 "clpretty.ch"
    int startNewLine ;
#line 1372 "clpretty.ch"
#line 1375 "clpretty.ch"
    startNewLine = lastLineOn == currLine ? 0 : (lastLineOn = currLine, 0x4);
#line 1375 "clpretty.ch"
#line 1377 "clpretty.ch"
    if ( (!paramTree) ) 
#line 1377 "clpretty.ch"
#line 1378 "clpretty.ch"
        return ;
#line 1378 "clpretty.ch"
#line 1382 "clpretty.ch"
    if ( isVirtMod && !(((_inter = (PPTREE)paramTree,1) && 
#line 1382 "clpretty.ch"
                            (NumberTree(_inter) == pretty::ATTRIBUTS) &&
#line 1382 "clpretty.ch"
                            1)) ) {
#line 1382 "clpretty.ch"
#line 1383 "clpretty.ch"
                                    xFather = currCol, yFather = currLine ;
#line 1383 "clpretty.ch"
#line 1384 "clpretty.ch"
                                    maxX = currCol ;
#line 1384 "clpretty.ch"
#line 1384 "clpretty.ch"
                                  }
#line 1384 "clpretty.ch"
#line 1387 "clpretty.ch"
    {
#line 1387 "clpretty.ch"
#line 1387 "clpretty.ch"
        int commPre = 0 ;
#line 1387 "clpretty.ch"
#line 1392 "clpretty.ch"
        if ( !Beginning() && (commPre = (int)IsComm(paramTree, PRE)) ) {
#line 1392 "clpretty.ch"
#line 1393 "clpretty.ch"
Mark();
#line 1393 "clpretty.ch"
#line 1398 "clpretty.ch"
currCol++ ;
#line 1398 "clpretty.ch"
#line 1399 "clpretty.ch"
comm(paramTree, PRE);
#line 1399 "clpretty.ch"
#line 1399 "clpretty.ch"
                                                                                } else 
#line 1399 "clpretty.ch"
#line 1401 "clpretty.ch"
            comm(paramTree, PRE);
#line 1401 "clpretty.ch"
#line 1401 "clpretty.ch"
#line 1402 "clpretty.ch"
        IntDecomp(paramTree, funcAlone);
#line 1402 "clpretty.ch"
#line 1403 "clpretty.ch"
        comm(paramTree, POST);
#line 1403 "clpretty.ch"
#line 1404 "clpretty.ch"
        if ( commPre ) {
#line 1404 "clpretty.ch"
#line 1405 "clpretty.ch"
                            UnMark();
#line 1405 "clpretty.ch"
#line 1405 "clpretty.ch"
                        }
#line 1405 "clpretty.ch"
#line 1407 "clpretty.ch"
    }
#line 1407 "clpretty.ch"
#line 1408 "clpretty.ch"
    if ( isVirtMod && !(((_inter = (PPTREE)paramTree,1) && 
#line 1408 "clpretty.ch"
                            (NumberTree(_inter) == pretty::ATTRIBUTS) &&
#line 1408 "clpretty.ch"
                            1)) ) {
#line 1408 "clpretty.ch"
#line 1409 "clpretty.ch"
                                    xFather = oldXFather, yFather = oldYFather ;
#line 1409 "clpretty.ch"
#line 1413 "clpretty.ch"
                                    if ( currCol > maxX ) 
#line 1413 "clpretty.ch"
#line 1414 "clpretty.ch"
                                        maxX = currCol ;
#line 1414 "clpretty.ch"
#line 1418 "clpretty.ch"
                                    PutCoord(paramTree, begCurrCol - xFather, (currLine - begCurrLine > 0 ? 2 : 0) | startNewLine, maxX - begCurrCol, theMark);
#line 1418 "clpretty.ch"
#line 1423 "clpretty.ch"
                                    if ( maxX < oldMaxX ) 
#line 1423 "clpretty.ch"
#line 1424 "clpretty.ch"
                                        maxX = oldMaxX ;
#line 1424 "clpretty.ch"
#line 1424 "clpretty.ch"
                                  }
#line 1424 "clpretty.ch"
#line 1426 "clpretty.ch"
}
#line 1426 "clpretty.ch"

#line 1430 "clpretty.ch"
#line 1430 "clpretty.ch"
void clpretty::CleanAttributs ( PTREE tree )
#line 1430 "clpretty.ch"
{
#line 1430 "clpretty.ch"
    register PPTREE _inter ;
#line 1430 "clpretty.ch"
#line 1430 "clpretty.ch"
#line 1433 "clpretty.ch"
    PTREE   son ;
#line 1433 "clpretty.ch"
#line 1433 "clpretty.ch"
#line 1434 "clpretty.ch"
    int x, y, dx, posMark ;
#line 1434 "clpretty.ch"
#line 1436 "clpretty.ch"
    {
#line 1436 "clpretty.ch"
#line 1436 "clpretty.ch"
        ItPtree _iterator1 (tree, (PPTREE) 0) ;
#line 1436 "clpretty.ch"
#line 1436 "clpretty.ch"
        PPTREE  _for_elem ;
#line 1436 "clpretty.ch"
#line 1436 "clpretty.ch"
        _iterator1.AllSearch(1);
#line 1436 "clpretty.ch"
#line 1437 "clpretty.ch"
        while ( _for_elem = _iterator1++ ) {
#line 1437 "clpretty.ch"
#line 1436 "clpretty.ch"
            {
#line 1436 "clpretty.ch"
#line 1437 "clpretty.ch"
                if ( ((_inter = (PPTREE)for_elem,1) && 
#line 1437 "clpretty.ch"
                        (NumberTree(_inter) == pretty::ATTRIBUTS) &&
#line 1437 "clpretty.ch"
                        ((son=SonTree(_inter,1)),1) &&
#line 1437 "clpretty.ch"
                        1) && FatherTree(for_elem) ) {
#line 1437 "clpretty.ch"
#line 1438 "clpretty.ch"
                                                        replacetree(FatherTree(for_elem), ranktree(for_elem), son);
#line 1438 "clpretty.ch"
#line 1439 "clpretty.ch"
                                                        for_elem = son ;
#line 1439 "clpretty.ch"
#line 1439 "clpretty.ch"
                                                      }
#line 1439 "clpretty.ch"
#line 1441 "clpretty.ch"
                if ( GetCoord(for_elem, &x, &y, &dx, &posMark) ) {
#line 1441 "clpretty.ch"
#line 1442 "clpretty.ch"
FreeCoord(for_elem);
#line 1442 "clpretty.ch"
#line 1442 "clpretty.ch"
                                                                           }
#line 1442 "clpretty.ch"
#line 1442 "clpretty.ch"
            }
#line 1442 "clpretty.ch"
#line 1442 "clpretty.ch"
            _iterator1.Current(_for_elem);
#line 1442 "clpretty.ch"
#line 1442 "clpretty.ch"
            continue ;
#line 1442 "clpretty.ch"
#line 1442 "clpretty.ch"
        for_continue1 : 
#line 1442 "clpretty.ch"
#line 1442 "clpretty.ch"
            _iterator1.Current(_for_elem);
#line 1442 "clpretty.ch"
#line 1442 "clpretty.ch"
            _iterator1.SkipSon(1);
#line 1442 "clpretty.ch"
#line 1442 "clpretty.ch"
            continue ;
#line 1442 "clpretty.ch"
#line 1442 "clpretty.ch"
        for_break1 : 
#line 1442 "clpretty.ch"
#line 1442 "clpretty.ch"
            break ;
#line 1442 "clpretty.ch"
#line 1442 "clpretty.ch"
        }
#line 1442 "clpretty.ch"
#line 1442 "clpretty.ch"
    }
#line 1442 "clpretty.ch"
#line 1445 "clpretty.ch"
}
#line 1445 "clpretty.ch"

extern "C" {
#line 1448 "clpretty.ch"
#line 1448 "clpretty.ch"
    PPTREE bri_parse_entry_pretty ( int error_free )
#line 1448 "clpretty.ch"
    {
#line 1448 "clpretty.ch"
#line 1450 "clpretty.ch"
        return (PPTREE)0 ;
#line 1450 "clpretty.ch"
#line 1451 "clpretty.ch"
    }
}
#line 1451 "clpretty.ch"
/*Well done my boy */ 
#line 1451 "clpretty.ch"

