"Fossies" - the Fresh Open Source Software Archive

Member "erltools/pub/parser/trait.cc" (15 May 2006, 37322 Bytes) of package /linux/misc/old/erltools-4.0.1.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "trait.cc" see the Fossies "Dox" file reference documentation.

    1 
    2 #line 28 "trait.ch"
    3 /*************************************************************************/
    4 #line 28 "trait.ch"
    5 /*                                                                       */
    6 #line 28 "trait.ch"
    7 /*        Produced by Metachop version 2.0  -    1989-1995               */
    8 #line 28 "trait.ch"
    9 /*     Tree      Meta     Chopper      developped    by                  */
   10 #line 28 "trait.ch"
   11 /*                  Eric Lavillonniere                                   */
   12 #line 28 "trait.ch"
   13 /*                                                                       */
   14 #line 28 "trait.ch"
   15 /*************************************************************************/
   16 #line 28 "trait.ch"
   17 #line 28 "trait.ch"
   18 #include "token.h"
   19 #line 28 "trait.ch"
   20 #define decomp decomp_metalang
   21 #line 28 "trait.ch"
   22 #line 28 "trait.ch"
   23 #ifndef for_elem
   24 #line 28 "trait.ch"
   25 #line 28 "trait.ch"
   26 #define for_elem _for_elem
   27 #line 28 "trait.ch"
   28 #endif
   29 #ifdef INCONNU
   30 #line 28 "trait.ch"
   31 #line 28 "trait.ch"
   32 PTREE   for_elem ;
   33 #line 28 "trait.ch"
   34 #line 28 "trait.ch"
   35 #endif
   36 #include "metalang.h"
   37 
   38 void    traitement_addlist (PTREE) ;
   39 void    traitement_proc (PTREE) ;
   40 void    traitement_while (PTREE) ;
   41 void    rep_addlist (PTREE, PTREE, PTREE) ;
   42 int nb_addlist, find_elem ;
   43 
   44 #line 46 "trait.ch"
   45 #line 46 "trait.ch"
   46 void traitement ( PTREE tree )
   47 #line 46 "trait.ch"
   48 {
   49 #line 46 "trait.ch"
   50     register PPTREE _inter ;
   51 #line 46 "trait.ch"
   52 #line 46 "trait.ch"
   53 #line 46 "trait.ch"
   54     PTREE   _Baum0 ;
   55 #line 46 "trait.ch"
   56 #line 46 "trait.ch"
   57 #line 46 "trait.ch"
   58     int _nextVal ;
   59 #line 46 "trait.ch"
   60 #line 50 "trait.ch"
   61     {
   62 #line 50 "trait.ch"
   63         PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
   64 #line 50 "trait.ch"
   65         _ptRes0 = MakeTree(metalang::DEFINE, 2);
   66 #line 50 "trait.ch"
   67         {
   68 #line 50 "trait.ch"
   69             PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
   70 #line 50 "trait.ch"
   71             _ptRes1 = MakeTree(META, 1);
   72 #line 50 "trait.ch"
   73             _ptTree1 = MakeString("name") ;
   74 #line 50 "trait.ch"
   75             ReplaceTree(_ptRes1, 1, _ptTree1);
   76 #line 50 "trait.ch"
   77             _ptTree0 = _ptRes1;
   78 #line 50 "trait.ch"
   79         }
   80 #line 50 "trait.ch"
   81         ReplaceTree(_ptRes0, 1, _ptTree0);
   82 #line 50 "trait.ch"
   83         {
   84 #line 50 "trait.ch"
   85             PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
   86 #line 50 "trait.ch"
   87             _ptRes1 = MakeTree(META, 1);
   88 #line 50 "trait.ch"
   89             _ptTree1 = MakeString("list") ;
   90 #line 50 "trait.ch"
   91             ReplaceTree(_ptRes1, 1, _ptTree1);
   92 #line 50 "trait.ch"
   93             _ptTree0 = _ptRes1;
   94 #line 50 "trait.ch"
   95         }
   96 #line 50 "trait.ch"
   97         ReplaceTree(_ptRes0, 2, _ptTree0);
   98 #line 50 "trait.ch"
   99         _Baum0 = _ptRes0;
  100 #line 50 "trait.ch"
  101     }
  102 #line 50 "trait.ch"
  103 #line 50 "trait.ch"
  104 #line 50 "trait.ch"
  105     {
  106 #line 50 "trait.ch"
  107 #line 50 "trait.ch"
  108         ItPtree _iterator1 (tree, _Baum0) ;
  109 #line 50 "trait.ch"
  110 #line 50 "trait.ch"
  111         PPTREE  _for_elem ;
  112 #line 50 "trait.ch"
  113 #line 50 "trait.ch"
  114         _iterator1.AllSearch(1);
  115 #line 50 "trait.ch"
  116 #line 50 "trait.ch"
  117         while ( _for_elem = _iterator1++ ) {
  118 #line 50 "trait.ch"
  119 #line 50 "trait.ch"
  120             {
  121 #line 50 "trait.ch"
  122 #line 51 "trait.ch"
  123                 traitement_proc(for_elem);
  124 #line 51 "trait.ch"
  125 #line 52 "trait.ch"
  126                 goto for_continue1 ;
  127 #line 52 "trait.ch"
  128 #line 53 "trait.ch"
  129 #line 53 "trait.ch"
  130 #line 53 "trait.ch"
  131             }
  132 #line 53 "trait.ch"
  133 #line 53 "trait.ch"
  134             _iterator1.Current(_for_elem);
  135 #line 53 "trait.ch"
  136 #line 53 "trait.ch"
  137             continue ;
  138 #line 53 "trait.ch"
  139 #line 53 "trait.ch"
  140         for_continue1 : 
  141 #line 53 "trait.ch"
  142 #line 53 "trait.ch"
  143             _iterator1.Current(_for_elem);
  144 #line 53 "trait.ch"
  145 #line 53 "trait.ch"
  146             _iterator1.SkipSon(1);
  147 #line 53 "trait.ch"
  148 #line 53 "trait.ch"
  149             continue ;
  150 #line 53 "trait.ch"
  151 #line 53 "trait.ch"
  152         for_break1 : 
  153 #line 53 "trait.ch"
  154 #line 53 "trait.ch"
  155             break ;
  156 #line 53 "trait.ch"
  157 #line 53 "trait.ch"
  158 #line 53 "trait.ch"
  159 #line 53 "trait.ch"
  160         }
  161 #line 53 "trait.ch"
  162 #line 53 "trait.ch"
  163 #line 53 "trait.ch"
  164 #line 53 "trait.ch"
  165     }
  166 #line 53 "trait.ch"
  167 #line 54 "trait.ch"
  168 #line 54 "trait.ch"
  169 #line 54 "trait.ch"
  170 }
  171 #line 54 "trait.ch"
  172 
  173 static PTREE    the_while ;
  174 #line 54 "trait.ch"
  175 
  176 #line 61 "trait.ch"
  177 #line 61 "trait.ch"
  178 void traitement_proc ( PTREE tree )
  179 #line 61 "trait.ch"
  180 {
  181 #line 61 "trait.ch"
  182     register PPTREE _inter ;
  183 #line 61 "trait.ch"
  184 #line 61 "trait.ch"
  185 #line 61 "trait.ch"
  186     PTREE   _Baum1 ;
  187 #line 61 "trait.ch"
  188 #line 61 "trait.ch"
  189 #line 61 "trait.ch"
  190     PTREE   _Baum0 ;
  191 #line 61 "trait.ch"
  192 #line 61 "trait.ch"
  193 #line 61 "trait.ch"
  194     int ptStackTree ;
  195 #line 61 "trait.ch"
  196 #line 61 "trait.ch"
  197     PPTREE  stackTree [1024];
  198 #line 61 "trait.ch"
  199 #line 61 "trait.ch"
  200     int _nextVal ;
  201 #line 61 "trait.ch"
  202 #line 64 "trait.ch"
  203     PTREE   searched, declaration, elem, position ;
  204 #line 64 "trait.ch"
  205 #line 64 "trait.ch"
  206 #line 65 "trait.ch"
  207     char    name [20];
  208 #line 65 "trait.ch"
  209 #line 66 "trait.ch"
  210     int i ;
  211 #line 66 "trait.ch"
  212 #line 68 "trait.ch"
  213     nb_addlist = 0 ;
  214 #line 68 "trait.ch"
  215 #line 69 "trait.ch"
  216     {
  217 #line 69 "trait.ch"
  218         /* [ metalang::WHILE
  219             [ META "condition"]
  220             [ META "stat"]
  221            ]
  222 #line 69 "trait.ch"
  223         */
  224 #line 69 "trait.ch"
  225         {   ptStackTree = 0 ;
  226 #line 69 "trait.ch"
  227             TheConstructor(stackTree,ptStackTree,-2,MakeString("condition"),META,1,-2,MakeString("stat"),META,1,metalang::WHILE,2,-3) ;
  228             _Baum0 = PopTree ;
  229 #line 69 "trait.ch"
  230         }   }
  231 #line 69 "trait.ch"
  232 #line 69 "trait.ch"
  233 #line 69 "trait.ch"
  234     {
  235 #line 69 "trait.ch"
  236 #line 69 "trait.ch"
  237         ItPtree _iterator1 (tree, _Baum0) ;
  238 #line 69 "trait.ch"
  239 #line 69 "trait.ch"
  240         PPTREE  _for_elem ;
  241 #line 69 "trait.ch"
  242 #line 69 "trait.ch"
  243         _iterator1.AllSearch(1);
  244 #line 69 "trait.ch"
  245 #line 69 "trait.ch"
  246         while ( _for_elem = _iterator1++ ) {
  247 #line 69 "trait.ch"
  248 #line 69 "trait.ch"
  249             {
  250 #line 69 "trait.ch"
  251 #line 70 "trait.ch"
  252                 (the_while=for_elem);
  253 #line 70 "trait.ch"
  254 #line 70 "trait.ch"
  255 #line 71 "trait.ch"
  256                 traitement_while(for_elem);
  257 #line 71 "trait.ch"
  258 #line 72 "trait.ch"
  259                 goto for_continue1 ;
  260 #line 72 "trait.ch"
  261 #line 73 "trait.ch"
  262 #line 73 "trait.ch"
  263 #line 73 "trait.ch"
  264             }
  265 #line 73 "trait.ch"
  266 #line 73 "trait.ch"
  267             _iterator1.Current(_for_elem);
  268 #line 73 "trait.ch"
  269 #line 73 "trait.ch"
  270             continue ;
  271 #line 73 "trait.ch"
  272 #line 73 "trait.ch"
  273         for_continue1 : 
  274 #line 73 "trait.ch"
  275 #line 73 "trait.ch"
  276             _iterator1.Current(_for_elem);
  277 #line 73 "trait.ch"
  278 #line 73 "trait.ch"
  279             _iterator1.SkipSon(1);
  280 #line 73 "trait.ch"
  281 #line 73 "trait.ch"
  282             continue ;
  283 #line 73 "trait.ch"
  284 #line 73 "trait.ch"
  285         for_break1 : 
  286 #line 73 "trait.ch"
  287 #line 73 "trait.ch"
  288             break ;
  289 #line 73 "trait.ch"
  290 #line 73 "trait.ch"
  291 #line 73 "trait.ch"
  292 #line 73 "trait.ch"
  293         }
  294 #line 73 "trait.ch"
  295 #line 73 "trait.ch"
  296 #line 73 "trait.ch"
  297 #line 73 "trait.ch"
  298     }
  299 #line 73 "trait.ch"
  300 #line 74 "trait.ch"
  301     {
  302 #line 74 "trait.ch"
  303         /* [ metalang::REPEAT
  304             [ META "stat"]
  305             [ META "condition"]
  306            ]
  307 #line 74 "trait.ch"
  308         */
  309 #line 74 "trait.ch"
  310         {   ptStackTree = 0 ;
  311 #line 74 "trait.ch"
  312             TheConstructor(stackTree,ptStackTree,-2,MakeString("stat"),META,1,-2,MakeString("condition"),META,1,metalang::REPEAT,2,-3) ;
  313             _Baum1 = PopTree ;
  314 #line 74 "trait.ch"
  315         }   }
  316 #line 74 "trait.ch"
  317 #line 74 "trait.ch"
  318 #line 74 "trait.ch"
  319     {
  320 #line 74 "trait.ch"
  321 #line 74 "trait.ch"
  322         ItPtree _iterator2 (tree, _Baum1) ;
  323 #line 74 "trait.ch"
  324 #line 74 "trait.ch"
  325         PPTREE  _for_elem ;
  326 #line 74 "trait.ch"
  327 #line 74 "trait.ch"
  328         _iterator2.AllSearch(1);
  329 #line 74 "trait.ch"
  330 #line 74 "trait.ch"
  331         while ( _for_elem = _iterator2++ ) {
  332 #line 74 "trait.ch"
  333 #line 74 "trait.ch"
  334             {
  335 #line 74 "trait.ch"
  336 #line 75 "trait.ch"
  337                 (the_while=for_elem);
  338 #line 75 "trait.ch"
  339 #line 75 "trait.ch"
  340 #line 76 "trait.ch"
  341                 traitement_while(for_elem);
  342 #line 76 "trait.ch"
  343 #line 77 "trait.ch"
  344                 goto for_continue2 ;
  345 #line 77 "trait.ch"
  346 #line 78 "trait.ch"
  347 #line 78 "trait.ch"
  348 #line 78 "trait.ch"
  349             }
  350 #line 78 "trait.ch"
  351 #line 78 "trait.ch"
  352             _iterator2.Current(_for_elem);
  353 #line 78 "trait.ch"
  354 #line 78 "trait.ch"
  355             continue ;
  356 #line 78 "trait.ch"
  357 #line 78 "trait.ch"
  358         for_continue2 : 
  359 #line 78 "trait.ch"
  360 #line 78 "trait.ch"
  361             _iterator2.Current(_for_elem);
  362 #line 78 "trait.ch"
  363 #line 78 "trait.ch"
  364             _iterator2.SkipSon(1);
  365 #line 78 "trait.ch"
  366 #line 78 "trait.ch"
  367             continue ;
  368 #line 78 "trait.ch"
  369 #line 78 "trait.ch"
  370         for_break2 : 
  371 #line 78 "trait.ch"
  372 #line 78 "trait.ch"
  373             break ;
  374 #line 78 "trait.ch"
  375 #line 78 "trait.ch"
  376 #line 78 "trait.ch"
  377 #line 78 "trait.ch"
  378         }
  379 #line 78 "trait.ch"
  380 #line 78 "trait.ch"
  381 #line 78 "trait.ch"
  382 #line 78 "trait.ch"
  383     }
  384 #line 78 "trait.ch"
  385 #line 79 "trait.ch"
  386     if ( nb_addlist ) {
  387 #line 79 "trait.ch"
  388 #line 80 "trait.ch"
  389                         position = (PPTREE) 0 ;
  390 #line 80 "trait.ch"
  391 #line 80 "trait.ch"
  392 #line 81 "trait.ch"
  393 #line 81 "trait.ch"
  394                         for ( i = 1 ; i <= nb_addlist ; i++ ) {
  395 #line 81 "trait.ch"
  396 #line 82 "trait.ch"
  397                                                                     sprintf(name, "%s%d", "_addlist", i);
  398 #line 82 "trait.ch"
  399 #line 83 "trait.ch"
  400                                                                     {
  401 #line 83 "trait.ch"
  402                                                                         PPTREE _ptTree0= (PPTREE) 0 ;
  403 #line 83 "trait.ch"
  404                                                                         {
  405 #line 83 "trait.ch"
  406 PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
  407 #line 83 "trait.ch"
  408 _ptRes1 = MakeTree(metalang::IDENT, 1);
  409 #line 83 "trait.ch"
  410 _ptTree1 = StoreRef(MakeString(name));
  411 #line 83 "trait.ch"
  412 ReplaceTree(_ptRes1, 1, _ptTree1);
  413 #line 83 "trait.ch"
  414 _ptTree0 = _ptRes1;
  415 #line 83 "trait.ch"
  416                                                                         }
  417 #line 83 "trait.ch"
  418                                                                         position =  AddList( position,_ptTree0);
  419 #line 83 "trait.ch"
  420                                                                     }
  421 #line 83 "trait.ch"
  422 #line 83 "trait.ch"
  423 #line 84 "trait.ch"
  424 #line 84 "trait.ch"
  425 #line 84 "trait.ch"
  426                                                                    }
  427 #line 84 "trait.ch"
  428 #line 84 "trait.ch"
  429 #line 85 "trait.ch"
  430                         {
  431 #line 85 "trait.ch"
  432                             /* [ metalang::DECLARE [ META "position"]]
  433 #line 85 "trait.ch"
  434                             */
  435 #line 85 "trait.ch"
  436                             {   ptStackTree = 0 ;
  437 #line 85 "trait.ch"
  438                                 TheConstructor(stackTree,ptStackTree,-2,MakeString("position"),META,1,metalang::DECLARE,1,-3) ;
  439                                 declaration = PopTree ;
  440 #line 85 "trait.ch"
  441                             }   {
  442 #line 85 "trait.ch"
  443                                     register PPTREE _inter ;
  444 #line 85 "trait.ch"
  445 #line 85 "trait.ch"
  446 #line 85 "trait.ch"
  447                                     MetaRep("position", declaration, position);
  448 #line 85 "trait.ch"
  449 #line 85 "trait.ch"
  450                                 }
  451 #line 85 "trait.ch"
  452                         }
  453 #line 85 "trait.ch"
  454 #line 85 "trait.ch"
  455 #line 86 "trait.ch"
  456                         ((_inter = (PPTREE)tree,1) && 
  457 #line 86 "trait.ch"
  458                             ((elem=SonTree(_inter,2)),1) &&
  459 #line 86 "trait.ch"
  460                             1);
  461 #line 86 "trait.ch"
  462                         ;
  463 #line 86 "trait.ch"
  464 #line 87 "trait.ch"
  465                         {
  466 #line 87 "trait.ch"
  467                             PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
  468 #line 87 "trait.ch"
  469                             _ptTree0 = declaration;
  470 #line 87 "trait.ch"
  471                             {
  472 #line 87 "trait.ch"
  473                                 PPTREE _ptTree1= (PPTREE) 0 ;
  474 #line 87 "trait.ch"
  475                                 _ptTree0 = AddList( _ptTree0,elem);
  476 #line 87 "trait.ch"
  477                             }
  478 #line 87 "trait.ch"
  479                             ReplaceTree(tree, 2, _ptTree0);
  480 #line 87 "trait.ch"
  481                         }
  482 #line 87 "trait.ch"
  483 #line 87 "trait.ch"
  484 #line 88 "trait.ch"
  485 #line 88 "trait.ch"
  486 #line 88 "trait.ch"
  487                        }
  488 #line 88 "trait.ch"
  489 #line 89 "trait.ch"
  490 #line 89 "trait.ch"
  491 #line 89 "trait.ch"
  492 }
  493 #line 89 "trait.ch"
  494 
  495 #line 93 "trait.ch"
  496 #line 93 "trait.ch"
  497 void traitement_while ( PTREE tree )
  498 #line 93 "trait.ch"
  499 {
  500 #line 93 "trait.ch"
  501 #line 93 "trait.ch"
  502     PTREE   _Baum0 ;
  503 #line 93 "trait.ch"
  504 #line 93 "trait.ch"
  505 #line 93 "trait.ch"
  506     int ptStackTree ;
  507 #line 93 "trait.ch"
  508 #line 93 "trait.ch"
  509     PPTREE  stackTree [1024];
  510 #line 93 "trait.ch"
  511 #line 93 "trait.ch"
  512     int _nextVal ;
  513 #line 93 "trait.ch"
  514 #line 97 "trait.ch"
  515     {
  516 #line 97 "trait.ch"
  517         /* [ metalang::ADDLIST
  518             [ LIST 
  519                 [ META "list"]
  520                 [ META "elem"]
  521             ]
  522            ]
  523 #line 97 "trait.ch"
  524         */
  525 #line 97 "trait.ch"
  526         {   ptStackTree = 0 ;
  527 #line 97 "trait.ch"
  528             TheConstructor(stackTree,ptStackTree,-2,MakeString("list"),META,1,-2,MakeString("elem"),META,1,-4,LIST,2,LIST,2,metalang::ADDLIST,1,-3) ;
  529             _Baum0 = PopTree ;
  530 #line 97 "trait.ch"
  531         }   }
  532 #line 97 "trait.ch"
  533 #line 97 "trait.ch"
  534 #line 97 "trait.ch"
  535     {
  536 #line 97 "trait.ch"
  537 #line 97 "trait.ch"
  538         ItPtree _iterator1 (tree, _Baum0) ;
  539 #line 97 "trait.ch"
  540 #line 97 "trait.ch"
  541         PPTREE  _for_elem ;
  542 #line 97 "trait.ch"
  543 #line 97 "trait.ch"
  544         _iterator1.AllSearch(1);
  545 #line 97 "trait.ch"
  546 #line 97 "trait.ch"
  547         while ( _for_elem = _iterator1++ ) {
  548 #line 97 "trait.ch"
  549 #line 97 "trait.ch"
  550             {
  551 #line 97 "trait.ch"
  552 #line 98 "trait.ch"
  553                 traitement_addlist(for_elem);
  554 #line 98 "trait.ch"
  555 #line 99 "trait.ch"
  556                 goto for_continue1 ;
  557 #line 99 "trait.ch"
  558 #line 100 "trait.ch"
  559 #line 100 "trait.ch"
  560 #line 100 "trait.ch"
  561             }
  562 #line 100 "trait.ch"
  563 #line 100 "trait.ch"
  564             _iterator1.Current(_for_elem);
  565 #line 100 "trait.ch"
  566 #line 100 "trait.ch"
  567             continue ;
  568 #line 100 "trait.ch"
  569 #line 100 "trait.ch"
  570         for_continue1 : 
  571 #line 100 "trait.ch"
  572 #line 100 "trait.ch"
  573             _iterator1.Current(_for_elem);
  574 #line 100 "trait.ch"
  575 #line 100 "trait.ch"
  576             _iterator1.SkipSon(1);
  577 #line 100 "trait.ch"
  578 #line 100 "trait.ch"
  579             continue ;
  580 #line 100 "trait.ch"
  581 #line 100 "trait.ch"
  582         for_break1 : 
  583 #line 100 "trait.ch"
  584 #line 100 "trait.ch"
  585             break ;
  586 #line 100 "trait.ch"
  587 #line 100 "trait.ch"
  588 #line 100 "trait.ch"
  589 #line 100 "trait.ch"
  590         }
  591 #line 100 "trait.ch"
  592 #line 100 "trait.ch"
  593 #line 100 "trait.ch"
  594 #line 100 "trait.ch"
  595     }
  596 #line 100 "trait.ch"
  597 #line 101 "trait.ch"
  598 #line 101 "trait.ch"
  599 #line 101 "trait.ch"
  600 }
  601 #line 101 "trait.ch"
  602 
  603 static PTREE    theName, theOldName ;
  604 #line 101 "trait.ch"
  605 static int  useValue ;
  606 
  607 #line 109 "trait.ch"
  608 #line 109 "trait.ch"
  609 void traitement_addlist ( PTREE tree )
  610 #line 109 "trait.ch"
  611 {
  612 #line 109 "trait.ch"
  613     register PPTREE _inter ;
  614 #line 109 "trait.ch"
  615 #line 109 "trait.ch"
  616 #line 109 "trait.ch"
  617     PTREE   _Baum0 ;
  618 #line 109 "trait.ch"
  619 #line 109 "trait.ch"
  620 #line 109 "trait.ch"
  621     int ptStackTree ;
  622 #line 109 "trait.ch"
  623 #line 109 "trait.ch"
  624     PPTREE  stackTree [1024];
  625 #line 109 "trait.ch"
  626 #line 109 "trait.ch"
  627     int _nextVal ;
  628 #line 109 "trait.ch"
  629 #line 112 "trait.ch"
  630     PTREE   inter, searched, new_value, old_value, list_elem ;
  631 #line 112 "trait.ch"
  632 #line 112 "trait.ch"
  633 #line 113 "trait.ch"
  634     int rank ;
  635 #line 113 "trait.ch"
  636 #line 114 "trait.ch"
  637     char    name [20];
  638 #line 114 "trait.ch"
  639 #line 116 "trait.ch"
  640     find_elem = 0 ;
  641 #line 116 "trait.ch"
  642 #line 117 "trait.ch"
  643     {
  644 #line 117 "trait.ch"
  645         PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
  646 #line 117 "trait.ch"
  647         _ptRes0 = MakeTree(metalang::IDENT, 1);
  648 #line 117 "trait.ch"
  649         _ptTree0 = StoreRef(MakeString(Value(tree)));
  650 #line 117 "trait.ch"
  651         ReplaceTree(_ptRes0, 1, _ptTree0);
  652 #line 117 "trait.ch"
  653         old_value = _ptRes0;
  654 #line 117 "trait.ch"
  655     }
  656 #line 117 "trait.ch"
  657 #line 117 "trait.ch"
  658 #line 118 "trait.ch"
  659     {
  660 #line 118 "trait.ch"
  661         /* [ metalang::EQUAL
  662             [ META "old_value"]
  663             [ META "aff"]
  664            ]
  665 #line 118 "trait.ch"
  666         */
  667 #line 118 "trait.ch"
  668         {   ptStackTree = 0 ;
  669 #line 118 "trait.ch"
  670             TheConstructor(stackTree,ptStackTree,-2,MakeString("old_value"),META,1,-2,MakeString("aff"),META,1,metalang::EQUAL,2,-3) ;
  671             _Baum0 = PopTree ;
  672 #line 118 "trait.ch"
  673         }   {
  674 #line 118 "trait.ch"
  675                 register PPTREE _inter ;
  676 #line 118 "trait.ch"
  677 #line 118 "trait.ch"
  678 #line 118 "trait.ch"
  679                 MetaRep("old_value", _Baum0, old_value);
  680 #line 118 "trait.ch"
  681 #line 118 "trait.ch"
  682             }
  683 #line 118 "trait.ch"
  684     }
  685 #line 118 "trait.ch"
  686 #line 118 "trait.ch"
  687 #line 118 "trait.ch"
  688     {
  689 #line 118 "trait.ch"
  690 #line 118 "trait.ch"
  691         ItPtree _iterator1 (the_while, _Baum0) ;
  692 #line 118 "trait.ch"
  693 #line 118 "trait.ch"
  694         PPTREE  _for_elem ;
  695 #line 118 "trait.ch"
  696 #line 118 "trait.ch"
  697         _iterator1.AllSearch(1);
  698 #line 118 "trait.ch"
  699 #line 119 "trait.ch"
  700         while ( _for_elem = _iterator1++ ) {
  701 #line 119 "trait.ch"
  702 #line 119 "trait.ch"
  703             find_elem++ ;
  704 #line 119 "trait.ch"
  705 #line 119 "trait.ch"
  706             _iterator1.Current(_for_elem);
  707 #line 119 "trait.ch"
  708 #line 119 "trait.ch"
  709             continue ;
  710 #line 119 "trait.ch"
  711 #line 119 "trait.ch"
  712         for_continue1 : 
  713 #line 119 "trait.ch"
  714 #line 119 "trait.ch"
  715             _iterator1.Current(_for_elem);
  716 #line 119 "trait.ch"
  717 #line 119 "trait.ch"
  718             _iterator1.SkipSon(1);
  719 #line 119 "trait.ch"
  720 #line 119 "trait.ch"
  721             continue ;
  722 #line 119 "trait.ch"
  723 #line 119 "trait.ch"
  724         for_break1 : 
  725 #line 119 "trait.ch"
  726 #line 119 "trait.ch"
  727             break ;
  728 #line 119 "trait.ch"
  729 #line 119 "trait.ch"
  730 #line 119 "trait.ch"
  731 #line 119 "trait.ch"
  732         }
  733 #line 119 "trait.ch"
  734 #line 119 "trait.ch"
  735 #line 119 "trait.ch"
  736 #line 119 "trait.ch"
  737     }
  738 #line 119 "trait.ch"
  739 #line 121 "trait.ch"
  740     if ( !find_elem ) {
  741 #line 121 "trait.ch"
  742 #line 121 "trait.ch"
  743                             PTREE   _Baum1 ;
  744 #line 121 "trait.ch"
  745 #line 121 "trait.ch"
  746 #line 122 "trait.ch"
  747                             nb_addlist++ ;
  748 #line 122 "trait.ch"
  749 #line 123 "trait.ch"
  750                             sprintf(name, "%s%d", "_addlist", nb_addlist);
  751 #line 123 "trait.ch"
  752 #line 124 "trait.ch"
  753                             {
  754 #line 124 "trait.ch"
  755                                 PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
  756 #line 124 "trait.ch"
  757                                 _ptRes0 = MakeTree(metalang::IDENT, 1);
  758 #line 124 "trait.ch"
  759                                 _ptTree0 = StoreRef(MakeString(name));
  760 #line 124 "trait.ch"
  761                                 ReplaceTree(_ptRes0, 1, _ptTree0);
  762 #line 124 "trait.ch"
  763                                 new_value = _ptRes0;
  764 #line 124 "trait.ch"
  765                             }
  766 #line 124 "trait.ch"
  767 #line 124 "trait.ch"
  768 #line 125 "trait.ch"
  769                             useValue = 0 ;
  770 #line 125 "trait.ch"
  771 #line 126 "trait.ch"
  772                             (theName=new_value);
  773 #line 126 "trait.ch"
  774 #line 126 "trait.ch"
  775 #line 127 "trait.ch"
  776                             (theOldName=old_value);
  777 #line 127 "trait.ch"
  778 #line 127 "trait.ch"
  779 #line 128 "trait.ch"
  780                             {
  781 #line 128 "trait.ch"
  782                                 /* [ metalang::ADDLIST
  783                                     [ LIST 
  784                                         [ META "meta0"]
  785                                         [ META "list"]
  786                                     ]
  787                                    ]
  788 #line 128 "trait.ch"
  789                                 */
  790 #line 128 "trait.ch"
  791                                 {   ptStackTree = 0 ;
  792 #line 128 "trait.ch"
  793                                     TheConstructor(stackTree,ptStackTree,-2,MakeString("meta0"),META,1,-2,MakeString("list"),META,1,-4,LIST,2,LIST,2,metalang::ADDLIST,1,-3) ;
  794                                     _Baum1 = PopTree ;
  795 #line 128 "trait.ch"
  796                                 }   {
  797 #line 128 "trait.ch"
  798                                         register PPTREE _inter ;
  799 #line 128 "trait.ch"
  800 #line 128 "trait.ch"
  801 #line 128 "trait.ch"
  802                                         MetaRep("meta0", _Baum1, CopyTree(old_value));
  803 #line 128 "trait.ch"
  804 #line 128 "trait.ch"
  805                                     }
  806 #line 128 "trait.ch"
  807                             }
  808 #line 128 "trait.ch"
  809 #line 128 "trait.ch"
  810 #line 128 "trait.ch"
  811                             {
  812 #line 128 "trait.ch"
  813 #line 128 "trait.ch"
  814                                 ItPtree _iterator2 (the_while, _Baum1) ;
  815 #line 128 "trait.ch"
  816 #line 128 "trait.ch"
  817                                 PPTREE  _for_elem ;
  818 #line 128 "trait.ch"
  819 #line 128 "trait.ch"
  820                                 _iterator2.AllSearch(1);
  821 #line 128 "trait.ch"
  822 #line 129 "trait.ch"
  823                                 while ( _for_elem = _iterator2++ ) {
  824 #line 129 "trait.ch"
  825 #line 129 "trait.ch"
  826                                     rep_addlist(for_elem, theName, theOldName);
  827 #line 129 "trait.ch"
  828 #line 129 "trait.ch"
  829                                     _iterator2.Current(_for_elem);
  830 #line 129 "trait.ch"
  831 #line 129 "trait.ch"
  832                                     continue ;
  833 #line 129 "trait.ch"
  834 #line 129 "trait.ch"
  835                                 for_continue2 : 
  836 #line 129 "trait.ch"
  837 #line 129 "trait.ch"
  838                                     _iterator2.Current(_for_elem);
  839 #line 129 "trait.ch"
  840 #line 129 "trait.ch"
  841                                     _iterator2.SkipSon(1);
  842 #line 129 "trait.ch"
  843 #line 129 "trait.ch"
  844                                     continue ;
  845 #line 129 "trait.ch"
  846 #line 129 "trait.ch"
  847                                 for_break2 : 
  848 #line 129 "trait.ch"
  849 #line 129 "trait.ch"
  850                                     break ;
  851 #line 129 "trait.ch"
  852 #line 129 "trait.ch"
  853 #line 129 "trait.ch"
  854 #line 129 "trait.ch"
  855                                 }
  856 #line 129 "trait.ch"
  857 #line 129 "trait.ch"
  858 #line 129 "trait.ch"
  859 #line 129 "trait.ch"
  860                             }
  861 #line 129 "trait.ch"
  862 #line 131 "trait.ch"
  863                             if ( useValue ) {
  864 #line 131 "trait.ch"
  865 #line 132 "trait.ch"
  866                                                 {
  867 #line 132 "trait.ch"
  868                                                     /* [ metalang::EQUAL
  869                                                         [ META "new_value"]
  870                                                         [ META "old_value"]
  871                                                        ]
  872 #line 132 "trait.ch"
  873                                                     */
  874 #line 132 "trait.ch"
  875                                                     {   ptStackTree = 0 ;
  876 #line 132 "trait.ch"
  877                                                         TheConstructor(stackTree,ptStackTree,-2,MakeString("new_value"),META,1,-2,MakeString("old_value"),META,1,metalang::EQUAL,2,-3) ;
  878                                                         list_elem = PopTree ;
  879 #line 132 "trait.ch"
  880                                                     }   {
  881 #line 132 "trait.ch"
  882                                                             register PPTREE _inter ;
  883 #line 132 "trait.ch"
  884 #line 132 "trait.ch"
  885 #line 132 "trait.ch"
  886                                                             MetaRep("new_value", list_elem, new_value);
  887 #line 132 "trait.ch"
  888 #line 132 "trait.ch"
  889                                                             MetaRep("old_value", list_elem, old_value);
  890 #line 132 "trait.ch"
  891 #line 132 "trait.ch"
  892                                                         }
  893 #line 132 "trait.ch"
  894                                                 }
  895 #line 132 "trait.ch"
  896 #line 132 "trait.ch"
  897 #line 133 "trait.ch"
  898                                                 (searched=fathertree(the_while));
  899 #line 133 "trait.ch"
  900 #line 133 "trait.ch"
  901 #line 134 "trait.ch"
  902                                                 if ( !(((_inter = (PPTREE)searched,1) && 
  903 #line 134 "trait.ch"
  904                                                             (NumberTree(_inter) == LIST) &&
  905 #line 134 "trait.ch"
  906                                                             1)) ) {
  907 #line 134 "trait.ch"
  908 #line 135 "trait.ch"
  909                                                                     rank = ranktree(the_while);
  910 #line 135 "trait.ch"
  911 #line 136 "trait.ch"
  912                                                                     {
  913 #line 136 "trait.ch"
  914                                                                         PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
  915 #line 136 "trait.ch"
  916                                                                         _ptRes0 = MakeTree(metalang::BEGIN, 1);
  917 #line 136 "trait.ch"
  918                                                                         _ptTree0 = the_while;
  919 #line 136 "trait.ch"
  920                                                                         {
  921 #line 136 "trait.ch"
  922 PPTREE _ptTree1= (PPTREE) 0 ;
  923 #line 136 "trait.ch"
  924 _ptTree1 = (PPTREE) 0;
  925 #line 136 "trait.ch"
  926 _ptTree0 = AddList( _ptTree0,_ptTree1);
  927 #line 136 "trait.ch"
  928                                                                         }
  929 #line 136 "trait.ch"
  930                                                                         ReplaceTree(_ptRes0, 1, _ptTree0);
  931 #line 136 "trait.ch"
  932                                                                         inter = _ptRes0;
  933 #line 136 "trait.ch"
  934                                                                     }
  935 #line 136 "trait.ch"
  936 #line 136 "trait.ch"
  937 #line 137 "trait.ch"
  938                                                                     replacetree(searched, rank, inter);
  939 #line 137 "trait.ch"
  940 #line 138 "trait.ch"
  941                                                                     ((_inter = (PPTREE)inter,1) && 
  942 #line 138 "trait.ch"
  943                                                                         ((inter=SonTree(_inter,1)),1) &&
  944 #line 138 "trait.ch"
  945                                                                         1);
  946 #line 138 "trait.ch"
  947                                                                     ;
  948 #line 138 "trait.ch"
  949 #line 139 "trait.ch"
  950 #line 139 "trait.ch"
  951 #line 139 "trait.ch"
  952                                                                   } else 
  953 #line 139 "trait.ch"
  954 #line 140 "trait.ch"
  955                                                     (inter=searched);
  956 #line 140 "trait.ch"
  957 #line 140 "trait.ch"
  958 #line 140 "trait.ch"
  959 #line 141 "trait.ch"
  960                                                 (searched=fathertree(inter));
  961 #line 141 "trait.ch"
  962 #line 141 "trait.ch"
  963 #line 142 "trait.ch"
  964                                                 rank = ranktree(inter);
  965 #line 142 "trait.ch"
  966 #line 143 "trait.ch"
  967                                                 {
  968 #line 143 "trait.ch"
  969                                                     PPTREE _ptTree0=(PPTREE) 0;
  970 #line 143 "trait.ch"
  971                                                     _ptTree0 = list_elem;
  972 #line 143 "trait.ch"
  973                                                     {
  974 #line 143 "trait.ch"
  975                                                         PPTREE _ptTree1= (PPTREE) 0 ;
  976 #line 143 "trait.ch"
  977                                                         _ptTree0 = AddList( _ptTree0,inter);
  978 #line 143 "trait.ch"
  979                                                     }
  980 #line 143 "trait.ch"
  981                                                     inter = _ptTree0;
  982 #line 143 "trait.ch"
  983                                                     ;
  984 #line 143 "trait.ch"
  985                                                 }
  986 #line 143 "trait.ch"
  987 #line 143 "trait.ch"
  988 #line 144 "trait.ch"
  989                                                 replacetree(searched, rank, inter);
  990 #line 144 "trait.ch"
  991 #line 145 "trait.ch"
  992 #line 145 "trait.ch"
  993 #line 145 "trait.ch"
  994                                              } else 
  995 #line 145 "trait.ch"
  996 #line 146 "trait.ch"
  997                                 nb_addlist-- ;
  998 #line 146 "trait.ch"
  999 #line 146 "trait.ch"
 1000 #line 147 "trait.ch"
 1001 #line 147 "trait.ch"
 1002 #line 147 "trait.ch"
 1003                         }
 1004 #line 147 "trait.ch"
 1005 #line 148 "trait.ch"
 1006 #line 148 "trait.ch"
 1007 #line 148 "trait.ch"
 1008 }
 1009 #line 148 "trait.ch"
 1010 
 1011 #line 152 "trait.ch"
 1012 
 1013 #line 152 "trait.ch"
 1014 void rep_addlist ( PTREE tree, PTREE new_value, PTREE old_value )
 1015 #line 152 "trait.ch"
 1016 {
 1017 #line 152 "trait.ch"
 1018     register PPTREE _inter ;
 1019 #line 152 "trait.ch"
 1020 #line 152 "trait.ch"
 1021 #line 152 "trait.ch"
 1022     int ptStackTree ;
 1023 #line 152 "trait.ch"
 1024 #line 152 "trait.ch"
 1025     PPTREE  stackTree [1024];
 1026 #line 152 "trait.ch"
 1027 #line 152 "trait.ch"
 1028     int _nextVal ;
 1029 #line 152 "trait.ch"
 1030 #line 157 "trait.ch"
 1031     PTREE   inter, elem, rep, elem1, cond, list ;
 1032 #line 157 "trait.ch"
 1033 #line 157 "trait.ch"
 1034 #line 158 "trait.ch"
 1035     int rank ;
 1036 #line 158 "trait.ch"
 1037 #line 160 "trait.ch"
 1038     (inter=fathertree(tree));
 1039 #line 160 "trait.ch"
 1040 #line 160 "trait.ch"
 1041 #line 161 "trait.ch"
 1042     while ( !(((_inter = (PPTREE)inter,1) && 
 1043 #line 161 "trait.ch"
 1044                     (NumberTree(_inter) == metalang::DEFINE) &&
 1045 #line 161 "trait.ch"
 1046                     1)) ) {
 1047 #line 161 "trait.ch"
 1048 #line 162 "trait.ch"
 1049                             switch ( NumberTree(inter) ) {
 1050 #line 162 "trait.ch"
 1051 #line 163 "trait.ch"
 1052                                 case metalang::MAKETREE : 
 1053 #line 163 "trait.ch"
 1054 #line 163 "trait.ch"
 1055                                 _Case5 : 
 1056 #line 163 "trait.ch"
 1057 #line 163 "trait.ch"
 1058                                     ;
 1059 #line 163 "trait.ch"
 1060 #line 163 "trait.ch"
 1061                                     return ;
 1062 #line 163 "trait.ch"
 1063 #line 163 "trait.ch"
 1064                                     goto _Case6 ;
 1065 #line 163 "trait.ch"
 1066 #line 164 "trait.ch"
 1067                                 case metalang::REPLACETREE : 
 1068 #line 164 "trait.ch"
 1069 #line 164 "trait.ch"
 1070                                 _Case6 : 
 1071 #line 164 "trait.ch"
 1072 #line 164 "trait.ch"
 1073                                     ;
 1074 #line 164 "trait.ch"
 1075 #line 164 "trait.ch"
 1076                                     return ;
 1077 #line 164 "trait.ch"
 1078 #line 164 "trait.ch"
 1079                                     goto _Case7 ;
 1080 #line 164 "trait.ch"
 1081 #line 165 "trait.ch"
 1082                                 case metalang::ADDLIST : 
 1083 #line 165 "trait.ch"
 1084 #line 165 "trait.ch"
 1085                                 _Case7 : 
 1086 #line 165 "trait.ch"
 1087 #line 165 "trait.ch"
 1088                                     ;
 1089 #line 165 "trait.ch"
 1090 #line 165 "trait.ch"
 1091                                     return ;
 1092 #line 165 "trait.ch"
 1093 #line 165 "trait.ch"
 1094                                     goto _Case8 ;
 1095 #line 165 "trait.ch"
 1096 #line 166 "trait.ch"
 1097                                 case metalang::RETURN : 
 1098 #line 166 "trait.ch"
 1099 #line 166 "trait.ch"
 1100                                 _Case8 : 
 1101 #line 166 "trait.ch"
 1102 #line 166 "trait.ch"
 1103                                     ;
 1104 #line 166 "trait.ch"
 1105 #line 166 "trait.ch"
 1106                                     return ;
 1107 #line 166 "trait.ch"
 1108 #line 166 "trait.ch"
 1109                                     goto _Case9 ;
 1110 #line 166 "trait.ch"
 1111 #line 167 "trait.ch"
 1112                                 default : 
 1113 #line 167 "trait.ch"
 1114 #line 167 "trait.ch"
 1115                                 _Case9 : 
 1116 #line 167 "trait.ch"
 1117 #line 167 "trait.ch"
 1118                                     ;
 1119 #line 167 "trait.ch"
 1120 #line 167 "trait.ch"
 1121                                     (inter=fathertree(inter));
 1122 #line 167 "trait.ch"
 1123 #line 167 "trait.ch"
 1124                             }
 1125 #line 167 "trait.ch"
 1126 #line 167 "trait.ch"
 1127 #line 169 "trait.ch"
 1128 #line 169 "trait.ch"
 1129 #line 169 "trait.ch"
 1130                           }
 1131 #line 169 "trait.ch"
 1132 #line 170 "trait.ch"
 1133     replace(old_value, tree, CopyTree(new_value));
 1134 #line 170 "trait.ch"
 1135 #line 171 "trait.ch"
 1136     {
 1137 #line 171 "trait.ch"
 1138         PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
 1139 #line 171 "trait.ch"
 1140         _ptRes0 = MakeTree(metalang::ASIT, 1);
 1141 #line 171 "trait.ch"
 1142         {
 1143 #line 171 "trait.ch"
 1144             PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
 1145 #line 171 "trait.ch"
 1146             _ptRes1 = MakeTree(LIST, 2);
 1147 #line 171 "trait.ch"
 1148             _ptTree1 = StoreRef(MakeString(Value(old_value)));
 1149 #line 171 "trait.ch"
 1150             ReplaceTree(_ptRes1, 1, _ptTree1);
 1151 #line 171 "trait.ch"
 1152             _ptTree0 = _ptRes1;
 1153 #line 171 "trait.ch"
 1154         }
 1155 #line 171 "trait.ch"
 1156         ReplaceTree(_ptRes0, 1, _ptTree0);
 1157 #line 171 "trait.ch"
 1158         cond = _ptRes0;
 1159 #line 171 "trait.ch"
 1160     }
 1161 #line 171 "trait.ch"
 1162 #line 171 "trait.ch"
 1163 #line 172 "trait.ch"
 1164     (elem1=CopyTree(new_value));
 1165 #line 172 "trait.ch"
 1166 #line 172 "trait.ch"
 1167 #line 173 "trait.ch"
 1168     (list=CopyTree(old_value));
 1169 #line 173 "trait.ch"
 1170 #line 173 "trait.ch"
 1171 #line 174 "trait.ch"
 1172     {
 1173 #line 174 "trait.ch"
 1174         /* [ metalang::IF
 1175             [ META "cond"]
 1176             [ metalang::EQUAL
 1177                 [ META "elem1"]
 1178                 [ metalang::FUNC
 1179                     [ metalang::IDENT "SonTree"]
 1180                     [ LIST 
 1181                         [ META "elem1"]
 1182                         [ metalang::NUMB "2"]
 1183                     ]
 1184                 ]
 1185             ]
 1186             [ metalang::EQUAL
 1187                 [ META "list"]
 1188                 [ META "elem1"]
 1189             ]
 1190            ]
 1191 #line 174 "trait.ch"
 1192         */
 1193 #line 174 "trait.ch"
 1194         {   ptStackTree = 0 ;
 1195 #line 174 "trait.ch"
 1196             TheConstructor(stackTree,ptStackTree,-2,MakeString("cond"),META,1,-2,MakeString("elem1"),META,1,-2,MakeString("SonTree"),metalang::IDENT,1,
 1197                 -2,MakeString("elem1"),META,1,-2,MakeString("2"),metalang::NUMB,1,-4,LIST,2,LIST,2,metalang::FUNC,2,metalang::EQUAL,2,-2,MakeString("list"),META,1,
 1198                 -2,MakeString("elem1"),META,1,metalang::EQUAL,2,metalang::IF,3,-3) ;
 1199             elem = PopTree ;
 1200 #line 174 "trait.ch"
 1201         }   {
 1202 #line 174 "trait.ch"
 1203                 register PPTREE _inter ;
 1204 #line 174 "trait.ch"
 1205 #line 174 "trait.ch"
 1206 #line 174 "trait.ch"
 1207                 MetaRep("cond", elem, cond);
 1208 #line 174 "trait.ch"
 1209 #line 174 "trait.ch"
 1210                 MetaRep("elem1", elem, elem1);
 1211 #line 174 "trait.ch"
 1212 #line 174 "trait.ch"
 1213                 MetaRep("list", elem, list);
 1214 #line 174 "trait.ch"
 1215 #line 174 "trait.ch"
 1216             }
 1217 #line 174 "trait.ch"
 1218     }
 1219 #line 174 "trait.ch"
 1220 #line 174 "trait.ch"
 1221 #line 180 "trait.ch"
 1222     (inter=tree);
 1223 #line 180 "trait.ch"
 1224 #line 180 "trait.ch"
 1225 #line 181 "trait.ch"
 1226     (rep=fathertree(inter));
 1227 #line 181 "trait.ch"
 1228 #line 181 "trait.ch"
 1229 #line 182 "trait.ch"
 1230     if ( !(((_inter = (PPTREE)rep,1) && 
 1231 #line 182 "trait.ch"
 1232                 (NumberTree(_inter) == LIST) &&
 1233 #line 182 "trait.ch"
 1234                 1)) ) {
 1235 #line 182 "trait.ch"
 1236 #line 183 "trait.ch"
 1237                         rank = ranktree(inter);
 1238 #line 183 "trait.ch"
 1239 #line 184 "trait.ch"
 1240                         {
 1241 #line 184 "trait.ch"
 1242                             PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
 1243 #line 184 "trait.ch"
 1244                             _ptRes0 = MakeTree(metalang::BEGIN, 1);
 1245 #line 184 "trait.ch"
 1246                             _ptTree0 = inter;
 1247 #line 184 "trait.ch"
 1248                             {
 1249 #line 184 "trait.ch"
 1250                                 PPTREE _ptTree1= (PPTREE) 0 ;
 1251 #line 184 "trait.ch"
 1252                                 _ptTree1 = (PPTREE) 0;
 1253 #line 184 "trait.ch"
 1254                                 _ptTree0 = AddList( _ptTree0,_ptTree1);
 1255 #line 184 "trait.ch"
 1256                             }
 1257 #line 184 "trait.ch"
 1258                             ReplaceTree(_ptRes0, 1, _ptTree0);
 1259 #line 184 "trait.ch"
 1260                             inter = _ptRes0;
 1261 #line 184 "trait.ch"
 1262                         }
 1263 #line 184 "trait.ch"
 1264 #line 184 "trait.ch"
 1265 #line 185 "trait.ch"
 1266                         replacetree(rep, rank, inter);
 1267 #line 185 "trait.ch"
 1268 #line 186 "trait.ch"
 1269                         ((_inter = (PPTREE)inter,1) && 
 1270 #line 186 "trait.ch"
 1271                             ((inter=SonTree(_inter,1)),1) &&
 1272 #line 186 "trait.ch"
 1273                             1);
 1274 #line 186 "trait.ch"
 1275                         ;
 1276 #line 186 "trait.ch"
 1277 #line 187 "trait.ch"
 1278 #line 187 "trait.ch"
 1279 #line 187 "trait.ch"
 1280                       } else 
 1281 #line 187 "trait.ch"
 1282 #line 188 "trait.ch"
 1283         (inter=rep);
 1284 #line 188 "trait.ch"
 1285 #line 188 "trait.ch"
 1286 #line 188 "trait.ch"
 1287 #line 189 "trait.ch"
 1288     ((_inter = (PPTREE)inter,1) && 
 1289 #line 189 "trait.ch"
 1290         ((rep=SonTree(_inter,2)),1) &&
 1291 #line 189 "trait.ch"
 1292         1);
 1293 #line 189 "trait.ch"
 1294     ;
 1295 #line 189 "trait.ch"
 1296 #line 190 "trait.ch"
 1297     {
 1298 #line 190 "trait.ch"
 1299         PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
 1300 #line 190 "trait.ch"
 1301         _ptTree0 = elem;
 1302 #line 190 "trait.ch"
 1303         {
 1304 #line 190 "trait.ch"
 1305             PPTREE _ptTree1= (PPTREE) 0 ;
 1306 #line 190 "trait.ch"
 1307             _ptTree0 = AddList( _ptTree0,rep);
 1308 #line 190 "trait.ch"
 1309         }
 1310 #line 190 "trait.ch"
 1311         ReplaceTree(inter, 2, _ptTree0);
 1312 #line 190 "trait.ch"
 1313     }
 1314 #line 190 "trait.ch"
 1315 #line 190 "trait.ch"
 1316 #line 191 "trait.ch"
 1317     useValue = 1 ;
 1318 #line 191 "trait.ch"
 1319 #line 192 "trait.ch"
 1320 #line 192 "trait.ch"
 1321 #line 192 "trait.ch"
 1322 }
 1323 #line 192 "trait.ch"
 1324 
 1325 #line 192 "trait.ch"
 1326 /*Well done my boy */ 
 1327