xref: /freebsd-src/contrib/byacc/test/err_syntax23.y (revision 6cec9cad762b6476313fb1f8e931a1647822db6b)
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 %type <tag2> recur
12*0c8de5b0SBaptiste Daroussin 
13*0c8de5b0SBaptiste Daroussin %token NUMBER
14*0c8de5b0SBaptiste Daroussin 
15*0c8de5b0SBaptiste Daroussin %%
16*0c8de5b0SBaptiste Daroussin 
17*0c8de5b0SBaptiste Daroussin expr  :  '(' recur ')'
18*0c8de5b0SBaptiste Daroussin 	{ $$ = $2; }
19*0c8de5b0SBaptiste Daroussin       ;
20*0c8de5b0SBaptiste Daroussin 
21*0c8de5b0SBaptiste Daroussin recur :  NUMBER
22*0c8de5b0SBaptiste Daroussin 	{ $$ = 1; }
23*0c8de5b0SBaptiste Daroussin       ;
24*0c8de5b0SBaptiste Daroussin 
25*0c8de5b0SBaptiste Daroussin %%
26*0c8de5b0SBaptiste Daroussin 
27*0c8de5b0SBaptiste Daroussin #include <stdio.h>
28*0c8de5b0SBaptiste Daroussin 
29*0c8de5b0SBaptiste Daroussin int
30*0c8de5b0SBaptiste Daroussin main(void)
31*0c8de5b0SBaptiste Daroussin {
32*0c8de5b0SBaptiste Daroussin     printf("yyparse() = %d\n", yyparse());
33*0c8de5b0SBaptiste Daroussin     return 0;
34*0c8de5b0SBaptiste Daroussin }
35*0c8de5b0SBaptiste Daroussin 
36*0c8de5b0SBaptiste Daroussin int
yylex(void)37*0c8de5b0SBaptiste Daroussin yylex(void)
38*0c8de5b0SBaptiste Daroussin {
39*0c8de5b0SBaptiste Daroussin     return -1;
40*0c8de5b0SBaptiste Daroussin }
41*0c8de5b0SBaptiste Daroussin 
42*0c8de5b0SBaptiste Daroussin static void
yyerror(const char * s)43*0c8de5b0SBaptiste Daroussin yyerror(const char* s)
44*0c8de5b0SBaptiste Daroussin {
45*0c8de5b0SBaptiste Daroussin     printf("%s\n", s);
46*0c8de5b0SBaptiste Daroussin }
47