Skip to content

Commit 9c46498

Browse files
committed
grammar formatting
1 parent 4bee2ea commit 9c46498

File tree

7 files changed

+60
-128
lines changed

7 files changed

+60
-128
lines changed

cool/COOL.g4

+15-72
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ COOL grammar derived from:
2626
http://sist.shanghaitech.edu.cn/faculty/songfu/course/spring2017/cs131/COOL/COOLAid.pdf
2727
2828
*/
29-
3029
grammar COOL;
3130

3231
program
@@ -50,16 +49,17 @@ feature
5049
formal
5150
: OBJECTID ':' TYPEID
5251
;
53-
5452
/* method argument */
53+
54+
5555
expression
5656
: expression ('@' TYPEID)? '.' OBJECTID '(' (expression (',' expression)*)* ')' # methodCall
5757
| OBJECTID '(' (expression (',' expression)*)* ')' # ownMethodCall
5858
| IF expression THEN expression ELSE expression FI # if
5959
| WHILE expression LOOP expression POOL # while
60-
| '{' (expression ';') + '}' # block
60+
| '{' (expression ';')+ '}' # block
6161
| LET OBJECTID ':' TYPEID (ASSIGNMENT expression)? (',' OBJECTID ':' TYPEID (ASSIGNMENT expression)?)* IN expression # letIn
62-
| CASE expression OF (OBJECTID ':' TYPEID CASE_ARROW expression ';') + ESAC # case
62+
| CASE expression OF (OBJECTID ':' TYPEID CASE_ARROW expression ';')+ ESAC # case
6363
| NEW TYPEID # new
6464
| INTEGER_NEGATIVE expression # negative
6565
| ISVOID expression # isvoid
@@ -79,297 +79,240 @@ expression
7979
| FALSE # false
8080
| OBJECTID ASSIGNMENT expression # assignment
8181
;
82-
83-
// key words
84-
82+
// key words
83+
8584
CLASS
8685
: C L A S S
8786
;
8887

89-
9088
ELSE
9189
: E L S E
9290
;
9391

94-
9592
FALSE
9693
: 'f' A L S E
9794
;
9895

99-
10096
FI
10197
: F I
10298
;
10399

104-
105100
IF
106101
: I F
107102
;
108103

109-
110104
IN
111105
: I N
112106
;
113107

114-
115108
INHERITS
116109
: I N H E R I T S
117110
;
118111

119-
120112
ISVOID
121113
: I S V O I D
122114
;
123115

124-
125116
LET
126117
: L E T
127118
;
128119

129-
130120
LOOP
131121
: L O O P
132122
;
133123

134-
135124
POOL
136125
: P O O L
137126
;
138127

139-
140128
THEN
141129
: T H E N
142130
;
143131

144-
145132
WHILE
146133
: W H I L E
147134
;
148135

149-
150136
CASE
151137
: C A S E
152138
;
153139

154-
155140
ESAC
156141
: E S A C
157142
;
158143

159-
160144
NEW
161145
: N E W
162146
;
163147

164-
165148
OF
166149
: O F
167150
;
168151

169-
170152
NOT
171153
: N O T
172154
;
173155

174-
175156
TRUE
176157
: 't' R U E
177158
;
178-
179-
// primitives
180-
159+
// primitives
160+
181161
STRING
182162
: '"' (ESC | ~ ["\\])* '"'
183163
;
184164
185-
186165
INT
187-
: [0-9] +
166+
: [0-9]+
188167
;
189168
190-
191169
TYPEID
192170
: [A-Z] [_0-9A-Za-z]*
193171
;
194172
195-
196173
OBJECTID
197174
: [a-z] [_0-9A-Za-z]*
198175
;
199176
200-
201177
ASSIGNMENT
202178
: '<-'
203179
;
204180
205-
206181
CASE_ARROW
207182
: '=>'
208183
;
209184
210-
211185
ADD
212186
: '+'
213187
;
214188
215-
216189
MINUS
217190
: '-'
218191
;
219192
220-
221193
MULTIPLY
222194
: '*'
223195
;
224196
225-
226197
DIVISION
227198
: '/'
228199
;
229200
230-
231201
LESS_THAN
232202
: '<'
233203
;
234204
235-
236205
LESS_EQUAL
237206
: '<='
238207
;
239208
240-
241209
EQUAL
242210
: '='
243211
;
244212
245-
246213
INTEGER_NEGATIVE
247214
: '~'
248215
;
249216
250-
251217
fragment A
252218
: [aA]
253219
;
254220
255-
256221
fragment C
257222
: [cC]
258223
;
259224
260-
261225
fragment D
262226
: [dD]
263227
;
264228
265-
266229
fragment E
267230
: [eE]
268231
;
269232
270-
271233
fragment F
272234
: [fF]
273235
;
274236
275-
276237
fragment H
277238
: [hH]
278239
;
279240
280-
281241
fragment I
282242
: [iI]
283243
;
284244
285-
286245
fragment L
287246
: [lL]
288247
;
289248
290-
291249
fragment N
292250
: [nN]
293251
;
294252
295-
296253
fragment O
297254
: [oO]
298255
;
299256
300-
301257
fragment P
302258
: [pP]
303259
;
304260
305-
306261
fragment R
307262
: [rR]
308263
;
309264
310-
311265
fragment S
312266
: [sS]
313267
;
314268
315-
316269
fragment T
317270
: [tT]
318271
;
319272
320-
321273
fragment U
322274
: [uU]
323275
;
324276
325-
326277
fragment V
327278
: [vV]
328279
;
329280
330-
331281
fragment W
332282
: [wW]
333283
;
334284
335-
336285
fragment ESC
337286
: '\\' (["\\/bfnrt] | UNICODE)
338287
;
339288
340-
341289
fragment UNICODE
342290
: 'u' HEX HEX HEX HEX
343291
;
344292
345-
346293
fragment HEX
347294
: [0-9a-fA-F]
348295
;
349-
350-
// comments
351-
296+
// comments
297+
352298
OPEN_COMMENT
353299
: '(*'
354300
;
355301
356-
357302
CLOSE_COMMENT
358303
: '*)'
359304
;
360305
361-
362306
COMMENT
363307
: OPEN_COMMENT (COMMENT | .)*? CLOSE_COMMENT -> skip
364308
;
365309
366-
367310
ONE_LINE_COMMENT
368311
: '--' (~ '\n')* '\n'? -> skip
369312
;
370-
371-
// skip spaces, tabs, newlines, note that \v is not suppoted in antlr
372-
313+
// skip spaces, tabs, newlines, note that \v is not suppoted in antlr
314+
373315
WHITESPACE
374-
: [ \t\r\n\f] + -> skip
316+
: [ \t\r\n\f]+ -> skip
375317
;
318+

0 commit comments

Comments
 (0)