예제 #1
0
void ruby_write_constant(constant_t*c, state_t*s)
{
    int t;
    switch(c->type) {
        case CONSTANT_FLOAT:
            strf(s, "%g", c->f);
            break;
        case CONSTANT_INT:
        case CONSTANT_CATEGORY:
            strf(s, "%d", c->i);
            break;
        case CONSTANT_BOOL:
            if(c->b)
                strf(s, "true");
            else
                strf(s, "false");
        case CONSTANT_STRING:
            strf(s, ":\"");
            strf(s, "%s", c->s);
            strf(s, "\"");
            break;
        case CONSTANT_MISSING:
            strf(s, "nil");
            break;
        case CONSTANT_MIXED_ARRAY:
        case CONSTANT_INT_ARRAY:
        case CONSTANT_FLOAT_ARRAY:
        case CONSTANT_CATEGORY_ARRAY:
        case CONSTANT_STRING_ARRAY:
            strf(s, "[");
            for(t=0;t<c->a->size;t++) {
                if(t)
                    strf(s, ",");
                ruby_write_constant(&c->a->entries[t], s);
            }
            strf(s, "]");
            break;
    }
}
예제 #2
0
void ruby_write_node_missing(node_t*n, state_t*s)
{
    ruby_write_constant(&n->value, s);
}
예제 #3
0
void ruby_write_node_float(node_t*n, state_t*s)
{
    ruby_write_constant(&n->value, s);
}
예제 #4
0
void ruby_write_node_zero_float_array(node_t*n, state_t*s)
{
    ruby_write_constant(&n->value, s);
}
예제 #5
0
void ruby_write_node_category_array(node_t*n, state_t*s)
{
    ruby_write_constant(&n->value, s);
}
예제 #6
0
void ruby_write_node_string_array(node_t*n, state_t*s)
{
    ruby_write_constant(&n->value, s);
}