summaryrefslogtreecommitdiff
path: root/ghc/compiler/parser/tree.ugn
blob: 86c5174c781d0de8670d7e2b02af803068a0161e (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
%{
#include "hspincl.h"
%}
%{{
#include "HsVersions.h"

module U_tree where
IMP_Ubiq() --  debugging consistency check
import UgenUtil

import U_constr		( U_constr )	-- interface only
import U_binding
import U_list
import U_literal
import U_maybe
import U_qid
import U_ttype
%}}
type tree;
	hmodule : < ghname	: stringId;
		    ghimplist	: list;	 	/* [import] */
		    ghexplist	: maybe;	/* Maybe [entity] */
		    ghfixes     : list;		/* [fixop] */
		    ghmodlist	: binding;
		    ghversion   : long;
		    ghmodline	: long; >;
	fixop	: < gfixop	: qid;
		    gfixinfx	: long;
		    gfixprec	: long; >;

	ident	: < gident 	: qid; >;
	lit 	: < glit	: literal; >;

	ap	: < gfun	: tree;
		    garg	: tree; >;
	infixap : < ginffun	: qid;
		    ginfarg1	: tree;
		    ginfarg2	: tree; >;
	negate	: < gnexp	: tree;	>;

	lambda	: < glampats	: list;
		    glamexpr	: tree;
		    glamline	: long; >;

	let	: < gletvdefs   : binding;
		    gletvexpr	: tree; >;
	casee	: < gcaseexpr	: tree;
		    gcasebody	: list;
		    gcaseline 	: long;	>;
	ife	: < gifpred	: tree;
		    gifthen	: tree;
		    gifelse	: tree;
		    gifline 	: long;	>;
	doe	: < gdo		: list;
		    gdoline 	: long;	>;

	dobind	: < gdobindpat	: tree;
		    gdobindexp	: tree;
		    gdobindline	: long;	>;
	doexp	: < gdoexp	: tree;
		    gdoexpline	: long; >;
	seqlet	: < gseqlet	: binding; >;

	record	: < grcon	: qid;
		    grbinds	: list;	>;  	/* [rbind] */ 
	rupdate	: < gupdexp	: tree;
		    gupdbinds	: list; >;   	/* [rbind] */ 
	rbind   : < grbindvar   : qid;
		    grbindexp   : maybe; >;  	/* Maybe expr */

	par	: < gpare	: tree; >;
	as	: < gasid	: qid;
		    gase	: tree; >;
	lazyp	: < glazyp	: tree; >;
	wildp	: < >;

	restr	: < grestre	: tree;
		    grestrt	: ttype; >;

	tuple	: < gtuplelist	: list; >;
	llist	: < gllist	: list; >;
	eenum	: < gefrom	: tree;
		    gestep	: maybe;
		    geto	: maybe; >;
	comprh	: < gcexp	: tree;
		    gcquals	: list; >;
	qual	: < gqpat	: tree;
		    gqexp	: tree;	>;
	guard	: < ggexp	: tree; >;

	lsection: < glsexp	: tree; 
		    glsop	: qid; >;
	rsection: < grsop	: qid;
		    grsexp	: tree; >;

	ccall	: < gccid	: stringId;
		    gccinfo	: stringId;
		    gccargs	: list; >;
	scc	: < gsccid	: hstring;
		    gsccexp	: tree; >;
end;