All pastes #542164 Raw Edit

piromanas

public cpp v1 · immutable
·published 2007-06-05 19:04 UTC
rendered paste body
node* _build_syntax_tree( list<node*> & output ) {        while ( output.size()>1 ) {            list<node*>::iterator i = output.begin(), i1 = output.begin() ;            while (i != output.end()) {                if ((*i)->operation && (*i)->priority > (*i1)->priority) i1 = i ;                ++i ;            }            switch ((*i1)->operation->type) {                case function::PREFIX : {                    (*i1)->priority = -1 ;                    i=i1;                    ++i;                      (*i1)->kaire = *i ;                     output.erase(i) ;                     break ;                }                case function::INFIX : {                    node* n = *i1 ;                    i=i1;                    ++i;                    --i1;                    n->priority = -1 ;                     n->kaire = *i1 ;                     n->desne = *i ;                     output.erase(i1) ;                    output.erase( find(output.begin(), output.end(), n->desne )) ;                    break ;                }            }    }    return *output.begin();}