1*0c8de5b0SBaptiste Daroussin %{ 2*0c8de5b0SBaptiste Daroussin int yylex(void); 3*0c8de5b0SBaptiste Daroussin static void yyerror(const char *); 4*0c8de5b0SBaptiste Daroussin %} 5*0c8de5b0SBaptiste Daroussin 6*0c8de5b0SBaptiste Daroussin %union { 7*0c8de5b0SBaptiste Daroussin int ival; 8*0c8de5b0SBaptiste Daroussin double dval; 9*0c8de5b0SBaptiste Daroussin } 10*0c8de5b0SBaptiste Daroussin 11*0c8de5b0SBaptiste Daroussin %token NUMBER 12*0c8de5b0SBaptiste Daroussin %type <dval> expr 13*0c8de5b0SBaptiste Daroussin 14*0c8de5b0SBaptiste Daroussin %% 15*0c8de5b0SBaptiste Daroussin 16*0c8de5b0SBaptiste Daroussin expr : '(' recur ')' 17*0c8de5b0SBaptiste Daroussin { foo( $$ = $2 ); } 18*0c8de5b0SBaptiste Daroussin ; 19*0c8de5b0SBaptiste Daroussin 20*0c8de5b0SBaptiste Daroussin recur : NUMBER 21*0c8de5b0SBaptiste Daroussin ; 22*0c8de5b0SBaptiste Daroussin 23*0c8de5b0SBaptiste Daroussin %% 24*0c8de5b0SBaptiste Daroussin 25*0c8de5b0SBaptiste Daroussin #include <stdio.h> 26*0c8de5b0SBaptiste Daroussin 27*0c8de5b0SBaptiste Daroussin int 28*0c8de5b0SBaptiste Daroussin main(void) 29*0c8de5b0SBaptiste Daroussin { 30*0c8de5b0SBaptiste Daroussin printf("yyparse() = %d\n", yyparse()); 31*0c8de5b0SBaptiste Daroussin return 0; 32*0c8de5b0SBaptiste Daroussin } 33*0c8de5b0SBaptiste Daroussin 34*0c8de5b0SBaptiste Daroussin int yylex(void)35*0c8de5b0SBaptiste Daroussinyylex(void) 36*0c8de5b0SBaptiste Daroussin { 37*0c8de5b0SBaptiste Daroussin return -1; 38*0c8de5b0SBaptiste Daroussin } 39*0c8de5b0SBaptiste Daroussin 40*0c8de5b0SBaptiste Daroussin static void yyerror(const char * s)41*0c8de5b0SBaptiste Daroussinyyerror(const char* s) 42*0c8de5b0SBaptiste Daroussin { 43*0c8de5b0SBaptiste Daroussin printf("%s\n", s); 44*0c8de5b0SBaptiste Daroussin } 45