summaryrefslogtreecommitdiff
path: root/ghc/compiler/parser/coresyn.ugn
blob: feeb5ac6a10a58ffa4fbb8ba968bed92f9ac86aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
%{
#include "hspincl.h"
%}
%{{
module U_coresyn where
import Ubiq --  debugging consistency check
import UgenUtil

import U_list
import U_literal
import U_qid		( U_qid ) -- for interfaces only
import U_ttype
%}}
type coresyn;
	/* binders: simple Id, plus a type */
	cobinder : < gcobinder_v  : unkId;
		     gcobinder_ty : ttype; >;

	/* atoms */
	colit	: < gcolit  	 : literal; >;
	colocal : < gcolocal_v	 : coresyn; >;

	cononrec : <gcononrec_b   : coresyn;
		    gcononrec_rhs : coresyn; >;
	corec :	   <gcorec  	  : list; >;
	corec_pair: <gcorec_b 	: coresyn;
		    gcorec_rhs 	: coresyn; >;

	covar	: < gcovar	: coresyn; >;
	coliteral :< gcoliteral : literal; >;
	cocon	: < gcocon_con  : coresyn;
		    gcocon_tys	: list;
		    gcocon_args	: list; >;
	coprim	: < gcoprim_op	: coresyn; /* primop or something */
		    gcoprim_tys	: list;
		    gcoprim_args: list; >;
	colam	: < gcolam_vars	: list;
		    gcolam_body	: coresyn; >;
	cotylam	: < gcotylam_tvs: list;
		    gcotylam_body : coresyn; >;
	coapp	: < gcoapp_fun  : coresyn;
		    gcoapp_args : list; >;
	cotyapp	: < gcotyapp_e : coresyn;
		    gcotyapp_t : ttype; >;
	cocase	: < gcocase_s  : coresyn;
		    gcocase_alts : coresyn; >;
	colet	: < gcolet_bind	: coresyn;
		    gcolet_body : coresyn; >;
	coscc	: < gcoscc_scc  : coresyn;
		    gcoscc_body : coresyn; >;

	coalg_alts : <	gcoalg_alts : list;
			gcoalg_deflt : coresyn; >;
	coalg_alt  : <	gcoalg_con : coresyn;
			gcoalg_bs  : list;
			gcoalg_rhs : coresyn; >;

	coprim_alts : < gcoprim_alts : list;
		       gcoprim_deflt : coresyn; >;
	coprim_alt  : <	gcoprim_lit  : literal;
			gcoprim_rhs  : coresyn; >;

	conodeflt : < >;
	cobinddeflt : < gcobinddeflt_v : coresyn;
			gcobinddeflt_rhs : coresyn; >;

	co_primop :    < gco_primop : stringId;>;
	co_ccall  :    < gco_ccall	    : stringId;
			 gco_ccall_may_gc   : long;
			 gco_ccall_arg_tys  : list;
			 gco_ccall_res_ty   : ttype; >;
    	co_casm   :    < gco_casm   	    : literal; 
			 gco_casm_may_gc    : long;
			 gco_casm_arg_tys   : list;
			 gco_casm_res_ty    : ttype; >;

	/* various flavours of cost-centres */
	co_preludedictscc : < gco_preludedictscc_dupd : coresyn; >;
	co_alldictscc	: < gco_alldictscc_m : hstring;
			    gco_alldictscc_g : hstring;
			    gco_alldictscc_dupd : coresyn; >;
	co_usercc	: < gco_usercc_n    : hstring;
			    gco_usercc_m    : hstring;
			    gco_usercc_g    : hstring;
			    gco_usercc_dupd : coresyn;
			    gco_usercc_cafd : coresyn; >;
	co_autocc	: < gco_autocc_i    : coresyn;
			    gco_autocc_m    : hstring;
			    gco_autocc_g    : hstring;
			    gco_autocc_dupd : coresyn;
			    gco_autocc_cafd : coresyn; >;
	co_dictcc	: < gco_dictcc_i    : coresyn;
			    gco_dictcc_m    : hstring;
			    gco_dictcc_g    : hstring;
			    gco_dictcc_dupd : coresyn;
			    gco_dictcc_cafd : coresyn; >;
	
	co_scc_noncaf	: < >;
	co_scc_caf	: < >;
	co_scc_nondupd	: < >;
	co_scc_dupd	: < >;

	/* various flavours of Ids */
	co_id		: < gco_id	    : stringId; >;
	co_orig_id	: < gco_orig_id_m   : stringId;
 			    gco_orig_id_n   : stringId; >;
	co_sdselid	: < gco_sdselid_c   : unkId;
			    gco_sdselid_sc  : unkId; >;
	co_classopid	: < gco_classopid_c : unkId;
			    gco_classopid_o : unkId; >;
	co_defmid	: < gco_defmid_c    : unkId;
			    gco_defmid_op   : unkId; >;
    	co_dfunid	: < gco_dfunid_c    : unkId;
			    gco_dfunid_ty   : ttype; >;
    	co_constmid	: < gco_constmid_c  : unkId;
			    gco_constmid_op : unkId;
			    gco_constmid_ty : ttype; >;
	co_specid	: < gco_specid_un   : coresyn;
			    gco_specid_tys  : list; >;
	co_wrkrid   	: < gco_wrkrid_un   : coresyn; >;
end;