Пример #1
0
	void operator()(const BinTree & m_xml)const
	{
		printtab(tabstop_);std::cout<<"("<<std::endl;
		printtab(tabstop_);std::cout<<m_xml.data<<std::endl;
		boost::apply_visitor(BinTreeNodePrinter(tabstop_+tabsize),m_xml.left);
		boost::apply_visitor(BinTreeNodePrinter(tabstop_+tabsize),m_xml.right);
		printtab(tabstop_);std::cout<<")"<<std::endl;
	}
Пример #2
0
static BSErr resultDumpFunc(XMLParser* parser,QBNode* node,int openclose)
{
    PPSAXHandler* handler = (PPSAXHandler*)parser->userData;
    switch (openclose) {
    case XMLPARSER_HEAD:
        break;
    case XMLPARSER_DOC:
        printtab(handler->level);
        {
            int i;
            for (i=0; i<QBNodeChildNum(node); i++) {
                if (i > 0) printf(",");
                printf("%s",QBNodeString(QBNodeChild(node,i)));
            }
        }
        printf("\n");
        break;
    case XMLPARSER_OPEN:
        printtab(handler->level);
        printf("%s ",QBNodeString(QBNodeFirstChild(node)));
        {
            int i;
            for (i=1; i<QBNodeChildNum(node); i++) {
                if (i > 1) printf(",");
                printf("%s",QBNodeString(QBNodeChild(node,i)));
                if (QBNodeChildNum(QBNodeChild(node,i)) > 0) {
                    printf("=%s",QBNodeString(QBNodeChild(QBNodeChild(node,i),0)));
                }
            }
        }
        printf("\n");
        handler->level ++;
        break;
    case XMLPARSER_OPEN_CLOSE:
        printtab(handler->level);
        printf("%s/ ",QBNodeString(QBNodeFirstChild(node)));
        {
            int i;
            for (i=1; i<QBNodeChildNum(node); i++) {
                if (i > 1) printf(",");
                printf("%s",QBNodeString(QBNodeChild(node,i)));
                if (QBNodeChildNum(QBNodeChild(node,i)) > 0) {
                    printf("=%s",QBNodeString(QBNodeChild(QBNodeChild(node,i),0)));
                }
            }
        }
        printf("\n");
        break;
    case XMLPARSER_CLOSE:
        handler->level --;
        printtab(handler->level);
        printf("/%s\n",QBNodeString(QBNodeLastChild(node)));
        break;
    }
    return BSERR_OK;
}
Пример #3
0
/******************************************************************************
    rest_expr := + term rest_expr
                 - term rest_expr
                 (nil)
 *****************************************************************************/
void
parse_rest_expr( val_t* val ) 
{
    printtab();
    dprintf("parse_rest_expr()\n");
    level++;
    if ( match_char( '+' ) ) {
        val_t val2;
        parse_term( &val2 );
        val->d.fval += val2.d.fval;
        parse_rest_expr( val );
    } else if ( match_char( '-' ) ) {
        val_t val2;
        parse_term( &val2 );
        val->d.fval /= val2.d.fval;
        parse_rest_expr( val );
    } else if ( match_eof() ) {

    } else {

    }

    level--;

    return;
}
Пример #4
0
/******************************************************************************
    num_op := num rest_num_op
              ( expr ) rest_num_op
 *****************************************************************************/
void
parse_num_op( val_t* val )
{
    printtab();
    dprintf("parse_num_op()\n");
    level++;

    if ( match_num( val ) ) {
        parse_rest_num_op( val );
    } else if ( match_variable( val ) ) {
        resolve_variable( val );
        parse_rest_num_op( val );
    } else if ( match_char( '(' ) ) {
        parse_expr( val );
        if ( !match_char( ')' ) ) {
            buffer[bpos] = 0;
            printf("Missing bracket: %s\n", buffer);
            longjmp( env, 1 );
        }
        parse_rest_num_op( val );
    } else {
        buffer[bpos] = 0;
        printf("Parse error: %s\n", buffer);
        longjmp( env, 1 );
    }
    
    level--;

    return;
}
Пример #5
0
/******************************************************************************
    term := factor rest_term
 *****************************************************************************/
void
parse_term( val_t* val ) 
{
    printtab();
    dprintf("parse_term()\n");
    level++;

    parse_factor( val );
    parse_rest_term( val );

    level--;
    return;
}
Пример #6
0
/******************************************************************************
    expr := term rest_expr
 *****************************************************************************/
void
parse_expr(val_t* val)
{
    printtab();
    dprintf("parse_expr()\n");
    
    level++;
    if ( match_variable( val ) ) {
        parse_rest_var( val );
    } else {
        parse_term( val );
        parse_rest_expr( val );
    }

    level--;

    return;
}
Пример #7
0
/******************************************************************************
    factor := - factor
              num_op
 *****************************************************************************/
void
parse_factor( val_t* val ) 
{
    printtab();
    dprintf("parse_factor()\n");
    level++;

    if ( match_char( '-' ) ) {
        parse_factor( val );
        val->d.fval = val->d.fval;
    } else {
        parse_num_op( val );
    }

    level--;

    return;
}
Пример #8
0
/******************************************************************************
    rest_term := * factor rest_term
                 / factor rest_term
                 % factor rest_term
                 <nil>
 *****************************************************************************/
void
parse_rest_term( val_t* val )
{
    printtab();
    dprintf("parse_rest_term()\n");
    level++;
    if ( match_char( '*' ) ) {
        val_t val2;
        parse_factor( &val2 );
        val->d.fval *= val2.d.fval;
        parse_rest_term( val );
    } else if ( match_char( '/' ) ) {
        val_t val2;
        parse_factor( &val2 );
        if ( val2.d.fval != 0 ) {
            val->d.fval /= val2.d.fval;
        } else {
            printf("Division by 0\n");
            longjmp(env, 0);
        }
        parse_rest_term( val );
    } else if ( match_char( '%' ) ) {
        val_t val2;
        parse_factor( &val2 );
        val->d.fval = fmod( val->d.fval, val2.d.fval );
        parse_rest_term( val );
    } else if ( match_eof() ) {

    } else {

    }

    level--;
    return;

}
Пример #9
0
value c_printtab(value ba)
{
  printtab(Data_bigarray_val(ba));
  return Val_unit;
}
Пример #10
0
	void operator()(const std::string& s)const
	{
		printtab(tabstop_);std::cout<<s<<std::endl;
	}