Example #1
0
static chimp_bool_t
chimp_symtable_leave_scope (ChimpRef *self)
{
    ChimpRef *stack = CHIMP_SYMTABLE(self)->stack;
    if (CHIMP_ARRAY_SIZE(stack) > 0) {
        CHIMP_SYMTABLE(self)->ste = chimp_array_pop (stack);
    }
    return CHIMP_SYMTABLE_GET_CURRENT_ENTRY(self) != chimp_nil;
}
Example #2
0
static ChimpRef *
_chimp_io_output (ChimpRef *self, ChimpRef *args, char* separator)
{
    size_t i;

    for (i = 0; i < CHIMP_ARRAY_SIZE(args); i++) {
        ChimpRef *str = chimp_object_str (CHIMP_ARRAY_ITEM (args, i));
        printf ("%s%s", CHIMP_STR_DATA(str), separator);
    }

    return chimp_nil;
}
Example #3
0
static chimp_bool_t
chimp_symtable_visit_stmts_or_decls (ChimpRef *self, ChimpRef *arr)
{
    size_t i;

    for (i = 0; i < CHIMP_ARRAY_SIZE(arr); i++) {
        ChimpRef *item = CHIMP_ARRAY_ITEM(arr, i);
        if (CHIMP_ANY_CLASS(item) == chimp_ast_stmt_class) {
            if (!chimp_symtable_visit_stmt (self, item)) {
                return CHIMP_FALSE;
            }
        }
        else if (CHIMP_ANY_CLASS(item) == chimp_ast_decl_class) {
            if (!chimp_symtable_visit_decl (self, item)) {
                return CHIMP_FALSE;
            }
        }
        else {
            CHIMP_BUG ("dude");
            return CHIMP_FALSE;
        }
    }
    return CHIMP_TRUE;
}