diff options
Diffstat (limited to 'ghc/compiler/parser/coresyn.ugn')
-rw-r--r-- | ghc/compiler/parser/coresyn.ugn | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/ghc/compiler/parser/coresyn.ugn b/ghc/compiler/parser/coresyn.ugn new file mode 100644 index 0000000000..feeb5ac6a1 --- /dev/null +++ b/ghc/compiler/parser/coresyn.ugn @@ -0,0 +1,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; |