Line No. | Rev | Author | Line |
---|---|---|---|
1 | 1 | paulosilva | |
2 | {-# OPTIONS_GHC -Wall #-} | ||
3 | |||
4 | ------------------------------------------------------------------------------- | ||
5 | |||
6 | {- | | ||
7 | Module : Language.R.Pretty | ||
8 | Description : Pretty-printer of the expression representatation. | ||
9 | Copyright : (c) Paulo Silva | ||
10 | License : LGPL | ||
11 | |||
12 | Maintainer : paufil@di.uminho.pt | ||
13 | Stability : experimental | ||
14 | Portability : portable | ||
15 | |||
16 | -} | ||
17 | |||
18 | ------------------------------------------------------------------------------- | ||
19 | |||
20 | module Language.R.Pretty ( | ||
21 | showR | ||
22 | ) where | ||
23 | |||
24 | import {-# SOURCE #-} Language.R.Syntax | ||
25 | import Language.Type.Pretty | ||
26 | |||
27 | ------------------------------------------------------------------------------- | ||
28 | |||
29 | showR :: R r -> ShowS | ||
30 | 7 | paulosilva | showR = pretty |
31 | {- | ||
32 | 1 | paulosilva | showR BOT = showString "BOT" |
33 | showR TOP = showString "TOP" | ||
34 | showR (NEG r) = | ||
35 | parens $ | ||
36 | showString "NEG " . | ||
37 | showR r | ||
38 | showR (MEET r s) = | ||
39 | parens $ | ||
40 | showString "MEET " . | ||
41 | showR r . | ||
42 | space . | ||
43 | showR s | ||
44 | showR (JOIN r s) = | ||
45 | parens $ | ||
46 | showString "JOIN " . | ||
47 | showR r . | ||
48 | space . | ||
49 | showR s | ||
50 | showR ID = showString "ID" | ||
51 | showR (CONV r) = | ||
52 | parens $ | ||
53 | showString "CONV " . | ||
54 | showR r | ||
55 | showR (COMP _ r s) = | ||
56 | parens $ | ||
57 | showString "COMP " . | ||
58 | showR r . | ||
59 | space . | ||
60 | showR s | ||
61 | showR (SPLIT r s) = | ||
62 | parens $ | ||
63 | showString "SPLIT " . | ||
64 | showR r . | ||
65 | space . | ||
66 | showR s | ||
67 | showR (ORD o) = | ||
68 | parens $ showString "ORD " . showR o | ||
69 | showR (FUN f) = | ||
70 | parens $ showString "FUN " . showR f | ||
71 | showR (LEFTSEC _ f s) = | ||
72 | parens $ | ||
73 | showString "LEFTSEC " . | ||
74 | showR f . | ||
75 | space . | ||
76 | showR s | ||
77 | showR (RIGHTSEC _ f s) = | ||
78 | parens $ | ||
79 | showString "RIGHTSEC " . | ||
80 | showR f . | ||
81 | space . | ||
82 | showR s | ||
83 | showR (APPLY _ r v) = | ||
84 | parens $ | ||
85 | showString "APPLY " . | ||
86 | showR r . | ||
87 | space . | ||
88 | showR v | ||
89 | showR (DEF nm t) = | ||
90 | parens $ | ||
91 | showString "DEF " . | ||
92 | showString nm . | ||
93 | space . | ||
94 | showType t | ||
95 | showR (Var nm) = parens $ showString "Var " . showString nm | ||
96 | showR (PROD r s) = | ||
97 | parens $ | ||
98 | showString "PROD " . | ||
99 | showR r . | ||
100 | space . | ||
101 | showR s | ||
102 | showR (EITHER r s) = | ||
103 | parens $ | ||
104 | showString "EITHER " . | ||
105 | showR r . | ||
106 | space . | ||
107 | showR s | ||
108 | showR (MAYBE r) = | ||
109 | parens $ | ||
110 | showString "MAYBE " . | ||
111 | showR r | ||
112 | showR (LIST r) = | ||
113 | parens $ | ||
114 | showString "LIST " . | ||
115 | showR r | ||
116 | showR (SET r) = | ||
117 | parens $ | ||
118 | showString "SET " . | ||
119 | showR r | ||
120 | showR (MAP r) = | ||
121 | parens $ | ||
122 | showString "MAP " . | ||
123 | showR r | ||
124 | 5 | paulosilva | showR (REYNOLDS r s) = |
125 | parens $ | ||
126 | showString "REYNOLDS " . | ||
127 | showR r . | ||
128 | space . | ||
129 | showR s | ||
130 | 1 | paulosilva | showR FId = showString "FId" |
131 | showR (FComp _ f g) = | ||
132 | parens $ | ||
133 | showString "FComp " . | ||
134 | showR f . | ||
135 | space . | ||
136 | showR g | ||
137 | showR OId = showString "OId" | ||
138 | showR (OComp o1 o2) = | ||
139 | parens $ | ||
140 | showString "OComp " . | ||
141 | showR o1 . | ||
142 | space . | ||
143 | showR o2 | ||
144 | showR (OConv o) = | ||
145 | parens $ | ||
146 | showString "OConv " . | ||
147 | showR o | ||
148 | showR (OProd o) = | ||
149 | parens $ | ||
150 | showString "OProd " . | ||
151 | showR o | ||
152 | showR (OJoin o) = | ||
153 | parens $ | ||
154 | showString "OJoin " . | ||
155 | showR o | ||
156 | showR (OMeet o) = | ||
157 | parens $ | ||
158 | showString "OMeet " . | ||
159 | showR o | ||
160 | showR (OMax o) = | ||
161 | parens $ | ||
162 | showString "OMax " . | ||
163 | showR o | ||
164 | showR (OMin o) = | ||
165 | parens $ | ||
166 | showString "OMin " . | ||
167 | showR o | ||
168 | showR (GDef nm f g fo go) = | ||
169 | parens $ | ||
170 | showString "GDef " . | ||
171 | showString nm . space . | ||
172 | showR f . space . showR g . space . | ||
173 | showR fo . space . showR go | ||
174 | showR GId = showString "GId" | ||
175 | showR (GComp _ g1 g2) = | ||
176 | parens $ | ||
177 | showString "GComp " . | ||
178 | showR g1 . | ||
179 | space . | ||
180 | showR g2 | ||
181 | showR (GConv g) = | ||
182 | parens $ | ||
183 | showString "GConv " . | ||
184 | showR g | ||
185 | showR (GLAdj g) = | ||
186 | parens $ | ||
187 | showString "GLAdj " . | ||
188 | showR g | ||
189 | showR (GUAdj g) = | ||
190 | parens $ | ||
191 | showString "GUAdj " . | ||
192 | showR g | ||
193 | showR (GLOrd _ g) = | ||
194 | parens $ | ||
195 | showString "GLOrd " . | ||
196 | showR g | ||
197 | showR (GUOrd _ g) = | ||
198 | parens $ | ||
199 | showString "GUOrd " . | ||
200 | showR g | ||
201 | 7 | paulosilva | -} |
202 | 1 | paulosilva | ------------------------------------------------------------------------------- |
203 | |||
204 | parens :: ShowS -> String -> String | ||
205 | parens = showParen True | ||
206 | |||
207 | ------------------------------------------------------------------------------- | ||
208 | |||
209 | space :: ShowS | ||
210 | space = showChar ' ' | ||
211 | |||
212 | ------------------------------------------------------------------------------- | ||
213 | |||
214 | 7 | paulosilva | pretty :: R r -> ShowS |
215 | pretty BOT = showString "TT" | ||
216 | pretty TOP = showString "_||_" | ||
217 | pretty (NEG r) = showString "~" . pretty r | ||
218 | pretty (MEET r s) = parens $ pretty r . showString " /\\ " . pretty s | ||
219 | pretty (JOIN r s) = parens $ pretty r . showString " \\/ " . pretty s | ||
220 | pretty ID = showString "id" | ||
221 | pretty (CONV r) = pretty r . showString "*" | ||
222 | pretty (COMP _ r s) = parens $ pretty r . showString " . " . pretty s | ||
223 | pretty (SPLIT r s) = | ||
224 | showString "<" . pretty r . showString ", " . pretty s . showString ">" | ||
225 | pretty (ORD o) = pretty o | ||
226 | pretty (FUN f) = pretty f | ||
227 | pretty (LEFTSEC _ f s) = | ||
228 | parens $ showString "<" . pretty s . showString ">" . pretty f | ||
229 | pretty (RIGHTSEC _ f s) = | ||
230 | parens $ pretty f . showString "<" . pretty s . showString ">" | ||
231 | pretty (APPLY _ r v) = | ||
232 | parens $ pretty r . space . pretty v | ||
233 | pretty (DEF nm t) = showString nm | ||
234 | pretty (Var nm) = showString nm | ||
235 | pretty (PROD r s) = parens $ pretty r . showString " >< " . pretty s | ||
236 | pretty (EITHER r s) = parens $ pretty r . showString " -|- " . pretty s | ||
237 | pretty (MAYBE r) = showString "" | ||
238 | pretty (LIST r) = showString "" | ||
239 | pretty (SET r) =showString "" | ||
240 | pretty (MAP r) =showString "" | ||
241 | pretty (REYNOLDS r s) =showString "" | ||
242 | pretty FId = showString "id" | ||
243 | pretty (FComp _ f g) = parens $ pretty f . showString " . " . pretty g | ||
244 | pretty OId = showString "" | ||
245 | pretty (OComp o1 o2) = showString "" | ||
246 | pretty (OConv o) = showString "" | ||
247 | pretty (OProd o) = showString "" | ||
248 | pretty (OJoin o) = showString "" | ||
249 | pretty (OMeet o) = showString "" | ||
250 | pretty (OMax o) = showString "" | ||
251 | pretty (OMin o) = showString "" | ||
252 | pretty (GDef nm f g fo go) = showString "" | ||
253 | pretty GId = showString "" | ||
254 | pretty (GComp _ g1 g2) = showString "" | ||
255 | pretty (GConv g) = showString "" | ||
256 | pretty (GLAdj g) = showString "" | ||
257 | pretty (GUAdj g) = showString "" | ||
258 | pretty (GLOrd _ g) = showString "" | ||
259 | pretty (GUOrd _ g) = showString "" | ||
260 | |||
261 | ------------------------------------------------------------------------------- |