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