[project @ 1996-01-08 20:28:12 by partain]
[ghc-hetmet.git] / ghc / utils / ugen / syntax.y
1 %{
2 #define YYSTYPE long
3 # include "id.h"
4 # include "tree.h"
5 extern tree root;
6 %}
7 %token  ID TYPE SEMICOL COLON END STDEF ENDDEF
8 %%
9
10 typdef  : 
11         TYPE ID SEMICOL deflist END SEMICOL =
12         {
13                 root = mktypdef($2, $4);
14         };
15
16 deflist :
17         def =
18         {
19                 $$ = $1;
20         } |
21         deflist def =
22         {
23                 $$ = (long) mkdeflist($1, $2);
24         };
25
26 def     :
27         ID COLON STDEF itemlist ENDDEF SEMICOL =
28         {
29                 $$ = (long) mkdef($1, $4);
30         } |
31         ID COLON STDEF ENDDEF SEMICOL =
32         {
33                 $$ = (long) mkdef($1, mkemitemlist());
34         };
35
36 itemlist:
37         item =
38         {
39                 $$ = $1;
40         } |
41         itemlist item =
42         {
43                 $$ = (long) mkitemlist($1, $2);
44         };
45
46 item    :
47         ID COLON ID SEMICOL =
48         {
49                 $$ = (long) mkitem($1, $3);
50         };