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; }
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; }
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; }