#define yyclassld(CS) (ir_classld_from_class(yyclass(CS)))
}
%define parse.error verbose
+%define parse.lac full
%define lr.type ielr
%define api.pure full
%define api.push-pull push
;
class:
-NAME CLOPEN { printf("new class\n");
- printf("class name: %s\n", $1);
- printf("current class head: %s\n", ir_class_name(yyclass(cs)));
- yyclass_push(cs,ir_class_addchild(yyclass(cs), $1));
- printf("Pushed class\n");
- printf("current class head: %s\n", ir_class_name(yyclass(cs)));
-}
+ NAME CLOPEN { yyclass_push(cs,ir_class_addchild(yyclass(cs), $1)); }
progn
CLCLOSE { yyclass_pop(cs); }
;
( yycstate* cs,
char const *s
)
-{ fprintf(stderr, "%s\n", s); }
+{ ir_class* iter;
+ for (iter = cs->class_stack; iter < cs->csp; iter++)
+ fprintf(stderr, "%s/", ir_class_name(*iter));
+ fprintf(stderr, "\n\t");
+ fprintf(stderr, "%s\n", s);
+}
yycstate* yycstate_new
( void )
static inline
ir_class yyclass_pop
( yycstate* cs )
-{ return *((cs->csp)--); }
+{ cs->csp--;
+ return *(cs->csp + 1);
+}
static inline
ir_class yyclass_push