[project @ 1996-03-22 09:24:22 by partain]
[ghc-hetmet.git] / ghc / compiler / yaccParser / coresyn.ugn
1 %{
2 #include "hspincl.h"
3 %}
4 %{{
5 module U_coresyn where
6 import UgenUtil
7 import Util
8
9 import U_list
10 import U_literal
11 import U_ttype
12 %}}
13 type coresyn;
14         /* binders: simple Id, plus a type */
15         cobinder : < gcobinder_v  : unkId;
16                      gcobinder_ty : ttype; >;
17
18         /* atoms */
19         colit   : < gcolit       : literal; >;
20         colocal : < gcolocal_v   : coresyn; >;
21
22         cononrec : <gcononrec_b   : coresyn;
23                     gcononrec_rhs : coresyn; >;
24         corec :    <gcorec        : list; >;
25         corec_pair: <gcorec_b   : coresyn;
26                     gcorec_rhs  : coresyn; >;
27
28         covar   : < gcovar      : coresyn; >;
29         coliteral :< gcoliteral : literal; >;
30         cocon   : < gcocon_con  : coresyn;
31                     gcocon_tys  : list;
32                     gcocon_args : list; >;
33         coprim  : < gcoprim_op  : coresyn; /* primop or something */
34                     gcoprim_tys : list;
35                     gcoprim_args: list; >;
36         colam   : < gcolam_vars : list;
37                     gcolam_body : coresyn; >;
38         cotylam : < gcotylam_tvs: list;
39                     gcotylam_body : coresyn; >;
40         coapp   : < gcoapp_fun  : coresyn;
41                     gcoapp_args : list; >;
42         cotyapp : < gcotyapp_e : coresyn;
43                     gcotyapp_t : ttype; >;
44         cocase  : < gcocase_s  : coresyn;
45                     gcocase_alts : coresyn; >;
46         colet   : < gcolet_bind : coresyn;
47                     gcolet_body : coresyn; >;
48         coscc   : < gcoscc_scc  : coresyn;
49                     gcoscc_body : coresyn; >;
50
51         coalg_alts : <  gcoalg_alts : list;
52                         gcoalg_deflt : coresyn; >;
53         coalg_alt  : <  gcoalg_con : coresyn;
54                         gcoalg_bs  : list;
55                         gcoalg_rhs : coresyn; >;
56
57         coprim_alts : < gcoprim_alts : list;
58                        gcoprim_deflt : coresyn; >;
59         coprim_alt  : < gcoprim_lit  : literal;
60                         gcoprim_rhs  : coresyn; >;
61
62         conodeflt : < >;
63         cobinddeflt : < gcobinddeflt_v : coresyn;
64                         gcobinddeflt_rhs : coresyn; >;
65
66         co_primop :    < gco_primop : stringId;>;
67         co_ccall  :    < gco_ccall          : stringId;
68                          gco_ccall_may_gc   : long;
69                          gco_ccall_arg_tys  : list;
70                          gco_ccall_res_ty   : ttype; >;
71         co_casm   :    < gco_casm           : literal; 
72                          gco_casm_may_gc    : long;
73                          gco_casm_arg_tys   : list;
74                          gco_casm_res_ty    : ttype; >;
75
76         /* various flavours of cost-centres */
77         co_preludedictscc : < gco_preludedictscc_dupd : coresyn; >;
78         co_alldictscc   : < gco_alldictscc_m : hstring;
79                             gco_alldictscc_g : hstring;
80                             gco_alldictscc_dupd : coresyn; >;
81         co_usercc       : < gco_usercc_n    : hstring;
82                             gco_usercc_m    : hstring;
83                             gco_usercc_g    : hstring;
84                             gco_usercc_dupd : coresyn;
85                             gco_usercc_cafd : coresyn; >;
86         co_autocc       : < gco_autocc_i    : coresyn;
87                             gco_autocc_m    : hstring;
88                             gco_autocc_g    : hstring;
89                             gco_autocc_dupd : coresyn;
90                             gco_autocc_cafd : coresyn; >;
91         co_dictcc       : < gco_dictcc_i    : coresyn;
92                             gco_dictcc_m    : hstring;
93                             gco_dictcc_g    : hstring;
94                             gco_dictcc_dupd : coresyn;
95                             gco_dictcc_cafd : coresyn; >;
96         
97         co_scc_noncaf   : < >;
98         co_scc_caf      : < >;
99         co_scc_nondupd  : < >;
100         co_scc_dupd     : < >;
101
102         /* various flavours of Ids */
103         co_id           : < gco_id          : stringId; >;
104         co_orig_id      : < gco_orig_id_m   : stringId;
105                             gco_orig_id_n   : stringId; >;
106         co_sdselid      : < gco_sdselid_c   : unkId;
107                             gco_sdselid_sc  : unkId; >;
108         co_classopid    : < gco_classopid_c : unkId;
109                             gco_classopid_o : unkId; >;
110         co_defmid       : < gco_defmid_c    : unkId;
111                             gco_defmid_op   : unkId; >;
112         co_dfunid       : < gco_dfunid_c    : unkId;
113                             gco_dfunid_ty   : ttype; >;
114         co_constmid     : < gco_constmid_c  : unkId;
115                             gco_constmid_op : unkId;
116                             gco_constmid_ty : ttype; >;
117         co_specid       : < gco_specid_un   : coresyn;
118                             gco_specid_tys  : list; >;
119         co_wrkrid       : < gco_wrkrid_un   : coresyn; >;
120 end;