Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 242153 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/ocl/parser/OCLKWLexer.java (-101 / +148 lines)
Lines 12-20 Link Here
12
*   IBM - Initial API and implementation
12
*   IBM - Initial API and implementation
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
14
*   E.D.Willink - Bug 285633, 292112
14
*   E.D.Willink - Bug 285633, 292112
15
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
16
*
15
* </copyright>
17
* </copyright>
16
*
18
*
17
* $Id: OCLKWLexer.java,v 1.11 2009/11/09 22:00:25 ewillink Exp $
19
*
18
*/
20
*/
19
/**
21
/**
20
* Complete OCL Keyword Lexer
22
* Complete OCL Keyword Lexer
Lines 29-34 Link Here
29
* Contributors:
31
* Contributors:
30
*   IBM - Initial API and implementation
32
*   IBM - Initial API and implementation
31
*   E.D.Willink - Bug 292112
33
*   E.D.Willink - Bug 292112
34
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
35
*
32
* </copyright>
36
* </copyright>
33
*/
37
*/
34
38
Lines 36-42 Link Here
36
40
37
41
38
42
39
40
public class OCLKWLexer extends OCLKWLexerprs implements OCLParsersym
43
public class OCLKWLexer extends OCLKWLexerprs implements OCLParsersym
41
{
44
{
42
    private char[] inputChars;
45
    private char[] inputChars;
Lines 74-139 Link Here
74
    final static int tokenKind[] = new int[128];
77
    final static int tokenKind[] = new int[128];
75
    static
78
    static
76
    {
79
    {
77
        tokenKind['$'] = Char_DollarSign;
80
        tokenKind['$'] = OCLKWLexersym.Char_DollarSign;
78
81
        tokenKind['%'] = OCLKWLexersym.Char_Percent;
79
        tokenKind['a'] = Char_a;
82
        tokenKind['_'] = OCLKWLexersym.Char__;
80
        tokenKind['b'] = Char_b;
83
81
        tokenKind['c'] = Char_c;
84
        tokenKind['a'] = OCLKWLexersym.Char_a;
82
        tokenKind['d'] = Char_d;
85
        tokenKind['b'] = OCLKWLexersym.Char_b;
83
        tokenKind['e'] = Char_e;
86
        tokenKind['c'] = OCLKWLexersym.Char_c;
84
        tokenKind['f'] = Char_f;
87
        tokenKind['d'] = OCLKWLexersym.Char_d;
85
        tokenKind['g'] = Char_g;
88
        tokenKind['e'] = OCLKWLexersym.Char_e;
86
        tokenKind['h'] = Char_h;
89
        tokenKind['f'] = OCLKWLexersym.Char_f;
87
        tokenKind['i'] = Char_i;
90
        tokenKind['g'] = OCLKWLexersym.Char_g;
88
        tokenKind['j'] = Char_j;
91
        tokenKind['h'] = OCLKWLexersym.Char_h;
89
        tokenKind['k'] = Char_k;
92
        tokenKind['i'] = OCLKWLexersym.Char_i;
90
        tokenKind['l'] = Char_l;
93
        tokenKind['j'] = OCLKWLexersym.Char_j;
91
        tokenKind['m'] = Char_m;
94
        tokenKind['k'] = OCLKWLexersym.Char_k;
92
        tokenKind['n'] = Char_n;
95
        tokenKind['l'] = OCLKWLexersym.Char_l;
93
        tokenKind['o'] = Char_o;
96
        tokenKind['m'] = OCLKWLexersym.Char_m;
94
        tokenKind['p'] = Char_p;
97
        tokenKind['n'] = OCLKWLexersym.Char_n;
95
        tokenKind['q'] = Char_q;
98
        tokenKind['o'] = OCLKWLexersym.Char_o;
96
        tokenKind['r'] = Char_r;
99
        tokenKind['p'] = OCLKWLexersym.Char_p;
97
        tokenKind['s'] = Char_s;
100
        tokenKind['q'] = OCLKWLexersym.Char_q;
98
        tokenKind['t'] = Char_t;
101
        tokenKind['r'] = OCLKWLexersym.Char_r;
99
        tokenKind['u'] = Char_u;
102
        tokenKind['s'] = OCLKWLexersym.Char_s;
100
        tokenKind['v'] = Char_v;
103
        tokenKind['t'] = OCLKWLexersym.Char_t;
101
        tokenKind['w'] = Char_w;
104
        tokenKind['u'] = OCLKWLexersym.Char_u;
102
        tokenKind['x'] = Char_x;
105
        tokenKind['v'] = OCLKWLexersym.Char_v;
103
        tokenKind['y'] = Char_y;
106
        tokenKind['w'] = OCLKWLexersym.Char_w;
104
        tokenKind['z'] = Char_z;
107
        tokenKind['x'] = OCLKWLexersym.Char_x;
105
108
        tokenKind['y'] = OCLKWLexersym.Char_y;
106
        tokenKind['A'] = Char_A;
109
        tokenKind['z'] = OCLKWLexersym.Char_z;
107
        tokenKind['B'] = Char_B;
110
108
        tokenKind['C'] = Char_C;
111
        tokenKind['A'] = OCLKWLexersym.Char_A;
109
        tokenKind['D'] = Char_D;
112
        tokenKind['B'] = OCLKWLexersym.Char_B;
110
        tokenKind['E'] = Char_E;
113
        tokenKind['C'] = OCLKWLexersym.Char_C;
111
        tokenKind['F'] = Char_F;
114
        tokenKind['D'] = OCLKWLexersym.Char_D;
112
        tokenKind['G'] = Char_G;
115
        tokenKind['E'] = OCLKWLexersym.Char_E;
113
        tokenKind['H'] = Char_H;
116
        tokenKind['F'] = OCLKWLexersym.Char_F;
114
        tokenKind['I'] = Char_I;
117
        tokenKind['G'] = OCLKWLexersym.Char_G;
115
        tokenKind['J'] = Char_J;
118
        tokenKind['H'] = OCLKWLexersym.Char_H;
116
        tokenKind['K'] = Char_K;
119
        tokenKind['I'] = OCLKWLexersym.Char_I;
117
        tokenKind['L'] = Char_L;
120
        tokenKind['J'] = OCLKWLexersym.Char_J;
118
        tokenKind['M'] = Char_M;
121
        tokenKind['K'] = OCLKWLexersym.Char_K;
119
        tokenKind['N'] = Char_N;
122
        tokenKind['L'] = OCLKWLexersym.Char_L;
120
        tokenKind['O'] = Char_O;
123
        tokenKind['M'] = OCLKWLexersym.Char_M;
121
        tokenKind['P'] = Char_P;
124
        tokenKind['N'] = OCLKWLexersym.Char_N;
122
        tokenKind['Q'] = Char_Q;
125
        tokenKind['O'] = OCLKWLexersym.Char_O;
123
        tokenKind['R'] = Char_R;
126
        tokenKind['P'] = OCLKWLexersym.Char_P;
124
        tokenKind['S'] = Char_S;
127
        tokenKind['Q'] = OCLKWLexersym.Char_Q;
125
        tokenKind['T'] = Char_T;
128
        tokenKind['R'] = OCLKWLexersym.Char_R;
126
        tokenKind['U'] = Char_U;
129
        tokenKind['S'] = OCLKWLexersym.Char_S;
127
        tokenKind['V'] = Char_V;
130
        tokenKind['T'] = OCLKWLexersym.Char_T;
128
        tokenKind['W'] = Char_W;
131
        tokenKind['U'] = OCLKWLexersym.Char_U;
129
        tokenKind['X'] = Char_X;
132
        tokenKind['V'] = OCLKWLexersym.Char_V;
130
        tokenKind['Y'] = Char_Y;
133
        tokenKind['W'] = OCLKWLexersym.Char_W;
131
        tokenKind['Z'] = Char_Z;
134
        tokenKind['X'] = OCLKWLexersym.Char_X;
135
        tokenKind['Y'] = OCLKWLexersym.Char_Y;
136
        tokenKind['Z'] = OCLKWLexersym.Char_Z;
132
    };
137
    };
133
138
134
    final int getKind(char c)
139
    final int getKind(int c)
135
    {
140
    {
136
        return (c < 128 ? tokenKind[c] : 0);
141
        return (((c & 0xFFFFFF80) == 0) /* 0 <= c < 128? */ ? tokenKind[c] : 0);
137
    }
142
    }
138
143
139
144
Lines 145-397 Link Here
145
        //
150
        //
146
        // Rule 1:  KeyWord ::= s e l f
151
        // Rule 1:  KeyWord ::= s e l f
147
        //
152
        //
148
		keywordKind[1] = (TK_self);
153
        
154
		keywordKind[1] = (OCLParsersym.TK_self);
149
	  
155
	  
150
	
156
	
151
        //
157
        //
152
        // Rule 2:  KeyWord ::= i f
158
        // Rule 2:  KeyWord ::= i f
153
        //
159
        //
154
		keywordKind[2] = (TK_if);
160
        
161
		keywordKind[2] = (OCLParsersym.TK_if);
155
	  
162
	  
156
	
163
	
157
        //
164
        //
158
        // Rule 3:  KeyWord ::= t h e n
165
        // Rule 3:  KeyWord ::= t h e n
159
        //
166
        //
160
		keywordKind[3] = (TK_then);
167
        
168
		keywordKind[3] = (OCLParsersym.TK_then);
161
	  
169
	  
162
	
170
	
163
        //
171
        //
164
        // Rule 4:  KeyWord ::= e l s e
172
        // Rule 4:  KeyWord ::= e l s e
165
        //
173
        //
166
		keywordKind[4] = (TK_else);
174
        
175
		keywordKind[4] = (OCLParsersym.TK_else);
167
	  
176
	  
168
	
177
	
169
        //
178
        //
170
        // Rule 5:  KeyWord ::= e n d i f
179
        // Rule 5:  KeyWord ::= e n d i f
171
        //
180
        //
172
		keywordKind[5] = (TK_endif);
181
        
182
		keywordKind[5] = (OCLParsersym.TK_endif);
173
	  
183
	  
174
	
184
	
175
        //
185
        //
176
        // Rule 6:  KeyWord ::= a n d
186
        // Rule 6:  KeyWord ::= a n d
177
        //
187
        //
178
		keywordKind[6] = (TK_and);
188
        
189
		keywordKind[6] = (OCLParsersym.TK_and);
179
	  
190
	  
180
	
191
	
181
        //
192
        //
182
        // Rule 7:  KeyWord ::= o r
193
        // Rule 7:  KeyWord ::= o r
183
        //
194
        //
184
		keywordKind[7] = (TK_or);
195
        
196
		keywordKind[7] = (OCLParsersym.TK_or);
185
	  
197
	  
186
	
198
	
187
        //
199
        //
188
        // Rule 8:  KeyWord ::= x o r
200
        // Rule 8:  KeyWord ::= x o r
189
        //
201
        //
190
		keywordKind[8] = (TK_xor);
202
        
203
		keywordKind[8] = (OCLParsersym.TK_xor);
191
	  
204
	  
192
	
205
	
193
        //
206
        //
194
        // Rule 9:  KeyWord ::= n o t
207
        // Rule 9:  KeyWord ::= n o t
195
        //
208
        //
196
		keywordKind[9] = (TK_not);
209
        
210
		keywordKind[9] = (OCLParsersym.TK_not);
197
	  
211
	  
198
	
212
	
199
        //
213
        //
200
        // Rule 10:  KeyWord ::= i m p l i e s
214
        // Rule 10:  KeyWord ::= i m p l i e s
201
        //
215
        //
202
		keywordKind[10] = (TK_implies);
216
        
217
		keywordKind[10] = (OCLParsersym.TK_implies);
203
	  
218
	  
204
	
219
	
205
        //
220
        //
206
        // Rule 11:  KeyWord ::= l e t
221
        // Rule 11:  KeyWord ::= l e t
207
        //
222
        //
208
		keywordKind[11] = (TK_let);
223
        
224
		keywordKind[11] = (OCLParsersym.TK_let);
209
	  
225
	  
210
	
226
	
211
        //
227
        //
212
        // Rule 12:  KeyWord ::= i n
228
        // Rule 12:  KeyWord ::= i n
213
        //
229
        //
214
		keywordKind[12] = (TK_in);
230
        
231
		keywordKind[12] = (OCLParsersym.TK_in);
215
	  
232
	  
216
	
233
	
217
        //
234
        //
218
        // Rule 13:  KeyWord ::= t r u e
235
        // Rule 13:  KeyWord ::= t r u e
219
        //
236
        //
220
		keywordKind[13] = (TK_true);
237
        
238
		keywordKind[13] = (OCLParsersym.TK_true);
221
	  
239
	  
222
	
240
	
223
        //
241
        //
224
        // Rule 14:  KeyWord ::= f a l s e
242
        // Rule 14:  KeyWord ::= f a l s e
225
        //
243
        //
226
		keywordKind[14] = (TK_false);
244
        
245
		keywordKind[14] = (OCLParsersym.TK_false);
227
	  
246
	  
228
	
247
	
229
        //
248
        //
230
        // Rule 15:  KeyWord ::= S e t
249
        // Rule 15:  KeyWord ::= S e t
231
        //
250
        //
232
		keywordKind[15] = (TK_Set);
251
        
252
		keywordKind[15] = (OCLParsersym.TK_Set);
233
	  
253
	  
234
	
254
	
235
        //
255
        //
236
        // Rule 16:  KeyWord ::= B a g
256
        // Rule 16:  KeyWord ::= B a g
237
        //
257
        //
238
		keywordKind[16] = (TK_Bag);
258
        
259
		keywordKind[16] = (OCLParsersym.TK_Bag);
239
	  
260
	  
240
	
261
	
241
        //
262
        //
242
        // Rule 17:  KeyWord ::= S e q u e n c e
263
        // Rule 17:  KeyWord ::= S e q u e n c e
243
        //
264
        //
244
		keywordKind[17] = (TK_Sequence);
265
        
266
		keywordKind[17] = (OCLParsersym.TK_Sequence);
245
	  
267
	  
246
	
268
	
247
        //
269
        //
248
        // Rule 18:  KeyWord ::= C o l l e c t i o n
270
        // Rule 18:  KeyWord ::= C o l l e c t i o n
249
        //
271
        //
250
		keywordKind[18] = (TK_Collection);
272
        
273
		keywordKind[18] = (OCLParsersym.TK_Collection);
251
	  
274
	  
252
	
275
	
253
        //
276
        //
254
        // Rule 19:  KeyWord ::= O r d e r e d S e t
277
        // Rule 19:  KeyWord ::= O r d e r e d S e t
255
        //
278
        //
256
		keywordKind[19] = (TK_OrderedSet);
279
        
280
		keywordKind[19] = (OCLParsersym.TK_OrderedSet);
257
	  
281
	  
258
	
282
	
259
        //
283
        //
260
        // Rule 20:  KeyWord ::= S t r i n g
284
        // Rule 20:  KeyWord ::= S t r i n g
261
        //
285
        //
262
		keywordKind[20] = (TK_String);
286
        
287
		keywordKind[20] = (OCLParsersym.TK_String);
263
	  
288
	  
264
	
289
	
265
        //
290
        //
266
        // Rule 21:  KeyWord ::= I n t e g e r
291
        // Rule 21:  KeyWord ::= I n t e g e r
267
        //
292
        //
268
		keywordKind[21] = (TK_Integer);
293
        
294
		keywordKind[21] = (OCLParsersym.TK_Integer);
269
	  
295
	  
270
	
296
	
271
        //
297
        //
272
        // Rule 22:  KeyWord ::= U n l i m i t e d N a t u r a l
298
        // Rule 22:  KeyWord ::= U n l i m i t e d N a t u r a l
273
        //
299
        //
274
		keywordKind[22] = (TK_UnlimitedNatural);
300
        
301
		keywordKind[22] = (OCLParsersym.TK_UnlimitedNatural);
275
	  
302
	  
276
	
303
	
277
        //
304
        //
278
        // Rule 23:  KeyWord ::= R e a l
305
        // Rule 23:  KeyWord ::= R e a l
279
        //
306
        //
280
		keywordKind[23] = (TK_Real);
307
        
308
		keywordKind[23] = (OCLParsersym.TK_Real);
281
	  
309
	  
282
	
310
	
283
        //
311
        //
284
        // Rule 24:  KeyWord ::= B o o l e a n
312
        // Rule 24:  KeyWord ::= B o o l e a n
285
        //
313
        //
286
		keywordKind[24] = (TK_Boolean);
314
        
315
		keywordKind[24] = (OCLParsersym.TK_Boolean);
287
	  
316
	  
288
	
317
	
289
        //
318
        //
290
        // Rule 25:  KeyWord ::= T u p l e
319
        // Rule 25:  KeyWord ::= T u p l e
291
        //
320
        //
292
		keywordKind[25] = (TK_Tuple);
321
        
322
		keywordKind[25] = (OCLParsersym.TK_Tuple);
293
	  
323
	  
294
	
324
	
295
        //
325
        //
296
        // Rule 26:  KeyWord ::= O c l A n y
326
        // Rule 26:  KeyWord ::= O c l A n y
297
        //
327
        //
298
		keywordKind[26] = (TK_OclAny);
328
        
329
		keywordKind[26] = (OCLParsersym.TK_OclAny);
299
	  
330
	  
300
	
331
	
301
        //
332
        //
302
        // Rule 27:  KeyWord ::= O c l V o i d
333
        // Rule 27:  KeyWord ::= O c l V o i d
303
        //
334
        //
304
		keywordKind[27] = (TK_OclVoid);
335
        
336
		keywordKind[27] = (OCLParsersym.TK_OclVoid);
305
	  
337
	  
306
	
338
	
307
        //
339
        //
308
        // Rule 28:  KeyWord ::= O c l I n v a l i d
340
        // Rule 28:  KeyWord ::= O c l I n v a l i d
309
        //
341
        //
310
		keywordKind[28] = (TK_OclInvalid);
342
        
343
		keywordKind[28] = (OCLParsersym.TK_OclInvalid);
311
	  
344
	  
312
	
345
	
313
        //
346
        //
314
        // Rule 29:  KeyWord ::= n u l l
347
        // Rule 29:  KeyWord ::= n u l l
315
        //
348
        //
316
		keywordKind[29] = (TK_null);
349
        
350
		keywordKind[29] = (OCLParsersym.TK_null);
317
	  
351
	  
318
	
352
	
319
        //
353
        //
320
        // Rule 30:  KeyWord ::= i n v a l i d
354
        // Rule 30:  KeyWord ::= i n v a l i d
321
        //
355
        //
322
		keywordKind[30] = (TK_invalid);
356
        
357
		keywordKind[30] = (OCLParsersym.TK_invalid);
323
	  
358
	  
324
	
359
	
325
        //
360
        //
326
        // Rule 31:  KeyWord ::= i n v
361
        // Rule 31:  KeyWord ::= i n v
327
        //
362
        //
328
		keywordKind[31] = (TK_inv);
363
        
364
		keywordKind[31] = (OCLParsersym.TK_inv);
329
	  
365
	  
330
	
366
	
331
        //
367
        //
332
        // Rule 32:  KeyWord ::= p r e
368
        // Rule 32:  KeyWord ::= p r e
333
        //
369
        //
334
		keywordKind[32] = (TK_pre);
370
        
371
		keywordKind[32] = (OCLParsersym.TK_pre);
335
	  
372
	  
336
	
373
	
337
        //
374
        //
338
        // Rule 33:  KeyWord ::= p o s t
375
        // Rule 33:  KeyWord ::= p o s t
339
        //
376
        //
340
		keywordKind[33] = (TK_post);
377
        
378
		keywordKind[33] = (OCLParsersym.TK_post);
341
	  
379
	  
342
	
380
	
343
        //
381
        //
344
        // Rule 34:  KeyWord ::= b o d y
382
        // Rule 34:  KeyWord ::= b o d y
345
        //
383
        //
346
		keywordKind[34] = (TK_body);
384
        
385
		keywordKind[34] = (OCLParsersym.TK_body);
347
	  
386
	  
348
	
387
	
349
        //
388
        //
350
        // Rule 35:  KeyWord ::= c o n t e x t
389
        // Rule 35:  KeyWord ::= c o n t e x t
351
        //
390
        //
352
		keywordKind[35] = (TK_context);
391
        
392
		keywordKind[35] = (OCLParsersym.TK_context);
353
	  
393
	  
354
	
394
	
355
        //
395
        //
356
        // Rule 36:  KeyWord ::= p a c k a g e
396
        // Rule 36:  KeyWord ::= p a c k a g e
357
        //
397
        //
358
		keywordKind[36] = (TK_package);
398
        
399
		keywordKind[36] = (OCLParsersym.TK_package);
359
	  
400
	  
360
	
401
	
361
        //
402
        //
362
        // Rule 37:  KeyWord ::= e n d p a c k a g e
403
        // Rule 37:  KeyWord ::= e n d p a c k a g e
363
        //
404
        //
364
		keywordKind[37] = (TK_endpackage);
405
        
406
		keywordKind[37] = (OCLParsersym.TK_endpackage);
365
	  
407
	  
366
	
408
	
367
        //
409
        //
368
        // Rule 38:  KeyWord ::= d e f
410
        // Rule 38:  KeyWord ::= d e f
369
        //
411
        //
370
		keywordKind[38] = (TK_def);
412
        
413
		keywordKind[38] = (OCLParsersym.TK_def);
371
	  
414
	  
372
	
415
	
373
        //
416
        //
374
        // Rule 39:  KeyWord ::= d e r i v e
417
        // Rule 39:  KeyWord ::= d e r i v e
375
        //
418
        //
376
		keywordKind[39] = (TK_derive);
419
        
420
		keywordKind[39] = (OCLParsersym.TK_derive);
377
	  
421
	  
378
	
422
	
379
        //
423
        //
380
        // Rule 40:  KeyWord ::= i n i t
424
        // Rule 40:  KeyWord ::= i n i t
381
        //
425
        //
382
		keywordKind[40] = (TK_init);
426
        
427
		keywordKind[40] = (OCLParsersym.TK_init);
383
	  
428
	  
384
	
429
	
385
        //
430
        //
386
        // Rule 41:  KeyWord ::= O c l M e s s a g e
431
        // Rule 41:  KeyWord ::= O c l M e s s a g e
387
        //
432
        //
388
		keywordKind[41] = (TK_OclMessage);
433
        
434
		keywordKind[41] = (OCLParsersym.TK_OclMessage);
389
	  
435
	  
390
	
436
	
391
        //
437
        //
392
        // Rule 42:  KeyWord ::= s t a t i c
438
        // Rule 42:  KeyWord ::= s t a t i c
393
        //
439
        //
394
		keywordKind[42] = (TK_static);
440
        
441
		keywordKind[42] = (OCLParsersym.TK_static);
395
	  
442
	  
396
	
443
	
397
444
(-)src/org/eclipse/ocl/parser/OCLParser.java (-11 / +13 lines)
Lines 14-23 Link Here
14
*   E.D.Willink - Remove unnecessary warning suppression
14
*   E.D.Willink - Remove unnecessary warning suppression
15
*   E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112
15
*   E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112
16
*   Borland - Bug 242880
16
*   Borland - Bug 242880
17
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
17
*
18
*
18
* </copyright>
19
* </copyright>
19
*
20
*
20
* $Id: OCLParser.java,v 1.20 2009/12/18 06:26:04 ewillink Exp $
21
* $Id: EssentialOCL.g,v 1.16 2009/11/09 22:03:57 ewillink Exp $
21
*/
22
*/
22
/**
23
/**
23
* Complete OCL Grammar
24
* Complete OCL Grammar
Lines 32-37 Link Here
32
* Contributors:
33
* Contributors:
33
*   IBM - Initial API and implementation
34
*   IBM - Initial API and implementation
34
*   E.D.Willink - Bug 259818, 285633, 292112
35
*   E.D.Willink - Bug 259818, 285633, 292112
36
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
35
* </copyright>
37
* </copyright>
36
*/
38
*/
37
39
Lines 70-84 Link Here
70
import org.eclipse.ocl.cst.VariableCS;
72
import org.eclipse.ocl.cst.VariableCS;
71
import org.eclipse.ocl.cst.VariableExpCS;
73
import org.eclipse.ocl.cst.VariableExpCS;
72
74
73
import lpg.lpgjavaruntime.BadParseException;
75
import lpg.runtime.BadParseException;
74
import lpg.lpgjavaruntime.BadParseSymFileException;
76
import lpg.runtime.BadParseSymFileException;
75
import lpg.lpgjavaruntime.DeterministicParser;
77
import lpg.runtime.DeterministicParser;
76
import lpg.lpgjavaruntime.DiagnoseParser;
78
import lpg.runtime.DiagnoseParser;
77
import lpg.lpgjavaruntime.IToken;
79
import lpg.runtime.IToken;
78
import lpg.lpgjavaruntime.Monitor;
80
import lpg.runtime.Monitor;
79
import lpg.lpgjavaruntime.NotDeterministicParseTableException;
81
import lpg.runtime.NotDeterministicParseTableException;
80
import lpg.lpgjavaruntime.ParseTable;
82
import lpg.runtime.ParseTable;
81
import lpg.lpgjavaruntime.RuleAction;
83
import lpg.runtime.RuleAction;
82
84
83
import org.eclipse.ocl.Environment;
85
import org.eclipse.ocl.Environment;
84
import org.eclipse.ocl.cst.ClassifierContextDeclCS;
86
import org.eclipse.ocl.cst.ClassifierContextDeclCS;
Lines 462-468 Link Here
462
            //
464
            //
463
            case 57: {
465
            case 57: {
464
                
466
                
465
                TupleTypeCS result = createTupleTypeCS((EList<VariableCS>)dtParser.getSym(3));
467
                 TupleTypeCS result = createTupleTypeCS((EList<VariableCS>)dtParser.getSym(3));
466
                setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(4)));
468
                setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(4)));
467
                dtParser.setSym1(result);
469
                dtParser.setSym1(result);
468
              break;
470
              break;
(-)src/org/eclipse/ocl/parser/OCLKWLexerprs.java (-45 / +95 lines)
Lines 12-20 Link Here
12
*   IBM - Initial API and implementation
12
*   IBM - Initial API and implementation
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
14
*   E.D.Willink - Bug 285633, 292112
14
*   E.D.Willink - Bug 285633, 292112
15
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
16
*
15
* </copyright>
17
* </copyright>
16
*
18
*
17
* $Id: OCLKWLexerprs.java,v 1.11 2009/11/09 22:00:25 ewillink Exp $
19
*
18
*/
20
*/
19
/**
21
/**
20
* Complete OCL Keyword Lexer
22
* Complete OCL Keyword Lexer
Lines 29-40 Link Here
29
* Contributors:
31
* Contributors:
30
*   IBM - Initial API and implementation
32
*   IBM - Initial API and implementation
31
*   E.D.Willink - Bug 292112
33
*   E.D.Willink - Bug 292112
34
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
35
*
32
* </copyright>
36
* </copyright>
33
*/
37
*/
34
38
35
package org.eclipse.ocl.parser;
39
package org.eclipse.ocl.parser;
36
40
37
public class OCLKWLexerprs implements lpg.lpgjavaruntime.ParseTable, OCLKWLexersym {
41
public class OCLKWLexerprs implements lpg.runtime.ParseTable, OCLKWLexersym {
42
    public final static int ERROR_SYMBOL = 0;
43
    public final int getErrorSymbol() { return ERROR_SYMBOL; }
44
45
    public final static int SCOPE_UBOUND = 0;
46
    public final int getScopeUbound() { return SCOPE_UBOUND; }
47
48
    public final static int SCOPE_SIZE = 0;
49
    public final int getScopeSize() { return SCOPE_SIZE; }
50
51
    public final static int MAX_NAME_LENGTH = 0;
52
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
53
54
    public final static int NUM_STATES = 159;
55
    public final int getNumStates() { return NUM_STATES; }
56
57
    public final static int NT_OFFSET = 56;
58
    public final int getNtOffset() { return NT_OFFSET; }
59
60
    public final static int LA_STATE_OFFSET = 247;
61
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
62
63
    public final static int MAX_LA = 1;
64
    public final int getMaxLa() { return MAX_LA; }
65
66
    public final static int NUM_RULES = 42;
67
    public final int getNumRules() { return NUM_RULES; }
68
69
    public final static int NUM_NONTERMINALS = 2;
70
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
71
72
    public final static int NUM_SYMBOLS = 58;
73
    public final int getNumSymbols() { return NUM_SYMBOLS; }
74
75
    public final static int SEGMENT_SIZE = 8192;
76
    public final int getSegmentSize() { return SEGMENT_SIZE; }
77
78
    public final static int START_STATE = 43;
79
    public final int getStartState() { return START_STATE; }
80
81
    public final static int IDENTIFIER_SYMBOL = 0;
82
    public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; }
83
84
    public final static int EOFT_SYMBOL = 36;
85
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
86
87
    public final static int EOLT_SYMBOL = 57;
88
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
89
90
    public final static int ACCEPT_ACTION = 204;
91
    public final int getAcceptAction() { return ACCEPT_ACTION; }
92
93
    public final static int ERROR_ACTION = 205;
94
    public final int getErrorAction() { return ERROR_ACTION; }
95
96
    public final static boolean BACKTRACK = false;
97
    public final boolean getBacktrack() { return BACKTRACK; }
98
99
    public final int getStartSymbol() { return lhs(0); }
100
    public final boolean isValidForParser() { return OCLKWLexersym.isValidForParser; }
101
102
103
    public interface IsNullable {
104
        public final static byte isNullable[] = {0,
105
            0,0,0,0,0,0,0,0,0,0,
106
            0,0,0,0,0,0,0,0,0,0,
107
            0,0,0,0,0,0,0,0,0,0,
108
            0,0,0,0,0,0,0,0,0,0,
109
            0,0,0,0,0,0,0,0,0,0,
110
            0,0,0,0,0,0,0,0
111
        };
112
    };
113
    public final static byte isNullable[] = IsNullable.isNullable;
114
    public final boolean isNullable(int index) { return isNullable[index] != 0; }
115
116
    public interface ProsthesesIndex {
117
        public final static byte prosthesesIndex[] = {0,
118
            2,1
119
        };
120
    };
121
    public final static byte prosthesesIndex[] = ProsthesesIndex.prosthesesIndex;
122
    public final int prosthesesIndex(int index) { return prosthesesIndex[index]; }
38
123
39
    public interface IsKeyword {
124
    public interface IsKeyword {
40
        public final static byte isKeyword[] = {0,
125
        public final static byte isKeyword[] = {0,
Lines 43-49 Link Here
43
            0,0,0,0,0,0,0,0,0,0,
128
            0,0,0,0,0,0,0,0,0,0,
44
            0,0,0,0,0,0,0,0,0,0,
129
            0,0,0,0,0,0,0,0,0,0,
45
            0,0,0,0,0,0,0,0,0,0,
130
            0,0,0,0,0,0,0,0,0,0,
46
            0,0,0,0
131
            0,0,0,0,0,0
47
        };
132
        };
48
    };
133
    };
49
    public final static byte isKeyword[] = IsKeyword.isKeyword;
134
    public final static byte isKeyword[] = IsKeyword.isKeyword;
Lines 136-142 Link Here
136
            0,0,0,0,0,0,0,0,0,0,
221
            0,0,0,0,0,0,0,0,0,0,
137
            0,0,0,0,0,0,0,0,0,0,
222
            0,0,0,0,0,0,0,0,0,0,
138
            0,0,0,0,0,0,0,0,0,0,
223
            0,0,0,0,0,0,0,0,0,0,
139
            0,0,0
224
            0,0,0,0,0
140
        };
225
        };
141
    };
226
    };
142
    public final static byte termCheck[] = TermCheck.termCheck;
227
    public final static byte termCheck[] = TermCheck.termCheck;
Lines 200-255 Link Here
200
    public final int scopeState(int index) { return 0;}
285
    public final int scopeState(int index) { return 0;}
201
    public final int inSymb(int index) { return 0;}
286
    public final int inSymb(int index) { return 0;}
202
    public final String name(int index) { return null; }
287
    public final String name(int index) { return null; }
203
    public final int getErrorSymbol() { return 0; }
204
    public final int getScopeUbound() { return 0; }
205
    public final int getScopeSize() { return 0; }
206
    public final int getMaxNameLength() { return 0; }
207
208
    public final static int
209
           NUM_STATES        = 159,
210
           NT_OFFSET         = 54,
211
           LA_STATE_OFFSET   = 247,
212
           MAX_LA            = 1,
213
           NUM_RULES         = 42,
214
           NUM_NONTERMINALS  = 2,
215
           NUM_SYMBOLS       = 56,
216
           SEGMENT_SIZE      = 8192,
217
           START_STATE       = 43,
218
           IDENTIFIER_SYMBOL = 0,
219
           EOFT_SYMBOL       = 36,
220
           EOLT_SYMBOL       = 55,
221
           ACCEPT_ACTION     = 204,
222
           ERROR_ACTION      = 205;
223
224
    public final static boolean BACKTRACK = false;
225
226
    public final int getNumStates() { return NUM_STATES; }
227
    public final int getNtOffset() { return NT_OFFSET; }
228
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
229
    public final int getMaxLa() { return MAX_LA; }
230
    public final int getNumRules() { return NUM_RULES; }
231
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
232
    public final int getNumSymbols() { return NUM_SYMBOLS; }
233
    public final int getSegmentSize() { return SEGMENT_SIZE; }
234
    public final int getStartState() { return START_STATE; }
235
    public final int getStartSymbol() { return lhs[0]; }
236
    public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
237
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
238
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
239
    public final int getAcceptAction() { return ACCEPT_ACTION; }
240
    public final int getErrorAction() { return ERROR_ACTION; }
241
    public final boolean isValidForParser() { return isValidForParser; }
242
    public final boolean getBacktrack() { return BACKTRACK; }
243
244
    public final int originalState(int state) { return 0; }
288
    public final int originalState(int state) { return 0; }
245
    public final int asi(int state) { return 0; }
289
    public final int asi(int state) { return 0; }
246
    public final int nasi(int state) { return 0; }
290
    public final int nasi(int state) { return 0; }
247
    public final int inSymbol(int state) { return 0; }
291
    public final int inSymbol(int state) { return 0; }
248
292
293
    /**
294
     * assert(! goto_default);
295
     */
249
    public final int ntAction(int state, int sym) {
296
    public final int ntAction(int state, int sym) {
250
        return baseAction[state + sym];
297
        return baseAction[state + sym];
251
    }
298
    }
252
299
300
    /**
301
     * assert(! shift_default);
302
     */
253
    public final int tAction(int state, int sym) {
303
    public final int tAction(int state, int sym) {
254
        int i = baseAction[state],
304
        int i = baseAction[state],
255
            k = i + sym;
305
            k = i + sym;
(-)src/org/eclipse/ocl/parser/OCLParser.g (-110 / +111 lines)
Lines 27-48 Link Here
27
%options margin=4
27
%options margin=4
28
%options noserialize
28
%options noserialize
29
%options package=org.eclipse.ocl.parser
29
%options package=org.eclipse.ocl.parser
30
%options import_terminals=OCLLexer.g
30
%options import_terminals=OCLLexer.gi
31
%options ast_type=CSTNode
31
%options ast_type=CSTNode
32
%options programming_language=java
32
%options programming_language=java
33
%options action=("*.java", "/.", "./")
33
%options action-block=("*.java", "/.", "./")
34
%options ParseTable=lpg.lpgjavaruntime.ParseTable
34
%options ParseTable=lpg.runtime.ParseTable
35
%options include_directory=".;../lpg"
35
%options include_directory=".;../lpg"
36
36
37
$Start
37
%Start
38
	goal
38
	goal
39
$End
39
%End
40
40
41
$Include
41
%Import
42
	EssentialOCL.g
42
	EssentialOCL.gi
43
$End
43
%End
44
44
45
$Notice
45
%Notice
46
	/./**
46
	/./**
47
 * Complete OCL Grammar
47
 * Complete OCL Grammar
48
 * <copyright>
48
 * <copyright>
Lines 56-72 Link Here
56
 * Contributors:
56
 * Contributors:
57
 *   IBM - Initial API and implementation
57
 *   IBM - Initial API and implementation
58
 *   E.D.Willink - Bug 259818, 285633, 292112
58
 *   E.D.Willink - Bug 259818, 285633, 292112
59
 *   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
59
 * </copyright>
60
 * </copyright>
60
 */
61
 */
61
	./
62
	./
62
$End
63
%End
63
64
64
$Define
65
%Define
65
    $environment_class /.Environment<?,?,?,?,?,?,?,?,?,?,?,?>./
66
    $environment_class /.Environment<?,?,?,?,?,?,?,?,?,?,?,?>./
66
	$lex_stream_class /.OCLLexer./
67
	$lex_stream_class /.OCLLexer./
67
$End
68
%End
68
69
69
$Globals
70
%Globals
70
	/.
71
	/.
71
	import org.eclipse.ocl.Environment;
72
	import org.eclipse.ocl.Environment;
72
	import org.eclipse.ocl.cst.ClassifierContextDeclCS;
73
	import org.eclipse.ocl.cst.ClassifierContextDeclCS;
Lines 87-116 Link Here
87
	import org.eclipse.ocl.cst.PrePostOrBodyEnum;
88
	import org.eclipse.ocl.cst.PrePostOrBodyEnum;
88
	import org.eclipse.ocl.cst.PropertyContextCS;
89
	import org.eclipse.ocl.cst.PropertyContextCS;
89
	./
90
	./
90
$End
91
%End
91
92
92
$KeyWords
93
%KeyWords
93
-- Reserved keywords
94
-- Reserved keywords
94
	body context def derive endpackage init inv package post pre static
95
	body context def derive endpackage init inv package post pre static
95
96
96
-- Restricted keywords
97
-- Restricted keywords
97
	OclMessage
98
	OclMessage
98
$End
99
%End
99
100
100
$Terminals
101
%Terminals
101
	AT           ::= '@'
102
	AT           ::= '@'
102
	CARET        ::= '^'
103
	CARET        ::= '^'
103
	CARETCARET   ::= '^^'
104
	CARETCARET   ::= '^^'
104
	QUESTIONMARK ::= '?'
105
	QUESTIONMARK ::= '?'
105
$End
106
%End
106
107
107
$Rules
108
%Rules
108
	goal -> packageDeclarationsCS
109
	goal -> packageDeclarationsCS
109
	goal -> invOrDefCS
110
	goal -> invOrDefCS
110
	goal -> prePostOrBodyDeclCS
111
	goal -> prePostOrBodyDeclCS
111
	goal -> initOrDerValueCS
112
	goal -> initOrDerValueCS
112
	goal -> VariableDeclarationCS
113
	goal -> VariableDeclarationCS
113
	goal -> $empty	
114
	goal -> %empty	
114
-----------------------------------------------------------------------
115
-----------------------------------------------------------------------
115
--  Names
116
--  Names
116
-----------------------------------------------------------------------
117
-----------------------------------------------------------------------
Lines 126-132 Link Here
126
	reservedKeyword -> pre
127
	reservedKeyword -> pre
127
	reservedKeyword -> static
128
	reservedKeyword -> static
128
129
129
	unreservedSimpleNameCSopt ::= $empty
130
	unreservedSimpleNameCSopt ::= %empty
130
		/.$NullAction./
131
		/.$NullAction./
131
	unreservedSimpleNameCSopt -> unreservedSimpleNameCS	
132
	unreservedSimpleNameCSopt -> unreservedSimpleNameCS	
132
133
Lines 134-150 Link Here
134
--  Types
135
--  Types
135
-----------------------------------------------------------------------
136
-----------------------------------------------------------------------
136
	primitiveTypeCS ::= OclMessage
137
	primitiveTypeCS ::= OclMessage
137
		/.$BeginJava
138
		/.$BeginCode
138
					PrimitiveTypeCS result = createPrimitiveTypeCS(
139
					PrimitiveTypeCS result = createPrimitiveTypeCS(
139
							SimpleTypeEnum.OCL_MESSAGE_LITERAL,
140
							SimpleTypeEnum.OCL_MESSAGE_LITERAL,
140
							getTokenText($getToken(1))
141
							getTokenText($getToken(1))
141
						);
142
						);
142
					setOffsets(result, getIToken($getToken(1)));
143
					setOffsets(result, getIToken($getToken(1)));
143
					$setResult(result);
144
					$setResult(result);
144
		  $EndJava
145
		  $EndCode
145
		./
146
		./
146
147
147
	typeCSopt ::= $empty
148
	typeCSopt ::= %empty
148
		/.$NullAction./
149
		/.$NullAction./
149
	typeCSopt -> typeCS
150
	typeCSopt -> typeCS
150
151
Lines 153-159 Link Here
153
-----------------------------------------------------------------------
154
-----------------------------------------------------------------------
154
	OperationCallExpCS ::= -- [B]
155
	OperationCallExpCS ::= -- [B]
155
		primaryExpCS '->' simpleNameCS isMarkedPreCS '(' argumentsCSopt ')'
156
		primaryExpCS '->' simpleNameCS isMarkedPreCS '(' argumentsCSopt ')'
156
		/.$BeginJava
157
		/.$BeginCode
157
					OCLExpressionCS source = (OCLExpressionCS)$getSym(1);
158
					OCLExpressionCS source = (OCLExpressionCS)$getSym(1);
158
					OperationCallExpCS result = createArrowOperationCallExpCS(
159
					OperationCallExpCS result = createArrowOperationCallExpCS(
159
							source,
160
							source,
Lines 163-174 Link Here
163
						);
164
						);
164
					setOffsets(result, source, getIToken($getToken(7)));
165
					setOffsets(result, source, getIToken($getToken(7)));
165
					$setResult(result);
166
					$setResult(result);
166
		  $EndJava
167
		  $EndCode
167
		./	
168
		./	
168
169
169
	AssociationClassCallExpCS ::= -- [B.1],PropertyCallExpCS[B]
170
	AssociationClassCallExpCS ::= -- [B.1],PropertyCallExpCS[B]
170
		simpleNameCS isMarkedPreCS
171
		simpleNameCS isMarkedPreCS
171
		/.$BeginJava
172
		/.$BeginCode
172
					SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1);
173
					SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1);
173
					IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(2);
174
					IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(2);
174
					VariableExpCS result = createVariableExpCS(
175
					VariableExpCS result = createVariableExpCS(
Lines 178-199 Link Here
178
						);
179
						);
179
					setOffsets(result, simpleNameCS, isMarkedPreCS);
180
					setOffsets(result, simpleNameCS, isMarkedPreCS);
180
					$setResult(result);
181
					$setResult(result);
181
		  $EndJava
182
		  $EndCode
182
		./
183
		./
183
184
184
	isMarkedPreCS ::= '@' pre
185
	isMarkedPreCS ::= '@' pre
185
		/.$BeginJava
186
		/.$BeginCode
186
					IsMarkedPreCS result = createIsMarkedPreCS();
187
					IsMarkedPreCS result = createIsMarkedPreCS();
187
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(2)));
188
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(2)));
188
					$setResult(result);
189
					$setResult(result);
189
		  $EndJava
190
		  $EndCode
190
		./
191
		./
191
	isMarkedPreCSopt -> isMarkedPreCS
192
	isMarkedPreCSopt -> isMarkedPreCS
192
193
193
	OclMessageExpCS ::= primaryExpCS '^^' simpleNameCS '(' OclMessageArgumentsCSopt ')'
194
	OclMessageExpCS ::= primaryExpCS '^^' simpleNameCS '(' OclMessageArgumentsCSopt ')'
194
		/.$NewCase./
195
		/.$NewCase./
195
	OclMessageExpCS ::= primaryExpCS '^' simpleNameCS '(' OclMessageArgumentsCSopt ')'
196
	OclMessageExpCS ::= primaryExpCS '^' simpleNameCS '(' OclMessageArgumentsCSopt ')'
196
		/.$BeginJava
197
		/.$BeginCode
197
					OCLExpressionCS target = (OCLExpressionCS)$getSym(1);
198
					OCLExpressionCS target = (OCLExpressionCS)$getSym(1);
198
					MessageExpCS result = createMessageExpCS(
199
					MessageExpCS result = createMessageExpCS(
199
							target,
200
							target,
Lines 203-262 Link Here
203
						);
204
						);
204
					setOffsets(result, target, getIToken($getToken(6)));
205
					setOffsets(result, target, getIToken($getToken(6)));
205
					$setResult(result);
206
					$setResult(result);
206
		  $EndJava
207
		  $EndCode
207
		./
208
		./
208
209
209
	OclMessageArgumentsCSopt ::= $empty
210
	OclMessageArgumentsCSopt ::= %empty
210
        /.$BeginJava
211
        /.$BeginCode
211
                    $setResult(new BasicEList<OCLMessageArgCS>());
212
                    $setResult(new BasicEList<OCLMessageArgCS>());
212
          $EndJava
213
          $EndCode
213
        ./
214
        ./
214
	OclMessageArgumentsCSopt -> OclMessageArgumentsCS
215
	OclMessageArgumentsCSopt -> OclMessageArgumentsCS
215
216
216
	OclMessageArgumentsCS ::= OclMessageArgCS
217
	OclMessageArgumentsCS ::= OclMessageArgCS
217
		/.$BeginJava
218
		/.$BeginCode
218
					EList<OCLMessageArgCS> result = new BasicEList<OCLMessageArgCS>();
219
					EList<OCLMessageArgCS> result = new BasicEList<OCLMessageArgCS>();
219
					result.add((OCLMessageArgCS)$getSym(1));
220
					result.add((OCLMessageArgCS)$getSym(1));
220
					$setResult(result);
221
					$setResult(result);
221
		  $EndJava
222
		  $EndCode
222
		./
223
		./
223
	OclMessageArgumentsCS ::= OclMessageArgumentsCS ',' OclMessageArgCS
224
	OclMessageArgumentsCS ::= OclMessageArgumentsCS ',' OclMessageArgCS
224
		/.$BeginJava
225
		/.$BeginCode
225
					EList<OCLMessageArgCS> result = (EList<OCLMessageArgCS>)$getSym(1);
226
					EList<OCLMessageArgCS> result = (EList<OCLMessageArgCS>)$getSym(1);
226
					result.add((OCLMessageArgCS)$getSym(3));
227
					result.add((OCLMessageArgCS)$getSym(3));
227
					$setResult(result);
228
					$setResult(result);
228
		  $EndJava
229
		  $EndCode
229
		./
230
		./
230
231
231
	OclMessageArgCS ::= '?'
232
	OclMessageArgCS ::= '?'
232
		/.$BeginJava
233
		/.$BeginCode
233
					OCLMessageArgCS result = createOCLMessageArgCS(
234
					OCLMessageArgCS result = createOCLMessageArgCS(
234
							null,
235
							null,
235
							null
236
							null
236
						);
237
						);
237
					setOffsets(result, getIToken($getToken(1)));
238
					setOffsets(result, getIToken($getToken(1)));
238
					$setResult(result);
239
					$setResult(result);
239
		  $EndJava
240
		  $EndCode
240
		./
241
		./
241
	OclMessageArgCS ::= '?' ':' typeCS
242
	OclMessageArgCS ::= '?' ':' typeCS
242
		/.$BeginJava
243
		/.$BeginCode
243
					OCLMessageArgCS result = createOCLMessageArgCS(
244
					OCLMessageArgCS result = createOCLMessageArgCS(
244
							(TypeCS)$getSym(3),
245
							(TypeCS)$getSym(3),
245
							null
246
							null
246
						);
247
						);
247
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(3));
248
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(3));
248
					$setResult(result);
249
					$setResult(result);
249
		  $EndJava
250
		  $EndCode
250
		./
251
		./
251
	OclMessageArgCS ::= OclExpressionCS
252
	OclMessageArgCS ::= OclExpressionCS
252
		/.$BeginJava
253
		/.$BeginCode
253
					OCLMessageArgCS result = createOCLMessageArgCS(
254
					OCLMessageArgCS result = createOCLMessageArgCS(
254
							null,
255
							null,
255
							(OCLExpressionCS)$getSym(1)
256
							(OCLExpressionCS)$getSym(1)
256
						);
257
						);
257
					setOffsets(result, (CSTNode)$getSym(1));
258
					setOffsets(result, (CSTNode)$getSym(1));
258
					$setResult(result);
259
					$setResult(result);
259
		  $EndJava
260
		  $EndCode
260
		./
261
		./
261
262
262
-----------------------------------------------------------------------
263
-----------------------------------------------------------------------
Lines 269-325 Link Here
269
-----------------------------------------------------------------------
270
-----------------------------------------------------------------------
270
    packageDeclarationsCS -> packageDeclarationCS
271
    packageDeclarationsCS -> packageDeclarationCS
271
    packageDeclarationsCS ::= packageDeclarationsCS packageDeclarationCS_A
272
    packageDeclarationsCS ::= packageDeclarationsCS packageDeclarationCS_A
272
        /.$BeginJava
273
        /.$BeginCode
273
                    PackageDeclarationCS result = (PackageDeclarationCS)$getSym(2);
274
                    PackageDeclarationCS result = (PackageDeclarationCS)$getSym(2);
274
                    result.setPackageDeclarationCS((PackageDeclarationCS) $getSym(1));
275
                    result.setPackageDeclarationCS((PackageDeclarationCS) $getSym(1));
275
                    $setResult(result);
276
                    $setResult(result);
276
          $EndJava
277
          $EndCode
277
        ./
278
        ./
278
279
279
    packageDeclarationCS -> packageDeclarationCS_A
280
    packageDeclarationCS -> packageDeclarationCS_A
280
    packageDeclarationCS -> packageDeclarationCS_B
281
    packageDeclarationCS -> packageDeclarationCS_B
281
    packageDeclarationCS_A ::= package pathNameCS contextDeclsCSopt endpackage
282
    packageDeclarationCS_A ::= package pathNameCS contextDeclsCSopt endpackage
282
        /.$BeginJava
283
        /.$BeginCode
283
                    PackageDeclarationCS result = createPackageDeclarationCS(
284
                    PackageDeclarationCS result = createPackageDeclarationCS(
284
                            (PathNameCS)$getSym(2),
285
                            (PathNameCS)$getSym(2),
285
                            (EList<ContextDeclCS>)$getSym(3)
286
                            (EList<ContextDeclCS>)$getSym(3)
286
                        );
287
                        );
287
                    setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4)));
288
                    setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4)));
288
                    $setResult(result);
289
                    $setResult(result);
289
          $EndJava
290
          $EndCode
290
        ./
291
        ./
291
    
292
    
292
    packageDeclarationCS_B ::= contextDeclsCS
293
    packageDeclarationCS_B ::= contextDeclsCS
293
        /.$BeginJava
294
        /.$BeginCode
294
                    EList<ContextDeclCS> contextDecls = (EList<ContextDeclCS>)$getSym(1);
295
                    EList<ContextDeclCS> contextDecls = (EList<ContextDeclCS>)$getSym(1);
295
                    PackageDeclarationCS result = createPackageDeclarationCS(null, contextDecls);
296
                    PackageDeclarationCS result = createPackageDeclarationCS(null, contextDecls);
296
                    if (!contextDecls.isEmpty()) {
297
                    if (!contextDecls.isEmpty()) {
297
                        setOffsets(result, contextDecls.get(0), contextDecls.get(contextDecls.size()-1));
298
                        setOffsets(result, contextDecls.get(0), contextDecls.get(contextDecls.size()-1));
298
                    }
299
                    }
299
                    $setResult(result);
300
                    $setResult(result);
300
          $EndJava
301
          $EndCode
301
        ./
302
        ./
302
303
303
    contextDeclsCSopt ::= $empty
304
    contextDeclsCSopt ::= %empty
304
        /.$BeginJava
305
        /.$BeginCode
305
                    $setResult(new BasicEList<ContextDeclCS>());
306
                    $setResult(new BasicEList<ContextDeclCS>());
306
          $EndJava
307
          $EndCode
307
        ./
308
        ./
308
    contextDeclsCSopt -> contextDeclsCS
309
    contextDeclsCSopt -> contextDeclsCS
309
310
310
    contextDeclsCS ::= contextDeclCS
311
    contextDeclsCS ::= contextDeclCS
311
        /.$BeginJava
312
        /.$BeginCode
312
                    EList<ContextDeclCS> result = new BasicEList<ContextDeclCS>();
313
                    EList<ContextDeclCS> result = new BasicEList<ContextDeclCS>();
313
                    result.add((ContextDeclCS)$getSym(1));
314
                    result.add((ContextDeclCS)$getSym(1));
314
                    $setResult(result);
315
                    $setResult(result);
315
          $EndJava
316
          $EndCode
316
        ./
317
        ./
317
    contextDeclsCS ::= contextDeclsCS contextDeclCS
318
    contextDeclsCS ::= contextDeclsCS contextDeclCS
318
        /.$BeginJava
319
        /.$BeginCode
319
                    EList<ContextDeclCS> result = (EList<ContextDeclCS>)$getSym(1);
320
                    EList<ContextDeclCS> result = (EList<ContextDeclCS>)$getSym(1);
320
                    result.add((ContextDeclCS)$getSym(2));
321
                    result.add((ContextDeclCS)$getSym(2));
321
                    $setResult(result);
322
                    $setResult(result);
322
          $EndJava
323
          $EndCode
323
        ./
324
        ./
324
325
325
    contextDeclCS -> propertyContextDeclCS
326
    contextDeclCS -> propertyContextDeclCS
Lines 328-334 Link Here
328
329
329
    propertyContextDeclCS ::= context pathNameCS '::' unreservedSimpleNameCS
330
    propertyContextDeclCS ::= context pathNameCS '::' unreservedSimpleNameCS
330
        ':' typeCS initOrDerValuesCS
331
        ':' typeCS initOrDerValuesCS
331
        /.$BeginJava
332
        /.$BeginCode
332
                    PathNameCS pathNameCS = (PathNameCS)$getSym(2);
333
                    PathNameCS pathNameCS = (PathNameCS)$getSym(2);
333
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(4);
334
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(4);
334
                    EList<InitOrDerValueCS> list = (EList<InitOrDerValueCS>)$getSym(7);
335
                    EList<InitOrDerValueCS> list = (EList<InitOrDerValueCS>)$getSym(7);
Lines 340-380 Link Here
340
                        );
341
                        );
341
                    setOffsets(result, getIToken($getToken(1)), list.get(list.size()-1));
342
                    setOffsets(result, getIToken($getToken(1)), list.get(list.size()-1));
342
                    $setResult(result);
343
                    $setResult(result);
343
          $EndJava
344
          $EndCode
344
        ./
345
        ./
345
346
346
    initOrDerValuesCS ::= initOrDerValueCS
347
    initOrDerValuesCS ::= initOrDerValueCS
347
        /.$BeginJava
348
        /.$BeginCode
348
                    EList<InitOrDerValueCS> result = new BasicEList<InitOrDerValueCS>();
349
                    EList<InitOrDerValueCS> result = new BasicEList<InitOrDerValueCS>();
349
                    result.add((InitOrDerValueCS)$getSym(1));
350
                    result.add((InitOrDerValueCS)$getSym(1));
350
                    $setResult(result);
351
                    $setResult(result);
351
          $EndJava
352
          $EndCode
352
        ./
353
        ./
353
    initOrDerValuesCS ::= initOrDerValuesCS initOrDerValueCS
354
    initOrDerValuesCS ::= initOrDerValuesCS initOrDerValueCS
354
        /.$BeginJava
355
        /.$BeginCode
355
                    EList<InitOrDerValueCS> result = (EList<InitOrDerValueCS>)$getSym(1);
356
                    EList<InitOrDerValueCS> result = (EList<InitOrDerValueCS>)$getSym(1);
356
                    result.add((InitOrDerValueCS)$getSym(2));
357
                    result.add((InitOrDerValueCS)$getSym(2));
357
                    $setResult(result);
358
                    $setResult(result);
358
          $EndJava
359
          $EndCode
359
        ./
360
        ./
360
361
361
    initOrDerValueCS ::= init ':' OclExpressionCS
362
    initOrDerValueCS ::= init ':' OclExpressionCS
362
        /.$BeginJava
363
        /.$BeginCode
363
                    InitValueCS result = createInitValueCS((OCLExpressionCS)$getSym(3));
364
                    InitValueCS result = createInitValueCS((OCLExpressionCS)$getSym(3));
364
                    setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(3));
365
                    setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(3));
365
                    $setResult(result);
366
                    $setResult(result);
366
          $EndJava
367
          $EndCode
367
        ./
368
        ./
368
    initOrDerValueCS ::= derive ':' OclExpressionCS
369
    initOrDerValueCS ::= derive ':' OclExpressionCS
369
        /.$BeginJava
370
        /.$BeginCode
370
                    DerValueCS result = createDerValueCS((OCLExpressionCS)$getSym(3));
371
                    DerValueCS result = createDerValueCS((OCLExpressionCS)$getSym(3));
371
                    setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(3));
372
                    setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(3));
372
                    $setResult(result);
373
                    $setResult(result);
373
          $EndJava
374
          $EndCode
374
        ./
375
        ./
375
376
376
	classifierContextDeclCS ::= context pathNameCS invOrDefsCS
377
	classifierContextDeclCS ::= context pathNameCS invOrDefsCS
377
		/.$BeginJava
378
		/.$BeginCode
378
					EList<InvOrDefCS> list = (EList<InvOrDefCS>)$getSym(3);
379
					EList<InvOrDefCS> list = (EList<InvOrDefCS>)$getSym(3);
379
					ClassifierContextDeclCS result = createClassifierContextDeclCS(
380
					ClassifierContextDeclCS result = createClassifierContextDeclCS(
380
							null,
381
							null,
Lines 383-392 Link Here
383
						);
384
						);
384
					setOffsets(result, getIToken($getToken(1)), list.get(list.size()-1));
385
					setOffsets(result, getIToken($getToken(1)), list.get(list.size()-1));
385
					$setResult(result);
386
					$setResult(result);
386
		  $EndJava
387
		  $EndCode
387
		./
388
		./
388
	classifierContextDeclCS ::= context simpleNameCS ':' pathNameCS invOrDefsCS
389
	classifierContextDeclCS ::= context simpleNameCS ':' pathNameCS invOrDefsCS
389
		/.$BeginJava
390
		/.$BeginCode
390
					EList<InvOrDefCS> list = (EList<InvOrDefCS>)$getSym(5);
391
					EList<InvOrDefCS> list = (EList<InvOrDefCS>)$getSym(5);
391
					ClassifierContextDeclCS result = createClassifierContextDeclCS(
392
					ClassifierContextDeclCS result = createClassifierContextDeclCS(
392
							(SimpleNameCS)$getSym(2),
393
							(SimpleNameCS)$getSym(2),
Lines 395-430 Link Here
395
						);
396
						);
396
					setOffsets(result, getIToken($getToken(1)), list.get(list.size()-1));
397
					setOffsets(result, getIToken($getToken(1)), list.get(list.size()-1));
397
					$setResult(result);
398
					$setResult(result);
398
		  $EndJava
399
		  $EndCode
399
		./
400
		./
400
401
401
    invOrDefsCS ::= invOrDefCS
402
    invOrDefsCS ::= invOrDefCS
402
        /.$BeginJava
403
        /.$BeginCode
403
                    EList<InvOrDefCS> result = new BasicEList<InvOrDefCS>();
404
                    EList<InvOrDefCS> result = new BasicEList<InvOrDefCS>();
404
                    result.add((InvOrDefCS)$getSym(1));
405
                    result.add((InvOrDefCS)$getSym(1));
405
                    $setResult(result);
406
                    $setResult(result);
406
          $EndJava
407
          $EndCode
407
        ./
408
        ./
408
    invOrDefsCS ::= invOrDefsCS invOrDefCS
409
    invOrDefsCS ::= invOrDefsCS invOrDefCS
409
        /.$BeginJava
410
        /.$BeginCode
410
                    EList<InvOrDefCS> result = (EList<InvOrDefCS>)$getSym(1);
411
                    EList<InvOrDefCS> result = (EList<InvOrDefCS>)$getSym(1);
411
                    result.add((InvOrDefCS)$getSym(2));
412
                    result.add((InvOrDefCS)$getSym(2));
412
                    $setResult(result);
413
                    $setResult(result);
413
          $EndJava
414
          $EndCode
414
        ./
415
        ./
415
416
416
	invOrDefCS ::= inv unreservedSimpleNameCSopt ':' OclExpressionCS
417
	invOrDefCS ::= inv unreservedSimpleNameCSopt ':' OclExpressionCS
417
		/.$BeginJava
418
		/.$BeginCode
418
					InvCS result = createInvCS(
419
					InvCS result = createInvCS(
419
							(SimpleNameCS)$getSym(2),
420
							(SimpleNameCS)$getSym(2),
420
							(OCLExpressionCS)$getSym(4)
421
							(OCLExpressionCS)$getSym(4)
421
						);
422
						);
422
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
423
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
423
					$setResult(result);
424
					$setResult(result);
424
		  $EndJava
425
		  $EndCode
425
		./	
426
		./	
426
    invOrDefCS ::= def unreservedSimpleNameCSopt ':' defExpressionCS
427
    invOrDefCS ::= def unreservedSimpleNameCSopt ':' defExpressionCS
427
        /.$BeginJava
428
        /.$BeginCode
428
                    DefExpressionCS defExpressionCS = (DefExpressionCS)$getSym(4);
429
                    DefExpressionCS defExpressionCS = (DefExpressionCS)$getSym(4);
429
                    DefCS result = createDefCS(
430
                    DefCS result = createDefCS(
430
                            false,
431
                            false,
Lines 433-442 Link Here
433
                        );
434
                        );
434
                    setOffsets(result, getIToken($getToken(1)), defExpressionCS);
435
                    setOffsets(result, getIToken($getToken(1)), defExpressionCS);
435
                    $setResult(result);
436
                    $setResult(result);
436
          $EndJava
437
          $EndCode
437
        ./
438
        ./
438
    invOrDefCS ::= static def unreservedSimpleNameCSopt ':' defExpressionCS
439
    invOrDefCS ::= static def unreservedSimpleNameCSopt ':' defExpressionCS
439
        /.$BeginJava
440
        /.$BeginCode
440
                    DefExpressionCS defExpressionCS = (DefExpressionCS)$getSym(5);
441
                    DefExpressionCS defExpressionCS = (DefExpressionCS)$getSym(5);
441
                    DefCS result = createDefCS(
442
                    DefCS result = createDefCS(
442
                            true,
443
                            true,
Lines 445-455 Link Here
445
                        );
446
                        );
446
                    setOffsets(result, getIToken($getToken(1)), defExpressionCS);
447
                    setOffsets(result, getIToken($getToken(1)), defExpressionCS);
447
                    $setResult(result);
448
                    $setResult(result);
448
          $EndJava
449
          $EndCode
449
        ./
450
        ./
450
451
451
	defExpressionCS ::= typedUninitializedVariableCS '=' OclExpressionCS
452
	defExpressionCS ::= typedUninitializedVariableCS '=' OclExpressionCS
452
		/.$BeginJava
453
		/.$BeginCode
453
					VariableCS variableCS = (VariableCS)$getSym(1);
454
					VariableCS variableCS = (VariableCS)$getSym(1);
454
					OCLExpressionCS expressionCS = (OCLExpressionCS)$getSym(3);
455
					OCLExpressionCS expressionCS = (OCLExpressionCS)$getSym(3);
455
					DefExpressionCS result = createDefExpressionCS(
456
					DefExpressionCS result = createDefExpressionCS(
Lines 459-468 Link Here
459
						);
460
						);
460
					setOffsets(result, variableCS, expressionCS);
461
					setOffsets(result, variableCS, expressionCS);
461
					$setResult(result);
462
					$setResult(result);
462
		  $EndJava
463
		  $EndCode
463
		./
464
		./
464
	defExpressionCS ::= operationCS1 '=' OclExpressionCS
465
	defExpressionCS ::= operationCS1 '=' OclExpressionCS
465
		/.$BeginJava
466
		/.$BeginCode
466
					DefExpressionCS result = createDefExpressionCS(
467
					DefExpressionCS result = createDefExpressionCS(
467
							null,
468
							null,
468
							(OperationCS)$getSym(1),
469
							(OperationCS)$getSym(1),
Lines 470-480 Link Here
470
						);
471
						);
471
					setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3));
472
					setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3));
472
					$setResult(result);
473
					$setResult(result);
473
		  $EndJava
474
		  $EndCode
474
		./
475
		./
475
476
476
	operationContextDeclCS ::= context operationCS2 prePostOrBodyDeclsCS
477
	operationContextDeclCS ::= context operationCS2 prePostOrBodyDeclsCS
477
		/.$BeginJava
478
		/.$BeginCode
478
					EList<PrePostOrBodyDeclCS> prePostOrBodyDecls = (EList<PrePostOrBodyDeclCS>)$getSym(3);
479
					EList<PrePostOrBodyDeclCS> prePostOrBodyDecls = (EList<PrePostOrBodyDeclCS>)$getSym(3);
479
					OperationContextDeclCS result = createOperationContextDeclCS(
480
					OperationContextDeclCS result = createOperationContextDeclCS(
480
							(OperationCS)$getSym(2),
481
							(OperationCS)$getSym(2),
Lines 482-507 Link Here
482
						);
483
						);
483
					setOffsets(result, getIToken($getToken(1)), prePostOrBodyDecls.get(prePostOrBodyDecls.size()-1));
484
					setOffsets(result, getIToken($getToken(1)), prePostOrBodyDecls.get(prePostOrBodyDecls.size()-1));
484
					$setResult(result);
485
					$setResult(result);
485
		  $EndJava
486
		  $EndCode
486
		./
487
		./
487
488
488
    prePostOrBodyDeclsCS ::= prePostOrBodyDeclCS
489
    prePostOrBodyDeclsCS ::= prePostOrBodyDeclCS
489
        /.$BeginJava
490
        /.$BeginCode
490
                    EList<PrePostOrBodyDeclCS> result = new BasicEList<PrePostOrBodyDeclCS>();
491
                    EList<PrePostOrBodyDeclCS> result = new BasicEList<PrePostOrBodyDeclCS>();
491
                    result.add((PrePostOrBodyDeclCS)$getSym(1));
492
                    result.add((PrePostOrBodyDeclCS)$getSym(1));
492
                    $setResult(result);
493
                    $setResult(result);
493
          $EndJava
494
          $EndCode
494
        ./
495
        ./
495
    prePostOrBodyDeclsCS ::= prePostOrBodyDeclsCS prePostOrBodyDeclCS
496
    prePostOrBodyDeclsCS ::= prePostOrBodyDeclsCS prePostOrBodyDeclCS
496
        /.$BeginJava
497
        /.$BeginCode
497
                    EList<PrePostOrBodyDeclCS> result = (EList<PrePostOrBodyDeclCS>)$getSym(1);
498
                    EList<PrePostOrBodyDeclCS> result = (EList<PrePostOrBodyDeclCS>)$getSym(1);
498
                    result.add((PrePostOrBodyDeclCS)$getSym(2));
499
                    result.add((PrePostOrBodyDeclCS)$getSym(2));
499
                    $setResult(result);
500
                    $setResult(result);
500
          $EndJava
501
          $EndCode
501
        ./
502
        ./
502
503
503
    prePostOrBodyDeclCS ::= pre unreservedSimpleNameCSopt ':' OclExpressionCS
504
    prePostOrBodyDeclCS ::= pre unreservedSimpleNameCSopt ':' OclExpressionCS
504
        /.$BeginJava
505
        /.$BeginCode
505
                    PrePostOrBodyDeclCS result = createPrePostOrBodyDeclCS(
506
                    PrePostOrBodyDeclCS result = createPrePostOrBodyDeclCS(
506
                            PrePostOrBodyEnum.PRE_LITERAL,
507
                            PrePostOrBodyEnum.PRE_LITERAL,
507
                            (SimpleNameCS)$getSym(2),
508
                            (SimpleNameCS)$getSym(2),
Lines 509-518 Link Here
509
                        );
510
                        );
510
                    setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
511
                    setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
511
                    $setResult(result);
512
                    $setResult(result);
512
          $EndJava
513
          $EndCode
513
        ./
514
        ./
514
    prePostOrBodyDeclCS ::= post unreservedSimpleNameCSopt ':' OclExpressionCS
515
    prePostOrBodyDeclCS ::= post unreservedSimpleNameCSopt ':' OclExpressionCS
515
        /.$BeginJava
516
        /.$BeginCode
516
                    PrePostOrBodyDeclCS result = createPrePostOrBodyDeclCS(
517
                    PrePostOrBodyDeclCS result = createPrePostOrBodyDeclCS(
517
                            PrePostOrBodyEnum.POST_LITERAL,
518
                            PrePostOrBodyEnum.POST_LITERAL,
518
                            (SimpleNameCS)$getSym(2),
519
                            (SimpleNameCS)$getSym(2),
Lines 520-529 Link Here
520
                        );
521
                        );
521
                    setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
522
                    setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
522
                    $setResult(result);
523
                    $setResult(result);
523
          $EndJava
524
          $EndCode
524
        ./
525
        ./
525
    prePostOrBodyDeclCS ::= body unreservedSimpleNameCSopt ':' OclExpressionCS
526
    prePostOrBodyDeclCS ::= body unreservedSimpleNameCSopt ':' OclExpressionCS
526
        /.$BeginJava
527
        /.$BeginCode
527
                    PrePostOrBodyDeclCS result = createPrePostOrBodyDeclCS(
528
                    PrePostOrBodyDeclCS result = createPrePostOrBodyDeclCS(
528
                            PrePostOrBodyEnum.BODY_LITERAL,
529
                            PrePostOrBodyEnum.BODY_LITERAL,
529
                            (SimpleNameCS)$getSym(2),
530
                            (SimpleNameCS)$getSym(2),
Lines 531-541 Link Here
531
                        );
532
                        );
532
                    setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
533
                    setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
533
                    $setResult(result);
534
                    $setResult(result);
534
          $EndJava
535
          $EndCode
535
        ./
536
        ./
536
537
537
	operationCS1 ::= simpleNameCS '(' parametersCSopt ')' ':' typeCSopt
538
	operationCS1 ::= simpleNameCS '(' parametersCSopt ')' ':' typeCSopt
538
		/.$BeginJava
539
		/.$BeginCode
539
					OperationCS result = createOperationCS(
540
					OperationCS result = createOperationCS(
540
							getIToken($getToken(1)),
541
							getIToken($getToken(1)),
541
							(EList<VariableCS>)$getSym(3),
542
							(EList<VariableCS>)$getSym(3),
Lines 547-557 Link Here
547
						setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5)));
548
						setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5)));
548
					}
549
					}
549
					$setResult(result);
550
					$setResult(result);
550
		  $EndJava
551
		  $EndCode
551
		./
552
		./
552
	operationCS2 ::= pathNameCS '::' unreservedSimpleNameCS '(' parametersCSopt ')'
553
	operationCS2 ::= pathNameCS '::' unreservedSimpleNameCS '(' parametersCSopt ')'
553
	   ':' typeCSopt
554
	   ':' typeCSopt
554
		/.$BeginJava
555
		/.$BeginCode
555
					PathNameCS pathNameCS = (PathNameCS)$getSym(1);
556
					PathNameCS pathNameCS = (PathNameCS)$getSym(1);
556
					SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3);
557
					SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3);
557
					TypeCS typeCS = (TypeCS)$getSym(8);
558
					TypeCS typeCS = (TypeCS)$getSym(8);
Lines 567-594 Link Here
567
						setOffsets(result, pathNameCS, getIToken($getToken(7)));
568
						setOffsets(result, pathNameCS, getIToken($getToken(7)));
568
					}
569
					}
569
					$setResult(result);
570
					$setResult(result);
570
		  $EndJava
571
		  $EndCode
571
		./
572
		./
572
573
573
    parametersCSopt ::= $empty
574
    parametersCSopt ::= %empty
574
        /.$BeginJava
575
        /.$BeginCode
575
                    $setResult(new BasicEList<VariableCS>());
576
                    $setResult(new BasicEList<VariableCS>());
576
          $EndJava
577
          $EndCode
577
        ./
578
        ./
578
    parametersCSopt -> parametersCS
579
    parametersCSopt -> parametersCS
579
	
580
	
580
	parametersCS ::= VariableDeclarationCS 
581
	parametersCS ::= VariableDeclarationCS 
581
		/.$BeginJava
582
		/.$BeginCode
582
					EList<VariableCS> result = new BasicEList<VariableCS>();
583
					EList<VariableCS> result = new BasicEList<VariableCS>();
583
					result.add((VariableCS)$getSym(1));
584
					result.add((VariableCS)$getSym(1));
584
					$setResult(result);
585
					$setResult(result);
585
		  $EndJava
586
		  $EndCode
586
		./
587
		./
587
	parametersCS ::= parametersCS ',' VariableDeclarationCS
588
	parametersCS ::= parametersCS ',' VariableDeclarationCS
588
		/.$BeginJava
589
		/.$BeginCode
589
					EList<VariableCS> result = (EList<VariableCS>)$getSym(1);
590
					EList<VariableCS> result = (EList<VariableCS>)$getSym(1);
590
					result.add((VariableCS)$getSym(3));
591
					result.add((VariableCS)$getSym(3));
591
					$setResult(result);
592
					$setResult(result);
592
		  $EndJava
593
		  $EndCode
593
		./
594
		./
594
$End
595
%End
(-)src/org/eclipse/ocl/parser/AbstractOCLParser.java (-5 / +5 lines)
Lines 23-33 Link Here
23
import java.util.HashSet;
23
import java.util.HashSet;
24
import java.util.Set;
24
import java.util.Set;
25
25
26
import lpg.lpgjavaruntime.IToken;
26
import lpg.runtime.IToken;
27
import lpg.lpgjavaruntime.NullExportedSymbolsException;
27
import lpg.runtime.NullExportedSymbolsException;
28
import lpg.lpgjavaruntime.NullTerminalSymbolsException;
28
import lpg.runtime.NullTerminalSymbolsException;
29
import lpg.lpgjavaruntime.UndefinedEofSymbolException;
29
import lpg.runtime.UndefinedEofSymbolException;
30
import lpg.lpgjavaruntime.UnimplementedTerminalsException;
30
import lpg.runtime.UnimplementedTerminalsException;
31
31
32
import org.eclipse.emf.common.util.EList;
32
import org.eclipse.emf.common.util.EList;
33
import org.eclipse.ocl.cst.BooleanLiteralExpCS;
33
import org.eclipse.ocl.cst.BooleanLiteralExpCS;
(-)src/org/eclipse/ocl/parser/OCLParserprs.java (-64 / +131 lines)
Lines 14-23 Link Here
14
*   E.D.Willink - Remove unnecessary warning suppression
14
*   E.D.Willink - Remove unnecessary warning suppression
15
*   E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112
15
*   E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112
16
*   Borland - Bug 242880
16
*   Borland - Bug 242880
17
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
17
*
18
*
18
* </copyright>
19
* </copyright>
19
*
20
*
20
* $Id: OCLParserprs.java,v 1.17 2009/11/09 22:03:45 ewillink Exp $
21
* $Id: EssentialOCL.g,v 1.16 2009/11/09 22:03:57 ewillink Exp $
21
*/
22
*/
22
/**
23
/**
23
* Complete OCL Grammar
24
* Complete OCL Grammar
Lines 32-37 Link Here
32
* Contributors:
33
* Contributors:
33
*   IBM - Initial API and implementation
34
*   IBM - Initial API and implementation
34
*   E.D.Willink - Bug 259818, 285633, 292112
35
*   E.D.Willink - Bug 259818, 285633, 292112
36
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
35
* </copyright>
37
* </copyright>
36
*/
38
*/
37
39
Lines 41-47 Link Here
41
 * @noextend This interface is not intended to be extended by clients.
43
 * @noextend This interface is not intended to be extended by clients.
42
 */
44
 */
43
@SuppressWarnings("nls")
45
@SuppressWarnings("nls")
44
public class OCLParserprs implements lpg.lpgjavaruntime.ParseTable, OCLParsersym {
46
public class OCLParserprs implements lpg.runtime.ParseTable, OCLParsersym {
47
    public final static int ERROR_SYMBOL = 78;
48
    public final int getErrorSymbol() { return ERROR_SYMBOL; }
49
50
    public final static int SCOPE_UBOUND = 44;
51
    public final int getScopeUbound() { return SCOPE_UBOUND; }
52
53
    public final static int SCOPE_SIZE = 45;
54
    public final int getScopeSize() { return SCOPE_SIZE; }
55
56
    public final static int MAX_NAME_LENGTH = 29;
57
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
58
59
    public final static int NUM_STATES = 242;
60
    public final int getNumStates() { return NUM_STATES; }
61
62
    public final static int NT_OFFSET = 78;
63
    public final int getNtOffset() { return NT_OFFSET; }
64
65
    public final static int LA_STATE_OFFSET = 4472;
66
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
67
68
    public final static int MAX_LA = 1;
69
    public final int getMaxLa() { return MAX_LA; }
70
71
    public final static int NUM_RULES = 300;
72
    public final int getNumRules() { return NUM_RULES; }
73
74
    public final static int NUM_NONTERMINALS = 119;
75
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
76
77
    public final static int NUM_SYMBOLS = 197;
78
    public final int getNumSymbols() { return NUM_SYMBOLS; }
79
80
    public final static int SEGMENT_SIZE = 8192;
81
    public final int getSegmentSize() { return SEGMENT_SIZE; }
82
83
    public final static int START_STATE = 3864;
84
    public final int getStartState() { return START_STATE; }
85
86
    public final static int IDENTIFIER_SYMBOL = 6;
87
    public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; }
88
89
    public final static int EOFT_SYMBOL = 75;
90
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
91
92
    public final static int EOLT_SYMBOL = 75;
93
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
94
95
    public final static int ACCEPT_ACTION = 4171;
96
    public final int getAcceptAction() { return ACCEPT_ACTION; }
97
98
    public final static int ERROR_ACTION = 4172;
99
    public final int getErrorAction() { return ERROR_ACTION; }
100
101
    public final static boolean BACKTRACK = false;
102
    public final boolean getBacktrack() { return BACKTRACK; }
103
104
    public final int getStartSymbol() { return lhs(0); }
105
    public final boolean isValidForParser() { return OCLParsersym.isValidForParser; }
106
107
108
    public interface IsNullable {
109
        public final static byte isNullable[] = {0,
110
            0,0,0,0,0,0,0,0,0,0,
111
            0,0,0,0,0,0,0,0,0,0,
112
            0,0,0,0,0,0,0,0,0,0,
113
            0,0,0,0,0,0,0,0,0,0,
114
            0,0,0,0,0,0,0,0,0,0,
115
            0,0,0,0,0,0,0,0,0,0,
116
            0,0,0,0,0,0,0,0,0,0,
117
            0,0,0,0,0,0,0,0,0,0,
118
            0,0,0,0,0,0,0,0,0,0,
119
            0,0,0,0,0,0,0,0,0,0,
120
            0,0,0,0,0,0,0,0,0,0,
121
            0,0,0,0,0,0,0,0,0,0,
122
            0,0,0,0,0,0,0,0,0,0,
123
            0,0,0,0,0,0,0,0,0,0,
124
            0,0,0,0,0,0,0,0,1,0,
125
            0,0,1,1,0,0,0,0,0,0,
126
            0,0,0,0,0,0,0,0,1,0,
127
            1,1,0,0,0,0,0,0,1,0,
128
            1,0,0,1,0,0,0,0,0,0,
129
            1,0,0,0,0,0,0
130
        };
131
    };
132
    public final static byte isNullable[] = IsNullable.isNullable;
133
    public final boolean isNullable(int index) { return isNullable[index] != 0; }
134
135
    public interface ProsthesesIndex {
136
        public final static byte prosthesesIndex[] = {0,
137
            12,9,10,14,16,17,11,28,29,30,
138
            31,32,37,38,39,40,41,42,43,45,
139
            46,47,48,49,50,51,52,53,58,59,
140
            60,85,87,88,89,90,99,82,83,84,
141
            79,80,81,76,77,78,73,74,75,70,
142
            71,72,67,68,69,64,65,66,23,54,
143
            61,62,63,20,6,8,13,24,55,98,
144
            56,15,21,22,57,96,93,27,86,108,
145
            109,110,111,26,35,36,94,95,102,25,
146
            33,34,97,100,101,104,107,113,114,115,
147
            118,119,2,3,4,18,19,44,91,92,
148
            103,105,106,112,116,117,1,5,7
149
        };
150
    };
151
    public final static byte prosthesesIndex[] = ProsthesesIndex.prosthesesIndex;
152
    public final int prosthesesIndex(int index) { return prosthesesIndex[index]; }
45
153
46
    public interface IsKeyword {
154
    public interface IsKeyword {
47
        public final static byte isKeyword[] = {0,
155
        public final static byte isKeyword[] = {0,
Lines 1321-1353 Link Here
1321
1429
1322
    public interface ScopeRhs {
1430
    public interface ScopeRhs {
1323
        public final static char scopeRhs[] = {0,
1431
        public final static char scopeRhs[] = {0,
1324
            172,1,79,14,103,0,12,0,172,1,
1432
            172,1,79,14,103,0,2,0,172,1,
1325
            79,15,103,0,153,1,148,79,12,103,
1433
            79,15,103,0,153,1,148,79,12,103,
1326
            0,187,46,0,44,89,0,137,71,137,
1434
            0,187,46,0,73,137,0,137,71,137,
1327
            70,137,44,0,37,0,137,70,137,44,
1435
            70,137,44,0,72,0,137,70,137,44,
1328
            0,36,89,37,0,137,44,0,35,89,
1436
            0,71,137,72,0,137,44,0,70,137,
1329
            36,89,37,0,137,1,0,117,0,4,
1437
            71,137,72,0,137,1,0,117,0,10,
1330
            126,0,3,126,0,120,0,2,124,0,
1438
            111,0,5,111,0,120,0,4,118,0,
1331
            1,124,0,123,0,9,121,0,8,121,
1439
            9,118,0,123,0,19,121,0,18,121,
1332
            0,6,121,0,5,121,0,126,0,10,
1440
            0,17,121,0,16,121,0,126,0,35,
1333
            118,0,7,118,0,129,0,38,115,0,
1441
            124,0,7,124,0,129,0,39,127,0,
1334
            132,0,39,112,0,135,0,40,109,0,
1442
            132,0,45,130,0,135,0,52,133,0,
1335
            141,0,42,106,0,147,55,79,0,16,
1443
            141,0,56,136,0,147,55,79,0,65,
1336
            0,0,147,55,79,13,103,0,153,1,
1444
            149,0,147,55,79,13,103,0,153,1,
1337
            149,145,11,82,13,103,0,153,1,145,
1445
            149,145,11,82,13,103,0,153,1,145,
1338
            11,82,0,153,1,149,79,0,153,1,
1446
            11,82,0,153,1,149,79,0,153,1,
1339
            149,79,13,103,0,153,1,149,183,13,
1447
            149,79,13,103,0,153,1,149,183,13,
1340
            103,0,147,8,79,1,79,12,103,0,
1448
            103,0,147,8,79,1,79,12,103,0,
1341
            147,8,138,1,79,12,103,0,138,1,
1449
            147,8,138,1,79,12,103,0,138,1,
1342
            79,12,103,0,19,100,12,0,137,1,
1450
            79,12,103,0,8,147,2,0,137,1,
1343
            79,12,103,0,137,38,146,66,162,1,
1451
            79,12,103,0,137,38,146,66,162,1,
1344
            79,12,103,0,146,66,162,1,79,12,
1452
            79,12,103,0,146,66,162,1,79,12,
1345
            103,0,18,89,12,0,137,38,146,1,
1453
            103,0,38,137,2,0,137,38,146,1,
1346
            79,12,103,0,146,1,79,12,103,0,
1454
            79,12,103,0,146,1,79,12,103,0,
1347
            137,38,162,8,142,1,79,12,103,0,
1455
            137,38,162,8,142,1,79,12,103,0,
1348
            137,38,162,8,79,1,79,12,103,0,
1456
            137,38,162,8,79,1,79,12,103,0,
1349
            137,38,162,1,79,12,103,0,186,59,
1457
            137,38,162,1,79,12,103,0,186,59,
1350
            30,0,14,0,169,59,83,0,169,59,
1458
            30,0,60,0,169,59,83,0,169,59,
1351
            80,0,184,1,30,0,150,1,80,0
1459
            80,0,184,1,30,0,150,1,80,0
1352
        };
1460
        };
1353
    };
1461
    };
Lines 1553-1605 Link Here
1553
    public final static String name[] = Name.name;
1661
    public final static String name[] = Name.name;
1554
    public final String name(int index) { return name[index]; }
1662
    public final String name(int index) { return name[index]; }
1555
1663
1556
    public final static int
1557
           ERROR_SYMBOL      = 78,
1558
           SCOPE_UBOUND      = 44,
1559
           SCOPE_SIZE        = 45,
1560
           MAX_NAME_LENGTH   = 29;
1561
1562
    public final int getErrorSymbol() { return ERROR_SYMBOL; }
1563
    public final int getScopeUbound() { return SCOPE_UBOUND; }
1564
    public final int getScopeSize() { return SCOPE_SIZE; }
1565
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
1566
1567
    public final static int
1568
           NUM_STATES        = 242,
1569
           NT_OFFSET         = 78,
1570
           LA_STATE_OFFSET   = 4472,
1571
           MAX_LA            = 1,
1572
           NUM_RULES         = 300,
1573
           NUM_NONTERMINALS  = 119,
1574
           NUM_SYMBOLS       = 197,
1575
           SEGMENT_SIZE      = 8192,
1576
           START_STATE       = 3864,
1577
           IDENTIFIER_SYMBOL = 6,
1578
           EOFT_SYMBOL       = 75,
1579
           EOLT_SYMBOL       = 75,
1580
           ACCEPT_ACTION     = 4171,
1581
           ERROR_ACTION      = 4172;
1582
1583
    public final static boolean BACKTRACK = false;
1584
1585
    public final int getNumStates() { return NUM_STATES; }
1586
    public final int getNtOffset() { return NT_OFFSET; }
1587
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
1588
    public final int getMaxLa() { return MAX_LA; }
1589
    public final int getNumRules() { return NUM_RULES; }
1590
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
1591
    public final int getNumSymbols() { return NUM_SYMBOLS; }
1592
    public final int getSegmentSize() { return SEGMENT_SIZE; }
1593
    public final int getStartState() { return START_STATE; }
1594
    public final int getStartSymbol() { return lhs[0]; }
1595
    public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
1596
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
1597
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
1598
    public final int getAcceptAction() { return ACCEPT_ACTION; }
1599
    public final int getErrorAction() { return ERROR_ACTION; }
1600
    public final boolean isValidForParser() { return isValidForParser; }
1601
    public final boolean getBacktrack() { return BACKTRACK; }
1602
1603
    public final int originalState(int state) {
1664
    public final int originalState(int state) {
1604
        return -baseCheck[state];
1665
        return -baseCheck[state];
1605
    }
1666
    }
Lines 1613-1622 Link Here
1613
        return inSymb[originalState(state)];
1674
        return inSymb[originalState(state)];
1614
    }
1675
    }
1615
1676
1677
    /**
1678
     * assert(! goto_default);
1679
     */
1616
    public final int ntAction(int state, int sym) {
1680
    public final int ntAction(int state, int sym) {
1617
        return baseAction[state + sym];
1681
        return baseAction[state + sym];
1618
    }
1682
    }
1619
1683
1684
    /**
1685
     * assert(! shift_default);
1686
     */
1620
    public final int tAction(int state, int sym) {
1687
    public final int tAction(int state, int sym) {
1621
        int i = baseAction[state],
1688
        int i = baseAction[state],
1622
            k = i + sym;
1689
            k = i + sym;
(-)src/org/eclipse/ocl/parser/OCLKWLexersym.java (-19 / +28 lines)
Lines 12-20 Link Here
12
*   IBM - Initial API and implementation
12
*   IBM - Initial API and implementation
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
14
*   E.D.Willink - Bug 285633, 292112
14
*   E.D.Willink - Bug 285633, 292112
15
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
16
*
15
* </copyright>
17
* </copyright>
16
*
18
*
17
* $Id: OCLKWLexersym.java,v 1.10 2009/11/09 22:00:25 ewillink Exp $
19
*
18
*/
20
*/
19
/**
21
/**
20
* Complete OCL Keyword Lexer
22
* Complete OCL Keyword Lexer
Lines 29-34 Link Here
29
* Contributors:
31
* Contributors:
30
*   IBM - Initial API and implementation
32
*   IBM - Initial API and implementation
31
*   E.D.Willink - Bug 292112
33
*   E.D.Willink - Bug 292112
34
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
35
*
32
* </copyright>
36
* </copyright>
33
*/
37
*/
34
38
Lines 42-47 Link Here
42
public interface OCLKWLexersym {
46
public interface OCLKWLexersym {
43
    public final static int
47
    public final static int
44
      Char_DollarSign = 37,
48
      Char_DollarSign = 37,
49
      Char_Percent = 38,
50
      Char__ = 39,
45
      Char_a = 4,
51
      Char_a = 4,
46
      Char_b = 23,
52
      Char_b = 23,
47
      Char_c = 10,
53
      Char_c = 10,
Lines 51-57 Link Here
51
      Char_g = 12,
57
      Char_g = 12,
52
      Char_h = 24,
58
      Char_h = 24,
53
      Char_i = 6,
59
      Char_i = 6,
54
      Char_j = 38,
60
      Char_j = 40,
55
      Char_k = 17,
61
      Char_k = 17,
56
      Char_l = 2,
62
      Char_l = 2,
57
      Char_m = 18,
63
      Char_m = 18,
Lines 64-102 Link Here
64
      Char_t = 3,
70
      Char_t = 3,
65
      Char_u = 14,
71
      Char_u = 14,
66
      Char_v = 16,
72
      Char_v = 16,
67
      Char_w = 39,
73
      Char_w = 41,
68
      Char_x = 19,
74
      Char_x = 19,
69
      Char_y = 20,
75
      Char_y = 20,
70
      Char_z = 40,
76
      Char_z = 42,
71
      Char_A = 26,
77
      Char_A = 26,
72
      Char_B = 27,
78
      Char_B = 27,
73
      Char_C = 28,
79
      Char_C = 28,
74
      Char_D = 41,
80
      Char_D = 43,
75
      Char_E = 42,
81
      Char_E = 44,
76
      Char_F = 43,
82
      Char_F = 45,
77
      Char_G = 44,
83
      Char_G = 46,
78
      Char_H = 45,
84
      Char_H = 47,
79
      Char_I = 21,
85
      Char_I = 21,
80
      Char_J = 46,
86
      Char_J = 48,
81
      Char_K = 47,
87
      Char_K = 49,
82
      Char_L = 48,
88
      Char_L = 50,
83
      Char_M = 29,
89
      Char_M = 29,
84
      Char_N = 30,
90
      Char_N = 30,
85
      Char_O = 31,
91
      Char_O = 31,
86
      Char_P = 49,
92
      Char_P = 51,
87
      Char_Q = 50,
93
      Char_Q = 52,
88
      Char_R = 32,
94
      Char_R = 32,
89
      Char_S = 22,
95
      Char_S = 22,
90
      Char_T = 33,
96
      Char_T = 33,
91
      Char_U = 34,
97
      Char_U = 34,
92
      Char_V = 35,
98
      Char_V = 35,
93
      Char_W = 51,
99
      Char_W = 53,
94
      Char_X = 52,
100
      Char_X = 54,
95
      Char_Y = 53,
101
      Char_Y = 55,
96
      Char_Z = 54,
102
      Char_Z = 56,
97
      Char_EOF = 36;
103
      Char_EOF = 36;
98
104
99
      public final static String orderedTerminalSymbols[] = {
105
    public final static String orderedTerminalSymbols[] = {
100
                 "",
106
                 "",
101
                 "e",
107
                 "e",
102
                 "l",
108
                 "l",
Lines 135-140 Link Here
135
                 "V",
141
                 "V",
136
                 "EOF",
142
                 "EOF",
137
                 "DollarSign",
143
                 "DollarSign",
144
                 "Percent",
145
                 "_",
138
                 "j",
146
                 "j",
139
                 "w",
147
                 "w",
140
                 "z",
148
                 "z",
Lines 154-158 Link Here
154
                 "Z"
162
                 "Z"
155
             };
163
             };
156
164
165
    public final static int numTokenKinds = orderedTerminalSymbols.length;
157
    public final static boolean isValidForParser = true;
166
    public final static boolean isValidForParser = true;
158
}
167
}
(-)src/org/eclipse/ocl/parser/OCLLexerprs.java (-43 / +104 lines)
Lines 13-21 Link Here
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
14
*   Borland - Bug 242880
14
*   Borland - Bug 242880
15
*   E.D.Willink - Bug 292112
15
*   E.D.Willink - Bug 292112
16
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
17
*
16
* </copyright>
18
* </copyright>
17
*
19
*
18
* $Id: OCLLexerprs.java,v 1.12 2009/11/09 22:01:50 ewillink Exp $
20
* $Id: EssentialOCLLexer.g,v 1.2 2009/11/09 22:01:36 ewillink Exp $
19
*/
21
*/
20
/**
22
/**
21
* Complete OCL Lexer
23
* Complete OCL Lexer
Lines 30-41 Link Here
30
* Contributors:
32
* Contributors:
31
*   IBM - Initial API and implementation
33
*   IBM - Initial API and implementation
32
*   E.D.Willink - Bug 292112, 292594
34
*   E.D.Willink - Bug 292112, 292594
35
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
36
*
33
* </copyright>
37
* </copyright>
34
*/
38
*/
35
39
36
package org.eclipse.ocl.parser;
40
package org.eclipse.ocl.parser;
37
41
38
public class OCLLexerprs implements lpg.lpgjavaruntime.ParseTable, OCLLexersym {
42
public class OCLLexerprs implements lpg.runtime.ParseTable, OCLLexersym {
43
    public final static int ERROR_SYMBOL = 0;
44
    public final int getErrorSymbol() { return ERROR_SYMBOL; }
45
46
    public final static int SCOPE_UBOUND = 0;
47
    public final int getScopeUbound() { return SCOPE_UBOUND; }
48
49
    public final static int SCOPE_SIZE = 0;
50
    public final int getScopeSize() { return SCOPE_SIZE; }
51
52
    public final static int MAX_NAME_LENGTH = 0;
53
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
54
55
    public final static int NUM_STATES = 40;
56
    public final int getNumStates() { return NUM_STATES; }
57
58
    public final static int NT_OFFSET = 103;
59
    public final int getNtOffset() { return NT_OFFSET; }
60
61
    public final static int LA_STATE_OFFSET = 709;
62
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
63
64
    public final static int MAX_LA = 2;
65
    public final int getMaxLa() { return MAX_LA; }
66
67
    public final static int NUM_RULES = 267;
68
    public final int getNumRules() { return NUM_RULES; }
69
70
    public final static int NUM_NONTERMINALS = 35;
71
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
72
73
    public final static int NUM_SYMBOLS = 138;
74
    public final int getNumSymbols() { return NUM_SYMBOLS; }
75
76
    public final static int SEGMENT_SIZE = 8192;
77
    public final int getSegmentSize() { return SEGMENT_SIZE; }
78
79
    public final static int START_STATE = 268;
80
    public final int getStartState() { return START_STATE; }
81
82
    public final static int IDENTIFIER_SYMBOL = 0;
83
    public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; }
84
85
    public final static int EOFT_SYMBOL = 102;
86
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
87
88
    public final static int EOLT_SYMBOL = 104;
89
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
90
91
    public final static int ACCEPT_ACTION = 441;
92
    public final int getAcceptAction() { return ACCEPT_ACTION; }
93
94
    public final static int ERROR_ACTION = 442;
95
    public final int getErrorAction() { return ERROR_ACTION; }
96
97
    public final static boolean BACKTRACK = false;
98
    public final boolean getBacktrack() { return BACKTRACK; }
99
100
    public final int getStartSymbol() { return lhs(0); }
101
    public final boolean isValidForParser() { return OCLLexersym.isValidForParser; }
102
103
104
    public interface IsNullable {
105
        public final static byte isNullable[] = {0,
106
            0,0,0,0,0,0,0,0,0,0,
107
            0,0,0,0,0,0,0,0,0,0,
108
            0,0,0,0,0,0,0,0,0,0,
109
            0,0,0,0,0,0,0,0,0,0,
110
            0,0,0,0,0,0,0,0,0,0,
111
            0,0,0,0,0,0,0,0,0,0,
112
            0,0,0,0,0,0,0,0,0,0,
113
            0,0,0,0,0,0,0,0,0,0,
114
            0,0,0,0,0,0,0,0,0,0,
115
            0,0,0,0,0,0,0,0,0,0,
116
            0,0,0,0,0,0,0,0,0,0,
117
            0,0,0,1,0,0,0,0,0,0,
118
            0,0,0,0,0,0,0,0,0,1,
119
            0,0,0,0,0,0,0,0
120
        };
121
    };
122
    public final static byte isNullable[] = IsNullable.isNullable;
123
    public final boolean isNullable(int index) { return isNullable[index] != 0; }
124
125
    public interface ProsthesesIndex {
126
        public final static byte prosthesesIndex[] = {0,
127
            19,22,23,24,27,32,14,21,29,34,
128
            5,35,7,8,16,17,20,26,28,33,
129
            2,3,4,6,9,10,11,12,13,15,
130
            18,25,30,31,1
131
        };
132
    };
133
    public final static byte prosthesesIndex[] = ProsthesesIndex.prosthesesIndex;
134
    public final int prosthesesIndex(int index) { return prosthesesIndex[index]; }
39
135
40
    public interface IsKeyword {
136
    public interface IsKeyword {
41
        public final static byte isKeyword[] = {0,
137
        public final static byte isKeyword[] = {0,
Lines 417-472 Link Here
417
    public final int scopeState(int index) { return 0;}
513
    public final int scopeState(int index) { return 0;}
418
    public final int inSymb(int index) { return 0;}
514
    public final int inSymb(int index) { return 0;}
419
    public final String name(int index) { return null; }
515
    public final String name(int index) { return null; }
420
    public final int getErrorSymbol() { return 0; }
421
    public final int getScopeUbound() { return 0; }
422
    public final int getScopeSize() { return 0; }
423
    public final int getMaxNameLength() { return 0; }
424
425
    public final static int
426
           NUM_STATES        = 40,
427
           NT_OFFSET         = 103,
428
           LA_STATE_OFFSET   = 709,
429
           MAX_LA            = 2,
430
           NUM_RULES         = 267,
431
           NUM_NONTERMINALS  = 35,
432
           NUM_SYMBOLS       = 138,
433
           SEGMENT_SIZE      = 8192,
434
           START_STATE       = 268,
435
           IDENTIFIER_SYMBOL = 0,
436
           EOFT_SYMBOL       = 102,
437
           EOLT_SYMBOL       = 104,
438
           ACCEPT_ACTION     = 441,
439
           ERROR_ACTION      = 442;
440
441
    public final static boolean BACKTRACK = false;
442
443
    public final int getNumStates() { return NUM_STATES; }
444
    public final int getNtOffset() { return NT_OFFSET; }
445
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
446
    public final int getMaxLa() { return MAX_LA; }
447
    public final int getNumRules() { return NUM_RULES; }
448
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
449
    public final int getNumSymbols() { return NUM_SYMBOLS; }
450
    public final int getSegmentSize() { return SEGMENT_SIZE; }
451
    public final int getStartState() { return START_STATE; }
452
    public final int getStartSymbol() { return lhs[0]; }
453
    public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
454
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
455
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
456
    public final int getAcceptAction() { return ACCEPT_ACTION; }
457
    public final int getErrorAction() { return ERROR_ACTION; }
458
    public final boolean isValidForParser() { return isValidForParser; }
459
    public final boolean getBacktrack() { return BACKTRACK; }
460
461
    public final int originalState(int state) { return 0; }
516
    public final int originalState(int state) { return 0; }
462
    public final int asi(int state) { return 0; }
517
    public final int asi(int state) { return 0; }
463
    public final int nasi(int state) { return 0; }
518
    public final int nasi(int state) { return 0; }
464
    public final int inSymbol(int state) { return 0; }
519
    public final int inSymbol(int state) { return 0; }
465
520
521
    /**
522
     * assert(! goto_default);
523
     */
466
    public final int ntAction(int state, int sym) {
524
    public final int ntAction(int state, int sym) {
467
        return baseAction[state + sym];
525
        return baseAction[state + sym];
468
    }
526
    }
469
527
528
    /**
529
     * assert(! shift_default);
530
     */
470
    public final int tAction(int state, int sym) {
531
    public final int tAction(int state, int sym) {
471
        int i = baseAction[state],
532
        int i = baseAction[state],
472
            k = i + sym;
533
            k = i + sym;
(-)src/org/eclipse/ocl/parser/OCLParsersym.java (-2 / +5 lines)
Lines 14-23 Link Here
14
*   E.D.Willink - Remove unnecessary warning suppression
14
*   E.D.Willink - Remove unnecessary warning suppression
15
*   E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112
15
*   E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112
16
*   Borland - Bug 242880
16
*   Borland - Bug 242880
17
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
17
*
18
*
18
* </copyright>
19
* </copyright>
19
*
20
*
20
* $Id: OCLParsersym.java,v 1.16 2009/11/09 22:03:45 ewillink Exp $
21
* $Id: EssentialOCL.g,v 1.16 2009/11/09 22:03:57 ewillink Exp $
21
*/
22
*/
22
/**
23
/**
23
* Complete OCL Grammar
24
* Complete OCL Grammar
Lines 32-37 Link Here
32
* Contributors:
33
* Contributors:
33
*   IBM - Initial API and implementation
34
*   IBM - Initial API and implementation
34
*   E.D.Willink - Bug 259818, 285633, 292112
35
*   E.D.Willink - Bug 259818, 285633, 292112
36
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
35
* </copyright>
37
* </copyright>
36
*/
38
*/
37
39
Lines 128-134 Link Here
128
      TK_MULTI_LINE_COMMENT = 77,
130
      TK_MULTI_LINE_COMMENT = 77,
129
      TK_ERROR_TOKEN = 78;
131
      TK_ERROR_TOKEN = 78;
130
132
131
      public final static String orderedTerminalSymbols[] = {
133
    public final static String orderedTerminalSymbols[] = {
132
                 "",
134
                 "",
133
                 "LPAREN",
135
                 "LPAREN",
134
                 "RPAREN",
136
                 "RPAREN",
Lines 210-214 Link Here
210
                 "ERROR_TOKEN"
212
                 "ERROR_TOKEN"
211
             };
213
             };
212
214
215
    public final static int numTokenKinds = orderedTerminalSymbols.length;
213
    public final static boolean isValidForParser = true;
216
    public final static boolean isValidForParser = true;
214
}
217
}
(-)src/org/eclipse/ocl/parser/OCLLexersym.java (-2 / +7 lines)
Lines 13-21 Link Here
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
14
*   Borland - Bug 242880
14
*   Borland - Bug 242880
15
*   E.D.Willink - Bug 292112
15
*   E.D.Willink - Bug 292112
16
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
17
*
16
* </copyright>
18
* </copyright>
17
*
19
*
18
* $Id: OCLLexersym.java,v 1.11 2009/11/09 22:01:50 ewillink Exp $
20
* $Id: EssentialOCLLexer.g,v 1.2 2009/11/09 22:01:36 ewillink Exp $
19
*/
21
*/
20
/**
22
/**
21
* Complete OCL Lexer
23
* Complete OCL Lexer
Lines 30-35 Link Here
30
* Contributors:
32
* Contributors:
31
*   IBM - Initial API and implementation
33
*   IBM - Initial API and implementation
32
*   E.D.Willink - Bug 292112, 292594
34
*   E.D.Willink - Bug 292112, 292594
35
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
36
*
33
* </copyright>
37
* </copyright>
34
*/
38
*/
35
39
Lines 146-152 Link Here
146
      Char_Equal = 16,
150
      Char_Equal = 16,
147
      Char_EOF = 102;
151
      Char_EOF = 102;
148
152
149
      public final static String orderedTerminalSymbols[] = {
153
    public final static String orderedTerminalSymbols[] = {
150
                 "",
154
                 "",
151
                 "0",
155
                 "0",
152
                 "1",
156
                 "1",
Lines 253-257 Link Here
253
                 "CtlCharNotWS"
257
                 "CtlCharNotWS"
254
             };
258
             };
255
259
260
    public final static int numTokenKinds = orderedTerminalSymbols.length;
256
    public final static boolean isValidForParser = true;
261
    public final static boolean isValidForParser = true;
257
}
262
}
(-)src/org/eclipse/ocl/parser/OCLLexer.java (-44 / +48 lines)
Lines 13-21 Link Here
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
14
*   Borland - Bug 242880
14
*   Borland - Bug 242880
15
*   E.D.Willink - Bug 292112
15
*   E.D.Willink - Bug 292112
16
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
17
*
16
* </copyright>
18
* </copyright>
17
*
19
*
18
* $Id: OCLLexer.java,v 1.13 2009/11/09 22:01:50 ewillink Exp $
20
* $Id: EssentialOCLLexer.g,v 1.2 2009/11/09 22:01:36 ewillink Exp $
19
*/
21
*/
20
/**
22
/**
21
* Complete OCL Lexer
23
* Complete OCL Lexer
Lines 30-41 Link Here
30
* Contributors:
32
* Contributors:
31
*   IBM - Initial API and implementation
33
*   IBM - Initial API and implementation
32
*   E.D.Willink - Bug 292112, 292594
34
*   E.D.Willink - Bug 292112, 292594
35
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
36
*
33
* </copyright>
37
* </copyright>
34
*/
38
*/
35
39
36
package org.eclipse.ocl.parser;
40
package org.eclipse.ocl.parser;
37
41
38
import lpg.lpgjavaruntime.*;
42
import lpg.runtime.*;
39
import org.eclipse.ocl.lpg.AbstractLexer;
43
import org.eclipse.ocl.lpg.AbstractLexer;
40
import org.eclipse.ocl.lpg.AbstractParser;
44
import org.eclipse.ocl.lpg.AbstractParser;
41
import org.eclipse.ocl.Environment;
45
import org.eclipse.ocl.Environment;
Lines 68-74 Link Here
68
    
72
    
69
	public OCLLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] chars) {
73
	public OCLLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] chars) {
70
		this(environment, chars, "OCL", ECLIPSE_TAB_VALUE);
74
		this(environment, chars, "OCL", ECLIPSE_TAB_VALUE);
71
		kwLexer = new OCLKWLexer(getInputChars(), TK_IDENTIFIER);
75
		kwLexer = new OCLKWLexer(getInputChars(), OCLParsersym.TK_IDENTIFIER);
72
	}
76
	}
73
77
74
    public OCLLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] input_chars, String filename, int tab)  {
78
    public OCLLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] input_chars, String filename, int tab)  {
Lines 97-103 Link Here
97
    {
101
    {
98
        super.initialize(content, filename);
102
        super.initialize(content, filename);
99
        if (kwLexer == null)
103
        if (kwLexer == null)
100
             kwLexer = new OCLKWLexer(getInputChars(), TK_IDENTIFIER);
104
             kwLexer = new OCLKWLexer(getInputChars(), OCLParsersym.TK_IDENTIFIER);
101
        else
105
        else
102
             kwLexer.setInputChars(getInputChars());
106
             kwLexer.setInputChars(getInputChars());
103
    }
107
    }
Lines 108-114 Link Here
108
    @Override
112
    @Override
109
    public void setInputChars(char[] inputChars) {
113
    public void setInputChars(char[] inputChars) {
110
		super.setInputChars(inputChars);
114
		super.setInputChars(inputChars);
111
		kwLexer = new OCLKWLexer(getInputChars(), TK_IDENTIFIER);
115
		kwLexer = new OCLKWLexer(getInputChars(), OCLParsersym.TK_IDENTIFIER);
112
	}
116
	}
113
    
117
    
114
    @Override
118
    @Override
Lines 124-135 Link Here
124
        lexParser.parseCharacters(monitor);  // Lex the input characters
128
        lexParser.parseCharacters(monitor);  // Lex the input characters
125
            
129
            
126
        int i = getStreamIndex();
130
        int i = getStreamIndex();
127
        parser.makeToken(i, i, TK_EOF_TOKEN); // and end with the end of file token
131
        parser.makeToken(i, i, OCLParsersym.TK_EOF_TOKEN); // and end with the end of file token
128
        parser.setStreamLength(parser.getSize());
132
        parser.setStreamLength(parser.getSize());
129
            
133
            
130
        return;
134
        return;
131
    }
135
    }
132
    
136
        
133
    final void makeToken(int kind)
137
    final void makeToken(int kind)
134
    {
138
    {
135
        int startOffset = getLeftSpan(),
139
        int startOffset = getLeftSpan(),
Lines 142-148 Link Here
142
    {
146
    {
143
        int startOffset = getLeftSpan(),
147
        int startOffset = getLeftSpan(),
144
            endOffset = getRightSpan();
148
            endOffset = getRightSpan();
145
        super.getPrsStream().makeAdjunct(startOffset, endOffset, kind);
149
        super.getIPrsStream().makeAdjunct(startOffset, endOffset, kind);
146
    }
150
    }
147
151
148
    final void skipToken()
152
    final void skipToken()
Lines 333-339 Link Here
333
            // Rule 2:  Token ::= " SLNotDQ "
337
            // Rule 2:  Token ::= " SLNotDQ "
334
            //
338
            //
335
            case 2: { 
339
            case 2: { 
336
				makeToken(TK_IDENTIFIER);
340
				makeToken(OCLParsersym.TK_IDENTIFIER);
337
	            break;
341
	            break;
338
            }
342
            }
339
	 
343
	 
Lines 341-347 Link Here
341
            // Rule 3:  Token ::= SingleQuote SLNotSQOpt SingleQuote
345
            // Rule 3:  Token ::= SingleQuote SLNotSQOpt SingleQuote
342
            //
346
            //
343
            case 3: { 
347
            case 3: { 
344
				makeToken(TK_STRING_LITERAL);
348
				makeToken(OCLParsersym.TK_STRING_LITERAL);
345
	            break;
349
	            break;
346
            }
350
            }
347
	 
351
	 
Lines 349-355 Link Here
349
            // Rule 4:  Token ::= Acute SLNotSQOpt Acute
353
            // Rule 4:  Token ::= Acute SLNotSQOpt Acute
350
            //
354
            //
351
            case 4: { 
355
            case 4: { 
352
				makeToken(TK_STRING_LITERAL);
356
				makeToken(OCLParsersym.TK_STRING_LITERAL);
353
	            break;
357
	            break;
354
            }
358
            }
355
	 
359
	 
Lines 357-363 Link Here
357
            // Rule 5:  Token ::= BackQuote SLNotSQOpt Acute
361
            // Rule 5:  Token ::= BackQuote SLNotSQOpt Acute
358
            //
362
            //
359
            case 5: { 
363
            case 5: { 
360
				makeToken(TK_STRING_LITERAL);
364
				makeToken(OCLParsersym.TK_STRING_LITERAL);
361
	            break;
365
	            break;
362
            }
366
            }
363
	 
367
	 
Lines 383-389 Link Here
383
            // Rule 9:  Token ::= RealLiteral
387
            // Rule 9:  Token ::= RealLiteral
384
            //
388
            //
385
            case 9: { 
389
            case 9: { 
386
				makeToken(TK_REAL_LITERAL);
390
				makeToken(OCLParsersym.TK_REAL_LITERAL);
387
	            break;
391
	            break;
388
            }
392
            }
389
	 
393
	 
Lines 391-397 Link Here
391
            // Rule 10:  Token ::= SLC
395
            // Rule 10:  Token ::= SLC
392
            //
396
            //
393
            case 10: { 
397
            case 10: { 
394
				makeComment(TK_SINGLE_LINE_COMMENT);
398
				makeComment(OCLParsersym.TK_SINGLE_LINE_COMMENT);
395
	            break;
399
	            break;
396
            }
400
            }
397
	 
401
	 
Lines 399-405 Link Here
399
            // Rule 11:  Token ::= / * Inside Stars /
403
            // Rule 11:  Token ::= / * Inside Stars /
400
            //
404
            //
401
            case 11: { 
405
            case 11: { 
402
                makeComment(TK_MULTI_LINE_COMMENT);
406
                makeComment(OCLParsersym.TK_MULTI_LINE_COMMENT);
403
                break;
407
                break;
404
            }
408
            }
405
     
409
     
Lines 415-421 Link Here
415
            // Rule 13:  Token ::= +
419
            // Rule 13:  Token ::= +
416
            //
420
            //
417
            case 13: { 
421
            case 13: { 
418
				makeToken(TK_PLUS);
422
				makeToken(OCLParsersym.TK_PLUS);
419
	            break;
423
	            break;
420
            }
424
            }
421
	 
425
	 
Lines 423-429 Link Here
423
            // Rule 14:  Token ::= -
427
            // Rule 14:  Token ::= -
424
            //
428
            //
425
            case 14: { 
429
            case 14: { 
426
				makeToken(TK_MINUS);
430
				makeToken(OCLParsersym.TK_MINUS);
427
	            break;
431
	            break;
428
            }
432
            }
429
	 
433
	 
Lines 431-437 Link Here
431
            // Rule 15:  Token ::= *
435
            // Rule 15:  Token ::= *
432
            //
436
            //
433
            case 15: { 
437
            case 15: { 
434
				makeToken(TK_MULTIPLY);
438
				makeToken(OCLParsersym.TK_MULTIPLY);
435
	            break;
439
	            break;
436
            }
440
            }
437
	 
441
	 
Lines 439-445 Link Here
439
            // Rule 16:  Token ::= /
443
            // Rule 16:  Token ::= /
440
            //
444
            //
441
            case 16: { 
445
            case 16: { 
442
				makeToken(TK_DIVIDE);
446
				makeToken(OCLParsersym.TK_DIVIDE);
443
	            break;
447
	            break;
444
            }
448
            }
445
	 
449
	 
Lines 447-453 Link Here
447
            // Rule 17:  Token ::= (
451
            // Rule 17:  Token ::= (
448
            //
452
            //
449
            case 17: { 
453
            case 17: { 
450
				makeToken(TK_LPAREN);
454
				makeToken(OCLParsersym.TK_LPAREN);
451
	            break;
455
	            break;
452
            }
456
            }
453
	 
457
	 
Lines 455-461 Link Here
455
            // Rule 18:  Token ::= )
459
            // Rule 18:  Token ::= )
456
            //
460
            //
457
            case 18: { 
461
            case 18: { 
458
				makeToken(TK_RPAREN);
462
				makeToken(OCLParsersym.TK_RPAREN);
459
	            break;
463
	            break;
460
            }
464
            }
461
	 
465
	 
Lines 463-469 Link Here
463
            // Rule 19:  Token ::= >
467
            // Rule 19:  Token ::= >
464
            //
468
            //
465
            case 19: { 
469
            case 19: { 
466
				makeToken(TK_GREATER);
470
				makeToken(OCLParsersym.TK_GREATER);
467
	            break;
471
	            break;
468
            }
472
            }
469
	 
473
	 
Lines 471-477 Link Here
471
            // Rule 20:  Token ::= <
475
            // Rule 20:  Token ::= <
472
            //
476
            //
473
            case 20: { 
477
            case 20: { 
474
				makeToken(TK_LESS);
478
				makeToken(OCLParsersym.TK_LESS);
475
	            break;
479
	            break;
476
            }
480
            }
477
	 
481
	 
Lines 479-485 Link Here
479
            // Rule 21:  Token ::= =
483
            // Rule 21:  Token ::= =
480
            //
484
            //
481
            case 21: { 
485
            case 21: { 
482
				makeToken(TK_EQUAL);
486
				makeToken(OCLParsersym.TK_EQUAL);
483
	            break;
487
	            break;
484
            }
488
            }
485
	 
489
	 
Lines 487-493 Link Here
487
            // Rule 22:  Token ::= > =
491
            // Rule 22:  Token ::= > =
488
            //
492
            //
489
            case 22: { 
493
            case 22: { 
490
				makeToken(TK_GREATER_EQUAL);
494
				makeToken(OCLParsersym.TK_GREATER_EQUAL);
491
	            break;
495
	            break;
492
            }
496
            }
493
	 
497
	 
Lines 495-501 Link Here
495
            // Rule 23:  Token ::= < =
499
            // Rule 23:  Token ::= < =
496
            //
500
            //
497
            case 23: { 
501
            case 23: { 
498
				makeToken(TK_LESS_EQUAL);
502
				makeToken(OCLParsersym.TK_LESS_EQUAL);
499
	            break;
503
	            break;
500
            }
504
            }
501
	 
505
	 
Lines 503-509 Link Here
503
            // Rule 24:  Token ::= < >
507
            // Rule 24:  Token ::= < >
504
            //
508
            //
505
            case 24: { 
509
            case 24: { 
506
				makeToken(TK_NOT_EQUAL);
510
				makeToken(OCLParsersym.TK_NOT_EQUAL);
507
	            break;
511
	            break;
508
            }
512
            }
509
	 
513
	 
Lines 511-517 Link Here
511
            // Rule 25:  Token ::= [
515
            // Rule 25:  Token ::= [
512
            //
516
            //
513
            case 25: { 
517
            case 25: { 
514
				makeToken(TK_LBRACKET);
518
				makeToken(OCLParsersym.TK_LBRACKET);
515
	            break;
519
	            break;
516
            }
520
            }
517
	 
521
	 
Lines 519-525 Link Here
519
            // Rule 26:  Token ::= ]
523
            // Rule 26:  Token ::= ]
520
            //
524
            //
521
            case 26: { 
525
            case 26: { 
522
				makeToken(TK_RBRACKET);
526
				makeToken(OCLParsersym.TK_RBRACKET);
523
	            break;
527
	            break;
524
            }
528
            }
525
	 
529
	 
Lines 527-533 Link Here
527
            // Rule 27:  Token ::= {
531
            // Rule 27:  Token ::= {
528
            //
532
            //
529
            case 27: { 
533
            case 27: { 
530
				makeToken(TK_LBRACE);
534
				makeToken(OCLParsersym.TK_LBRACE);
531
	            break;
535
	            break;
532
            }
536
            }
533
	 
537
	 
Lines 535-541 Link Here
535
            // Rule 28:  Token ::= }
539
            // Rule 28:  Token ::= }
536
            //
540
            //
537
            case 28: { 
541
            case 28: { 
538
				makeToken(TK_RBRACE);
542
				makeToken(OCLParsersym.TK_RBRACE);
539
	            break;
543
	            break;
540
            }
544
            }
541
	 
545
	 
Lines 543-549 Link Here
543
            // Rule 29:  Token ::= - >
547
            // Rule 29:  Token ::= - >
544
            //
548
            //
545
            case 29: { 
549
            case 29: { 
546
				makeToken(TK_ARROW);
550
				makeToken(OCLParsersym.TK_ARROW);
547
	            break;
551
	            break;
548
            }
552
            }
549
	 
553
	 
Lines 551-557 Link Here
551
            // Rule 30:  Token ::= |
555
            // Rule 30:  Token ::= |
552
            //
556
            //
553
            case 30: { 
557
            case 30: { 
554
				makeToken(TK_BAR);
558
				makeToken(OCLParsersym.TK_BAR);
555
	            break;
559
	            break;
556
            }
560
            }
557
	 
561
	 
Lines 559-565 Link Here
559
            // Rule 31:  Token ::= ,
563
            // Rule 31:  Token ::= ,
560
            //
564
            //
561
            case 31: { 
565
            case 31: { 
562
				makeToken(TK_COMMA);
566
				makeToken(OCLParsersym.TK_COMMA);
563
	            break;
567
	            break;
564
            }
568
            }
565
	 
569
	 
Lines 567-573 Link Here
567
            // Rule 32:  Token ::= :
571
            // Rule 32:  Token ::= :
568
            //
572
            //
569
            case 32: { 
573
            case 32: { 
570
				makeToken(TK_COLON);
574
				makeToken(OCLParsersym.TK_COLON);
571
	            break;
575
	            break;
572
            }
576
            }
573
	 
577
	 
Lines 575-581 Link Here
575
            // Rule 33:  Token ::= : :
579
            // Rule 33:  Token ::= : :
576
            //
580
            //
577
            case 33: { 
581
            case 33: { 
578
				makeToken(TK_COLONCOLON);
582
				makeToken(OCLParsersym.TK_COLONCOLON);
579
	            break;
583
	            break;
580
            }
584
            }
581
	 
585
	 
Lines 583-589 Link Here
583
            // Rule 34:  Token ::= ;
587
            // Rule 34:  Token ::= ;
584
            //
588
            //
585
            case 34: { 
589
            case 34: { 
586
				makeToken(TK_SEMICOLON);
590
				makeToken(OCLParsersym.TK_SEMICOLON);
587
	            break;
591
	            break;
588
            }
592
            }
589
	 
593
	 
Lines 597-603 Link Here
597
            // Rule 36:  DotToken ::= .
601
            // Rule 36:  DotToken ::= .
598
            //
602
            //
599
            case 36: { 
603
            case 36: { 
600
				makeToken(TK_DOT);
604
				makeToken(OCLParsersym.TK_DOT);
601
	            break;
605
	            break;
602
            }
606
            }
603
	 
607
	 
Lines 611-617 Link Here
611
            // Rule 38:  DotDotToken ::= . .
615
            // Rule 38:  DotDotToken ::= . .
612
            //
616
            //
613
            case 38: { 
617
            case 38: { 
614
				makeToken(TK_DOTDOT);
618
				makeToken(OCLParsersym.TK_DOTDOT);
615
	            break;
619
	            break;
616
            }
620
            }
617
	 
621
	 
Lines 619-625 Link Here
619
            // Rule 39:  IntegerLiteral ::= Integer
623
            // Rule 39:  IntegerLiteral ::= Integer
620
            //
624
            //
621
            case 39: { 
625
            case 39: { 
622
				makeToken(TK_INTEGER_LITERAL);
626
				makeToken(OCLParsersym.TK_INTEGER_LITERAL);
623
	            break;
627
	            break;
624
            }
628
            }
625
	 
629
	 
Lines 627-633 Link Here
627
            // Rule 264:  Token ::= @
631
            // Rule 264:  Token ::= @
628
            //
632
            //
629
            case 264: { 
633
            case 264: { 
630
				makeToken(TK_AT);
634
				makeToken(OCLParsersym.TK_AT);
631
	            break;
635
	            break;
632
            }
636
            }
633
	 
637
	 
Lines 635-641 Link Here
635
            // Rule 265:  Token ::= ^
639
            // Rule 265:  Token ::= ^
636
            //
640
            //
637
            case 265: { 
641
            case 265: { 
638
				makeToken(TK_CARET);
642
				makeToken(OCLParsersym.TK_CARET);
639
	            break;
643
	            break;
640
            }
644
            }
641
	 
645
	 
Lines 643-649 Link Here
643
            // Rule 266:  Token ::= ^ ^
647
            // Rule 266:  Token ::= ^ ^
644
            //
648
            //
645
            case 266: { 
649
            case 266: { 
646
				makeToken(TK_CARETCARET);
650
				makeToken(OCLParsersym.TK_CARETCARET);
647
	            break;
651
	            break;
648
            }
652
            }
649
	 
653
	 
Lines 651-657 Link Here
651
            // Rule 267:  Token ::= ?
655
            // Rule 267:  Token ::= ?
652
            //
656
            //
653
            case 267: { 
657
            case 267: { 
654
				makeToken(TK_QUESTIONMARK);
658
				makeToken(OCLParsersym.TK_QUESTIONMARK);
655
	            break;
659
	            break;
656
            }
660
            }
657
	
661
	
(-)src/org/eclipse/ocl/lpg/AbstractLexer.java (-8 / +13 lines)
Lines 23-31 Link Here
23
import java.io.IOException;
23
import java.io.IOException;
24
import java.io.Reader;
24
import java.io.Reader;
25
25
26
import lpg.lpgjavaruntime.LpgLexStream;
26
import lpg.runtime.LpgLexStream;
27
import lpg.lpgjavaruntime.Monitor;
27
import lpg.runtime.Monitor;
28
import lpg.lpgjavaruntime.RuleAction;
28
import lpg.runtime.RuleAction;
29
29
30
30
31
/**
31
/**
Lines 119-139 Link Here
119
	}
119
	}
120
	
120
	
121
	public abstract void lexToTokens(Monitor monitor, AbstractParser parser);
121
	public abstract void lexToTokens(Monitor monitor, AbstractParser parser);
122
122
	
123
	/**
123
	/**
124
	 * Errors generated within the lexer are redirected to the error handler if there is one.
124
	 * Errors generated within the lexer are redirected to the error handler if there is one.
125
	 * 
125
	 * 
126
	 * Note that other variants of reportError either feed this one, are fed from a default implementation
126
	 * Note that other variants of reportLexicalError and reportError either feed this one, are fed from a default implementation
127
	 * of this one or originate in the parser, where a ParserErrorHandler can intercept them.
127
	 * of this one or originate in the parser, where a ParserErrorHandler can intercept them.
128
	 * @since 3.0
128
	 */
129
	 */
129
	@Override public void reportError(int leftToken, int rightToken) {
130
	@Override
131
	public void reportLexicalError(int errorCode, int leftLoc, int rightLoc,
132
			int errorLeftLoc, int errorRightLoc, String[] errorInfo) {
130
		BasicEnvironment environment = getEnvironment();
133
		BasicEnvironment environment = getEnvironment();
131
		if (environment != null)
134
		if (environment != null)
132
			environment.lexerError(computeErrorCode(leftToken, rightToken), leftToken, rightToken);
135
			environment.lexerError(errorCode, leftLoc, rightLoc);
133
		else
136
		else
134
			super.reportError(leftToken, rightToken);
137
			super.reportLexicalError(errorCode, leftLoc, rightLoc, errorLeftLoc,
138
			errorRightLoc, errorInfo);
135
	}
139
	}
136
140
141
137
    /**
142
    /**
138
	 * Define the input text as a given array of characters.
143
	 * Define the input text as a given array of characters.
139
     * @param buffer the characters
144
     * @param buffer the characters
(-)src/org/eclipse/ocl/lpg/AbstractBasicEnvironment.java (-2 / +2 lines)
Lines 25-32 Link Here
25
import java.util.List;
25
import java.util.List;
26
import java.util.Map;
26
import java.util.Map;
27
27
28
import lpg.lpgjavaruntime.IToken;
28
import lpg.runtime.IToken;
29
import lpg.lpgjavaruntime.ParseErrorCodes;
29
import lpg.runtime.ParseErrorCodes;
30
30
31
import org.eclipse.ocl.cst.CSTNode;
31
import org.eclipse.ocl.cst.CSTNode;
32
import org.eclipse.ocl.internal.OCLDebugOptions;
32
import org.eclipse.ocl.internal.OCLDebugOptions;
(-)src/org/eclipse/ocl/lpg/AbstractParser.java (-36 / +31 lines)
Lines 22-34 Link Here
22
import java.text.StringCharacterIterator;
22
import java.text.StringCharacterIterator;
23
import java.util.ArrayList;
23
import java.util.ArrayList;
24
24
25
import lpg.lpgjavaruntime.ErrorToken;
25
import lpg.runtime.ErrorToken;
26
import lpg.lpgjavaruntime.IToken;
26
import lpg.runtime.IToken;
27
import lpg.lpgjavaruntime.LexStream;
27
import lpg.runtime.LexStream;
28
import lpg.lpgjavaruntime.Monitor;
28
import lpg.runtime.Monitor;
29
import lpg.lpgjavaruntime.ParseErrorCodes;
29
import lpg.runtime.ParseErrorCodes;
30
import lpg.lpgjavaruntime.PrsStream;
30
import lpg.runtime.PrsStream;
31
import lpg.lpgjavaruntime.Token;
32
31
33
import org.eclipse.ocl.cst.CSTNode;
32
import org.eclipse.ocl.cst.CSTNode;
34
import org.eclipse.ocl.internal.l10n.OCLMessages;
33
import org.eclipse.ocl.internal.l10n.OCLMessages;
Lines 143-149 Link Here
143
	}
142
	}
144
143
145
	public AbstractLexer getLexer() {
144
	public AbstractLexer getLexer() {
146
		return (AbstractLexer) super.getLexStream();
145
		return (AbstractLexer) super.getILexStream();
147
	}
146
	}
148
147
149
	/**
148
	/**
Lines 189-201 Link Here
189
		// the calling program (a parser driver) to pass to us the proper kind
188
		// the calling program (a parser driver) to pass to us the proper kind
190
		// that it wants for an error token.
189
		// that it wants for an error token.
191
		//
190
		//
192
		Token token = new ErrorToken(getIToken(firsttok), getIToken(lasttok),
191
		IToken token = new ErrorToken(getIToken(firsttok), getIToken(lasttok),
193
			getIToken(errortok), getStartOffset(firsttok),
192
			getIToken(errortok), getStartOffset(firsttok),
194
			getEndOffset(lasttok), kind) {
193
			getEndOffset(lasttok), kind) {
195
194
196
			@Override
195
			@Override
197
			public String toString() {
196
			public String toString() {
198
				if (getPrsStream() == null) {
197
				if (getIPrsStream() == null) {
199
					return "<toString>"; //$NON-NLS-1$
198
					return "<toString>"; //$NON-NLS-1$
200
				}
199
				}
201
				int startOffset = getStartOffset();
200
				int startOffset = getStartOffset();
Lines 204-213 Link Here
204
					length = -length - 1;
203
					length = -length - 1;
205
					startOffset = getEndOffset();
204
					startOffset = getEndOffset();
206
				}
205
				}
207
				if ((startOffset + length) > getPrsStream().getInputChars().length) {
206
				if ((startOffset + length) > getIPrsStream().getInputChars().length) {
208
					return String.valueOf(IToken.EOF);
207
					return String.valueOf(IToken.EOF);
209
				}
208
				}
210
				return new String(getPrsStream().getInputChars(), startOffset,
209
				return new String(getIPrsStream().getInputChars(), startOffset,
211
					length);
210
					length);
212
			}
211
			}
213
212
Lines 225-244 Link Here
225
	public abstract CSTNode parseTokensToCST(Monitor monitor,
224
	public abstract CSTNode parseTokensToCST(Monitor monitor,
226
			int error_repair_count);
225
			int error_repair_count);
227
226
228
	@Override
227
	/**
229
	public void reportError(int errorCode, String locationInfo, int leftToken,
228
	 * 
230
			int rightToken, String tokenText) {
229
	 * @since 3.0
231
		BasicEnvironment environment = getEnvironment();
230
	 */
232
		if (environment == null) {
231
	@Override 
233
			super.reportError(errorCode, locationInfo, leftToken, rightToken,
232
	public void reportError(int errorCode, int leftToken, int errorToken, 
234
				tokenText);
233
			int rightToken, String[] errorInfo) { 
235
		} else {
234
		BasicEnvironment environment = getEnvironment(); 
236
			if (errorCode == DELETION_CODE || errorCode == MISPLACED_CODE) {
235
		if (environment == null) { 
237
				tokenText = ""; //$NON-NLS-1$
236
			super.reportError(errorCode, leftToken, errorToken, rightToken, errorInfo); 
238
			}
237
		} else {			 
239
			environment
238
			// TODO Revise this. BasicEnvironment.parserError doesn't have a String[] argument
240
				.parserError(errorCode, leftToken, rightToken, tokenText);
239
			String tokenText = errorInfo.length > 0 ? errorInfo[0] : ""; //$NON-NLS-1$
241
		}
240
			if (errorCode == PrsStream.DELETION_CODE || errorCode == PrsStream.MISPLACED_CODE) {  
241
				tokenText = ""; //$NON-NLS-1$  
242
			}  
243
			environment.parserError(errorCode, leftToken, rightToken, tokenText); 
244
		} 
242
	}
245
	}
243
246
244
	/**
247
	/**
Lines 255-272 Link Here
255
		int firsttok = super.getFirstRealToken(error_token);
258
		int firsttok = super.getFirstRealToken(error_token);
256
		int lasttok = super.getLastRealToken(error_token);
259
		int lasttok = super.getLastRealToken(error_token);
257
		if (firsttok > lasttok) {
260
		if (firsttok > lasttok) {
258
			String location = super.getFileName() + ':'
261
			reportError(ParseErrorCodes.INSERTION_CODE, lasttok,
259
				+ super.getEndLine(lasttok) + ':' + super.getEndColumn(lasttok)
260
				+ ": "; //$NON-NLS-1$
261
			reportError(ParseErrorCodes.INSERTION_CODE, location, lasttok,
262
				lasttok, msg);
262
				lasttok, msg);
263
		} else {
263
		} else {
264
			String location = super.getFileName() + ':'
264
			reportError(ParseErrorCodes.SUBSTITUTION_CODE, firsttok,
265
				+ super.getLine(error_token) + ':'
266
				+ super.getColumn(error_token) + ':'
267
				+ super.getEndLine(error_token) + ':'
268
				+ super.getEndColumn(error_token) + ": "; //$NON-NLS-1$
269
			reportError(ParseErrorCodes.SUBSTITUTION_CODE, location, firsttok,
270
				lasttok, msg);
265
				lasttok, msg);
271
		}
266
		}
272
	}
267
	}
(-)src/org/eclipse/ocl/lpg/AbstractProblemHandler.java (-1 / +1 lines)
Lines 17-23 Link Here
17
 */
17
 */
18
package org.eclipse.ocl.lpg;
18
package org.eclipse.ocl.lpg;
19
19
20
import lpg.lpgjavaruntime.ParseErrorCodes;
20
import lpg.runtime.ParseErrorCodes;
21
21
22
import org.eclipse.emf.common.util.Monitor;
22
import org.eclipse.emf.common.util.Monitor;
23
import org.eclipse.ocl.internal.l10n.OCLMessages;
23
import org.eclipse.ocl.internal.l10n.OCLMessages;
(-).settings/.api_filters (-3 / +506 lines)
Lines 1-8 Link Here
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
<component id="org.eclipse.ocl" version="2">
2
<component id="org.eclipse.ocl" version="2">
3
    <resource path="src/org/eclipse/ocl/cst/CSTNode.java" type="org.eclipse.ocl.cst.CSTNode">
4
        <filter id="1209008130">
5
            <message_arguments>
6
                <message_argument value="1.3"/>
7
                <message_argument value="3.0"/>
8
                <message_argument value="getStartToken()"/>
9
            </message_arguments>
10
        </filter>
11
        <filter id="1209008130">
12
            <message_arguments>
13
                <message_argument value="1.3"/>
14
                <message_argument value="3.0"/>
15
                <message_argument value="getEndToken()"/>
16
            </message_arguments>
17
        </filter>
18
        <filter id="1209008130">
19
            <message_arguments>
20
                <message_argument value="1.3"/>
21
                <message_argument value="3.0"/>
22
                <message_argument value="setEndToken(IToken)"/>
23
            </message_arguments>
24
        </filter>
25
        <filter id="1209008130">
26
            <message_arguments>
27
                <message_argument value="1.3"/>
28
                <message_argument value="3.0"/>
29
                <message_argument value="setStartToken(IToken)"/>
30
            </message_arguments>
31
        </filter>
32
    </resource>
33
    <resource path="src/org/eclipse/ocl/cst/impl/CSTFactoryImpl.java" type="org.eclipse.ocl.cst.impl.CSTFactoryImpl">
34
        <filter id="1141899266">
35
            <message_arguments>
36
                <message_argument value="1.3"/>
37
                <message_argument value="3.0"/>
38
                <message_argument value="createITokenFromString(EDataType, String)"/>
39
            </message_arguments>
40
        </filter>
41
    </resource>
42
    <resource path="src/org/eclipse/ocl/cst/impl/CSTNodeImpl.java" type="org.eclipse.ocl.cst.impl.CSTNodeImpl">
43
        <filter id="1141899266">
44
            <message_arguments>
45
                <message_argument value="1.3"/>
46
                <message_argument value="3.0"/>
47
                <message_argument value="setEndToken(IToken)"/>
48
            </message_arguments>
49
        </filter>
50
        <filter id="1141899266">
51
            <message_arguments>
52
                <message_argument value="1.3"/>
53
                <message_argument value="3.0"/>
54
                <message_argument value="setStartToken(IToken)"/>
55
            </message_arguments>
56
        </filter>
57
        <filter id="1141899266">
58
            <message_arguments>
59
                <message_argument value="1.3"/>
60
                <message_argument value="3.0"/>
61
                <message_argument value="getEndToken()"/>
62
            </message_arguments>
63
        </filter>
64
        <filter id="1141899266">
65
            <message_arguments>
66
                <message_argument value="1.3"/>
67
                <message_argument value="3.0"/>
68
                <message_argument value="getStartToken()"/>
69
            </message_arguments>
70
        </filter>
71
    </resource>
72
    <resource path="src/org/eclipse/ocl/lpg/AbstractLexer.java" type="org.eclipse.ocl.lpg.AbstractLexer">
73
        <filter id="1143996420">
74
            <message_arguments>
75
                <message_argument value="lexToTokens(Monitor, AbstractParser)"/>
76
            </message_arguments>
77
        </filter>
78
    </resource>
79
    <resource path="src/org/eclipse/ocl/lpg/AbstractParser.java" type="org.eclipse.ocl.lpg.AbstractParser">
80
        <filter id="1141899266">
81
            <message_arguments>
82
                <message_argument value="1.3"/>
83
                <message_argument value="3.0"/>
84
                <message_argument value="getErrorTokenAtCharacter(int)"/>
85
            </message_arguments>
86
        </filter>
87
        <filter id="1143996420">
88
            <message_arguments>
89
                <message_argument value="setOffsets(CSTNode, IToken, IToken)"/>
90
            </message_arguments>
91
        </filter>
92
        <filter id="1143996420">
93
            <message_arguments>
94
                <message_argument value="setOffsets(CSTNode, CSTNode, IToken)"/>
95
            </message_arguments>
96
        </filter>
97
        <filter id="1143996420">
98
            <message_arguments>
99
                <message_argument value="setOffsets(CSTNode, IToken)"/>
100
            </message_arguments>
101
        </filter>
102
        <filter id="1143996420">
103
            <message_arguments>
104
                <message_argument value="setOffsets(CSTNode, IToken, CSTNode)"/>
105
            </message_arguments>
106
        </filter>
107
        <filter id="1143996420">
108
            <message_arguments>
109
                <message_argument value="parseTokensToCST(Monitor, int)"/>
110
            </message_arguments>
111
        </filter>
112
    </resource>
113
    <resource path="src/org/eclipse/ocl/parser/AbstractOCLParser.java" type="org.eclipse.ocl.parser.AbstractOCLParser">
114
        <filter id="1141899266">
115
            <message_arguments>
116
                <message_argument value="1.3"/>
117
                <message_argument value="3.0"/>
118
                <message_argument value="unescape(IToken)"/>
119
            </message_arguments>
120
        </filter>
121
    </resource>
122
    <resource path="src/org/eclipse/ocl/parser/OCLKWLexerprs.java" type="org.eclipse.ocl.parser.OCLKWLexerprs">
123
        <filter id="1143996420">
124
            <message_arguments>
125
                <message_argument value="MAX_NAME_LENGTH"/>
126
            </message_arguments>
127
        </filter>
128
        <filter id="1143996420">
129
            <message_arguments>
130
                <message_argument value="isNullable"/>
131
            </message_arguments>
132
        </filter>
133
        <filter id="1143996420">
134
            <message_arguments>
135
                <message_argument value="SCOPE_SIZE"/>
136
            </message_arguments>
137
        </filter>
138
        <filter id="1143996420">
139
            <message_arguments>
140
                <message_argument value="prosthesesIndex"/>
141
            </message_arguments>
142
        </filter>
143
        <filter id="1143996420">
144
            <message_arguments>
145
                <message_argument value="SCOPE_UBOUND"/>
146
            </message_arguments>
147
        </filter>
148
        <filter id="1143996420">
149
            <message_arguments>
150
                <message_argument value="isNullable(int)"/>
151
            </message_arguments>
152
        </filter>
153
        <filter id="1143996420">
154
            <message_arguments>
155
                <message_argument value="getIdentifier_SYMBOL()"/>
156
            </message_arguments>
157
        </filter>
158
        <filter id="1143996420">
159
            <message_arguments>
160
                <message_argument value="ERROR_SYMBOL"/>
161
            </message_arguments>
162
        </filter>
163
        <filter id="1143996420">
164
            <message_arguments>
165
                <message_argument value="prosthesesIndex(int)"/>
166
            </message_arguments>
167
        </filter>
168
    </resource>
169
    <resource path="src/org/eclipse/ocl/parser/OCLKWLexerprs.java" type="org.eclipse.ocl.parser.OCLKWLexerprs$IsNullable">
170
        <filter id="1143996420">
171
            <message_arguments>
172
                <message_argument value="IsNullable"/>
173
            </message_arguments>
174
        </filter>
175
    </resource>
176
    <resource path="src/org/eclipse/ocl/parser/OCLKWLexerprs.java" type="org.eclipse.ocl.parser.OCLKWLexerprs$ProsthesesIndex">
177
        <filter id="1143996420">
178
            <message_arguments>
179
                <message_argument value="ProsthesesIndex"/>
180
            </message_arguments>
181
        </filter>
182
    </resource>
183
    <resource path="src/org/eclipse/ocl/parser/OCLKWLexersym.java" type="org.eclipse.ocl.parser.OCLKWLexersym">
184
        <filter id="1211105284">
185
            <message_arguments>
186
                <message_argument value="Char__"/>
187
            </message_arguments>
188
        </filter>
189
        <filter id="1211105284">
190
            <message_arguments>
191
                <message_argument value="numTokenKinds"/>
192
            </message_arguments>
193
        </filter>
194
        <filter id="1211105284">
195
            <message_arguments>
196
                <message_argument value="Char_Percent"/>
197
            </message_arguments>
198
        </filter>
199
    </resource>
200
    <resource path="src/org/eclipse/ocl/parser/OCLLexerprs.java" type="org.eclipse.ocl.parser.OCLLexerprs">
201
        <filter id="1143996420">
202
            <message_arguments>
203
                <message_argument value="SCOPE_UBOUND"/>
204
            </message_arguments>
205
        </filter>
206
        <filter id="1143996420">
207
            <message_arguments>
208
                <message_argument value="MAX_NAME_LENGTH"/>
209
            </message_arguments>
210
        </filter>
211
        <filter id="1143996420">
212
            <message_arguments>
213
                <message_argument value="isNullable(int)"/>
214
            </message_arguments>
215
        </filter>
216
        <filter id="1143996420">
217
            <message_arguments>
218
                <message_argument value="getIdentifier_SYMBOL()"/>
219
            </message_arguments>
220
        </filter>
221
        <filter id="1143996420">
222
            <message_arguments>
223
                <message_argument value="isNullable"/>
224
            </message_arguments>
225
        </filter>
226
        <filter id="1143996420">
227
            <message_arguments>
228
                <message_argument value="SCOPE_SIZE"/>
229
            </message_arguments>
230
        </filter>
231
        <filter id="1143996420">
232
            <message_arguments>
233
                <message_argument value="prosthesesIndex(int)"/>
234
            </message_arguments>
235
        </filter>
236
        <filter id="1143996420">
237
            <message_arguments>
238
                <message_argument value="prosthesesIndex"/>
239
            </message_arguments>
240
        </filter>
241
        <filter id="1143996420">
242
            <message_arguments>
243
                <message_argument value="ERROR_SYMBOL"/>
244
            </message_arguments>
245
        </filter>
246
    </resource>
247
    <resource path="src/org/eclipse/ocl/parser/OCLLexerprs.java" type="org.eclipse.ocl.parser.OCLLexerprs$IsNullable">
248
        <filter id="1143996420">
249
            <message_arguments>
250
                <message_argument value="IsNullable"/>
251
            </message_arguments>
252
        </filter>
253
    </resource>
254
    <resource path="src/org/eclipse/ocl/parser/OCLLexerprs.java" type="org.eclipse.ocl.parser.OCLLexerprs$ProsthesesIndex">
255
        <filter id="1143996420">
256
            <message_arguments>
257
                <message_argument value="ProsthesesIndex"/>
258
            </message_arguments>
259
        </filter>
260
    </resource>
261
    <resource path="src/org/eclipse/ocl/parser/OCLLexersym.java" type="org.eclipse.ocl.parser.OCLLexersym">
262
        <filter id="1211105284">
263
            <message_arguments>
264
                <message_argument value="numTokenKinds"/>
265
            </message_arguments>
266
        </filter>
267
    </resource>
268
    <resource path="src/org/eclipse/ocl/parser/OCLParserprs.java" type="org.eclipse.ocl.parser.OCLParserprs">
269
        <filter id="1143996420">
270
            <message_arguments>
271
                <message_argument value="prosthesesIndex(int)"/>
272
            </message_arguments>
273
        </filter>
274
        <filter id="1143996420">
275
            <message_arguments>
276
                <message_argument value="prosthesesIndex"/>
277
            </message_arguments>
278
        </filter>
279
        <filter id="1143996420">
280
            <message_arguments>
281
                <message_argument value="isNullable(int)"/>
282
            </message_arguments>
283
        </filter>
284
        <filter id="1143996420">
285
            <message_arguments>
286
                <message_argument value="isNullable"/>
287
            </message_arguments>
288
        </filter>
289
        <filter id="1143996420">
290
            <message_arguments>
291
                <message_argument value="getIdentifier_SYMBOL()"/>
292
            </message_arguments>
293
        </filter>
294
    </resource>
295
    <resource path="src/org/eclipse/ocl/parser/OCLParserprs.java" type="org.eclipse.ocl.parser.OCLParserprs$IsNullable">
296
        <filter id="1143996420">
297
            <message_arguments>
298
                <message_argument value="IsNullable"/>
299
            </message_arguments>
300
        </filter>
301
    </resource>
302
    <resource path="src/org/eclipse/ocl/parser/OCLParserprs.java" type="org.eclipse.ocl.parser.OCLParserprs$ProsthesesIndex">
303
        <filter id="1143996420">
304
            <message_arguments>
305
                <message_argument value="ProsthesesIndex"/>
306
            </message_arguments>
307
        </filter>
308
    </resource>
3
    <resource path="src/org/eclipse/ocl/parser/OCLParsersym.java" type="org.eclipse.ocl.parser.OCLParsersym">
309
    <resource path="src/org/eclipse/ocl/parser/OCLParsersym.java" type="org.eclipse.ocl.parser.OCLParsersym">
4
        <filter id="1211105284">
310
        <filter id="1211105284">
5
            <message_arguments>
311
            <message_arguments>
312
                <message_argument value="numTokenKinds"/>
313
            </message_arguments>
314
        </filter>
315
        <filter id="1211105284">
316
            <message_arguments>
6
                <message_argument value="TK_static"/>
317
                <message_argument value="TK_static"/>
7
            </message_arguments>
318
            </message_arguments>
8
        </filter>
319
        </filter>
Lines 18-36 Link Here
18
        </filter>
329
        </filter>
19
        <filter id="1211105284">
330
        <filter id="1211105284">
20
            <message_arguments>
331
            <message_arguments>
332
                <message_argument value="TK_SINGLE_LINE_COMMENT"/>
333
            </message_arguments>
334
        </filter>
335
        <filter id="1211105284">
336
            <message_arguments>
21
                <message_argument value="TK_AT"/>
337
                <message_argument value="TK_AT"/>
22
            </message_arguments>
338
            </message_arguments>
23
        </filter>
339
        </filter>
340
    </resource>
341
    <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexerprs.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingKWLexerprs">
342
        <filter id="1143996420">
343
            <message_arguments>
344
                <message_argument value="prosthesesIndex"/>
345
            </message_arguments>
346
        </filter>
347
        <filter id="1143996420">
348
            <message_arguments>
349
                <message_argument value="MAX_NAME_LENGTH"/>
350
            </message_arguments>
351
        </filter>
352
        <filter id="1143996420">
353
            <message_arguments>
354
                <message_argument value="isNullable"/>
355
            </message_arguments>
356
        </filter>
357
        <filter id="1143996420">
358
            <message_arguments>
359
                <message_argument value="ERROR_SYMBOL"/>
360
            </message_arguments>
361
        </filter>
362
        <filter id="1143996420">
363
            <message_arguments>
364
                <message_argument value="getIdentifier_SYMBOL()"/>
365
            </message_arguments>
366
        </filter>
367
        <filter id="1143996420">
368
            <message_arguments>
369
                <message_argument value="SCOPE_SIZE"/>
370
            </message_arguments>
371
        </filter>
372
        <filter id="1143996420">
373
            <message_arguments>
374
                <message_argument value="prosthesesIndex(int)"/>
375
            </message_arguments>
376
        </filter>
377
        <filter id="1143996420">
378
            <message_arguments>
379
                <message_argument value="SCOPE_UBOUND"/>
380
            </message_arguments>
381
        </filter>
382
        <filter id="1143996420">
383
            <message_arguments>
384
                <message_argument value="isNullable(int)"/>
385
            </message_arguments>
386
        </filter>
387
    </resource>
388
    <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexerprs.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingKWLexerprs$IsNullable">
389
        <filter id="1143996420">
390
            <message_arguments>
391
                <message_argument value="IsNullable"/>
392
            </message_arguments>
393
        </filter>
394
    </resource>
395
    <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexerprs.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingKWLexerprs$ProsthesesIndex">
396
        <filter id="1143996420">
397
            <message_arguments>
398
                <message_argument value="ProsthesesIndex"/>
399
            </message_arguments>
400
        </filter>
401
    </resource>
402
    <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexersym.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingKWLexersym">
24
        <filter id="1211105284">
403
        <filter id="1211105284">
25
            <message_arguments>
404
            <message_arguments>
26
                <message_argument value="TK_SINGLE_LINE_COMMENT"/>
405
                <message_argument value="Char__"/>
406
            </message_arguments>
407
        </filter>
408
        <filter id="1211105284">
409
            <message_arguments>
410
                <message_argument value="Char_Percent"/>
411
            </message_arguments>
412
        </filter>
413
        <filter id="1211105284">
414
            <message_arguments>
415
                <message_argument value="numTokenKinds"/>
416
            </message_arguments>
417
        </filter>
418
    </resource>
419
    <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexerprs.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingLexerprs">
420
        <filter id="1143996420">
421
            <message_arguments>
422
                <message_argument value="isNullable"/>
423
            </message_arguments>
424
        </filter>
425
        <filter id="1143996420">
426
            <message_arguments>
427
                <message_argument value="isNullable(int)"/>
428
            </message_arguments>
429
        </filter>
430
        <filter id="1143996420">
431
            <message_arguments>
432
                <message_argument value="getIdentifier_SYMBOL()"/>
433
            </message_arguments>
434
        </filter>
435
        <filter id="1143996420">
436
            <message_arguments>
437
                <message_argument value="MAX_NAME_LENGTH"/>
438
            </message_arguments>
439
        </filter>
440
        <filter id="1143996420">
441
            <message_arguments>
442
                <message_argument value="ERROR_SYMBOL"/>
443
            </message_arguments>
444
        </filter>
445
        <filter id="1143996420">
446
            <message_arguments>
447
                <message_argument value="prosthesesIndex"/>
448
            </message_arguments>
449
        </filter>
450
        <filter id="1143996420">
451
            <message_arguments>
452
                <message_argument value="SCOPE_SIZE"/>
453
            </message_arguments>
454
        </filter>
455
        <filter id="1143996420">
456
            <message_arguments>
457
                <message_argument value="prosthesesIndex(int)"/>
458
            </message_arguments>
459
        </filter>
460
        <filter id="1143996420">
461
            <message_arguments>
462
                <message_argument value="SCOPE_UBOUND"/>
463
            </message_arguments>
464
        </filter>
465
    </resource>
466
    <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexerprs.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingLexerprs$IsNullable">
467
        <filter id="1143996420">
468
            <message_arguments>
469
                <message_argument value="IsNullable"/>
470
            </message_arguments>
471
        </filter>
472
    </resource>
473
    <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexerprs.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingLexerprs$ProsthesesIndex">
474
        <filter id="1143996420">
475
            <message_arguments>
476
                <message_argument value="ProsthesesIndex"/>
477
            </message_arguments>
478
        </filter>
479
    </resource>
480
    <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexersym.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingLexersym">
481
        <filter id="1211105284">
482
            <message_arguments>
483
                <message_argument value="numTokenKinds"/>
484
            </message_arguments>
485
        </filter>
486
    </resource>
487
    <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParserprs.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingParserprs">
488
        <filter id="1143996420">
489
            <message_arguments>
490
                <message_argument value="prosthesesIndex(int)"/>
491
            </message_arguments>
492
        </filter>
493
        <filter id="1143996420">
494
            <message_arguments>
495
                <message_argument value="prosthesesIndex"/>
496
            </message_arguments>
497
        </filter>
498
        <filter id="1143996420">
499
            <message_arguments>
500
                <message_argument value="getIdentifier_SYMBOL()"/>
501
            </message_arguments>
502
        </filter>
503
        <filter id="1143996420">
504
            <message_arguments>
505
                <message_argument value="isNullable(int)"/>
506
            </message_arguments>
507
        </filter>
508
        <filter id="1143996420">
509
            <message_arguments>
510
                <message_argument value="isNullable"/>
511
            </message_arguments>
512
        </filter>
513
    </resource>
514
    <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParserprs.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingParserprs$IsNullable">
515
        <filter id="1143996420">
516
            <message_arguments>
517
                <message_argument value="IsNullable"/>
518
            </message_arguments>
519
        </filter>
520
    </resource>
521
    <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParserprs.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingParserprs$ProsthesesIndex">
522
        <filter id="1143996420">
523
            <message_arguments>
524
                <message_argument value="ProsthesesIndex"/>
27
            </message_arguments>
525
            </message_arguments>
28
        </filter>
526
        </filter>
29
    </resource>
527
    </resource>
30
    <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParsersym.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingParsersym">
528
    <resource path="src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParsersym.java" type="org.eclipse.ocl.parser.backtracking.OCLBacktrackingParsersym">
31
        <filter id="1211105284">
529
        <filter id="1211105284">
32
            <message_arguments>
530
            <message_arguments>
33
                <message_argument value="TK_SINGLE_LINE_COMMENT"/>
531
                <message_argument value="TK_static"/>
34
            </message_arguments>
532
            </message_arguments>
35
        </filter>
533
        </filter>
36
        <filter id="1211105284">
534
        <filter id="1211105284">
Lines 40-46 Link Here
40
        </filter>
538
        </filter>
41
        <filter id="1211105284">
539
        <filter id="1211105284">
42
            <message_arguments>
540
            <message_arguments>
43
                <message_argument value="TK_static"/>
541
                <message_argument value="TK_SINGLE_LINE_COMMENT"/>
44
            </message_arguments>
542
            </message_arguments>
45
        </filter>
543
        </filter>
46
        <filter id="1211105284">
544
        <filter id="1211105284">
Lines 50-55 Link Here
50
        </filter>
548
        </filter>
51
        <filter id="1211105284">
549
        <filter id="1211105284">
52
            <message_arguments>
550
            <message_arguments>
551
                <message_argument value="numTokenKinds"/>
552
            </message_arguments>
553
        </filter>
554
        <filter id="1211105284">
555
            <message_arguments>
53
                <message_argument value="TK_invalid"/>
556
                <message_argument value="TK_invalid"/>
54
            </message_arguments>
557
            </message_arguments>
55
        </filter>
558
        </filter>
(-).settings/LPG Backtracking OCLParser.launch (-11 / +11 lines)
Lines 1-11 Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
2
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
3
<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfigurationWorkingSet editPageId=&quot;org.eclipse.ui.resourceWorkingSetPage&quot; factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; label=&quot;working set&quot; name=&quot;working set&quot;&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.eclipse.ocl/src/org/eclipse/ocl/lpg&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;/launchConfigurationWorkingSet&gt;}"/>
3
<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfigurationWorkingSet editPageId=&quot;org.eclipse.ui.resourceWorkingSetPage&quot; factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; id=&quot;1260466156182_5&quot; label=&quot;working set&quot; name=&quot;working set&quot;&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.eclipse.ocl/src/org/eclipse/ocl/lpg&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;/launchConfigurationWorkingSet&gt;}"/>
4
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
4
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
5
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
5
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
6
<listEntry value="org.eclipse.ui.externaltools.launchGroup"/>
6
<listEntry value="org.eclipse.ui.externaltools.launchGroup"/>
7
</listAttribute>
7
</listAttribute>
8
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${lpg.exe}"/>
8
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${lpg2.exe}"/>
9
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="OCLBacktrackingParser.g"/>
9
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="OCLBacktrackingParser.g"/>
10
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking}"/>
10
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking}"/>
11
</launchConfiguration>
11
</launchConfiguration>
(-).settings/LPG OCLParser.launch (-3 / +3 lines)
Lines 1-11 Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
2
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
3
<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfigurationWorkingSet editPageId=&quot;org.eclipse.ui.resourceWorkingSetPage&quot; factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; label=&quot;working set&quot; name=&quot;working set&quot;&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.eclipse.ocl/src/org/eclipse/ocl/lpg&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.eclipse.ocl/src/org/eclipse/ocl/parser&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;/launchConfigurationWorkingSet&gt;}"/>
3
<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfigurationWorkingSet editPageId=&quot;org.eclipse.ui.resourceWorkingSetPage&quot; factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; id=&quot;1260466178715_30&quot; label=&quot;working set&quot; name=&quot;working set&quot;&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.eclipse.ocl/src/org/eclipse/ocl/parser&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.eclipse.ocl/src/org/eclipse/ocl/lpg&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;/launchConfigurationWorkingSet&gt;}"/>
4
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
4
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
5
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
5
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
6
<listEntry value="org.eclipse.ui.externaltools.launchGroup"/>
6
<listEntry value="org.eclipse.ui.externaltools.launchGroup"/>
7
</listAttribute>
7
</listAttribute>
8
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${lpg.exe}"/>
8
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${lpg2.exe}"/>
9
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="OCLParser.g"/>
9
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="OCLParser.g"/>
10
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.ocl/src/org/eclipse/ocl/parser}"/>
10
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.ocl/src/org/eclipse/ocl/parser}"/>
11
</launchConfiguration>
11
</launchConfiguration>
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexer.java (-44 / +48 lines)
Lines 13-21 Link Here
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
14
*   Borland - Bug 242880
14
*   Borland - Bug 242880
15
*   E.D.Willink - Bug 292112
15
*   E.D.Willink - Bug 292112
16
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
17
*
16
* </copyright>
18
* </copyright>
17
*
19
*
18
* $Id: OCLBacktrackingLexer.java,v 1.10 2009/11/09 22:14:06 ewillink Exp $
20
* $Id: EssentialOCLLexer.g,v 1.2 2009/11/09 22:01:36 ewillink Exp $
19
*/
21
*/
20
/**
22
/**
21
* Complete OCL Lexer
23
* Complete OCL Lexer
Lines 30-41 Link Here
30
* Contributors:
32
* Contributors:
31
*   IBM - Initial API and implementation
33
*   IBM - Initial API and implementation
32
*   E.D.Willink - Bug 292112, 292594
34
*   E.D.Willink - Bug 292112, 292594
35
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
36
*
33
* </copyright>
37
* </copyright>
34
*/
38
*/
35
39
36
package org.eclipse.ocl.parser.backtracking;
40
package org.eclipse.ocl.parser.backtracking;
37
41
38
import lpg.lpgjavaruntime.*;
42
import lpg.runtime.*;
39
import org.eclipse.ocl.lpg.AbstractLexer;
43
import org.eclipse.ocl.lpg.AbstractLexer;
40
import org.eclipse.ocl.lpg.AbstractParser;
44
import org.eclipse.ocl.lpg.AbstractParser;
41
import org.eclipse.ocl.Environment;
45
import org.eclipse.ocl.Environment;
Lines 68-74 Link Here
68
    
72
    
69
	public OCLBacktrackingLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] chars) {
73
	public OCLBacktrackingLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] chars) {
70
		this(environment, chars, "OCL", ECLIPSE_TAB_VALUE);
74
		this(environment, chars, "OCL", ECLIPSE_TAB_VALUE);
71
		kwLexer = new OCLBacktrackingKWLexer(getInputChars(), TK_IDENTIFIER);
75
		kwLexer = new OCLBacktrackingKWLexer(getInputChars(), OCLBacktrackingParsersym.TK_IDENTIFIER);
72
	}
76
	}
73
77
74
    public OCLBacktrackingLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] input_chars, String filename, int tab)  {
78
    public OCLBacktrackingLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] input_chars, String filename, int tab)  {
Lines 97-103 Link Here
97
    {
101
    {
98
        super.initialize(content, filename);
102
        super.initialize(content, filename);
99
        if (kwLexer == null)
103
        if (kwLexer == null)
100
             kwLexer = new OCLBacktrackingKWLexer(getInputChars(), TK_IDENTIFIER);
104
             kwLexer = new OCLBacktrackingKWLexer(getInputChars(), OCLBacktrackingParsersym.TK_IDENTIFIER);
101
        else
105
        else
102
             kwLexer.setInputChars(getInputChars());
106
             kwLexer.setInputChars(getInputChars());
103
    }
107
    }
Lines 108-114 Link Here
108
    @Override
112
    @Override
109
    public void setInputChars(char[] inputChars) {
113
    public void setInputChars(char[] inputChars) {
110
		super.setInputChars(inputChars);
114
		super.setInputChars(inputChars);
111
		kwLexer = new OCLBacktrackingKWLexer(getInputChars(), TK_IDENTIFIER);
115
		kwLexer = new OCLBacktrackingKWLexer(getInputChars(), OCLBacktrackingParsersym.TK_IDENTIFIER);
112
	}
116
	}
113
    
117
    
114
    @Override
118
    @Override
Lines 124-135 Link Here
124
        lexParser.parseCharacters(monitor);  // Lex the input characters
128
        lexParser.parseCharacters(monitor);  // Lex the input characters
125
            
129
            
126
        int i = getStreamIndex();
130
        int i = getStreamIndex();
127
        parser.makeToken(i, i, TK_EOF_TOKEN); // and end with the end of file token
131
        parser.makeToken(i, i, OCLBacktrackingParsersym.TK_EOF_TOKEN); // and end with the end of file token
128
        parser.setStreamLength(parser.getSize());
132
        parser.setStreamLength(parser.getSize());
129
            
133
            
130
        return;
134
        return;
131
    }
135
    }
132
    
136
        
133
    final void makeToken(int kind)
137
    final void makeToken(int kind)
134
    {
138
    {
135
        int startOffset = getLeftSpan(),
139
        int startOffset = getLeftSpan(),
Lines 142-148 Link Here
142
    {
146
    {
143
        int startOffset = getLeftSpan(),
147
        int startOffset = getLeftSpan(),
144
            endOffset = getRightSpan();
148
            endOffset = getRightSpan();
145
        super.getPrsStream().makeAdjunct(startOffset, endOffset, kind);
149
        super.getIPrsStream().makeAdjunct(startOffset, endOffset, kind);
146
    }
150
    }
147
151
148
    final void skipToken()
152
    final void skipToken()
Lines 333-339 Link Here
333
            // Rule 2:  Token ::= " SLNotDQ "
337
            // Rule 2:  Token ::= " SLNotDQ "
334
            //
338
            //
335
            case 2: { 
339
            case 2: { 
336
				makeToken(TK_IDENTIFIER);
340
				makeToken(OCLBacktrackingParsersym.TK_IDENTIFIER);
337
	            break;
341
	            break;
338
            }
342
            }
339
	 
343
	 
Lines 341-347 Link Here
341
            // Rule 3:  Token ::= SingleQuote SLNotSQOpt SingleQuote
345
            // Rule 3:  Token ::= SingleQuote SLNotSQOpt SingleQuote
342
            //
346
            //
343
            case 3: { 
347
            case 3: { 
344
				makeToken(TK_STRING_LITERAL);
348
				makeToken(OCLBacktrackingParsersym.TK_STRING_LITERAL);
345
	            break;
349
	            break;
346
            }
350
            }
347
	 
351
	 
Lines 349-355 Link Here
349
            // Rule 4:  Token ::= Acute SLNotSQOpt Acute
353
            // Rule 4:  Token ::= Acute SLNotSQOpt Acute
350
            //
354
            //
351
            case 4: { 
355
            case 4: { 
352
				makeToken(TK_STRING_LITERAL);
356
				makeToken(OCLBacktrackingParsersym.TK_STRING_LITERAL);
353
	            break;
357
	            break;
354
            }
358
            }
355
	 
359
	 
Lines 357-363 Link Here
357
            // Rule 5:  Token ::= BackQuote SLNotSQOpt Acute
361
            // Rule 5:  Token ::= BackQuote SLNotSQOpt Acute
358
            //
362
            //
359
            case 5: { 
363
            case 5: { 
360
				makeToken(TK_STRING_LITERAL);
364
				makeToken(OCLBacktrackingParsersym.TK_STRING_LITERAL);
361
	            break;
365
	            break;
362
            }
366
            }
363
	 
367
	 
Lines 383-389 Link Here
383
            // Rule 9:  Token ::= RealLiteral
387
            // Rule 9:  Token ::= RealLiteral
384
            //
388
            //
385
            case 9: { 
389
            case 9: { 
386
				makeToken(TK_REAL_LITERAL);
390
				makeToken(OCLBacktrackingParsersym.TK_REAL_LITERAL);
387
	            break;
391
	            break;
388
            }
392
            }
389
	 
393
	 
Lines 391-397 Link Here
391
            // Rule 10:  Token ::= SLC
395
            // Rule 10:  Token ::= SLC
392
            //
396
            //
393
            case 10: { 
397
            case 10: { 
394
				makeComment(TK_SINGLE_LINE_COMMENT);
398
				makeComment(OCLBacktrackingParsersym.TK_SINGLE_LINE_COMMENT);
395
	            break;
399
	            break;
396
            }
400
            }
397
	 
401
	 
Lines 399-405 Link Here
399
            // Rule 11:  Token ::= / * Inside Stars /
403
            // Rule 11:  Token ::= / * Inside Stars /
400
            //
404
            //
401
            case 11: { 
405
            case 11: { 
402
                makeComment(TK_MULTI_LINE_COMMENT);
406
                makeComment(OCLBacktrackingParsersym.TK_MULTI_LINE_COMMENT);
403
                break;
407
                break;
404
            }
408
            }
405
     
409
     
Lines 415-421 Link Here
415
            // Rule 13:  Token ::= +
419
            // Rule 13:  Token ::= +
416
            //
420
            //
417
            case 13: { 
421
            case 13: { 
418
				makeToken(TK_PLUS);
422
				makeToken(OCLBacktrackingParsersym.TK_PLUS);
419
	            break;
423
	            break;
420
            }
424
            }
421
	 
425
	 
Lines 423-429 Link Here
423
            // Rule 14:  Token ::= -
427
            // Rule 14:  Token ::= -
424
            //
428
            //
425
            case 14: { 
429
            case 14: { 
426
				makeToken(TK_MINUS);
430
				makeToken(OCLBacktrackingParsersym.TK_MINUS);
427
	            break;
431
	            break;
428
            }
432
            }
429
	 
433
	 
Lines 431-437 Link Here
431
            // Rule 15:  Token ::= *
435
            // Rule 15:  Token ::= *
432
            //
436
            //
433
            case 15: { 
437
            case 15: { 
434
				makeToken(TK_MULTIPLY);
438
				makeToken(OCLBacktrackingParsersym.TK_MULTIPLY);
435
	            break;
439
	            break;
436
            }
440
            }
437
	 
441
	 
Lines 439-445 Link Here
439
            // Rule 16:  Token ::= /
443
            // Rule 16:  Token ::= /
440
            //
444
            //
441
            case 16: { 
445
            case 16: { 
442
				makeToken(TK_DIVIDE);
446
				makeToken(OCLBacktrackingParsersym.TK_DIVIDE);
443
	            break;
447
	            break;
444
            }
448
            }
445
	 
449
	 
Lines 447-453 Link Here
447
            // Rule 17:  Token ::= (
451
            // Rule 17:  Token ::= (
448
            //
452
            //
449
            case 17: { 
453
            case 17: { 
450
				makeToken(TK_LPAREN);
454
				makeToken(OCLBacktrackingParsersym.TK_LPAREN);
451
	            break;
455
	            break;
452
            }
456
            }
453
	 
457
	 
Lines 455-461 Link Here
455
            // Rule 18:  Token ::= )
459
            // Rule 18:  Token ::= )
456
            //
460
            //
457
            case 18: { 
461
            case 18: { 
458
				makeToken(TK_RPAREN);
462
				makeToken(OCLBacktrackingParsersym.TK_RPAREN);
459
	            break;
463
	            break;
460
            }
464
            }
461
	 
465
	 
Lines 463-469 Link Here
463
            // Rule 19:  Token ::= >
467
            // Rule 19:  Token ::= >
464
            //
468
            //
465
            case 19: { 
469
            case 19: { 
466
				makeToken(TK_GREATER);
470
				makeToken(OCLBacktrackingParsersym.TK_GREATER);
467
	            break;
471
	            break;
468
            }
472
            }
469
	 
473
	 
Lines 471-477 Link Here
471
            // Rule 20:  Token ::= <
475
            // Rule 20:  Token ::= <
472
            //
476
            //
473
            case 20: { 
477
            case 20: { 
474
				makeToken(TK_LESS);
478
				makeToken(OCLBacktrackingParsersym.TK_LESS);
475
	            break;
479
	            break;
476
            }
480
            }
477
	 
481
	 
Lines 479-485 Link Here
479
            // Rule 21:  Token ::= =
483
            // Rule 21:  Token ::= =
480
            //
484
            //
481
            case 21: { 
485
            case 21: { 
482
				makeToken(TK_EQUAL);
486
				makeToken(OCLBacktrackingParsersym.TK_EQUAL);
483
	            break;
487
	            break;
484
            }
488
            }
485
	 
489
	 
Lines 487-493 Link Here
487
            // Rule 22:  Token ::= > =
491
            // Rule 22:  Token ::= > =
488
            //
492
            //
489
            case 22: { 
493
            case 22: { 
490
				makeToken(TK_GREATER_EQUAL);
494
				makeToken(OCLBacktrackingParsersym.TK_GREATER_EQUAL);
491
	            break;
495
	            break;
492
            }
496
            }
493
	 
497
	 
Lines 495-501 Link Here
495
            // Rule 23:  Token ::= < =
499
            // Rule 23:  Token ::= < =
496
            //
500
            //
497
            case 23: { 
501
            case 23: { 
498
				makeToken(TK_LESS_EQUAL);
502
				makeToken(OCLBacktrackingParsersym.TK_LESS_EQUAL);
499
	            break;
503
	            break;
500
            }
504
            }
501
	 
505
	 
Lines 503-509 Link Here
503
            // Rule 24:  Token ::= < >
507
            // Rule 24:  Token ::= < >
504
            //
508
            //
505
            case 24: { 
509
            case 24: { 
506
				makeToken(TK_NOT_EQUAL);
510
				makeToken(OCLBacktrackingParsersym.TK_NOT_EQUAL);
507
	            break;
511
	            break;
508
            }
512
            }
509
	 
513
	 
Lines 511-517 Link Here
511
            // Rule 25:  Token ::= [
515
            // Rule 25:  Token ::= [
512
            //
516
            //
513
            case 25: { 
517
            case 25: { 
514
				makeToken(TK_LBRACKET);
518
				makeToken(OCLBacktrackingParsersym.TK_LBRACKET);
515
	            break;
519
	            break;
516
            }
520
            }
517
	 
521
	 
Lines 519-525 Link Here
519
            // Rule 26:  Token ::= ]
523
            // Rule 26:  Token ::= ]
520
            //
524
            //
521
            case 26: { 
525
            case 26: { 
522
				makeToken(TK_RBRACKET);
526
				makeToken(OCLBacktrackingParsersym.TK_RBRACKET);
523
	            break;
527
	            break;
524
            }
528
            }
525
	 
529
	 
Lines 527-533 Link Here
527
            // Rule 27:  Token ::= {
531
            // Rule 27:  Token ::= {
528
            //
532
            //
529
            case 27: { 
533
            case 27: { 
530
				makeToken(TK_LBRACE);
534
				makeToken(OCLBacktrackingParsersym.TK_LBRACE);
531
	            break;
535
	            break;
532
            }
536
            }
533
	 
537
	 
Lines 535-541 Link Here
535
            // Rule 28:  Token ::= }
539
            // Rule 28:  Token ::= }
536
            //
540
            //
537
            case 28: { 
541
            case 28: { 
538
				makeToken(TK_RBRACE);
542
				makeToken(OCLBacktrackingParsersym.TK_RBRACE);
539
	            break;
543
	            break;
540
            }
544
            }
541
	 
545
	 
Lines 543-549 Link Here
543
            // Rule 29:  Token ::= - >
547
            // Rule 29:  Token ::= - >
544
            //
548
            //
545
            case 29: { 
549
            case 29: { 
546
				makeToken(TK_ARROW);
550
				makeToken(OCLBacktrackingParsersym.TK_ARROW);
547
	            break;
551
	            break;
548
            }
552
            }
549
	 
553
	 
Lines 551-557 Link Here
551
            // Rule 30:  Token ::= |
555
            // Rule 30:  Token ::= |
552
            //
556
            //
553
            case 30: { 
557
            case 30: { 
554
				makeToken(TK_BAR);
558
				makeToken(OCLBacktrackingParsersym.TK_BAR);
555
	            break;
559
	            break;
556
            }
560
            }
557
	 
561
	 
Lines 559-565 Link Here
559
            // Rule 31:  Token ::= ,
563
            // Rule 31:  Token ::= ,
560
            //
564
            //
561
            case 31: { 
565
            case 31: { 
562
				makeToken(TK_COMMA);
566
				makeToken(OCLBacktrackingParsersym.TK_COMMA);
563
	            break;
567
	            break;
564
            }
568
            }
565
	 
569
	 
Lines 567-573 Link Here
567
            // Rule 32:  Token ::= :
571
            // Rule 32:  Token ::= :
568
            //
572
            //
569
            case 32: { 
573
            case 32: { 
570
				makeToken(TK_COLON);
574
				makeToken(OCLBacktrackingParsersym.TK_COLON);
571
	            break;
575
	            break;
572
            }
576
            }
573
	 
577
	 
Lines 575-581 Link Here
575
            // Rule 33:  Token ::= : :
579
            // Rule 33:  Token ::= : :
576
            //
580
            //
577
            case 33: { 
581
            case 33: { 
578
				makeToken(TK_COLONCOLON);
582
				makeToken(OCLBacktrackingParsersym.TK_COLONCOLON);
579
	            break;
583
	            break;
580
            }
584
            }
581
	 
585
	 
Lines 583-589 Link Here
583
            // Rule 34:  Token ::= ;
587
            // Rule 34:  Token ::= ;
584
            //
588
            //
585
            case 34: { 
589
            case 34: { 
586
				makeToken(TK_SEMICOLON);
590
				makeToken(OCLBacktrackingParsersym.TK_SEMICOLON);
587
	            break;
591
	            break;
588
            }
592
            }
589
	 
593
	 
Lines 597-603 Link Here
597
            // Rule 36:  DotToken ::= .
601
            // Rule 36:  DotToken ::= .
598
            //
602
            //
599
            case 36: { 
603
            case 36: { 
600
				makeToken(TK_DOT);
604
				makeToken(OCLBacktrackingParsersym.TK_DOT);
601
	            break;
605
	            break;
602
            }
606
            }
603
	 
607
	 
Lines 611-617 Link Here
611
            // Rule 38:  DotDotToken ::= . .
615
            // Rule 38:  DotDotToken ::= . .
612
            //
616
            //
613
            case 38: { 
617
            case 38: { 
614
				makeToken(TK_DOTDOT);
618
				makeToken(OCLBacktrackingParsersym.TK_DOTDOT);
615
	            break;
619
	            break;
616
            }
620
            }
617
	 
621
	 
Lines 619-625 Link Here
619
            // Rule 39:  IntegerLiteral ::= Integer
623
            // Rule 39:  IntegerLiteral ::= Integer
620
            //
624
            //
621
            case 39: { 
625
            case 39: { 
622
				makeToken(TK_INTEGER_LITERAL);
626
				makeToken(OCLBacktrackingParsersym.TK_INTEGER_LITERAL);
623
	            break;
627
	            break;
624
            }
628
            }
625
	 
629
	 
Lines 627-633 Link Here
627
            // Rule 264:  Token ::= @
631
            // Rule 264:  Token ::= @
628
            //
632
            //
629
            case 264: { 
633
            case 264: { 
630
				makeToken(TK_AT);
634
				makeToken(OCLBacktrackingParsersym.TK_AT);
631
	            break;
635
	            break;
632
            }
636
            }
633
	 
637
	 
Lines 635-641 Link Here
635
            // Rule 265:  Token ::= ^
639
            // Rule 265:  Token ::= ^
636
            //
640
            //
637
            case 265: { 
641
            case 265: { 
638
				makeToken(TK_CARET);
642
				makeToken(OCLBacktrackingParsersym.TK_CARET);
639
	            break;
643
	            break;
640
            }
644
            }
641
	 
645
	 
Lines 643-649 Link Here
643
            // Rule 266:  Token ::= ^ ^
647
            // Rule 266:  Token ::= ^ ^
644
            //
648
            //
645
            case 266: { 
649
            case 266: { 
646
				makeToken(TK_CARETCARET);
650
				makeToken(OCLBacktrackingParsersym.TK_CARETCARET);
647
	            break;
651
	            break;
648
            }
652
            }
649
	 
653
	 
Lines 651-657 Link Here
651
            // Rule 267:  Token ::= ?
655
            // Rule 267:  Token ::= ?
652
            //
656
            //
653
            case 267: { 
657
            case 267: { 
654
				makeToken(TK_QUESTIONMARK);
658
				makeToken(OCLBacktrackingParsersym.TK_QUESTIONMARK);
655
	            break;
659
	            break;
656
            }
660
            }
657
	
661
	
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexersym.java (-19 / +28 lines)
Lines 12-20 Link Here
12
*   IBM - Initial API and implementation
12
*   IBM - Initial API and implementation
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
14
*   E.D.Willink - Bug 285633, 292112
14
*   E.D.Willink - Bug 285633, 292112
15
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
16
*
15
* </copyright>
17
* </copyright>
16
*
18
*
17
* $Id: OCLBacktrackingKWLexersym.java,v 1.9 2009/11/09 22:14:17 ewillink Exp $
19
*
18
*/
20
*/
19
/**
21
/**
20
* Complete OCL Keyword Lexer
22
* Complete OCL Keyword Lexer
Lines 29-34 Link Here
29
* Contributors:
31
* Contributors:
30
*   IBM - Initial API and implementation
32
*   IBM - Initial API and implementation
31
*   E.D.Willink - Bug 292112
33
*   E.D.Willink - Bug 292112
34
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
35
*
32
* </copyright>
36
* </copyright>
33
*/
37
*/
34
38
Lines 46-51 Link Here
46
public interface OCLBacktrackingKWLexersym {
50
public interface OCLBacktrackingKWLexersym {
47
    public final static int
51
    public final static int
48
      Char_DollarSign = 37,
52
      Char_DollarSign = 37,
53
      Char_Percent = 38,
54
      Char__ = 39,
49
      Char_a = 4,
55
      Char_a = 4,
50
      Char_b = 23,
56
      Char_b = 23,
51
      Char_c = 10,
57
      Char_c = 10,
Lines 55-61 Link Here
55
      Char_g = 12,
61
      Char_g = 12,
56
      Char_h = 24,
62
      Char_h = 24,
57
      Char_i = 6,
63
      Char_i = 6,
58
      Char_j = 38,
64
      Char_j = 40,
59
      Char_k = 17,
65
      Char_k = 17,
60
      Char_l = 2,
66
      Char_l = 2,
61
      Char_m = 18,
67
      Char_m = 18,
Lines 68-106 Link Here
68
      Char_t = 3,
74
      Char_t = 3,
69
      Char_u = 14,
75
      Char_u = 14,
70
      Char_v = 16,
76
      Char_v = 16,
71
      Char_w = 39,
77
      Char_w = 41,
72
      Char_x = 19,
78
      Char_x = 19,
73
      Char_y = 20,
79
      Char_y = 20,
74
      Char_z = 40,
80
      Char_z = 42,
75
      Char_A = 26,
81
      Char_A = 26,
76
      Char_B = 27,
82
      Char_B = 27,
77
      Char_C = 28,
83
      Char_C = 28,
78
      Char_D = 41,
84
      Char_D = 43,
79
      Char_E = 42,
85
      Char_E = 44,
80
      Char_F = 43,
86
      Char_F = 45,
81
      Char_G = 44,
87
      Char_G = 46,
82
      Char_H = 45,
88
      Char_H = 47,
83
      Char_I = 21,
89
      Char_I = 21,
84
      Char_J = 46,
90
      Char_J = 48,
85
      Char_K = 47,
91
      Char_K = 49,
86
      Char_L = 48,
92
      Char_L = 50,
87
      Char_M = 29,
93
      Char_M = 29,
88
      Char_N = 30,
94
      Char_N = 30,
89
      Char_O = 31,
95
      Char_O = 31,
90
      Char_P = 49,
96
      Char_P = 51,
91
      Char_Q = 50,
97
      Char_Q = 52,
92
      Char_R = 32,
98
      Char_R = 32,
93
      Char_S = 22,
99
      Char_S = 22,
94
      Char_T = 33,
100
      Char_T = 33,
95
      Char_U = 34,
101
      Char_U = 34,
96
      Char_V = 35,
102
      Char_V = 35,
97
      Char_W = 51,
103
      Char_W = 53,
98
      Char_X = 52,
104
      Char_X = 54,
99
      Char_Y = 53,
105
      Char_Y = 55,
100
      Char_Z = 54,
106
      Char_Z = 56,
101
      Char_EOF = 36;
107
      Char_EOF = 36;
102
108
103
      public final static String orderedTerminalSymbols[] = {
109
    public final static String orderedTerminalSymbols[] = {
104
                 "",
110
                 "",
105
                 "e",
111
                 "e",
106
                 "l",
112
                 "l",
Lines 139-144 Link Here
139
                 "V",
145
                 "V",
140
                 "EOF",
146
                 "EOF",
141
                 "DollarSign",
147
                 "DollarSign",
148
                 "Percent",
149
                 "_",
142
                 "j",
150
                 "j",
143
                 "w",
151
                 "w",
144
                 "z",
152
                 "z",
Lines 158-162 Link Here
158
                 "Z"
166
                 "Z"
159
             };
167
             };
160
168
169
    public final static int numTokenKinds = orderedTerminalSymbols.length;
161
    public final static boolean isValidForParser = true;
170
    public final static boolean isValidForParser = true;
162
}
171
}
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParser.java (-12 / +14 lines)
Lines 14-23 Link Here
14
*   E.D.Willink - Remove unnecessary warning suppression
14
*   E.D.Willink - Remove unnecessary warning suppression
15
*   E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112
15
*   E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112
16
*   Borland - Bug 242880
16
*   Borland - Bug 242880
17
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
17
*
18
*
18
* </copyright>
19
* </copyright>
19
*
20
*
20
* $Id: OCLBacktrackingParser.java,v 1.15 2009/12/18 06:26:04 ewillink Exp $
21
* $Id: EssentialOCL.g,v 1.16 2009/11/09 22:03:57 ewillink Exp $
21
*/
22
*/
22
/**
23
/**
23
* Complete OCL Grammar
24
* Complete OCL Grammar
Lines 32-37 Link Here
32
* Contributors:
33
* Contributors:
33
*   IBM - Initial API and implementation
34
*   IBM - Initial API and implementation
34
*   E.D.Willink - Bug 259818, 285633, 292112
35
*   E.D.Willink - Bug 259818, 285633, 292112
36
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
35
* </copyright>
37
* </copyright>
36
*/
38
*/
37
39
Lines 70-84 Link Here
70
import org.eclipse.ocl.cst.VariableCS;
72
import org.eclipse.ocl.cst.VariableCS;
71
import org.eclipse.ocl.cst.VariableExpCS;
73
import org.eclipse.ocl.cst.VariableExpCS;
72
74
73
import lpg.lpgjavaruntime.BadParseException;
75
import lpg.runtime.BadParseException;
74
import lpg.lpgjavaruntime.BadParseSymFileException;
76
import lpg.runtime.BadParseSymFileException;
75
import lpg.lpgjavaruntime.BacktrackingParser;
77
import lpg.runtime.BacktrackingParser;
76
import lpg.lpgjavaruntime.DiagnoseParser;
78
import lpg.runtime.DiagnoseParser;
77
import lpg.lpgjavaruntime.IToken;
79
import lpg.runtime.IToken;
78
import lpg.lpgjavaruntime.Monitor;
80
import lpg.runtime.Monitor;
79
import lpg.lpgjavaruntime.NotBacktrackParseTableException;
81
import lpg.runtime.NotBacktrackParseTableException;
80
import lpg.lpgjavaruntime.ParseTable;
82
import lpg.runtime.ParseTable;
81
import lpg.lpgjavaruntime.RuleAction;
83
import lpg.runtime.RuleAction;
82
84
83
import org.eclipse.ocl.Environment;
85
import org.eclipse.ocl.Environment;
84
import org.eclipse.ocl.cst.ClassifierContextDeclCS;
86
import org.eclipse.ocl.cst.ClassifierContextDeclCS;
Lines 464-470 Link Here
464
            //
466
            //
465
            case 57: {
467
            case 57: {
466
                
468
                
467
                TupleTypeCS result = createTupleTypeCS((EList<VariableCS>)dtParser.getSym(3));
469
                 TupleTypeCS result = createTupleTypeCS((EList<VariableCS>)dtParser.getSym(3));
468
                setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(4)));
470
                setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(4)));
469
                dtParser.setSym1(result);
471
                dtParser.setSym1(result);
470
              break;
472
              break;
Lines 2402-2408 Link Here
2402
                
2404
                
2403
				OperationCS result = createOperationCS(
2405
				OperationCS result = createOperationCS(
2404
						getIToken(dtParser.getToken(1)),
2406
						getIToken(dtParser.getToken(1)),
2405
						(EList<VariableCS>)dtParser.getSym(3),
2407
						new BasicEList<VariableCS>(),
2406
						null
2408
						null
2407
					);
2409
					);
2408
				setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(5)));
2410
				setOffsets(result, getIToken(dtParser.getToken(1)), getIToken(dtParser.getToken(5)));
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParser.g (-10 / +10 lines)
Lines 33-59 Link Here
33
%options backtrack
33
%options backtrack
34
%options noserialize
34
%options noserialize
35
%options package=org.eclipse.ocl.parser.backtracking
35
%options package=org.eclipse.ocl.parser.backtracking
36
%options import_terminals=OCLBacktrackingLexer.g
36
%options import_terminals=OCLBacktrackingLexer.gi
37
%options ast_type=CSTNode
37
%options ast_type=CSTNode
38
%options programming_language=java
38
%options programming_language=java
39
%options action=("*.java", "/.", "./")
39
%options action-block=("*.java", "/.", "./")
40
%options ParseTable=lpg.lpgjavaruntime.ParseTable
40
%options ParseTable=lpg.runtime.ParseTable
41
%options include_directory=".;..;../../lpg"
41
%options include_directory=".;..;../../lpg"
42
42
43
$Include
43
%Import
44
	OCLParserErrors.g
44
	OCLParserErrors.gi
45
$End
45
%End
46
46
47
$Globals
47
%Globals
48
	/.
48
	/.
49
		import org.eclipse.ocl.parser.AbstractOCLParser;
49
		import org.eclipse.ocl.parser.AbstractOCLParser;
50
	./
50
	./
51
$End
51
%End
52
52
53
$Define
53
%Define
54
	$lex_stream_class /.OCLBacktrackingLexer./
54
	$lex_stream_class /.OCLBacktrackingLexer./
55
	$prs_parser_class /.BacktrackingParser./
55
	$prs_parser_class /.BacktrackingParser./
56
	$prs_parser_exception /.NotBacktrackParseTableException./
56
	$prs_parser_exception /.NotBacktrackParseTableException./
57
	$prs_parser_throw /.throw new RuntimeException("****Error: Regenerate $prs_type.java with -BACKTRACK option")./
57
	$prs_parser_throw /.throw new RuntimeException("****Error: Regenerate $prs_type.java with -BACKTRACK option")./
58
	$prs_parse_args /.error_repair_count./
58
	$prs_parse_args /.error_repair_count./
59
$End
59
%End
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexersym.java (-2 / +7 lines)
Lines 13-21 Link Here
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
14
*   Borland - Bug 242880
14
*   Borland - Bug 242880
15
*   E.D.Willink - Bug 292112
15
*   E.D.Willink - Bug 292112
16
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
17
*
16
* </copyright>
18
* </copyright>
17
*
19
*
18
* $Id: OCLBacktrackingLexersym.java,v 1.10 2009/11/09 22:14:27 ewillink Exp $
20
* $Id: EssentialOCLLexer.g,v 1.2 2009/11/09 22:01:36 ewillink Exp $
19
*/
21
*/
20
/**
22
/**
21
* Complete OCL Lexer
23
* Complete OCL Lexer
Lines 30-35 Link Here
30
* Contributors:
32
* Contributors:
31
*   IBM - Initial API and implementation
33
*   IBM - Initial API and implementation
32
*   E.D.Willink - Bug 292112, 292594
34
*   E.D.Willink - Bug 292112, 292594
35
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
36
*
33
* </copyright>
37
* </copyright>
34
*/
38
*/
35
39
Lines 150-156 Link Here
150
      Char_Equal = 16,
154
      Char_Equal = 16,
151
      Char_EOF = 102;
155
      Char_EOF = 102;
152
156
153
      public final static String orderedTerminalSymbols[] = {
157
    public final static String orderedTerminalSymbols[] = {
154
                 "",
158
                 "",
155
                 "0",
159
                 "0",
156
                 "1",
160
                 "1",
Lines 257-261 Link Here
257
                 "CtlCharNotWS"
261
                 "CtlCharNotWS"
258
             };
262
             };
259
263
264
    public final static int numTokenKinds = orderedTerminalSymbols.length;
260
    public final static boolean isValidForParser = true;
265
    public final static boolean isValidForParser = true;
261
}
266
}
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexerprs.java (-45 / +95 lines)
Lines 12-20 Link Here
12
*   IBM - Initial API and implementation
12
*   IBM - Initial API and implementation
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
14
*   E.D.Willink - Bug 285633, 292112
14
*   E.D.Willink - Bug 285633, 292112
15
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
16
*
15
* </copyright>
17
* </copyright>
16
*
18
*
17
* $Id: OCLBacktrackingKWLexerprs.java,v 1.10 2009/11/09 22:08:23 ewillink Exp $
19
*
18
*/
20
*/
19
/**
21
/**
20
* Complete OCL Keyword Lexer
22
* Complete OCL Keyword Lexer
Lines 29-40 Link Here
29
* Contributors:
31
* Contributors:
30
*   IBM - Initial API and implementation
32
*   IBM - Initial API and implementation
31
*   E.D.Willink - Bug 292112
33
*   E.D.Willink - Bug 292112
34
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
35
*
32
* </copyright>
36
* </copyright>
33
*/
37
*/
34
38
35
package org.eclipse.ocl.parser.backtracking;
39
package org.eclipse.ocl.parser.backtracking;
36
40
37
public class OCLBacktrackingKWLexerprs implements lpg.lpgjavaruntime.ParseTable, OCLBacktrackingKWLexersym {
41
public class OCLBacktrackingKWLexerprs implements lpg.runtime.ParseTable, OCLBacktrackingKWLexersym {
42
    public final static int ERROR_SYMBOL = 0;
43
    public final int getErrorSymbol() { return ERROR_SYMBOL; }
44
45
    public final static int SCOPE_UBOUND = 0;
46
    public final int getScopeUbound() { return SCOPE_UBOUND; }
47
48
    public final static int SCOPE_SIZE = 0;
49
    public final int getScopeSize() { return SCOPE_SIZE; }
50
51
    public final static int MAX_NAME_LENGTH = 0;
52
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
53
54
    public final static int NUM_STATES = 159;
55
    public final int getNumStates() { return NUM_STATES; }
56
57
    public final static int NT_OFFSET = 56;
58
    public final int getNtOffset() { return NT_OFFSET; }
59
60
    public final static int LA_STATE_OFFSET = 247;
61
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
62
63
    public final static int MAX_LA = 1;
64
    public final int getMaxLa() { return MAX_LA; }
65
66
    public final static int NUM_RULES = 42;
67
    public final int getNumRules() { return NUM_RULES; }
68
69
    public final static int NUM_NONTERMINALS = 2;
70
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
71
72
    public final static int NUM_SYMBOLS = 58;
73
    public final int getNumSymbols() { return NUM_SYMBOLS; }
74
75
    public final static int SEGMENT_SIZE = 8192;
76
    public final int getSegmentSize() { return SEGMENT_SIZE; }
77
78
    public final static int START_STATE = 43;
79
    public final int getStartState() { return START_STATE; }
80
81
    public final static int IDENTIFIER_SYMBOL = 0;
82
    public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; }
83
84
    public final static int EOFT_SYMBOL = 36;
85
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
86
87
    public final static int EOLT_SYMBOL = 57;
88
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
89
90
    public final static int ACCEPT_ACTION = 204;
91
    public final int getAcceptAction() { return ACCEPT_ACTION; }
92
93
    public final static int ERROR_ACTION = 205;
94
    public final int getErrorAction() { return ERROR_ACTION; }
95
96
    public final static boolean BACKTRACK = false;
97
    public final boolean getBacktrack() { return BACKTRACK; }
98
99
    public final int getStartSymbol() { return lhs(0); }
100
    public final boolean isValidForParser() { return OCLBacktrackingKWLexersym.isValidForParser; }
101
102
103
    public interface IsNullable {
104
        public final static byte isNullable[] = {0,
105
            0,0,0,0,0,0,0,0,0,0,
106
            0,0,0,0,0,0,0,0,0,0,
107
            0,0,0,0,0,0,0,0,0,0,
108
            0,0,0,0,0,0,0,0,0,0,
109
            0,0,0,0,0,0,0,0,0,0,
110
            0,0,0,0,0,0,0,0
111
        };
112
    };
113
    public final static byte isNullable[] = IsNullable.isNullable;
114
    public final boolean isNullable(int index) { return isNullable[index] != 0; }
115
116
    public interface ProsthesesIndex {
117
        public final static byte prosthesesIndex[] = {0,
118
            2,1
119
        };
120
    };
121
    public final static byte prosthesesIndex[] = ProsthesesIndex.prosthesesIndex;
122
    public final int prosthesesIndex(int index) { return prosthesesIndex[index]; }
38
123
39
    public interface IsKeyword {
124
    public interface IsKeyword {
40
        public final static byte isKeyword[] = {0,
125
        public final static byte isKeyword[] = {0,
Lines 43-49 Link Here
43
            0,0,0,0,0,0,0,0,0,0,
128
            0,0,0,0,0,0,0,0,0,0,
44
            0,0,0,0,0,0,0,0,0,0,
129
            0,0,0,0,0,0,0,0,0,0,
45
            0,0,0,0,0,0,0,0,0,0,
130
            0,0,0,0,0,0,0,0,0,0,
46
            0,0,0,0
131
            0,0,0,0,0,0
47
        };
132
        };
48
    };
133
    };
49
    public final static byte isKeyword[] = IsKeyword.isKeyword;
134
    public final static byte isKeyword[] = IsKeyword.isKeyword;
Lines 136-142 Link Here
136
            0,0,0,0,0,0,0,0,0,0,
221
            0,0,0,0,0,0,0,0,0,0,
137
            0,0,0,0,0,0,0,0,0,0,
222
            0,0,0,0,0,0,0,0,0,0,
138
            0,0,0,0,0,0,0,0,0,0,
223
            0,0,0,0,0,0,0,0,0,0,
139
            0,0,0
224
            0,0,0,0,0
140
        };
225
        };
141
    };
226
    };
142
    public final static byte termCheck[] = TermCheck.termCheck;
227
    public final static byte termCheck[] = TermCheck.termCheck;
Lines 200-255 Link Here
200
    public final int scopeState(int index) { return 0;}
285
    public final int scopeState(int index) { return 0;}
201
    public final int inSymb(int index) { return 0;}
286
    public final int inSymb(int index) { return 0;}
202
    public final String name(int index) { return null; }
287
    public final String name(int index) { return null; }
203
    public final int getErrorSymbol() { return 0; }
204
    public final int getScopeUbound() { return 0; }
205
    public final int getScopeSize() { return 0; }
206
    public final int getMaxNameLength() { return 0; }
207
208
    public final static int
209
           NUM_STATES        = 159,
210
           NT_OFFSET         = 54,
211
           LA_STATE_OFFSET   = 247,
212
           MAX_LA            = 1,
213
           NUM_RULES         = 42,
214
           NUM_NONTERMINALS  = 2,
215
           NUM_SYMBOLS       = 56,
216
           SEGMENT_SIZE      = 8192,
217
           START_STATE       = 43,
218
           IDENTIFIER_SYMBOL = 0,
219
           EOFT_SYMBOL       = 36,
220
           EOLT_SYMBOL       = 55,
221
           ACCEPT_ACTION     = 204,
222
           ERROR_ACTION      = 205;
223
224
    public final static boolean BACKTRACK = false;
225
226
    public final int getNumStates() { return NUM_STATES; }
227
    public final int getNtOffset() { return NT_OFFSET; }
228
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
229
    public final int getMaxLa() { return MAX_LA; }
230
    public final int getNumRules() { return NUM_RULES; }
231
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
232
    public final int getNumSymbols() { return NUM_SYMBOLS; }
233
    public final int getSegmentSize() { return SEGMENT_SIZE; }
234
    public final int getStartState() { return START_STATE; }
235
    public final int getStartSymbol() { return lhs[0]; }
236
    public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
237
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
238
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
239
    public final int getAcceptAction() { return ACCEPT_ACTION; }
240
    public final int getErrorAction() { return ERROR_ACTION; }
241
    public final boolean isValidForParser() { return isValidForParser; }
242
    public final boolean getBacktrack() { return BACKTRACK; }
243
244
    public final int originalState(int state) { return 0; }
288
    public final int originalState(int state) { return 0; }
245
    public final int asi(int state) { return 0; }
289
    public final int asi(int state) { return 0; }
246
    public final int nasi(int state) { return 0; }
290
    public final int nasi(int state) { return 0; }
247
    public final int inSymbol(int state) { return 0; }
291
    public final int inSymbol(int state) { return 0; }
248
292
293
    /**
294
     * assert(! goto_default);
295
     */
249
    public final int ntAction(int state, int sym) {
296
    public final int ntAction(int state, int sym) {
250
        return baseAction[state + sym];
297
        return baseAction[state + sym];
251
    }
298
    }
252
299
300
    /**
301
     * assert(! shift_default);
302
     */
253
    public final int tAction(int state, int sym) {
303
    public final int tAction(int state, int sym) {
254
        int i = baseAction[state],
304
        int i = baseAction[state],
255
            k = i + sym;
305
            k = i + sym;
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.java (-101 / +148 lines)
Lines 12-20 Link Here
12
*   IBM - Initial API and implementation
12
*   IBM - Initial API and implementation
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
14
*   E.D.Willink - Bug 285633, 292112
14
*   E.D.Willink - Bug 285633, 292112
15
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
16
*
15
* </copyright>
17
* </copyright>
16
*
18
*
17
* $Id: OCLBacktrackingKWLexer.java,v 1.10 2009/11/09 22:08:15 ewillink Exp $
19
*
18
*/
20
*/
19
/**
21
/**
20
* Complete OCL Keyword Lexer
22
* Complete OCL Keyword Lexer
Lines 29-34 Link Here
29
* Contributors:
31
* Contributors:
30
*   IBM - Initial API and implementation
32
*   IBM - Initial API and implementation
31
*   E.D.Willink - Bug 292112
33
*   E.D.Willink - Bug 292112
34
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
35
*
32
* </copyright>
36
* </copyright>
33
*/
37
*/
34
38
Lines 36-42 Link Here
36
40
37
41
38
42
39
40
public class OCLBacktrackingKWLexer extends OCLBacktrackingKWLexerprs implements OCLBacktrackingParsersym
43
public class OCLBacktrackingKWLexer extends OCLBacktrackingKWLexerprs implements OCLBacktrackingParsersym
41
{
44
{
42
    private char[] inputChars;
45
    private char[] inputChars;
Lines 74-139 Link Here
74
    final static int tokenKind[] = new int[128];
77
    final static int tokenKind[] = new int[128];
75
    static
78
    static
76
    {
79
    {
77
        tokenKind['$'] = Char_DollarSign;
80
        tokenKind['$'] = OCLBacktrackingKWLexersym.Char_DollarSign;
78
81
        tokenKind['%'] = OCLBacktrackingKWLexersym.Char_Percent;
79
        tokenKind['a'] = Char_a;
82
        tokenKind['_'] = OCLBacktrackingKWLexersym.Char__;
80
        tokenKind['b'] = Char_b;
83
81
        tokenKind['c'] = Char_c;
84
        tokenKind['a'] = OCLBacktrackingKWLexersym.Char_a;
82
        tokenKind['d'] = Char_d;
85
        tokenKind['b'] = OCLBacktrackingKWLexersym.Char_b;
83
        tokenKind['e'] = Char_e;
86
        tokenKind['c'] = OCLBacktrackingKWLexersym.Char_c;
84
        tokenKind['f'] = Char_f;
87
        tokenKind['d'] = OCLBacktrackingKWLexersym.Char_d;
85
        tokenKind['g'] = Char_g;
88
        tokenKind['e'] = OCLBacktrackingKWLexersym.Char_e;
86
        tokenKind['h'] = Char_h;
89
        tokenKind['f'] = OCLBacktrackingKWLexersym.Char_f;
87
        tokenKind['i'] = Char_i;
90
        tokenKind['g'] = OCLBacktrackingKWLexersym.Char_g;
88
        tokenKind['j'] = Char_j;
91
        tokenKind['h'] = OCLBacktrackingKWLexersym.Char_h;
89
        tokenKind['k'] = Char_k;
92
        tokenKind['i'] = OCLBacktrackingKWLexersym.Char_i;
90
        tokenKind['l'] = Char_l;
93
        tokenKind['j'] = OCLBacktrackingKWLexersym.Char_j;
91
        tokenKind['m'] = Char_m;
94
        tokenKind['k'] = OCLBacktrackingKWLexersym.Char_k;
92
        tokenKind['n'] = Char_n;
95
        tokenKind['l'] = OCLBacktrackingKWLexersym.Char_l;
93
        tokenKind['o'] = Char_o;
96
        tokenKind['m'] = OCLBacktrackingKWLexersym.Char_m;
94
        tokenKind['p'] = Char_p;
97
        tokenKind['n'] = OCLBacktrackingKWLexersym.Char_n;
95
        tokenKind['q'] = Char_q;
98
        tokenKind['o'] = OCLBacktrackingKWLexersym.Char_o;
96
        tokenKind['r'] = Char_r;
99
        tokenKind['p'] = OCLBacktrackingKWLexersym.Char_p;
97
        tokenKind['s'] = Char_s;
100
        tokenKind['q'] = OCLBacktrackingKWLexersym.Char_q;
98
        tokenKind['t'] = Char_t;
101
        tokenKind['r'] = OCLBacktrackingKWLexersym.Char_r;
99
        tokenKind['u'] = Char_u;
102
        tokenKind['s'] = OCLBacktrackingKWLexersym.Char_s;
100
        tokenKind['v'] = Char_v;
103
        tokenKind['t'] = OCLBacktrackingKWLexersym.Char_t;
101
        tokenKind['w'] = Char_w;
104
        tokenKind['u'] = OCLBacktrackingKWLexersym.Char_u;
102
        tokenKind['x'] = Char_x;
105
        tokenKind['v'] = OCLBacktrackingKWLexersym.Char_v;
103
        tokenKind['y'] = Char_y;
106
        tokenKind['w'] = OCLBacktrackingKWLexersym.Char_w;
104
        tokenKind['z'] = Char_z;
107
        tokenKind['x'] = OCLBacktrackingKWLexersym.Char_x;
105
108
        tokenKind['y'] = OCLBacktrackingKWLexersym.Char_y;
106
        tokenKind['A'] = Char_A;
109
        tokenKind['z'] = OCLBacktrackingKWLexersym.Char_z;
107
        tokenKind['B'] = Char_B;
110
108
        tokenKind['C'] = Char_C;
111
        tokenKind['A'] = OCLBacktrackingKWLexersym.Char_A;
109
        tokenKind['D'] = Char_D;
112
        tokenKind['B'] = OCLBacktrackingKWLexersym.Char_B;
110
        tokenKind['E'] = Char_E;
113
        tokenKind['C'] = OCLBacktrackingKWLexersym.Char_C;
111
        tokenKind['F'] = Char_F;
114
        tokenKind['D'] = OCLBacktrackingKWLexersym.Char_D;
112
        tokenKind['G'] = Char_G;
115
        tokenKind['E'] = OCLBacktrackingKWLexersym.Char_E;
113
        tokenKind['H'] = Char_H;
116
        tokenKind['F'] = OCLBacktrackingKWLexersym.Char_F;
114
        tokenKind['I'] = Char_I;
117
        tokenKind['G'] = OCLBacktrackingKWLexersym.Char_G;
115
        tokenKind['J'] = Char_J;
118
        tokenKind['H'] = OCLBacktrackingKWLexersym.Char_H;
116
        tokenKind['K'] = Char_K;
119
        tokenKind['I'] = OCLBacktrackingKWLexersym.Char_I;
117
        tokenKind['L'] = Char_L;
120
        tokenKind['J'] = OCLBacktrackingKWLexersym.Char_J;
118
        tokenKind['M'] = Char_M;
121
        tokenKind['K'] = OCLBacktrackingKWLexersym.Char_K;
119
        tokenKind['N'] = Char_N;
122
        tokenKind['L'] = OCLBacktrackingKWLexersym.Char_L;
120
        tokenKind['O'] = Char_O;
123
        tokenKind['M'] = OCLBacktrackingKWLexersym.Char_M;
121
        tokenKind['P'] = Char_P;
124
        tokenKind['N'] = OCLBacktrackingKWLexersym.Char_N;
122
        tokenKind['Q'] = Char_Q;
125
        tokenKind['O'] = OCLBacktrackingKWLexersym.Char_O;
123
        tokenKind['R'] = Char_R;
126
        tokenKind['P'] = OCLBacktrackingKWLexersym.Char_P;
124
        tokenKind['S'] = Char_S;
127
        tokenKind['Q'] = OCLBacktrackingKWLexersym.Char_Q;
125
        tokenKind['T'] = Char_T;
128
        tokenKind['R'] = OCLBacktrackingKWLexersym.Char_R;
126
        tokenKind['U'] = Char_U;
129
        tokenKind['S'] = OCLBacktrackingKWLexersym.Char_S;
127
        tokenKind['V'] = Char_V;
130
        tokenKind['T'] = OCLBacktrackingKWLexersym.Char_T;
128
        tokenKind['W'] = Char_W;
131
        tokenKind['U'] = OCLBacktrackingKWLexersym.Char_U;
129
        tokenKind['X'] = Char_X;
132
        tokenKind['V'] = OCLBacktrackingKWLexersym.Char_V;
130
        tokenKind['Y'] = Char_Y;
133
        tokenKind['W'] = OCLBacktrackingKWLexersym.Char_W;
131
        tokenKind['Z'] = Char_Z;
134
        tokenKind['X'] = OCLBacktrackingKWLexersym.Char_X;
135
        tokenKind['Y'] = OCLBacktrackingKWLexersym.Char_Y;
136
        tokenKind['Z'] = OCLBacktrackingKWLexersym.Char_Z;
132
    };
137
    };
133
138
134
    final int getKind(char c)
139
    final int getKind(int c)
135
    {
140
    {
136
        return (c < 128 ? tokenKind[c] : 0);
141
        return (((c & 0xFFFFFF80) == 0) /* 0 <= c < 128? */ ? tokenKind[c] : 0);
137
    }
142
    }
138
143
139
144
Lines 145-397 Link Here
145
        //
150
        //
146
        // Rule 1:  KeyWord ::= s e l f
151
        // Rule 1:  KeyWord ::= s e l f
147
        //
152
        //
148
		keywordKind[1] = (TK_self);
153
        
154
		keywordKind[1] = (OCLBacktrackingParsersym.TK_self);
149
	  
155
	  
150
	
156
	
151
        //
157
        //
152
        // Rule 2:  KeyWord ::= i f
158
        // Rule 2:  KeyWord ::= i f
153
        //
159
        //
154
		keywordKind[2] = (TK_if);
160
        
161
		keywordKind[2] = (OCLBacktrackingParsersym.TK_if);
155
	  
162
	  
156
	
163
	
157
        //
164
        //
158
        // Rule 3:  KeyWord ::= t h e n
165
        // Rule 3:  KeyWord ::= t h e n
159
        //
166
        //
160
		keywordKind[3] = (TK_then);
167
        
168
		keywordKind[3] = (OCLBacktrackingParsersym.TK_then);
161
	  
169
	  
162
	
170
	
163
        //
171
        //
164
        // Rule 4:  KeyWord ::= e l s e
172
        // Rule 4:  KeyWord ::= e l s e
165
        //
173
        //
166
		keywordKind[4] = (TK_else);
174
        
175
		keywordKind[4] = (OCLBacktrackingParsersym.TK_else);
167
	  
176
	  
168
	
177
	
169
        //
178
        //
170
        // Rule 5:  KeyWord ::= e n d i f
179
        // Rule 5:  KeyWord ::= e n d i f
171
        //
180
        //
172
		keywordKind[5] = (TK_endif);
181
        
182
		keywordKind[5] = (OCLBacktrackingParsersym.TK_endif);
173
	  
183
	  
174
	
184
	
175
        //
185
        //
176
        // Rule 6:  KeyWord ::= a n d
186
        // Rule 6:  KeyWord ::= a n d
177
        //
187
        //
178
		keywordKind[6] = (TK_and);
188
        
189
		keywordKind[6] = (OCLBacktrackingParsersym.TK_and);
179
	  
190
	  
180
	
191
	
181
        //
192
        //
182
        // Rule 7:  KeyWord ::= o r
193
        // Rule 7:  KeyWord ::= o r
183
        //
194
        //
184
		keywordKind[7] = (TK_or);
195
        
196
		keywordKind[7] = (OCLBacktrackingParsersym.TK_or);
185
	  
197
	  
186
	
198
	
187
        //
199
        //
188
        // Rule 8:  KeyWord ::= x o r
200
        // Rule 8:  KeyWord ::= x o r
189
        //
201
        //
190
		keywordKind[8] = (TK_xor);
202
        
203
		keywordKind[8] = (OCLBacktrackingParsersym.TK_xor);
191
	  
204
	  
192
	
205
	
193
        //
206
        //
194
        // Rule 9:  KeyWord ::= n o t
207
        // Rule 9:  KeyWord ::= n o t
195
        //
208
        //
196
		keywordKind[9] = (TK_not);
209
        
210
		keywordKind[9] = (OCLBacktrackingParsersym.TK_not);
197
	  
211
	  
198
	
212
	
199
        //
213
        //
200
        // Rule 10:  KeyWord ::= i m p l i e s
214
        // Rule 10:  KeyWord ::= i m p l i e s
201
        //
215
        //
202
		keywordKind[10] = (TK_implies);
216
        
217
		keywordKind[10] = (OCLBacktrackingParsersym.TK_implies);
203
	  
218
	  
204
	
219
	
205
        //
220
        //
206
        // Rule 11:  KeyWord ::= l e t
221
        // Rule 11:  KeyWord ::= l e t
207
        //
222
        //
208
		keywordKind[11] = (TK_let);
223
        
224
		keywordKind[11] = (OCLBacktrackingParsersym.TK_let);
209
	  
225
	  
210
	
226
	
211
        //
227
        //
212
        // Rule 12:  KeyWord ::= i n
228
        // Rule 12:  KeyWord ::= i n
213
        //
229
        //
214
		keywordKind[12] = (TK_in);
230
        
231
		keywordKind[12] = (OCLBacktrackingParsersym.TK_in);
215
	  
232
	  
216
	
233
	
217
        //
234
        //
218
        // Rule 13:  KeyWord ::= t r u e
235
        // Rule 13:  KeyWord ::= t r u e
219
        //
236
        //
220
		keywordKind[13] = (TK_true);
237
        
238
		keywordKind[13] = (OCLBacktrackingParsersym.TK_true);
221
	  
239
	  
222
	
240
	
223
        //
241
        //
224
        // Rule 14:  KeyWord ::= f a l s e
242
        // Rule 14:  KeyWord ::= f a l s e
225
        //
243
        //
226
		keywordKind[14] = (TK_false);
244
        
245
		keywordKind[14] = (OCLBacktrackingParsersym.TK_false);
227
	  
246
	  
228
	
247
	
229
        //
248
        //
230
        // Rule 15:  KeyWord ::= S e t
249
        // Rule 15:  KeyWord ::= S e t
231
        //
250
        //
232
		keywordKind[15] = (TK_Set);
251
        
252
		keywordKind[15] = (OCLBacktrackingParsersym.TK_Set);
233
	  
253
	  
234
	
254
	
235
        //
255
        //
236
        // Rule 16:  KeyWord ::= B a g
256
        // Rule 16:  KeyWord ::= B a g
237
        //
257
        //
238
		keywordKind[16] = (TK_Bag);
258
        
259
		keywordKind[16] = (OCLBacktrackingParsersym.TK_Bag);
239
	  
260
	  
240
	
261
	
241
        //
262
        //
242
        // Rule 17:  KeyWord ::= S e q u e n c e
263
        // Rule 17:  KeyWord ::= S e q u e n c e
243
        //
264
        //
244
		keywordKind[17] = (TK_Sequence);
265
        
266
		keywordKind[17] = (OCLBacktrackingParsersym.TK_Sequence);
245
	  
267
	  
246
	
268
	
247
        //
269
        //
248
        // Rule 18:  KeyWord ::= C o l l e c t i o n
270
        // Rule 18:  KeyWord ::= C o l l e c t i o n
249
        //
271
        //
250
		keywordKind[18] = (TK_Collection);
272
        
273
		keywordKind[18] = (OCLBacktrackingParsersym.TK_Collection);
251
	  
274
	  
252
	
275
	
253
        //
276
        //
254
        // Rule 19:  KeyWord ::= O r d e r e d S e t
277
        // Rule 19:  KeyWord ::= O r d e r e d S e t
255
        //
278
        //
256
		keywordKind[19] = (TK_OrderedSet);
279
        
280
		keywordKind[19] = (OCLBacktrackingParsersym.TK_OrderedSet);
257
	  
281
	  
258
	
282
	
259
        //
283
        //
260
        // Rule 20:  KeyWord ::= S t r i n g
284
        // Rule 20:  KeyWord ::= S t r i n g
261
        //
285
        //
262
		keywordKind[20] = (TK_String);
286
        
287
		keywordKind[20] = (OCLBacktrackingParsersym.TK_String);
263
	  
288
	  
264
	
289
	
265
        //
290
        //
266
        // Rule 21:  KeyWord ::= I n t e g e r
291
        // Rule 21:  KeyWord ::= I n t e g e r
267
        //
292
        //
268
		keywordKind[21] = (TK_Integer);
293
        
294
		keywordKind[21] = (OCLBacktrackingParsersym.TK_Integer);
269
	  
295
	  
270
	
296
	
271
        //
297
        //
272
        // Rule 22:  KeyWord ::= U n l i m i t e d N a t u r a l
298
        // Rule 22:  KeyWord ::= U n l i m i t e d N a t u r a l
273
        //
299
        //
274
		keywordKind[22] = (TK_UnlimitedNatural);
300
        
301
		keywordKind[22] = (OCLBacktrackingParsersym.TK_UnlimitedNatural);
275
	  
302
	  
276
	
303
	
277
        //
304
        //
278
        // Rule 23:  KeyWord ::= R e a l
305
        // Rule 23:  KeyWord ::= R e a l
279
        //
306
        //
280
		keywordKind[23] = (TK_Real);
307
        
308
		keywordKind[23] = (OCLBacktrackingParsersym.TK_Real);
281
	  
309
	  
282
	
310
	
283
        //
311
        //
284
        // Rule 24:  KeyWord ::= B o o l e a n
312
        // Rule 24:  KeyWord ::= B o o l e a n
285
        //
313
        //
286
		keywordKind[24] = (TK_Boolean);
314
        
315
		keywordKind[24] = (OCLBacktrackingParsersym.TK_Boolean);
287
	  
316
	  
288
	
317
	
289
        //
318
        //
290
        // Rule 25:  KeyWord ::= T u p l e
319
        // Rule 25:  KeyWord ::= T u p l e
291
        //
320
        //
292
		keywordKind[25] = (TK_Tuple);
321
        
322
		keywordKind[25] = (OCLBacktrackingParsersym.TK_Tuple);
293
	  
323
	  
294
	
324
	
295
        //
325
        //
296
        // Rule 26:  KeyWord ::= O c l A n y
326
        // Rule 26:  KeyWord ::= O c l A n y
297
        //
327
        //
298
		keywordKind[26] = (TK_OclAny);
328
        
329
		keywordKind[26] = (OCLBacktrackingParsersym.TK_OclAny);
299
	  
330
	  
300
	
331
	
301
        //
332
        //
302
        // Rule 27:  KeyWord ::= O c l V o i d
333
        // Rule 27:  KeyWord ::= O c l V o i d
303
        //
334
        //
304
		keywordKind[27] = (TK_OclVoid);
335
        
336
		keywordKind[27] = (OCLBacktrackingParsersym.TK_OclVoid);
305
	  
337
	  
306
	
338
	
307
        //
339
        //
308
        // Rule 28:  KeyWord ::= O c l I n v a l i d
340
        // Rule 28:  KeyWord ::= O c l I n v a l i d
309
        //
341
        //
310
		keywordKind[28] = (TK_OclInvalid);
342
        
343
		keywordKind[28] = (OCLBacktrackingParsersym.TK_OclInvalid);
311
	  
344
	  
312
	
345
	
313
        //
346
        //
314
        // Rule 29:  KeyWord ::= n u l l
347
        // Rule 29:  KeyWord ::= n u l l
315
        //
348
        //
316
		keywordKind[29] = (TK_null);
349
        
350
		keywordKind[29] = (OCLBacktrackingParsersym.TK_null);
317
	  
351
	  
318
	
352
	
319
        //
353
        //
320
        // Rule 30:  KeyWord ::= i n v a l i d
354
        // Rule 30:  KeyWord ::= i n v a l i d
321
        //
355
        //
322
		keywordKind[30] = (TK_invalid);
356
        
357
		keywordKind[30] = (OCLBacktrackingParsersym.TK_invalid);
323
	  
358
	  
324
	
359
	
325
        //
360
        //
326
        // Rule 31:  KeyWord ::= i n v
361
        // Rule 31:  KeyWord ::= i n v
327
        //
362
        //
328
		keywordKind[31] = (TK_inv);
363
        
364
		keywordKind[31] = (OCLBacktrackingParsersym.TK_inv);
329
	  
365
	  
330
	
366
	
331
        //
367
        //
332
        // Rule 32:  KeyWord ::= p r e
368
        // Rule 32:  KeyWord ::= p r e
333
        //
369
        //
334
		keywordKind[32] = (TK_pre);
370
        
371
		keywordKind[32] = (OCLBacktrackingParsersym.TK_pre);
335
	  
372
	  
336
	
373
	
337
        //
374
        //
338
        // Rule 33:  KeyWord ::= p o s t
375
        // Rule 33:  KeyWord ::= p o s t
339
        //
376
        //
340
		keywordKind[33] = (TK_post);
377
        
378
		keywordKind[33] = (OCLBacktrackingParsersym.TK_post);
341
	  
379
	  
342
	
380
	
343
        //
381
        //
344
        // Rule 34:  KeyWord ::= b o d y
382
        // Rule 34:  KeyWord ::= b o d y
345
        //
383
        //
346
		keywordKind[34] = (TK_body);
384
        
385
		keywordKind[34] = (OCLBacktrackingParsersym.TK_body);
347
	  
386
	  
348
	
387
	
349
        //
388
        //
350
        // Rule 35:  KeyWord ::= c o n t e x t
389
        // Rule 35:  KeyWord ::= c o n t e x t
351
        //
390
        //
352
		keywordKind[35] = (TK_context);
391
        
392
		keywordKind[35] = (OCLBacktrackingParsersym.TK_context);
353
	  
393
	  
354
	
394
	
355
        //
395
        //
356
        // Rule 36:  KeyWord ::= p a c k a g e
396
        // Rule 36:  KeyWord ::= p a c k a g e
357
        //
397
        //
358
		keywordKind[36] = (TK_package);
398
        
399
		keywordKind[36] = (OCLBacktrackingParsersym.TK_package);
359
	  
400
	  
360
	
401
	
361
        //
402
        //
362
        // Rule 37:  KeyWord ::= e n d p a c k a g e
403
        // Rule 37:  KeyWord ::= e n d p a c k a g e
363
        //
404
        //
364
		keywordKind[37] = (TK_endpackage);
405
        
406
		keywordKind[37] = (OCLBacktrackingParsersym.TK_endpackage);
365
	  
407
	  
366
	
408
	
367
        //
409
        //
368
        // Rule 38:  KeyWord ::= d e f
410
        // Rule 38:  KeyWord ::= d e f
369
        //
411
        //
370
		keywordKind[38] = (TK_def);
412
        
413
		keywordKind[38] = (OCLBacktrackingParsersym.TK_def);
371
	  
414
	  
372
	
415
	
373
        //
416
        //
374
        // Rule 39:  KeyWord ::= d e r i v e
417
        // Rule 39:  KeyWord ::= d e r i v e
375
        //
418
        //
376
		keywordKind[39] = (TK_derive);
419
        
420
		keywordKind[39] = (OCLBacktrackingParsersym.TK_derive);
377
	  
421
	  
378
	
422
	
379
        //
423
        //
380
        // Rule 40:  KeyWord ::= i n i t
424
        // Rule 40:  KeyWord ::= i n i t
381
        //
425
        //
382
		keywordKind[40] = (TK_init);
426
        
427
		keywordKind[40] = (OCLBacktrackingParsersym.TK_init);
383
	  
428
	  
384
	
429
	
385
        //
430
        //
386
        // Rule 41:  KeyWord ::= O c l M e s s a g e
431
        // Rule 41:  KeyWord ::= O c l M e s s a g e
387
        //
432
        //
388
		keywordKind[41] = (TK_OclMessage);
433
        
434
		keywordKind[41] = (OCLBacktrackingParsersym.TK_OclMessage);
389
	  
435
	  
390
	
436
	
391
        //
437
        //
392
        // Rule 42:  KeyWord ::= s t a t i c
438
        // Rule 42:  KeyWord ::= s t a t i c
393
        //
439
        //
394
		keywordKind[42] = (TK_static);
440
        
441
		keywordKind[42] = (OCLBacktrackingParsersym.TK_static);
395
	  
442
	  
396
	
443
	
397
444
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParserprs.java (-66 / +134 lines)
Lines 14-23 Link Here
14
*   E.D.Willink - Remove unnecessary warning suppression
14
*   E.D.Willink - Remove unnecessary warning suppression
15
*   E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112
15
*   E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112
16
*   Borland - Bug 242880
16
*   Borland - Bug 242880
17
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
17
*
18
*
18
* </copyright>
19
* </copyright>
19
*
20
*
20
* $Id: OCLBacktrackingParserprs.java,v 1.12 2009/11/09 22:14:52 ewillink Exp $
21
* $Id: EssentialOCL.g,v 1.16 2009/11/09 22:03:57 ewillink Exp $
21
*/
22
*/
22
/**
23
/**
23
* Complete OCL Grammar
24
* Complete OCL Grammar
Lines 32-37 Link Here
32
* Contributors:
33
* Contributors:
33
*   IBM - Initial API and implementation
34
*   IBM - Initial API and implementation
34
*   E.D.Willink - Bug 259818, 285633, 292112
35
*   E.D.Willink - Bug 259818, 285633, 292112
36
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
35
* </copyright>
37
* </copyright>
36
*/
38
*/
37
39
Lines 45-51 Link Here
45
 * @since 1.3
47
 * @since 1.3
46
 */
48
 */
47
@SuppressWarnings("nls")
49
@SuppressWarnings("nls")
48
public class OCLBacktrackingParserprs implements lpg.lpgjavaruntime.ParseTable, OCLBacktrackingParsersym {
50
public class OCLBacktrackingParserprs implements lpg.runtime.ParseTable, OCLBacktrackingParsersym {
51
    public final static int ERROR_SYMBOL = 1;
52
    public final int getErrorSymbol() { return ERROR_SYMBOL; }
53
54
    public final static int SCOPE_UBOUND = 53;
55
    public final int getScopeUbound() { return SCOPE_UBOUND; }
56
57
    public final static int SCOPE_SIZE = 54;
58
    public final int getScopeSize() { return SCOPE_SIZE; }
59
60
    public final static int MAX_NAME_LENGTH = 29;
61
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
62
63
    public final static int NUM_STATES = 255;
64
    public final int getNumStates() { return NUM_STATES; }
65
66
    public final static int NT_OFFSET = 78;
67
    public final int getNtOffset() { return NT_OFFSET; }
68
69
    public final static int LA_STATE_OFFSET = 4690;
70
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
71
72
    public final static int MAX_LA = 1;
73
    public final int getMaxLa() { return MAX_LA; }
74
75
    public final static int NUM_RULES = 333;
76
    public final int getNumRules() { return NUM_RULES; }
77
78
    public final static int NUM_NONTERMINALS = 122;
79
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
80
81
    public final static int NUM_SYMBOLS = 200;
82
    public final int getNumSymbols() { return NUM_SYMBOLS; }
83
84
    public final static int SEGMENT_SIZE = 8192;
85
    public final int getSegmentSize() { return SEGMENT_SIZE; }
86
87
    public final static int START_STATE = 3970;
88
    public final int getStartState() { return START_STATE; }
89
90
    public final static int IDENTIFIER_SYMBOL = 5;
91
    public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; }
92
93
    public final static int EOFT_SYMBOL = 72;
94
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
95
96
    public final static int EOLT_SYMBOL = 72;
97
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
98
99
    public final static int ACCEPT_ACTION = 4356;
100
    public final int getAcceptAction() { return ACCEPT_ACTION; }
101
102
    public final static int ERROR_ACTION = 4357;
103
    public final int getErrorAction() { return ERROR_ACTION; }
104
105
    public final static boolean BACKTRACK = true;
106
    public final boolean getBacktrack() { return BACKTRACK; }
107
108
    public final int getStartSymbol() { return lhs(0); }
109
    public final boolean isValidForParser() { return OCLBacktrackingParsersym.isValidForParser; }
110
111
112
    public interface IsNullable {
113
        public final static byte isNullable[] = {0,
114
            0,0,0,0,0,0,0,0,0,0,
115
            0,0,0,0,0,0,0,0,0,0,
116
            0,0,0,0,0,0,0,0,0,0,
117
            0,0,0,0,0,0,0,0,0,0,
118
            0,0,0,0,0,0,0,0,0,0,
119
            0,0,0,0,0,0,0,0,0,0,
120
            0,0,0,0,0,0,0,0,0,0,
121
            0,0,0,0,0,0,0,0,0,0,
122
            0,0,0,0,0,0,0,0,0,0,
123
            0,0,0,0,0,0,0,0,0,0,
124
            0,0,0,0,0,0,0,0,0,0,
125
            0,0,0,0,0,0,0,0,0,0,
126
            0,0,0,0,0,0,0,0,0,0,
127
            0,0,0,0,0,0,0,0,0,0,
128
            0,0,0,0,0,0,0,0,0,0,
129
            1,0,0,0,1,1,0,0,0,0,
130
            0,0,0,0,0,0,0,0,0,0,
131
            1,0,1,1,0,0,0,0,0,0,
132
            1,0,1,0,0,1,0,0,0,0,
133
            0,0,1,0,0,0,0,0,0,0
134
        };
135
    };
136
    public final static byte isNullable[] = IsNullable.isNullable;
137
    public final boolean isNullable(int index) { return isNullable[index] != 0; }
138
139
    public interface ProsthesesIndex {
140
        public final static byte prosthesesIndex[] = {0,
141
            12,122,9,10,14,16,17,11,28,29,
142
            30,31,32,37,38,39,40,41,42,43,
143
            45,46,47,48,49,50,51,52,53,58,
144
            59,60,85,87,88,89,90,99,82,83,
145
            84,79,80,81,76,77,78,73,74,75,
146
            70,71,72,67,68,69,64,65,66,23,
147
            54,61,62,63,20,120,6,8,13,24,
148
            55,98,56,15,21,22,57,96,93,27,
149
            86,108,109,110,111,26,35,36,94,95,
150
            102,25,33,34,97,100,101,104,107,113,
151
            114,115,118,119,2,3,4,18,19,44,
152
            91,92,103,105,106,112,116,117,121,1,
153
            5,7
154
        };
155
    };
156
    public final static byte prosthesesIndex[] = ProsthesesIndex.prosthesesIndex;
157
    public final int prosthesesIndex(int index) { return prosthesesIndex[index]; }
49
158
50
    public interface IsKeyword {
159
    public interface IsKeyword {
51
        public final static byte isKeyword[] = {0,
160
        public final static byte isKeyword[] = {0,
Lines 1470-1504 Link Here
1470
1579
1471
    public interface ScopeRhs {
1580
    public interface ScopeRhs {
1472
        public final static char scopeRhs[] = {0,
1581
        public final static char scopeRhs[] = {0,
1473
            138,2,0,79,0,138,30,0,138,74,
1582
            138,2,0,1,0,138,30,0,138,74,
1474
            138,30,0,35,89,79,0,138,75,138,
1583
            138,30,0,74,138,1,0,138,75,138,
1475
            74,138,30,0,36,89,79,0,35,89,
1584
            74,138,30,0,75,138,1,0,74,138,
1476
            36,89,79,0,149,60,79,0,152,2,
1585
            75,138,1,0,149,60,79,0,152,2,
1477
            81,0,174,2,79,41,104,0,12,0,
1586
            81,0,174,2,79,41,104,0,3,0,
1478
            174,2,79,42,104,0,155,2,150,79,
1587
            174,2,79,42,104,0,155,2,150,79,
1479
            39,104,0,189,31,0,44,89,0,37,
1588
            39,104,0,189,31,0,76,138,0,70,
1480
            0,36,89,37,0,35,89,36,89,37,
1589
            0,75,138,70,0,74,138,75,138,70,
1481
            0,118,0,4,126,0,3,126,0,121,
1590
            0,118,0,37,112,0,7,112,0,121,
1482
            0,2,124,0,1,124,0,124,0,9,
1591
            0,6,119,0,36,119,0,124,0,46,
1483
            121,0,8,121,0,6,121,0,5,121,
1592
            122,0,45,122,0,44,122,0,43,122,
1484
            0,127,0,10,118,0,7,118,0,130,
1593
            0,127,0,47,125,0,23,125,0,130,
1485
            0,38,115,0,133,0,39,112,0,136,
1594
            0,50,128,0,133,0,52,131,0,136,
1486
            0,40,109,0,142,0,42,106,0,16,
1595
            0,55,134,0,142,0,61,137,0,68,
1487
            0,0,149,60,79,40,104,0,155,2,
1596
            151,0,149,60,79,40,104,0,155,2,
1488
            151,147,38,83,40,104,0,155,2,147,
1597
            151,147,38,83,40,104,0,155,2,147,
1489
            38,83,0,155,2,151,79,0,155,2,
1598
            38,83,0,155,2,151,79,0,155,2,
1490
            151,79,40,104,0,155,2,151,185,40,
1599
            151,79,40,104,0,155,2,151,185,40,
1491
            104,0,149,25,79,2,79,39,104,0,
1600
            104,0,149,25,79,2,79,39,104,0,
1492
            149,25,139,2,79,39,104,0,139,2,
1601
            149,25,139,2,79,39,104,0,139,2,
1493
            79,39,104,0,19,100,12,0,138,2,
1602
            79,39,104,0,25,149,3,0,138,2,
1494
            79,39,104,0,138,49,148,69,164,2,
1603
            79,39,104,0,138,49,148,69,164,2,
1495
            79,39,104,0,148,69,164,2,79,39,
1604
            79,39,104,0,148,69,164,2,79,39,
1496
            104,0,18,89,12,0,138,49,148,2,
1605
            104,0,49,138,3,0,138,49,148,2,
1497
            79,39,104,0,148,2,79,39,104,0,
1606
            79,39,104,0,148,2,79,39,104,0,
1498
            138,49,164,25,143,2,79,39,104,0,
1607
            138,49,164,25,143,2,79,39,104,0,
1499
            138,49,164,25,79,2,79,39,104,0,
1608
            138,49,164,25,79,2,79,39,104,0,
1500
            138,49,164,2,79,39,104,0,188,63,
1609
            138,49,164,2,79,39,104,0,188,63,
1501
            18,0,14,0,171,63,84,0,171,63,
1610
            18,0,51,0,171,63,84,0,171,63,
1502
            81,0,186,2,18,0
1611
            81,0,186,2,18,0
1503
        };
1612
        };
1504
    };
1613
    };
Lines 1708-1760 Link Here
1708
    public final static String name[] = Name.name;
1817
    public final static String name[] = Name.name;
1709
    public final String name(int index) { return name[index]; }
1818
    public final String name(int index) { return name[index]; }
1710
1819
1711
    public final static int
1712
           ERROR_SYMBOL      = 1,
1713
           SCOPE_UBOUND      = 53,
1714
           SCOPE_SIZE        = 54,
1715
           MAX_NAME_LENGTH   = 29;
1716
1717
    public final int getErrorSymbol() { return ERROR_SYMBOL; }
1718
    public final int getScopeUbound() { return SCOPE_UBOUND; }
1719
    public final int getScopeSize() { return SCOPE_SIZE; }
1720
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
1721
1722
    public final static int
1723
           NUM_STATES        = 255,
1724
           NT_OFFSET         = 78,
1725
           LA_STATE_OFFSET   = 4690,
1726
           MAX_LA            = 1,
1727
           NUM_RULES         = 333,
1728
           NUM_NONTERMINALS  = 122,
1729
           NUM_SYMBOLS       = 200,
1730
           SEGMENT_SIZE      = 8192,
1731
           START_STATE       = 3970,
1732
           IDENTIFIER_SYMBOL = 5,
1733
           EOFT_SYMBOL       = 72,
1734
           EOLT_SYMBOL       = 72,
1735
           ACCEPT_ACTION     = 4356,
1736
           ERROR_ACTION      = 4357;
1737
1738
    public final static boolean BACKTRACK = true;
1739
1740
    public final int getNumStates() { return NUM_STATES; }
1741
    public final int getNtOffset() { return NT_OFFSET; }
1742
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
1743
    public final int getMaxLa() { return MAX_LA; }
1744
    public final int getNumRules() { return NUM_RULES; }
1745
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
1746
    public final int getNumSymbols() { return NUM_SYMBOLS; }
1747
    public final int getSegmentSize() { return SEGMENT_SIZE; }
1748
    public final int getStartState() { return START_STATE; }
1749
    public final int getStartSymbol() { return lhs[0]; }
1750
    public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
1751
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
1752
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
1753
    public final int getAcceptAction() { return ACCEPT_ACTION; }
1754
    public final int getErrorAction() { return ERROR_ACTION; }
1755
    public final boolean isValidForParser() { return isValidForParser; }
1756
    public final boolean getBacktrack() { return BACKTRACK; }
1757
1758
    public final int originalState(int state) {
1820
    public final int originalState(int state) {
1759
        return -baseCheck[state];
1821
        return -baseCheck[state];
1760
    }
1822
    }
Lines 1768-1777 Link Here
1768
        return inSymb[originalState(state)];
1830
        return inSymb[originalState(state)];
1769
    }
1831
    }
1770
1832
1833
    /**
1834
     * assert(! goto_default);
1835
     */
1771
    public final int ntAction(int state, int sym) {
1836
    public final int ntAction(int state, int sym) {
1772
        return baseAction[state + sym];
1837
        return baseAction[state + sym];
1773
    }
1838
    }
1774
1839
1840
    /**
1841
     * assert(! shift_default);
1842
     */
1775
    public final int tAction(int state, int sym) {
1843
    public final int tAction(int state, int sym) {
1776
        int i = baseAction[state],
1844
        int i = baseAction[state],
1777
            k = i + sym;
1845
            k = i + sym;
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParsersym.java (-2 / +5 lines)
Lines 14-23 Link Here
14
*   E.D.Willink - Remove unnecessary warning suppression
14
*   E.D.Willink - Remove unnecessary warning suppression
15
*   E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112
15
*   E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112
16
*   Borland - Bug 242880
16
*   Borland - Bug 242880
17
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
17
*
18
*
18
* </copyright>
19
* </copyright>
19
*
20
*
20
* $Id: OCLBacktrackingParsersym.java,v 1.12 2009/11/09 22:15:06 ewillink Exp $
21
* $Id: EssentialOCL.g,v 1.16 2009/11/09 22:03:57 ewillink Exp $
21
*/
22
*/
22
/**
23
/**
23
* Complete OCL Grammar
24
* Complete OCL Grammar
Lines 32-37 Link Here
32
* Contributors:
33
* Contributors:
33
*   IBM - Initial API and implementation
34
*   IBM - Initial API and implementation
34
*   E.D.Willink - Bug 259818, 285633, 292112
35
*   E.D.Willink - Bug 259818, 285633, 292112
36
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
35
* </copyright>
37
* </copyright>
36
*/
38
*/
37
39
Lines 132-138 Link Here
132
      TK_MULTI_LINE_COMMENT = 78,
134
      TK_MULTI_LINE_COMMENT = 78,
133
      TK_ERROR_TOKEN = 1;
135
      TK_ERROR_TOKEN = 1;
134
136
135
      public final static String orderedTerminalSymbols[] = {
137
    public final static String orderedTerminalSymbols[] = {
136
                 "",
138
                 "",
137
                 "ERROR_TOKEN",
139
                 "ERROR_TOKEN",
138
                 "LPAREN",
140
                 "LPAREN",
Lines 214-218 Link Here
214
                 "MULTI_LINE_COMMENT"
216
                 "MULTI_LINE_COMMENT"
215
             };
217
             };
216
218
219
    public final static int numTokenKinds = orderedTerminalSymbols.length;
217
    public final static boolean isValidForParser = true;
220
    public final static boolean isValidForParser = true;
218
}
221
}
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexerprs.java (-43 / +104 lines)
Lines 13-21 Link Here
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
14
*   Borland - Bug 242880
14
*   Borland - Bug 242880
15
*   E.D.Willink - Bug 292112
15
*   E.D.Willink - Bug 292112
16
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
17
*
16
* </copyright>
18
* </copyright>
17
*
19
*
18
* $Id: OCLBacktrackingLexerprs.java,v 1.11 2009/11/09 22:13:52 ewillink Exp $
20
* $Id: EssentialOCLLexer.g,v 1.2 2009/11/09 22:01:36 ewillink Exp $
19
*/
21
*/
20
/**
22
/**
21
* Complete OCL Lexer
23
* Complete OCL Lexer
Lines 30-41 Link Here
30
* Contributors:
32
* Contributors:
31
*   IBM - Initial API and implementation
33
*   IBM - Initial API and implementation
32
*   E.D.Willink - Bug 292112, 292594
34
*   E.D.Willink - Bug 292112, 292594
35
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
36
*
33
* </copyright>
37
* </copyright>
34
*/
38
*/
35
39
36
package org.eclipse.ocl.parser.backtracking;
40
package org.eclipse.ocl.parser.backtracking;
37
41
38
public class OCLBacktrackingLexerprs implements lpg.lpgjavaruntime.ParseTable, OCLBacktrackingLexersym {
42
public class OCLBacktrackingLexerprs implements lpg.runtime.ParseTable, OCLBacktrackingLexersym {
43
    public final static int ERROR_SYMBOL = 0;
44
    public final int getErrorSymbol() { return ERROR_SYMBOL; }
45
46
    public final static int SCOPE_UBOUND = 0;
47
    public final int getScopeUbound() { return SCOPE_UBOUND; }
48
49
    public final static int SCOPE_SIZE = 0;
50
    public final int getScopeSize() { return SCOPE_SIZE; }
51
52
    public final static int MAX_NAME_LENGTH = 0;
53
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
54
55
    public final static int NUM_STATES = 40;
56
    public final int getNumStates() { return NUM_STATES; }
57
58
    public final static int NT_OFFSET = 103;
59
    public final int getNtOffset() { return NT_OFFSET; }
60
61
    public final static int LA_STATE_OFFSET = 709;
62
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
63
64
    public final static int MAX_LA = 2;
65
    public final int getMaxLa() { return MAX_LA; }
66
67
    public final static int NUM_RULES = 267;
68
    public final int getNumRules() { return NUM_RULES; }
69
70
    public final static int NUM_NONTERMINALS = 35;
71
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
72
73
    public final static int NUM_SYMBOLS = 138;
74
    public final int getNumSymbols() { return NUM_SYMBOLS; }
75
76
    public final static int SEGMENT_SIZE = 8192;
77
    public final int getSegmentSize() { return SEGMENT_SIZE; }
78
79
    public final static int START_STATE = 268;
80
    public final int getStartState() { return START_STATE; }
81
82
    public final static int IDENTIFIER_SYMBOL = 0;
83
    public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; }
84
85
    public final static int EOFT_SYMBOL = 102;
86
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
87
88
    public final static int EOLT_SYMBOL = 104;
89
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
90
91
    public final static int ACCEPT_ACTION = 441;
92
    public final int getAcceptAction() { return ACCEPT_ACTION; }
93
94
    public final static int ERROR_ACTION = 442;
95
    public final int getErrorAction() { return ERROR_ACTION; }
96
97
    public final static boolean BACKTRACK = false;
98
    public final boolean getBacktrack() { return BACKTRACK; }
99
100
    public final int getStartSymbol() { return lhs(0); }
101
    public final boolean isValidForParser() { return OCLBacktrackingLexersym.isValidForParser; }
102
103
104
    public interface IsNullable {
105
        public final static byte isNullable[] = {0,
106
            0,0,0,0,0,0,0,0,0,0,
107
            0,0,0,0,0,0,0,0,0,0,
108
            0,0,0,0,0,0,0,0,0,0,
109
            0,0,0,0,0,0,0,0,0,0,
110
            0,0,0,0,0,0,0,0,0,0,
111
            0,0,0,0,0,0,0,0,0,0,
112
            0,0,0,0,0,0,0,0,0,0,
113
            0,0,0,0,0,0,0,0,0,0,
114
            0,0,0,0,0,0,0,0,0,0,
115
            0,0,0,0,0,0,0,0,0,0,
116
            0,0,0,0,0,0,0,0,0,0,
117
            0,0,0,1,0,0,0,0,0,0,
118
            0,0,0,0,0,0,0,0,0,1,
119
            0,0,0,0,0,0,0,0
120
        };
121
    };
122
    public final static byte isNullable[] = IsNullable.isNullable;
123
    public final boolean isNullable(int index) { return isNullable[index] != 0; }
124
125
    public interface ProsthesesIndex {
126
        public final static byte prosthesesIndex[] = {0,
127
            19,22,23,24,27,32,14,21,29,34,
128
            5,35,7,8,16,17,20,26,28,33,
129
            2,3,4,6,9,10,11,12,13,15,
130
            18,25,30,31,1
131
        };
132
    };
133
    public final static byte prosthesesIndex[] = ProsthesesIndex.prosthesesIndex;
134
    public final int prosthesesIndex(int index) { return prosthesesIndex[index]; }
39
135
40
    public interface IsKeyword {
136
    public interface IsKeyword {
41
        public final static byte isKeyword[] = {0,
137
        public final static byte isKeyword[] = {0,
Lines 417-472 Link Here
417
    public final int scopeState(int index) { return 0;}
513
    public final int scopeState(int index) { return 0;}
418
    public final int inSymb(int index) { return 0;}
514
    public final int inSymb(int index) { return 0;}
419
    public final String name(int index) { return null; }
515
    public final String name(int index) { return null; }
420
    public final int getErrorSymbol() { return 0; }
421
    public final int getScopeUbound() { return 0; }
422
    public final int getScopeSize() { return 0; }
423
    public final int getMaxNameLength() { return 0; }
424
425
    public final static int
426
           NUM_STATES        = 40,
427
           NT_OFFSET         = 103,
428
           LA_STATE_OFFSET   = 709,
429
           MAX_LA            = 2,
430
           NUM_RULES         = 267,
431
           NUM_NONTERMINALS  = 35,
432
           NUM_SYMBOLS       = 138,
433
           SEGMENT_SIZE      = 8192,
434
           START_STATE       = 268,
435
           IDENTIFIER_SYMBOL = 0,
436
           EOFT_SYMBOL       = 102,
437
           EOLT_SYMBOL       = 104,
438
           ACCEPT_ACTION     = 441,
439
           ERROR_ACTION      = 442;
440
441
    public final static boolean BACKTRACK = false;
442
443
    public final int getNumStates() { return NUM_STATES; }
444
    public final int getNtOffset() { return NT_OFFSET; }
445
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
446
    public final int getMaxLa() { return MAX_LA; }
447
    public final int getNumRules() { return NUM_RULES; }
448
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
449
    public final int getNumSymbols() { return NUM_SYMBOLS; }
450
    public final int getSegmentSize() { return SEGMENT_SIZE; }
451
    public final int getStartState() { return START_STATE; }
452
    public final int getStartSymbol() { return lhs[0]; }
453
    public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
454
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
455
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
456
    public final int getAcceptAction() { return ACCEPT_ACTION; }
457
    public final int getErrorAction() { return ERROR_ACTION; }
458
    public final boolean isValidForParser() { return isValidForParser; }
459
    public final boolean getBacktrack() { return BACKTRACK; }
460
461
    public final int originalState(int state) { return 0; }
516
    public final int originalState(int state) { return 0; }
462
    public final int asi(int state) { return 0; }
517
    public final int asi(int state) { return 0; }
463
    public final int nasi(int state) { return 0; }
518
    public final int nasi(int state) { return 0; }
464
    public final int inSymbol(int state) { return 0; }
519
    public final int inSymbol(int state) { return 0; }
465
520
521
    /**
522
     * assert(! goto_default);
523
     */
466
    public final int ntAction(int state, int sym) {
524
    public final int ntAction(int state, int sym) {
467
        return baseAction[state + sym];
525
        return baseAction[state + sym];
468
    }
526
    }
469
527
528
    /**
529
     * assert(! shift_default);
530
     */
470
    public final int tAction(int state, int sym) {
531
    public final int tAction(int state, int sym) {
471
        int i = baseAction[state],
532
        int i = baseAction[state],
472
            k = i + sym;
533
            k = i + sym;
(-)src/org/eclipse/ocl/cst/CSTNode.java (-1 / +2 lines)
Lines 17-23 Link Here
17
 */
17
 */
18
package org.eclipse.ocl.cst;
18
package org.eclipse.ocl.cst;
19
19
20
import lpg.lpgjavaruntime.IToken;
20
import lpg.runtime.IToken;
21
21
import org.eclipse.emf.ecore.EObject;
22
import org.eclipse.emf.ecore.EObject;
22
23
23
/**
24
/**
(-)src/org/eclipse/ocl/cst/CSTPackage.java (-6 / +6 lines)
Lines 4795-4801 Link Here
4795
	 * The meta object id for the '<em>IToken</em>' data type.
4795
	 * The meta object id for the '<em>IToken</em>' data type.
4796
	 * <!-- begin-user-doc -->
4796
	 * <!-- begin-user-doc -->
4797
	 * <!-- end-user-doc -->
4797
	 * <!-- end-user-doc -->
4798
	 * @see lpg.lpgjavaruntime.IToken
4798
	 * @see lpg.runtime.IToken
4799
	 * @see org.eclipse.ocl.cst.impl.CSTPackageImpl#getIToken()
4799
	 * @see org.eclipse.ocl.cst.impl.CSTPackageImpl#getIToken()
4800
	 * @generated
4800
	 * @generated
4801
	 * @noreference This field is not intended to be referenced by clients.
4801
	 * @noreference This field is not intended to be referenced by clients.
Lines 6214-6226 Link Here
6214
	EEnum getDotOrArrowEnum();
6214
	EEnum getDotOrArrowEnum();
6215
6215
6216
	/**
6216
	/**
6217
	 * Returns the meta object for data type '{@link lpg.lpgjavaruntime.IToken <em>IToken</em>}'.
6217
	 * Returns the meta object for data type '{@link lpg.runtime.IToken <em>IToken</em>}'.
6218
	 * <!-- begin-user-doc -->
6218
	 * <!-- begin-user-doc -->
6219
	 * @since 1.3
6219
	 * @since 1.3
6220
	 * <!-- end-user-doc -->
6220
	 * <!-- end-user-doc -->
6221
	 * @return the meta object for data type '<em>IToken</em>'.
6221
	 * @return the meta object for data type '<em>IToken</em>'.
6222
	 * @see lpg.lpgjavaruntime.IToken
6222
	 * @see lpg.runtime.IToken
6223
	 * @model instanceClass="lpg.lpgjavaruntime.IToken"
6223
	 * @model instanceClass="lpg.runtime.IToken"
6224
	 * @generated
6224
	 * @generated
6225
	 */
6225
	 */
6226
	EDataType getIToken();
6226
	EDataType getIToken();
Lines 6516-6522 Link Here
6516
		/**
6516
		/**
6517
		 * The meta object literal for the '<em><b>Simple Name CS</b></em>' containment reference feature.
6517
		 * The meta object literal for the '<em><b>Simple Name CS</b></em>' containment reference feature.
6518
		 * <!-- begin-user-doc -->
6518
		 * <!-- begin-user-doc -->
6519
	 * @since 3.0
6519
		 * @since 3.0
6520
		 * <!-- end-user-doc -->
6520
		 * <!-- end-user-doc -->
6521
		 * @generated
6521
		 * @generated
6522
		 */
6522
		 */
Lines 7497-7503 Link Here
7497
		 * <!-- begin-user-doc -->
7497
		 * <!-- begin-user-doc -->
7498
		 * @since 1.3
7498
		 * @since 1.3
7499
		 * <!-- end-user-doc -->
7499
		 * <!-- end-user-doc -->
7500
		 * @see lpg.lpgjavaruntime.IToken
7500
		 * @see lpg.runtime.IToken
7501
		 * @see org.eclipse.ocl.cst.impl.CSTPackageImpl#getIToken()
7501
		 * @see org.eclipse.ocl.cst.impl.CSTPackageImpl#getIToken()
7502
		 * @generated
7502
		 * @generated
7503
		 */
7503
		 */
(-)src/org/eclipse/ocl/cst/impl/CSTPackageImpl.java (-1 / +1 lines)
Lines 18-24 Link Here
18
 */
18
 */
19
package org.eclipse.ocl.cst.impl;
19
package org.eclipse.ocl.cst.impl;
20
20
21
import lpg.lpgjavaruntime.IToken;
21
import lpg.runtime.IToken;
22
22
23
import org.eclipse.emf.ecore.EAttribute;
23
import org.eclipse.emf.ecore.EAttribute;
24
import org.eclipse.emf.ecore.EClass;
24
import org.eclipse.emf.ecore.EClass;
(-)src/org/eclipse/ocl/cst/impl/CSTFactoryImpl.java (-1 / +1 lines)
Lines 17-23 Link Here
17
 */
17
 */
18
package org.eclipse.ocl.cst.impl;
18
package org.eclipse.ocl.cst.impl;
19
19
20
import lpg.lpgjavaruntime.IToken;
20
import lpg.runtime.IToken;
21
21
22
import org.eclipse.emf.ecore.EClass;
22
import org.eclipse.emf.ecore.EClass;
23
import org.eclipse.emf.ecore.EDataType;
23
import org.eclipse.emf.ecore.EDataType;
(-)src/org/eclipse/ocl/cst/impl/PathNameCSImpl.java (-1 / +3 lines)
Lines 177-183 Link Here
177
		Object node = newAst;
177
		Object node = newAst;
178
		for (int i = simpleNames.size() - 1; i >= 0; --i) {
178
		for (int i = simpleNames.size() - 1; i >= 0; --i) {
179
			simpleNames.get(i).setAst(node);
179
			simpleNames.get(i).setAst(node);
180
			node = node instanceof EObject ? ((EObject)node).eContainer() : null;
180
			node = node instanceof EObject
181
				? ((EObject) node).eContainer()
182
				: null;
181
		}
183
		}
182
		super.setAst(newAst);
184
		super.setAst(newAst);
183
	}
185
	}
(-)src/org/eclipse/ocl/cst/impl/CSTNodeImpl.java (-1 / +1 lines)
Lines 17-23 Link Here
17
 */
17
 */
18
package org.eclipse.ocl.cst.impl;
18
package org.eclipse.ocl.cst.impl;
19
19
20
import lpg.lpgjavaruntime.IToken;
20
import lpg.runtime.IToken;
21
21
22
import org.eclipse.emf.common.notify.Notification;
22
import org.eclipse.emf.common.notify.Notification;
23
import org.eclipse.emf.ecore.EClass;
23
import org.eclipse.emf.ecore.EClass;
(-)model/OCLCST.ecore (-1 / +1 lines)
Lines 15-21 Link Here
15
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
15
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
16
          transient="true"/>
16
          transient="true"/>
17
    </eClassifiers>
17
    </eClassifiers>
18
    <eClassifiers xsi:type="ecore:EDataType" name="IToken" instanceClassName="lpg.lpgjavaruntime.IToken"/>
18
    <eClassifiers xsi:type="ecore:EDataType" name="IToken" instanceClassName="lpg.runtime.IToken"/>
19
    <eClassifiers xsi:type="ecore:EClass" name="PackageDeclarationCS" eSuperTypes="#//cst/CSTNode">
19
    <eClassifiers xsi:type="ecore:EClass" name="PackageDeclarationCS" eSuperTypes="#//cst/CSTNode">
20
      <eStructuralFeatures xsi:type="ecore:EReference" name="pathNameCS" eType="#//cst/PathNameCS"
20
      <eStructuralFeatures xsi:type="ecore:EReference" name="pathNameCS" eType="#//cst/PathNameCS"
21
          containment="true"/>
21
          containment="true"/>
(-)model/OCLCST.uml (-1 / +1 lines)
Lines 848-854 Link Here
848
  <Ecore:EClass xmi:id="_qf-8J_8fEduhWtVvKtiQ7w" base_Class="_qdx-Vf8fEduhWtVvKtiQ7w"/>
848
  <Ecore:EClass xmi:id="_qf-8J_8fEduhWtVvKtiQ7w" base_Class="_qdx-Vf8fEduhWtVvKtiQ7w"/>
849
  <Ecore:EClass xmi:id="_qf-8KP8fEduhWtVvKtiQ7w"/>
849
  <Ecore:EClass xmi:id="_qf-8KP8fEduhWtVvKtiQ7w"/>
850
  <Ecore:EAttribute xmi:id="_qf-8Kf8fEduhWtVvKtiQ7w"/>
850
  <Ecore:EAttribute xmi:id="_qf-8Kf8fEduhWtVvKtiQ7w"/>
851
  <Ecore:EDataType xmi:id="_wn-44I2FEd2mlKUM3HGxZg" instanceClassName="lpg.lpgjavaruntime.IToken" base_PrimitiveType="_tvVQwI2FEd2mlKUM3HGxZg"/>
851
  <Ecore:EDataType xmi:id="_wn-44I2FEd2mlKUM3HGxZg" instanceClassName="lpg.runtime.IToken" base_PrimitiveType="_tvVQwI2FEd2mlKUM3HGxZg"/>
852
  <Ecore:EAttribute xmi:id="_qkehgI2JEd2mlKUM3HGxZg" isTransient="true" base_Property="_PkTnII2GEd2mlKUM3HGxZg"/>
852
  <Ecore:EAttribute xmi:id="_qkehgI2JEd2mlKUM3HGxZg" isTransient="true" base_Property="_PkTnII2GEd2mlKUM3HGxZg"/>
853
  <Ecore:EAttribute xmi:id="_na5BwI2GEd2mlKUM3HGxZg" isTransient="true" base_Property="_kTt1cI2GEd2mlKUM3HGxZg"/>
853
  <Ecore:EAttribute xmi:id="_na5BwI2GEd2mlKUM3HGxZg" isTransient="true" base_Property="_kTt1cI2GEd2mlKUM3HGxZg"/>
854
  <Ecore:EAttribute xmi:id="_CoEkwI2HEd2mlKUM3HGxZg" isTransient="true" base_Property="_xJpmEI2GEd2mlKUM3HGxZg"/>
854
  <Ecore:EAttribute xmi:id="_CoEkwI2HEd2mlKUM3HGxZg" isTransient="true" base_Property="_xJpmEI2GEd2mlKUM3HGxZg"/>
(-)META-INF/MANIFEST.MF (-1 / +1 lines)
Lines 33-39 Link Here
33
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
33
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
34
 org.eclipse.emf.ecore;bundle-version="[2.4.0,3.0.0)";visibility:=reexport,
34
 org.eclipse.emf.ecore;bundle-version="[2.4.0,3.0.0)";visibility:=reexport,
35
 org.eclipse.emf.ecore.xmi;bundle-version="[2.4.0,3.0.0)";visibility:=reexport,
35
 org.eclipse.emf.ecore.xmi;bundle-version="[2.4.0,3.0.0)";visibility:=reexport,
36
 net.sourceforge.lpg.lpgjavaruntime;version="[1.0.0,1.2.0)";visibility:=reexport
36
 lpg.runtime.java;bundle-version="2.0.17";visibility:=reexport
37
Bundle-Activator: org.eclipse.ocl.internal.OCLPlugin$Implementation
37
Bundle-Activator: org.eclipse.ocl.internal.OCLPlugin$Implementation
38
Eclipse-LazyStart: true
38
Eclipse-LazyStart: true
39
Bundle-ActivationPolicy: lazy
39
Bundle-ActivationPolicy: lazy
(-)src/org/eclipse/ocl/internal/helper/OCLSyntaxHelper.java (-1 / +1 lines)
Lines 28-34 Link Here
28
import java.util.ListIterator;
28
import java.util.ListIterator;
29
import java.util.Set;
29
import java.util.Set;
30
30
31
import lpg.lpgjavaruntime.IToken;
31
import lpg.runtime.IToken;
32
32
33
import org.eclipse.emf.common.util.EList;
33
import org.eclipse.emf.common.util.EList;
34
import org.eclipse.emf.ecore.EObject;
34
import org.eclipse.emf.ecore.EObject;
(-)src/org/eclipse/ocl/parser/OCLKWLexer.gi (+149 lines)
Added Link Here
1
--/**
2
-- * <copyright>
3
-- *
4
-- * Copyright (c) 2005, 2009 IBM Corporation and others.
5
-- * All rights reserved.   This program and the accompanying materials
6
-- * are made available under the terms of the Eclipse Public License v1.0
7
-- * which accompanies this distribution, and is available at
8
-- * http://www.eclipse.org/legal/epl-v10.html
9
-- *
10
-- * Contributors:
11
-- *   See (or edit) Notice Declaration below
12
-- *
13
-- * </copyright>
14
-- *
15
-- * $Id: OCLKWLexer.g,v 1.6 2009/10/15 19:43:12 ewillink Exp $
16
-- */
17
--
18
-- The Complete OCL KeyWord Lexer
19
--
20
21
%options slr
22
%options fp=OCLKWLexer,prefix=Char_
23
%options noserialize
24
%options package=org.eclipse.ocl.parser
25
%options template=../lpg/KeywordTemplateD.gi
26
%options export_terminals=("OCLParsersym.java", "TK_")
27
%options include_directory="../lpg"
28
29
%Import
30
	EssentialOCLKWLexer.gi
31
%End
32
33
%Notice
34
	/./**
35
 * Complete OCL Keyword Lexer
36
 * <copyright>
37
 *
38
 * Copyright (c) 2005, 2009 IBM Corporation and others.
39
 * All rights reserved.   This program and the accompanying materials
40
 * are made available under the terms of the Eclipse Public License v1.0
41
 * which accompanies this distribution, and is available at
42
 * http://www.eclipse.org/legal/epl-v10.html
43
 *
44
 * Contributors:
45
 *   IBM - Initial API and implementation
46
 *   E.D.Willink - Bug 292112
47
 *   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
48
$copyright_contributions
49
 * </copyright>
50
 */
51
	./
52
%End
53
54
%Export
55
	inv
56
	pre
57
	post
58
	context
59
	package
60
	endpackage
61
	def
62
	body
63
	derive
64
	init
65
	--
66
	-- the following were introduced in the OCL 2.1 RTF 09-05-02. 
67
	--
68
	static
69
	
70
	OclMessage
71
%End
72
73
%Rules
74
75
-- The Goal for the parser is a single Keyword
76
77
	KeyWord ::=
78
		i n v
79
		/.$BeginAction
80
			$setResult($_inv);
81
		  $EndAction
82
		./
83
84
		| p r e
85
		/.$BeginAction
86
			$setResult($_pre);
87
		  $EndAction
88
		./
89
90
		| p o s t
91
		/.$BeginAction
92
			$setResult($_post);
93
		  $EndAction
94
		./
95
		
96
		| b o d y
97
		/.$BeginAction
98
			$setResult($_body);
99
		  $EndAction
100
		./
101
		
102
		| c o n t e x t
103
		/.$BeginAction
104
			$setResult($_context);
105
		  $EndAction
106
		./
107
		
108
		| p a c k a g e
109
		/.$BeginAction
110
			$setResult($_package);
111
		  $EndAction
112
		./
113
		
114
		| e n d p a c k a g e
115
		/.$BeginAction
116
			$setResult($_endpackage);
117
		  $EndAction
118
		./
119
		
120
		| d e f
121
		/.$BeginAction
122
			$setResult($_def);
123
		  $EndAction
124
		./
125
		
126
		| d e r i v e
127
		/.$BeginAction
128
			$setResult($_derive);
129
		  $EndAction
130
		./
131
		
132
		| i n i t
133
		/.$BeginAction
134
			$setResult($_init);
135
		  $EndAction
136
		./
137
138
		| O c l M e s s a g e
139
		/.$BeginAction
140
			$setResult($_OclMessage);
141
		  $EndAction
142
		./
143
144
		| s t a t i c
145
		/.$BeginAction
146
			$setResult($_static);
147
		  $EndAction
148
		./
149
%End
(-)src/org/eclipse/ocl/parser/backtracking/OCLParserErrors.gi (+263 lines)
Added Link Here
1
--/**
2
-- * <copyright>
3
-- *
4
-- * Copyright (c) 2008 Eclipse.org and others.
5
-- * All rights reserved.   This program and the accompanying materials
6
-- * are made available under the terms of the Eclipse Public License v1.0
7
-- * which accompanies this distribution, and is available at
8
-- * http://www.eclipse.org/legal/epl-v10.html
9
-- *
10
-- * Contributors:
11
-- *   E.D. Willink - Initial API and implementation
12
-- *   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
13
-- *
14
-- * </copyright>
15
-- *
16
-- * $Id: OCLParserErrors.g,v 1.5 2009/11/09 22:11:22 ewillink Exp $
17
-- */
18
--
19
-- Additional ERROR_TOKEN rules for The OCL Parser
20
--
21
22
%Import
23
	OCLParser.g
24
%End
25
26
%Import
27
	EssentialOCLErrors.gi
28
%End
29
30
%Rules
31
32
-----------------------------------------------------------------------
33
--	Calls
34
-----------------------------------------------------------------------	
35
	OclMessageExpCS ::= primaryExpCS '^^' simpleNameCS ERROR_TOKEN
36
		/.$NewCase./
37
	OclMessageExpCS ::= primaryExpCS '^' simpleNameCS ERROR_TOKEN
38
		/.$BeginCode
39
					reportErrorTokenMessage($getToken(2), OCLParserErrors.MISSING_MESSAGE_ARGUMENTS);
40
					OCLExpressionCS target = (OCLExpressionCS)$getSym(1);
41
					MessageExpCS result = createMessageExpCS(
42
							target,
43
							getIToken($getToken(2)).getKind() == $sym_type.TK_CARET,
44
							(SimpleNameCS)$getSym(3),
45
							new BasicEList<OCLMessageArgCS>()
46
						);
47
					setOffsets(result, target, getIToken($getToken(4)));
48
					$setResult(result);
49
		  $EndCode
50
		./
51
52
-----------------------------------------------------------------------
53
--	Contexts
54
-----------------------------------------------------------------------
55
	classifierContextDeclCS ::= context pathNameCS ERROR_TOKEN
56
		/.$BeginCode
57
					reportErrorTokenMessage($getToken(3), OCLParserErrors.MISSING_INV_OR_DEF);
58
					ClassifierContextDeclCS result = createClassifierContextDeclCS(
59
							null,
60
							(PathNameCS)$getSym(2),
61
							new BasicEList<InvOrDefCS>()
62
						);
63
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
64
					$setResult(result);
65
		  $EndCode
66
		./
67
		
68
	defExpressionCS ::= typedUninitializedVariableCS ERROR_TOKEN
69
		/.$BeginCode
70
					reportErrorTokenMessage($getToken(2), OCLParserErrors.MISSING_EQUALS);
71
					VariableCS variableCS = (VariableCS)$getSym(1);
72
					DefExpressionCS result = createDefExpressionCS(
73
							variableCS,
74
							null,
75
							null
76
						);
77
					setOffsets(result, variableCS, getIToken($getToken(2)));
78
					$setResult(result);
79
		  $EndCode
80
		./
81
	defExpressionCS ::= simpleNameCS ERROR_Colon
82
		/.$BeginCode
83
					SimpleNameCS name = (SimpleNameCS)$getSym(1);
84
					VariableCS variableCS = createVariableCS(name, null, null);
85
					setOffsets(variableCS, name, getIToken($getToken(2)));
86
					DefExpressionCS result = createDefExpressionCS(
87
							variableCS,
88
							null,
89
							null
90
						);
91
					setOffsets(result, variableCS, getIToken($getToken(2)));
92
					$setResult(result);
93
		  $EndCode
94
		./
95
		
96
	invOrDefCS ::= inv unreservedSimpleNameCS ERROR_Colon
97
		/.$BeginCode
98
					InvCS result = createInvCS(
99
							(SimpleNameCS)$getSym(2),
100
							null
101
						);
102
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
103
					$setResult(result);
104
		  $EndCode
105
		./	
106
    invOrDefCS ::= def unreservedSimpleNameCS ERROR_Colon
107
        /.$BeginCode
108
                    DefCS result = createDefCS(
109
                            false,
110
                            (SimpleNameCS)$getSym(2),
111
                            null
112
                        );
113
                    setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
114
                    $setResult(result);
115
          $EndCode
116
        ./
117
    invOrDefCS ::= static def unreservedSimpleNameCS ERROR_Colon
118
        /.$BeginCode
119
                    DefCS result = createDefCS(
120
                            true,
121
                            (SimpleNameCS)$getSym(3),
122
                            null
123
                        );
124
                    setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4)));
125
                    $setResult(result);
126
          $EndCode
127
        ./
128
129
	operationCS1 ::= simpleNameCS '(' parametersCSopt ')' ERROR_Colon
130
		/.$BeginCode
131
					OperationCS result = createOperationCS(
132
							getIToken($getToken(1)),
133
							new BasicEList<VariableCS>(),
134
							null
135
						);
136
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5)));
137
					$setResult(result);
138
		  $EndCode
139
		./
140
	operationCS1 ::= simpleNameCS ERROR_TOKEN
141
		/.$BeginCode
142
					reportErrorTokenMessage($getToken(2), OCLParserErrors.MISSING_LPAREN);
143
					OperationCS result = createOperationCS(
144
							getIToken($getToken(1)),
145
							new BasicEList<VariableCS>(),
146
							null
147
						);
148
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(2)));
149
					$setResult(result);
150
		  $EndCode
151
		./
152
	operationCS1 ::= ERROR_TOKEN
153
		/.$BeginCode
154
					reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_IDENTIFIER);
155
					OperationCS result = createOperationCS(
156
							getIToken($getToken(1)),
157
							new BasicEList<VariableCS>(),
158
							null
159
						);
160
					setOffsets(result, getIToken($getToken(1)));
161
					$setResult(result);
162
		  $EndCode
163
		./
164
	operationCS2 ::= pathNameCS '::' unreservedSimpleNameCS '(' parametersCSopt ')' ERROR_Colon
165
		/.$BeginCode
166
					PathNameCS pathNameCS = (PathNameCS)$getSym(1);
167
					SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3);
168
					OperationCS result = createOperationCS(
169
							pathNameCS,
170
							simpleNameCS,
171
							(EList<VariableCS>)$getSym(5),
172
							null
173
						);
174
					setOffsets(result, pathNameCS, getIToken($getToken(7)));
175
					$setResult(result);
176
		  $EndCode
177
		./
178
	operationCS2 ::= pathNameCS '::' ERROR_SimpleNameCS
179
		/.$BeginCode
180
					PathNameCS pathNameCS = (PathNameCS)$getSym(1);
181
					SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3);
182
					OperationCS result = createOperationCS(
183
							pathNameCS,
184
							simpleNameCS,
185
							new BasicEList<VariableCS>(),
186
							null
187
						);
188
					setOffsets(result, pathNameCS, simpleNameCS);
189
					$setResult(result);
190
		  $EndCode
191
		./
192
		
193
	prePostOrBodyDeclCS ::= pre unreservedSimpleNameCS ERROR_Colon
194
		/.$BeginCode
195
					PrePostOrBodyDeclCS result = createPrePostOrBodyDeclCS(
196
							PrePostOrBodyEnum.PRE_LITERAL,
197
							(SimpleNameCS)$getSym(2),
198
							createInvalidLiteralExpCS(getTokenText($getToken(3)))
199
						);
200
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
201
					$setResult(result);
202
		  $EndCode
203
		./
204
	prePostOrBodyDeclCS ::= post unreservedSimpleNameCS ERROR_Colon
205
		/.$BeginCode
206
					PrePostOrBodyDeclCS result = createPrePostOrBodyDeclCS(
207
							PrePostOrBodyEnum.POST_LITERAL,
208
							(SimpleNameCS)$getSym(2),
209
							createInvalidLiteralExpCS(getTokenText($getToken(3)))
210
						);
211
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
212
					$setResult(result);
213
		  $EndCode
214
		./
215
	prePostOrBodyDeclCS ::= body unreservedSimpleNameCS ERROR_Colon
216
		/.$BeginCode
217
					PrePostOrBodyDeclCS result = createPrePostOrBodyDeclCS(
218
							PrePostOrBodyEnum.BODY_LITERAL,
219
							(SimpleNameCS)$getSym(2),
220
							createInvalidLiteralExpCS(getTokenText($getToken(3)))
221
						);
222
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
223
					$setResult(result);
224
		  $EndCode
225
		./
226
		
227
	initOrDerValueCS ::= init ERROR_Colon
228
		/.$BeginCode
229
					InitValueCS result = createInitValueCS(null);
230
					setOffsets(result, getIToken($getToken(2)), getIToken($getToken(3)));
231
					$setResult(result);
232
		  $EndCode
233
		./
234
	initOrDerValueCS ::= derive ERROR_Colon
235
		/.$BeginCode
236
					DerValueCS result = createDerValueCS(null);
237
					setOffsets(result, getIToken($getToken(2)), getIToken($getToken(3)));
238
					$setResult(result);
239
		  $EndCode
240
		./
241
242
	packageDeclarationCS_A ::= package pathNameCS contextDeclsCSopt ERROR_Empty endpackage
243
		/.$BeginCode
244
					PackageDeclarationCS result = createPackageDeclarationCS(
245
							(PathNameCS)$getSym(2),
246
							(EList<ContextDeclCS>)$getSym(3)
247
						);
248
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5)));
249
					$setResult(result);
250
		  $EndCode
251
		./
252
	packageDeclarationCS_A ::= package pathNameCS contextDeclsCSopt ERROR_TOKEN
253
		/.$BeginCode
254
					reportErrorTokenMessage($getToken(4), OCLParserErrors.MISSING_ENDPACKAGE);
255
					PackageDeclarationCS result = createPackageDeclarationCS(
256
							(PathNameCS)$getSym(2),
257
							(EList<ContextDeclCS>)$getSym(3)
258
						);
259
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4)));
260
					$setResult(result);
261
		  $EndCode
262
		./
263
%End
(-)src/org/eclipse/ocl/parser/EssentialOCLLexer.gi (+543 lines)
Added Link Here
1
--/**
2
-- * <copyright>
3
-- *
4
-- * Copyright (c) 2005, 2009 IBM Corporation and others.
5
-- * All rights reserved.   This program and the accompanying materials
6
-- * are made available under the terms of the Eclipse Public License v1.0
7
-- * which accompanies this distribution, and is available at
8
-- * http://www.eclipse.org/legal/epl-v10.html
9
-- *
10
-- * Contributors:
11
-- *   See (or edit) Notice Declaration below
12
-- *   
13
-- * </copyright>
14
-- *
15
-- * $Id: EssentialOCLLexer.g,v 1.2 2009/11/09 22:01:36 ewillink Exp $
16
-- */
17
--
18
-- The Essential OCL Lexer
19
--
20
21
%options escape=$
22
%options la=2
23
%options fp=OCLLexer,prefix=Char_
24
%options single-productions
25
%options noserialize
26
%options package=org.eclipse.ocl.parser
27
%options template=../lpg/LexerTemplateD.gi
28
%options filter=EssentialOCLKWLexer.gi
29
%options export_terminals=("EssentialOCLParsersym.java", "TK_")
30
%options include_directory="../lpg"
31
32
%Import
33
	LexerBasicMap.gi
34
%End
35
36
%Define
37
38
	--
39
	-- Definition of macros used in the template
40
	--
41
	$action_class /.$file_prefix./
42
	$eof_token /.$_EOF_TOKEN./
43
    $environment_class /.Environment<?,?,?,?,?,?,?,?,?,?,?,?>./
44
    $adapt_environment /.OCLUtil.getAdapter(environment, BasicEnvironment.class)./
45
    $environment_import /.org.eclipse.ocl.Environment./
46
 
47
	--
48
	-- Definition of macro used in the included file LexerBasicMap.g
49
	--
50
	$kw_lexer_class /.EssentialOCLKWLexer./
51
	$copyright_contributions /.*./
52
53
%End
54
55
%Notice
56
	/./**
57
 * Essential OCL Lexer
58
 * <copyright>
59
 *
60
 * Copyright (c) 2005, 2009 IBM Corporation and others.
61
 * All rights reserved.   This program and the accompanying materials
62
 * are made available under the terms of the Eclipse Public License v1.0
63
 * which accompanies this distribution, and is available at
64
 * http://www.eclipse.org/legal/epl-v10.html
65
 *
66
 * Contributors:
67
 *   IBM - Initial API and implementation
68
 *   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
69
 *   Borland - Bug 242880
70
 *   E.D.Willink - Bug 292112
71
 *   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
72
 $copyright_contributions
73
 * </copyright>
74
 *
75
 * $Id: EssentialOCLLexer.g,v 1.2 2009/11/09 22:01:36 ewillink Exp $
76
 */
77
	./
78
%End
79
80
%Globals
81
    /.import $environment_import;
82
    import org.eclipse.ocl.lpg.BasicEnvironment;
83
    import org.eclipse.ocl.util.OCLUtil;
84
    ./
85
%End
86
87
%Export
88
89
	IDENTIFIER
90
	INTEGER_LITERAL
91
	REAL_LITERAL
92
	STRING_LITERAL
93
	
94
	PLUS
95
	MINUS
96
	MULTIPLY
97
	DIVIDE
98
99
	GREATER
100
	LESS
101
	EQUAL
102
	GREATER_EQUAL
103
	LESS_EQUAL
104
	NOT_EQUAL
105
106
	LPAREN
107
	RPAREN
108
	LBRACE
109
	RBRACE
110
	LBRACKET
111
	RBRACKET
112
113
	ARROW
114
	BAR
115
	COMMA
116
	COLON
117
	COLONCOLON
118
	SEMICOLON
119
	DOT
120
	DOTDOT
121
	
122
	SINGLE_LINE_COMMENT
123
	MULTI_LINE_COMMENT
124
125
%End
126
127
%Terminals
128
	CtlCharNotWS
129
130
	LF   CR   HT   FF
131
132
	a b c d e f g h i j k l m n o p q r s t u v w x y z
133
	_
134
135
	A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
136
137
	0 1 2 3 4 5 6 7 8 9
138
139
	AfterASCIINotAcute
140
	Space        ::= ' '
141
	LF           ::= NewLine
142
	CR           ::= Return
143
	HT           ::= HorizontalTab
144
	FF           ::= FormFeed
145
	DoubleQuote  ::= '"'
146
	SingleQuote  ::= "'"
147
	Percent      ::= '%'
148
	VerticalBar  ::= '|'
149
	Exclamation  ::= '!'
150
	AtSign       ::= '@'
151
	BackQuote    ::= '`'
152
	Acute        ::= '�'
153
	Tilde        ::= '~'
154
	Sharp        ::= '#'
155
	DollarSign   ::= '$'
156
	Ampersand    ::= '&'
157
	Caret        ::= '^'
158
	Colon        ::= ':'
159
	SemiColon    ::= ';'
160
	BackSlash    ::= '\'
161
	LeftBrace    ::= '{'
162
	RightBrace   ::= '}'
163
	LeftBracket  ::= '['
164
	RightBracket ::= ']'
165
	QuestionMark ::= '?'
166
	Comma        ::= ','
167
	Dot          ::= '.'
168
	LessThan     ::= '<'
169
	GreaterThan  ::= '>'
170
	Plus         ::= '+'
171
	Minus        ::= '-'
172
	Slash        ::= '/'
173
	Star         ::= '*'
174
	LeftParen    ::= '('
175
	RightParen   ::= ')'
176
	Equal        ::= '='
177
178
%End
179
180
%Start
181
	Token
182
%End
183
184
%Rules
185
186
	---------------------  Rules for Scanned Tokens --------------------------------
187
	-- The lexer creates an array list of tokens which is defined in the PrsStream class.
188
	-- A token has three attributes: a start offset, an end offset and a kind.
189
	-- 
190
	-- Only rules that produce complete tokens have actions to create token objects.
191
	-- When making a token, calls to the methods, $getToken(1) and $getRightSpan(), 
192
	-- provide the offsets (i.e. the span) of a rule's right hand side (rhs) and thus of the token.
193
	-- For a rule of the form A ::= A1 A2 ... An, the start offset of the rhs of A is given by
194
	-- $getToken(1) or by $getLeftSpan() and the end offset by $getRightSpan().
195
	--  
196
	-- Regarding rules for parsing in general, note that for a rhs symbol Ai, the 
197
	-- method $getToken(i) returns the location of the leftmost character derived from Ai.  
198
	-- The method $getLeftSpan(i) returns the same location unless Ai produces %empty in which case
199
	-- it returns the location of the last character derived before reducing Ai to %empty. 
200
	-- The method $getRightSpan(i) returns the location of the rightmost character derived from Ai 
201
	-- unless Ai produces %empty in which case it returns the location of the last character 
202
	-- derived before reducing Ai to %empty.
203
	--------------------------------------------------------------------------------
204
	Token ::= Identifier
205
		/.$BeginAction
206
					checkForKeyWord();
207
		  $EndAction
208
		./
209
210
	Token ::= '"' SLNotDQ '"'
211
		/.$BeginAction
212
					makeToken($_IDENTIFIER);
213
		  $EndAction
214
		./
215
216
	Token ::= SingleQuote SLNotSQOpt SingleQuote
217
		/.$BeginAction
218
					makeToken($_STRING_LITERAL);
219
		  $EndAction
220
		./
221
222
	Token ::= Acute SLNotSQOpt Acute
223
		/.$BeginAction
224
					makeToken($_STRING_LITERAL);
225
		  $EndAction
226
		./
227
228
	Token ::= BackQuote SLNotSQOpt Acute
229
		/.$BeginAction
230
					makeToken($_STRING_LITERAL);
231
		  $EndAction
232
		./
233
234
	Token ::= IntegerLiteral
235
		/.$NoAction
236
		./
237
		
238
	Token ::= IntegerLiteral DotToken
239
		/.$NoAction
240
		./
241
242
	Token ::= IntegerLiteral DotDotToken
243
		/.$NoAction
244
		./
245
246
	Token ::= RealLiteral
247
		/.$BeginAction
248
					makeToken($_REAL_LITERAL);
249
		  $EndAction
250
		./
251
252
	Token ::= SLC
253
		/.$BeginAction
254
					makeComment($_SINGLE_LINE_COMMENT);
255
		  $EndAction
256
		./
257
258
    Token ::= '/' '*' Inside Stars '/'
259
        /.$BeginAction
260
                    makeComment($_MULTI_LINE_COMMENT);
261
          $EndAction
262
        ./
263
264
	Token ::= WS -- White Space is scanned but not added to output vector
265
		/.$BeginAction
266
					skipToken();
267
		  $EndAction
268
		./
269
270
	Token ::= '+'
271
		/.$BeginAction
272
					makeToken($_PLUS);
273
		  $EndAction
274
		./
275
276
	Token ::= '-'
277
		/.$BeginAction
278
					makeToken($_MINUS);
279
		  $EndAction
280
		./
281
282
	Token ::= '*'
283
		/.$BeginAction
284
					makeToken($_MULTIPLY);
285
		  $EndAction
286
		./
287
288
	Token ::= '/'
289
		/.$BeginAction
290
					makeToken($_DIVIDE);
291
		  $EndAction
292
		./
293
294
	Token ::= '('
295
		/.$BeginAction
296
					makeToken($_LPAREN);
297
		  $EndAction
298
		./
299
300
	Token ::= ')'
301
		/.$BeginAction
302
					makeToken($_RPAREN);
303
		  $EndAction
304
		./
305
306
	Token ::= '>'
307
		/.$BeginAction
308
					makeToken($_GREATER);
309
		  $EndAction
310
		./
311
		
312
	Token ::= '<'
313
		/.$BeginAction
314
					makeToken($_LESS);
315
		  $EndAction
316
		./
317
318
	Token ::= '='
319
		/.$BeginAction
320
					makeToken($_EQUAL);
321
		  $EndAction
322
		./
323
324
	Token ::= '>' '='
325
		/.$BeginAction
326
					makeToken($_GREATER_EQUAL);
327
		  $EndAction
328
		./
329
330
	Token ::= '<' '='
331
		/.$BeginAction
332
					makeToken($_LESS_EQUAL);
333
		  $EndAction
334
		./
335
336
	Token ::= '<' '>'
337
		/.$BeginAction
338
					makeToken($_NOT_EQUAL);
339
		  $EndAction
340
		./
341
342
	Token ::= '['
343
		/.$BeginAction
344
					makeToken($_LBRACKET);
345
		  $EndAction
346
		./
347
348
	Token ::= ']'
349
		/.$BeginAction
350
					makeToken($_RBRACKET);
351
		  $EndAction
352
		./
353
354
	Token ::= '{'
355
		/.$BeginAction
356
					makeToken($_LBRACE);
357
		  $EndAction
358
		./
359
360
	Token ::= '}'
361
		/.$BeginAction
362
					makeToken($_RBRACE);
363
		  $EndAction
364
		./
365
366
	Token ::= '-' '>'
367
		/.$BeginAction
368
					makeToken($_ARROW);
369
		  $EndAction
370
		./
371
372
	Token ::= '|'
373
		/.$BeginAction
374
					makeToken($_BAR);
375
		  $EndAction
376
		./
377
378
	Token ::= ','
379
		/.$BeginAction
380
					makeToken($_COMMA);
381
		  $EndAction
382
		./
383
384
	Token ::= ':'
385
		/.$BeginAction
386
					makeToken($_COLON);
387
		  $EndAction
388
		./
389
390
	Token ::= ':' ':'
391
		/.$BeginAction
392
					makeToken($_COLONCOLON);
393
		  $EndAction
394
		./
395
396
	Token ::= ';'
397
		/.$BeginAction
398
					makeToken($_SEMICOLON);
399
		  $EndAction
400
		./
401
402
	Token ::= DotToken
403
		/.$NoAction
404
		./
405
406
	DotToken ::= '.'
407
		/.$BeginAction
408
					makeToken($_DOT);
409
		  $EndAction
410
		./
411
412
	Token ::= DotDotToken
413
		/.$NoAction
414
		./
415
416
	DotDotToken ::= '.' '.'
417
		/.$BeginAction
418
					makeToken($_DOTDOT);
419
		  $EndAction
420
		./
421
422
423
    IntegerLiteral ::= Integer
424
		/.$BeginAction
425
					makeToken($_INTEGER_LITERAL);
426
		  $EndAction
427
		./
428
429
    RealLiteral -> Decimal
430
                 | Decimal Exponent
431
                 | Integer Exponent
432
433
    Inside ::= Inside Stars NotSlashOrStar
434
             | Inside '/'
435
             | Inside NotSlashOrStar
436
             | %empty
437
438
    Stars -> '*'
439
           | Stars '*'
440
441
    SLC -> '-' '-'
442
         | SLC NotEol
443
444
    Integer -> Digit
445
             | Integer Digit
446
447
    Decimal -> Integer '.' Integer
448
449
    Exponent -> LetterEe Integer
450
              | LetterEe '-' Integer
451
              | LetterEe '+' Integer
452
453
    WSChar -> Space
454
            | LF
455
            | CR
456
            | HT
457
            | FF
458
459
    Letter -> LowerCaseLetter
460
            | UpperCaseLetter
461
            | _
462
            | AfterASCIINotAcute
463
464
    LowerCaseLetter -> a | b | c | d | e | f | g | h | i | j | k | l | m |
465
                       n | o | p | q | r | s | t | u | v | w | x | y | z
466
467
    UpperCaseLetter -> A | B | C | D | E | F | G | H | I | J | K | L | M |
468
                       N | O | P | Q | R | S | T | U | V | W | X | Y | Z
469
470
    Digit -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
471
472
    LetterEe -> 'E'
473
              | 'e'
474
475
    WS -> WSChar
476
        | WS WSChar
477
478
    Identifier -> Letter
479
                | Identifier Letter
480
                | Identifier Digit
481
                | Identifier DollarSign
482
483
    SpecialNotStar -> '+' | '-' | '/' | '(' | ')' | '"' | '!' | '@' | '`' | '~' |
484
                      '%' | '&' | '^' | ':' | ';' | "'" | '\' | '|' | '{' | '}' |
485
                      '[' | ']' | '?' | ',' | '.' | '<' | '>' | '=' | '#' | DollarSign
486
487
    SpecialNotSlash -> '+' | '-' | -- exclude the star as well
488
                       '(' | ')' | '"' | '!' | '@' | '`' | '~' |
489
                       '%' | '&' | '^' | ':' | ';' | "'" | '\' | '|' | '{' | '}' |
490
                       '[' | ']' | '?' | ',' | '.' | '<' | '>' | '=' | '#' | DollarSign
491
492
    SpecialNotSQNotDQ -> '+' | '-' | '/' | '(' | ')' | '*' | '!' | '@' | '`' | '~' |
493
                         '%' | '&' | '^' | ':' | ';' | '|' | '{' | '}' |
494
                         '[' | ']' | '?' | ',' | '.' | '<' | '>' | '=' | '#' | DollarSign
495
496
    
497
    SpecialNotDQ -> SpecialNotSQNotDQ | "'"
498
    SpecialNotSQ -> SpecialNotSQNotDQ | '"'
499
500
    EscapedSymbols -> NotSQNotDQ | '"' | "'" | '\'
501
    BackslashEscapedSymbol -> '\' EscapedSymbols
502
503
    NotSlashOrStar -> Letter
504
                    | Digit
505
                    | SpecialNotSlash
506
                    | WSChar
507
508
    NotEol -> Letter
509
            | Digit
510
            | Space
511
            | '*'
512
            | SpecialNotStar
513
            | HT
514
            | FF
515
            | CtlCharNotWS
516
517
    NotSQNotDQ -> Letter
518
           | Digit
519
           | SpecialNotSQNotDQ
520
           | Space
521
522
    NotDQ -> Letter
523
           | Digit
524
           | SpecialNotDQ
525
           | Space
526
           | BackslashEscapedSymbol
527
528
    NotSQ -> Letter
529
           | Digit
530
           | SpecialNotSQ
531
           | Space
532
           | BackslashEscapedSymbol
533
534
	SLNotDQ -> NotDQ
535
	         | SLNotDQ NotDQ
536
537
	SLNotSQ -> NotSQ
538
	         | SLNotSQ NotSQ
539
540
	SLNotSQOpt -> %empty
541
	            | SLNotSQ
542
543
%End
(-)src/org/eclipse/ocl/lpg/LexerTemplateD.gi (+236 lines)
Added Link Here
1
--
2
-- An instance of this template must have a $Export section and the export_terminals option
3
--
4
-- Macros that may be redefined in an instance of this template
5
--
6
--     $eof_token
7
--     $additional_interfaces
8
--     $super_stream_class -- subclass com.ibm.lpg.LpgLexStream for getKind
9
--     $prs_stream_class -- use /.PrsStream./ if not subclassing
10
--
11
-- B E G I N N I N G   O F   T E M P L A T E   LexerTemplateD
12
--
13
%options programming_language=java,margin=4
14
%options table
15
%options action-block=("*.java", "/.", "./")
16
%options ParseTable=lpg.runtime.ParseTable
17
%options prefix=Char_
18
19
--
20
-- This template requires that the name of the EOF token be set
21
-- to EOF and that the prefix be "Char_" to be consistent with
22
-- KeywordTemplateD.
23
--
24
%Eof
25
    EOF
26
%End
27
28
--
29
-- This template also requires that the name of the parser EOF
30
-- Token to be exported be set to EOF_TOKEN
31
--
32
%Export
33
    EOF_TOKEN
34
%End
35
36
%Define
37
    --
38
    -- Macros that are be needed in an instance of this template
39
    --
40
    $eof_token /.$_EOF_TOKEN./
41
    
42
    $additional_interfaces /../
43
    $super_stream_class /.AbstractLexer./
44
    $prs_stream_class /.AbstractParser./
45
    $environment_class /.BasicEnvironment./
46
    $adapt_environment /.environment./
47
    
48
49
    $prs_stream /. // macro prs_stream is deprecated. Use function getPrsStream
50
                  getPrsStream()./
51
    $setSym1 /. // macro setSym1 is deprecated. Use function setResult
52
               lexParser.setSym1./
53
    $setResult /. // macro setResult is deprecated. Use function setResult
54
                 lexParser.setSym1./
55
    $getSym /. // macro getSym is deprecated. Use function getLastToken
56
              lexParser.getSym./
57
    $getToken /. // macro getToken is deprecated. Use function getToken
58
                lexParser.getToken./
59
    $getLeftSpan /. // macro getLeftSpan is deprecated. Use function getLeftSpan
60
                   lexParser.getFirstToken./
61
    $getRightSpan /. // macro getRightSpan is deprecated. Use function getRightSpan
62
                    lexParser.getLastToken./
63
64
    --
65
    -- Macros useful for specifying actions
66
    --
67
    $Header
68
    /.
69
                //
70
                // Rule $rule_number:  $rule_text
71
                //./
72
73
    $DefaultAction
74
    /. $Header
75
                case $rule_number: { ./
76
77
    $BeginAction /.$DefaultAction./
78
79
    $EndAction
80
    /.          break;
81
                }./
82
83
    $BeginJava
84
    /.$BeginAction
85
                $symbol_declarations./
86
87
    $EndJava /.$EndAction./
88
89
    $NoAction
90
    /. $Header
91
                case $rule_number:
92
                    break; ./
93
94
    $BeginActions
95
    /.
96
        public void ruleAction( int ruleNumber)
97
        {
98
            switch(ruleNumber)
99
            {./
100
101
    $SplitActions
102
    /.
103
	            default:
104
	                ruleAction$rule_number(ruleNumber);
105
	                break;
106
	        }
107
	        return;
108
	    }
109
	
110
	    public void ruleAction$rule_number(int ruleNumber)
111
	    {
112
	        switch (ruleNumber)
113
	        {./
114
115
    $EndActions
116
    /.
117
                default:
118
                    break;
119
            }
120
            return;
121
        }./
122
%End
123
124
%Globals
125
    /.import lpg.runtime.*;
126
    import org.eclipse.ocl.lpg.AbstractLexer;
127
    import org.eclipse.ocl.lpg.AbstractParser;
128
    ./
129
%End
130
131
%Headers
132
    /.
133
    @SuppressWarnings("nls")
134
    public class $action_type extends $super_stream_class implements $exp_type, $sym_type, RuleAction$additional_interfaces
135
    {
136
        private static ParseTable prs = new $prs_type();
137
        //
138
        // The Lexer contains an array of characters as the input stream to be parsed.
139
        // There are methods to retrieve and classify characters.
140
        // The lexparser "token" is implemented simply as the index of the next character in the array.
141
        // The Lexer extends the abstract class LpgLexStream with an implementation of the abstract
142
        // method getKind.  The template defines the Lexer class and the lexer() method.
143
        // A driver creates the action class, "Lexer", passing an Option object to the constructor.
144
        //
145
        protected $kw_lexer_class kwLexer;
146
        protected boolean printTokens;
147
        private $prs_stream_class parser;
148
        private LexParser lexParser = new LexParser(this, prs, this);
149
        
150
        private final $environment_class oclEnvironment;
151
152
        public $action_type($environment_class environment) {
153
            super($adapt_environment);
154
            oclEnvironment = environment;
155
        }
156
        
157
		public $action_class($environment_class environment, char[] chars) {
158
			this(environment, chars, "OCL", ECLIPSE_TAB_VALUE);
159
			kwLexer = new $kw_lexer_class(getInputChars(), $_IDENTIFIER);
160
		}
161
162
        public $action_type($environment_class environment, char[] input_chars, String filename, int tab)  {
163
            super($adapt_environment, input_chars, filename, tab);
164
            oclEnvironment = environment;
165
        }
166
        
167
		public $environment_class getOCLEnvironment() {
168
        	return oclEnvironment;
169
        }
170
171
        @Override
172
        public int [] getKeywordKinds() { return kwLexer.getKeywordKinds(); }
173
174
        public int getLeftSpan() { return lexParser.getFirstToken(); }
175
        public $prs_stream_class getParser() { return parser; }
176
        public int getRhsFirstTokenIndex(int i) { return lexParser.getFirstToken(i); }
177
        public int getRhsLastTokenIndex(int i) { return lexParser.getLastToken(i); }
178
        public int getRightSpan() { return lexParser.getLastToken(); }
179
180
        @Override
181
        public int getToken(int i) { return lexParser.getToken(i); }
182
183
        @Override
184
        public void initialize(char [] content, String filename)
185
        {
186
            super.initialize(content, filename);
187
            if (kwLexer == null)
188
                 kwLexer = new $kw_lexer_class(getInputChars(), $_IDENTIFIER);
189
            else
190
                 kwLexer.setInputChars(getInputChars());
191
        }
192
193
        @Override
194
        public String[] orderedExportedSymbols() { return $exp_type.orderedTerminalSymbols; }
195
        
196
	    @Override
197
	    public void setInputChars(char[] inputChars) {
198
			super.setInputChars(inputChars);
199
			kwLexer = new $kw_lexer_class(getInputChars(), $_IDENTIFIER);
200
		}
201
        
202
        @Override
203
        public void lexToTokens(Monitor monitor, $prs_stream_class parser)
204
        {
205
            if (getInputChars() == null)
206
                throw new NullPointerException("LexStream was not initialized");
207
208
            this.parser = parser;
209
210
            parser.makeToken(0, 0, 0); // Token list must start with a bad token
211
                
212
            lexParser.parseCharacters(monitor);  // Lex the input characters
213
                
214
            int i = getStreamIndex();
215
            parser.makeToken(i, i, $eof_token); // and end with the end of file token
216
            parser.setStreamLength(parser.getSize());
217
                
218
            return;
219
        }
220
    ./
221
%End
222
223
%Rules
224
    /.$BeginActions./
225
%End
226
227
%Trailers
228
    /.
229
        $EndActions
230
    }
231
    ./
232
%End
233
234
--
235
-- E N D   O F   T E M P L A T E
236
--
(-)src/org/eclipse/ocl/lpg/LexerBasicMap.gi (+196 lines)
Added Link Here
1
%Headers
2
    --
3
    -- Additional methods for the action class not provided in the template
4
    --
5
    
6
	-- [cwd] Template provided by LPG defines a constructor that uses an Option
7
	--       class that does not exist in LPG Runtime.  Deleted this constructor
8
	
9
    /.        
10
        final void makeToken(int kind)
11
        {
12
            int startOffset = getLeftSpan(),
13
                endOffset = getRightSpan();
14
            makeToken(startOffset, endOffset, kind);
15
            if (printTokens) printValue(startOffset, endOffset);
16
        }
17
18
        final void makeComment(int kind)
19
        {
20
            int startOffset = getLeftSpan(),
21
                endOffset = getRightSpan();
22
            super.getIPrsStream().makeAdjunct(startOffset, endOffset, kind);
23
        }
24
25
        final void skipToken()
26
        {
27
            if (printTokens) printValue(getLeftSpan(), getRightSpan());
28
        }
29
        
30
        final void checkForKeyWord()
31
        {
32
            int startOffset = getLeftSpan(),
33
                endOffset = getRightSpan(),
34
            kwKind = kwLexer.lexer(startOffset, endOffset);
35
            makeToken(startOffset, endOffset, kwKind);
36
            if (printTokens) printValue(startOffset, endOffset);
37
        }
38
        
39
        final void printValue(int startOffset, int endOffset)
40
        {
41
            String s = new String(getInputChars(), startOffset, endOffset - startOffset + 1);
42
            System.out.print(s);
43
        }
44
45
        //
46
        //
47
        //
48
        public final static int tokenKind[] =
49
        {
50
            Char_CtlCharNotWS,    // 000    0x00
51
            Char_CtlCharNotWS,    // 001    0x01
52
            Char_CtlCharNotWS,    // 002    0x02
53
            Char_CtlCharNotWS,    // 003    0x03
54
            Char_CtlCharNotWS,    // 004    0x04
55
            Char_CtlCharNotWS,    // 005    0x05
56
            Char_CtlCharNotWS,    // 006    0x06
57
            Char_CtlCharNotWS,    // 007    0x07
58
            Char_CtlCharNotWS,    // 008    0x08
59
            Char_HT,              // 009    0x09
60
            Char_LF,              // 010    0x0A
61
            Char_CtlCharNotWS,    // 011    0x0B
62
            Char_FF,              // 012    0x0C
63
            Char_CR,              // 013    0x0D
64
            Char_CtlCharNotWS,    // 014    0x0E
65
            Char_CtlCharNotWS,    // 015    0x0F
66
            Char_CtlCharNotWS,    // 016    0x10
67
            Char_CtlCharNotWS,    // 017    0x11
68
            Char_CtlCharNotWS,    // 018    0x12
69
            Char_CtlCharNotWS,    // 019    0x13
70
            Char_CtlCharNotWS,    // 020    0x14
71
            Char_CtlCharNotWS,    // 021    0x15
72
            Char_CtlCharNotWS,    // 022    0x16
73
            Char_CtlCharNotWS,    // 023    0x17
74
            Char_CtlCharNotWS,    // 024    0x18
75
            Char_CtlCharNotWS,    // 025    0x19
76
            Char_CtlCharNotWS,    // 026    0x1A
77
            Char_CtlCharNotWS,    // 027    0x1B
78
            Char_CtlCharNotWS,    // 028    0x1C
79
            Char_CtlCharNotWS,    // 029    0x1D
80
            Char_CtlCharNotWS,    // 030    0x1E
81
            Char_CtlCharNotWS,    // 031    0x1F
82
            Char_Space,           // 032    0x20
83
            Char_Exclamation,     // 033    0x21
84
            Char_DoubleQuote,     // 034    0x22
85
            Char_Sharp,           // 035    0x23
86
            Char_DollarSign,      // 036    0x24
87
            Char_Percent,         // 037    0x25
88
            Char_Ampersand,       // 038    0x26
89
            Char_SingleQuote,     // 039    0x27
90
            Char_LeftParen,       // 040    0x28
91
            Char_RightParen,      // 041    0x29
92
            Char_Star,            // 042    0x2A
93
            Char_Plus,            // 043    0x2B
94
            Char_Comma,           // 044    0x2C
95
            Char_Minus,           // 045    0x2D
96
            Char_Dot,             // 046    0x2E
97
            Char_Slash,           // 047    0x2F
98
            Char_0,               // 048    0x30
99
            Char_1,               // 049    0x31
100
            Char_2,               // 050    0x32
101
            Char_3,               // 051    0x33
102
            Char_4,               // 052    0x34
103
            Char_5,               // 053    0x35
104
            Char_6,               // 054    0x36
105
            Char_7,               // 055    0x37
106
            Char_8,               // 056    0x38
107
            Char_9,               // 057    0x39
108
            Char_Colon,           // 058    0x3A
109
            Char_SemiColon,       // 059    0x3B
110
            Char_LessThan,        // 060    0x3C
111
            Char_Equal,           // 061    0x3D
112
            Char_GreaterThan,     // 062    0x3E
113
            Char_QuestionMark,    // 063    0x3F
114
            Char_AtSign,          // 064    0x40
115
            Char_A,               // 065    0x41
116
            Char_B,               // 066    0x42
117
            Char_C,               // 067    0x43
118
            Char_D,               // 068    0x44
119
            Char_E,               // 069    0x45
120
            Char_F,               // 070    0x46
121
            Char_G,               // 071    0x47
122
            Char_H,               // 072    0x48
123
            Char_I,               // 073    0x49
124
            Char_J,               // 074    0x4A
125
            Char_K,               // 075    0x4B
126
            Char_L,               // 076    0x4C
127
            Char_M,               // 077    0x4D
128
            Char_N,               // 078    0x4E
129
            Char_O,               // 079    0x4F
130
            Char_P,               // 080    0x50
131
            Char_Q,               // 081    0x51
132
            Char_R,               // 082    0x52
133
            Char_S,               // 083    0x53
134
            Char_T,               // 084    0x54
135
            Char_U,               // 085    0x55
136
            Char_V,               // 086    0x56
137
            Char_W,               // 087    0x57
138
            Char_X,               // 088    0x58
139
            Char_Y,               // 089    0x59
140
            Char_Z,               // 090    0x5A
141
            Char_LeftBracket,     // 091    0x5B
142
            Char_BackSlash,       // 092    0x5C
143
            Char_RightBracket,    // 093    0x5D
144
            Char_Caret,           // 094    0x5E
145
            Char__,               // 095    0x5F
146
            Char_BackQuote,       // 096    0x60
147
            Char_a,               // 097    0x61
148
            Char_b,               // 098    0x62
149
            Char_c,               // 099    0x63
150
            Char_d,               // 100    0x64
151
            Char_e,               // 101    0x65
152
            Char_f,               // 102    0x66
153
            Char_g,               // 103    0x67
154
            Char_h,               // 104    0x68
155
            Char_i,               // 105    0x69
156
            Char_j,               // 106    0x6A
157
            Char_k,               // 107    0x6B
158
            Char_l,               // 108    0x6C
159
            Char_m,               // 109    0x6D
160
            Char_n,               // 110    0x6E
161
            Char_o,               // 111    0x6F
162
            Char_p,               // 112    0x70
163
            Char_q,               // 113    0x71
164
            Char_r,               // 114    0x72
165
            Char_s,               // 115    0x73
166
            Char_t,               // 116    0x74
167
            Char_u,               // 117    0x75
168
            Char_v,               // 118    0x76
169
            Char_w,               // 119    0x77
170
            Char_x,               // 120    0x78
171
            Char_y,               // 121    0x79
172
            Char_z,               // 122    0x7A
173
            Char_LeftBrace,       // 123    0x7B
174
            Char_VerticalBar,     // 124    0x7C
175
            Char_RightBrace,      // 125    0x7D
176
            Char_Tilde,           // 126    0x7E
177
            Char_CtlCharNotWS,    // 127    0x7F
178
179
            Char_Acute,           // for the acute accent 0xb4
180
            Char_AfterASCIINotAcute,  // for all chars in range 0x80..0xfffe excluding the acute accent
181
            Char_EOF              // for '\uffff' or 65535 
182
        };
183
                
184
        @Override public final int getKind(int i)  // Classify character at ith location
185
        {
186
            char c = (i >= getStreamLength() ? '\uffff' : getCharValue(i));
187
            return (c < 128)? // ASCII Character
188
                      tokenKind[c] :
189
                      (c == '\uffff')?
190
                           Char_EOF :
191
                           (c == '\u00b4')?
192
                           Char_Acute :
193
                               Char_AfterASCIINotAcute;
194
        }
195
    ./
196
%End
(-)src/org/eclipse/ocl/lpg/KWLexerMap.gi (+78 lines)
Added Link Here
1
%Terminals
2
    DollarSign ::= '$'
3
    Percent ::= '%'
4
    _
5
    a b c d e f g h i j k l m n o p q r s t u v w x y z
6
    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
7
%End
8
9
%Headers
10
    /.
11
        final static int tokenKind[] = new int[128];
12
        static
13
        {
14
            tokenKind['$'] = $sym_type.$prefix$DollarSign$suffix$;
15
            tokenKind['%'] = $sym_type.$prefix$Percent$suffix$;
16
            tokenKind['_'] = $sym_type.$prefix$_$suffix$;
17
18
            tokenKind['a'] = $sym_type.$prefix$a$suffix$;
19
            tokenKind['b'] = $sym_type.$prefix$b$suffix$;
20
            tokenKind['c'] = $sym_type.$prefix$c$suffix$;
21
            tokenKind['d'] = $sym_type.$prefix$d$suffix$;
22
            tokenKind['e'] = $sym_type.$prefix$e$suffix$;
23
            tokenKind['f'] = $sym_type.$prefix$f$suffix$;
24
            tokenKind['g'] = $sym_type.$prefix$g$suffix$;
25
            tokenKind['h'] = $sym_type.$prefix$h$suffix$;
26
            tokenKind['i'] = $sym_type.$prefix$i$suffix$;
27
            tokenKind['j'] = $sym_type.$prefix$j$suffix$;
28
            tokenKind['k'] = $sym_type.$prefix$k$suffix$;
29
            tokenKind['l'] = $sym_type.$prefix$l$suffix$;
30
            tokenKind['m'] = $sym_type.$prefix$m$suffix$;
31
            tokenKind['n'] = $sym_type.$prefix$n$suffix$;
32
            tokenKind['o'] = $sym_type.$prefix$o$suffix$;
33
            tokenKind['p'] = $sym_type.$prefix$p$suffix$;
34
            tokenKind['q'] = $sym_type.$prefix$q$suffix$;
35
            tokenKind['r'] = $sym_type.$prefix$r$suffix$;
36
            tokenKind['s'] = $sym_type.$prefix$s$suffix$;
37
            tokenKind['t'] = $sym_type.$prefix$t$suffix$;
38
            tokenKind['u'] = $sym_type.$prefix$u$suffix$;
39
            tokenKind['v'] = $sym_type.$prefix$v$suffix$;
40
            tokenKind['w'] = $sym_type.$prefix$w$suffix$;
41
            tokenKind['x'] = $sym_type.$prefix$x$suffix$;
42
            tokenKind['y'] = $sym_type.$prefix$y$suffix$;
43
            tokenKind['z'] = $sym_type.$prefix$z$suffix$;
44
45
            tokenKind['A'] = $sym_type.$prefix$A$suffix$;
46
            tokenKind['B'] = $sym_type.$prefix$B$suffix$;
47
            tokenKind['C'] = $sym_type.$prefix$C$suffix$;
48
            tokenKind['D'] = $sym_type.$prefix$D$suffix$;
49
            tokenKind['E'] = $sym_type.$prefix$E$suffix$;
50
            tokenKind['F'] = $sym_type.$prefix$F$suffix$;
51
            tokenKind['G'] = $sym_type.$prefix$G$suffix$;
52
            tokenKind['H'] = $sym_type.$prefix$H$suffix$;
53
            tokenKind['I'] = $sym_type.$prefix$I$suffix$;
54
            tokenKind['J'] = $sym_type.$prefix$J$suffix$;
55
            tokenKind['K'] = $sym_type.$prefix$K$suffix$;
56
            tokenKind['L'] = $sym_type.$prefix$L$suffix$;
57
            tokenKind['M'] = $sym_type.$prefix$M$suffix$;
58
            tokenKind['N'] = $sym_type.$prefix$N$suffix$;
59
            tokenKind['O'] = $sym_type.$prefix$O$suffix$;
60
            tokenKind['P'] = $sym_type.$prefix$P$suffix$;
61
            tokenKind['Q'] = $sym_type.$prefix$Q$suffix$;
62
            tokenKind['R'] = $sym_type.$prefix$R$suffix$;
63
            tokenKind['S'] = $sym_type.$prefix$S$suffix$;
64
            tokenKind['T'] = $sym_type.$prefix$T$suffix$;
65
            tokenKind['U'] = $sym_type.$prefix$U$suffix$;
66
            tokenKind['V'] = $sym_type.$prefix$V$suffix$;
67
            tokenKind['W'] = $sym_type.$prefix$W$suffix$;
68
            tokenKind['X'] = $sym_type.$prefix$X$suffix$;
69
            tokenKind['Y'] = $sym_type.$prefix$Y$suffix$;
70
            tokenKind['Z'] = $sym_type.$prefix$Z$suffix$;
71
        };
72
    
73
        final int getKind(int c)
74
        {
75
            return (((c & 0xFFFFFF80) == 0) /* 0 <= c < 128? */ ? tokenKind[c] : 0);
76
        }
77
    ./
78
%End
(-)src/org/eclipse/ocl/parser/EssentialOCLKWLexer.gi (+301 lines)
Added Link Here
1
--/**
2
-- * <copyright>
3
-- *
4
-- * Copyright (c) 2005, 2009 IBM Corporation and others.
5
-- * All rights reserved.   This program and the accompanying materials
6
-- * are made available under the terms of the Eclipse Public License v1.0
7
-- * which accompanies this distribution, and is available at
8
-- * http://www.eclipse.org/legal/epl-v10.html
9
-- *
10
-- * Contributors:
11
-- *   See (or edit) Notice Declaration below
12
-- *
13
-- * </copyright>
14
-- *
15
-- * $Id: EssentialOCLKWLexer.g,v 1.2 2009/11/09 22:01:36 ewillink Exp $
16
-- */
17
--
18
-- The Essential OCL KeyWord Lexer
19
--
20
21
%options slr
22
%options fp=OCLKWLexer,prefix=Char_
23
%options noserialize
24
%options package=org.eclipse.ocl.parser
25
%options template=../lpg/KeywordTemplateD.gi
26
%options export_terminals=("EssentialOCLParsersym.java", "TK_")
27
%options include_directory="../lpg"
28
29
%Import
30
	KWLexerMap.gi
31
%End
32
33
%Define
34
35
	--
36
	-- Definition of macros used in the template
37
	--
38
	$action_class /.$file_prefix./
39
	$eof_char /.Char_EOF./
40
	$copyright_contributions /.*./
41
42
%End
43
44
%Notice
45
	/./**
46
 * Essential OCL Keyword Lexer
47
 * <copyright>
48
 *
49
 * Copyright (c) 2005, 2009 IBM Corporation and others.
50
 * All rights reserved.   This program and the accompanying materials
51
 * are made available under the terms of the Eclipse Public License v1.0
52
 * which accompanies this distribution, and is available at
53
 * http://www.eclipse.org/legal/epl-v10.html
54
 *
55
 * Contributors:
56
 *   IBM - Initial API and implementation
57
 *   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
58
 *   E.D.Willink - Bug 285633, 292112
59
 *   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
60
$copyright_contributions
61
 * </copyright>
62
 *
63
 *
64
 */
65
	./
66
%End
67
68
%Globals
69
	/../
70
%End
71
72
%Export
73
	self
74
	if
75
	then
76
	else
77
	endif
78
	and
79
	or
80
	xor
81
	not
82
	implies
83
	let
84
	in
85
	true
86
	false
87
88
	null
89
	invalid
90
91
	--
92
	-- the remainder of the LPG keywords are defined as such for the
93
	-- purpose of constructing the CST grammar.  They are not OCL
94
	-- reserved words
95
	--		
96
	Set
97
	Bag
98
	Sequence
99
	Collection
100
	OrderedSet
101
102
	String
103
	Integer
104
	UnlimitedNatural
105
	Real
106
	Boolean
107
	Tuple
108
	OclAny
109
	OclVoid
110
	OclInvalid
111
%End
112
113
%Start
114
	KeyWord
115
%End
116
117
%Rules
118
119
-- The Goal for the parser is a single Keyword
120
121
	KeyWord ::=
122
		s e l f
123
		/.$BeginAction
124
			$setResult($_self);
125
		  $EndAction
126
		./
127
		
128
		| i f
129
		/.$BeginAction
130
			$setResult($_if);
131
		  $EndAction
132
		./
133
		
134
		| t h e n
135
		/.$BeginAction
136
			$setResult($_then);
137
		  $EndAction
138
		./
139
		
140
		| e l s e
141
		/.$BeginAction
142
			$setResult($_else);
143
		  $EndAction
144
		./
145
		
146
		| e n d i f
147
		/.$BeginAction
148
			$setResult($_endif);
149
		  $EndAction
150
		./
151
		
152
		| a n d
153
		/.$BeginAction
154
			$setResult($_and);
155
		  $EndAction
156
		./
157
		
158
		| o r
159
		/.$BeginAction
160
			$setResult($_or);
161
		  $EndAction
162
		./
163
		
164
		| x o r
165
		/.$BeginAction
166
			$setResult($_xor);
167
		  $EndAction
168
		./
169
		
170
		| n o t
171
		/.$BeginAction
172
			$setResult($_not);
173
		  $EndAction
174
		./
175
		
176
		| i m p l i e s
177
		/.$BeginAction
178
			$setResult($_implies);
179
		  $EndAction
180
		./
181
		
182
		| l e t
183
		/.$BeginAction
184
			$setResult($_let);
185
		  $EndAction
186
		./
187
		
188
		| i n
189
		/.$BeginAction
190
			$setResult($_in);
191
		  $EndAction
192
		./
193
		
194
		| t r u e
195
		/.$BeginAction
196
			$setResult($_true);
197
		  $EndAction
198
		./
199
		
200
		| f a l s e
201
		/.$BeginAction
202
			$setResult($_false);
203
		  $EndAction
204
		./
205
		
206
		| S e t
207
		/.$BeginAction
208
			$setResult($_Set);
209
		  $EndAction
210
		./
211
		
212
		| B a g
213
		/.$BeginAction
214
			$setResult($_Bag);
215
		  $EndAction
216
		./
217
		
218
		| S e q u e n c e
219
		/.$BeginAction
220
			$setResult($_Sequence);
221
		  $EndAction
222
		./
223
		
224
		| C o l l e c t i o n
225
		/.$BeginAction
226
			$setResult($_Collection);
227
		  $EndAction
228
		./
229
230
		| O r d e r e d S e t
231
		/.$BeginAction
232
			$setResult($_OrderedSet);
233
		  $EndAction
234
		./
235
236
		| S t r i n g
237
		/.$BeginAction
238
			$setResult($_String);
239
		  $EndAction
240
		./
241
242
		| I n t e g e r
243
		/.$BeginAction
244
			$setResult($_Integer);
245
		  $EndAction
246
		./
247
		
248
		| U n l i m i t e d N a t u r a l
249
		/.$BeginAction
250
			$setResult($_UnlimitedNatural);
251
		  $EndAction
252
		./
253
		
254
		| R e a l
255
		/.$BeginAction
256
			$setResult($_Real);
257
		  $EndAction
258
		./
259
		
260
		| B o o l e a n
261
		/.$BeginAction
262
			$setResult($_Boolean);
263
		  $EndAction
264
		./
265
266
		| T u p l e
267
		/.$BeginAction
268
			$setResult($_Tuple);
269
		  $EndAction
270
		./
271
272
		| O c l A n y
273
		/.$BeginAction
274
			$setResult($_OclAny);
275
		  $EndAction
276
		./
277
278
		| O c l V o i d
279
		/.$BeginAction
280
			$setResult($_OclVoid);
281
		  $EndAction
282
		./
283
284
		| O c l I n v a l i d
285
		/.$BeginAction
286
			$setResult($_OclInvalid);
287
		  $EndAction
288
		./
289
290
		| n u l l
291
		/.$BeginAction
292
			$setResult($_null);
293
		  $EndAction
294
		./
295
296
		| i n v a l i d
297
		/.$BeginAction
298
			$setResult($_invalid);
299
		  $EndAction
300
		./
301
%End
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.gi (+35 lines)
Added Link Here
1
--/**
2
-- * <copyright>
3
-- *
4
-- * Copyright (c) 2008, 2009 IBM Corporation and others.
5
-- * All rights reserved.   This program and the accompanying materials
6
-- * are made available under the terms of the Eclipse Public License v1.0
7
-- * which accompanies this distribution, and is available at
8
-- * http://www.eclipse.org/legal/epl-v10.html
9
-- *
10
-- * Contributors:
11
-- *   IBM - Initial API and implementation
12
-- *   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
-- *   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
14
-- *
15
-- * </copyright>
16
-- *
17
-- * $Id: OCLBacktrackingKWLexer.g,v 1.1 2009/01/13 20:31:30 cdamus Exp $
18
-- */
19
--
20
-- The OCL Backtracking KeyWord Lexer, which is nominally identical to the
21
-- normal KeyWord Lexer, however the extra ERROR_TOKEN symbol makes it difficult
22
-- to share reliably.
23
--
24
25
%options slr
26
%options fp=OCLBacktrackingKWLexer,prefix=Char_
27
%options noserialize
28
%options package=org.eclipse.ocl.parser.backtracking
29
%options template=../../lpg/KeywordTemplateD.gi
30
%options export_terminals=("OCLBacktrackingParsersym.java", "TK_")
31
%options include_directory="..;../../lpg"
32
33
%Import
34
	OCLKWLexer.gi
35
%End
(-)src/org/eclipse/ocl/parser/EssentialOCL.gi (+1527 lines)
Added Link Here
1
--/**
2
-- * <copyright>
3
-- *
4
-- * Copyright (c) 2005, 2009 IBM Corporation and others.
5
-- * All rights reserved.   This program and the accompanying materials
6
-- * are made available under the terms of the Eclipse Public License v1.0
7
-- * which accompanies this distribution, and is available at
8
-- * http://www.eclipse.org/legal/epl-v10.html
9
-- *
10
-- * Contributors:
11
-- *   See (or edit) Notice Declaration below
12
-- *
13
-- * </copyright>
14
-- *
15
-- * $Id: EssentialOCL.g,v 1.16 2009/11/09 22:03:57 ewillink Exp $
16
-- */
17
--
18
-- The EssentialOCL Parser
19
--
20
21
22
%Define
23
24
    -- Definition of macros used in the parser template
25
    --
26
    $prs_stream_class /.AbstractOCLParser./
27
    $prs_parser_class /.DeterministicParser./
28
    $prs_parser_exception /.NotDeterministicParseTableException./
29
    $prs_parser_throw /.throw new RuntimeException("****Error: Regenerate $prs_type.java with -NOBACKTRACK option")./
30
    $prs_parse_args /../
31
    $lex_stream_class /.AbstractLexer./
32
    $action_class /.$file_prefix./
33
    $copyright_contributions /.*./
34
35
    -- package namespace of the LPG Runtime API
36
    $lpg_ns /.lpg.runtime./
37
38
    $NewCase
39
    /. $Header
40
                case $rule_number:./
41
42
    -- From bt/dtParserTemplateD.g
43
    ------------------------------------------------------
44
    $Header
45
    /.
46
                //
47
                // Rule $rule_number:  $rule_text
48
                //./
49
50
    $BeginAction
51
    /. $Header
52
                case $rule_number: {./
53
54
    $EndAction
55
    /.        break;
56
                }./
57
58
    $BeginJava
59
    /../
60
    
61
    $EndJava
62
    /../
63
64
	$BeginCode
65
	/.$BeginAction
66
                    $symbol_declarations./
67
68
	$EndCode /.$EndAction./
69
70
    $NoAction
71
    /. $Header
72
                case $rule_number:
73
                    break;./
74
75
    $NullAction
76
    /. $Header
77
                case $rule_number:
78
                    $setResult(null);
79
                    break;./
80
81
	-- Deprecated, code inline with correct generic parameter type
82
    $EmptyListAction
83
    /. $Header
84
                case $rule_number:
85
                    $setResult(new BasicEList<Object>());
86
                    break;./
87
    
88
    $BeginActions
89
    /.
90
        @SuppressWarnings("unchecked")
91
        public void ruleAction(int ruleNumber)
92
        {
93
            switch (ruleNumber) {
94
            ./
95
96
    $EndActions
97
    /.
98
                default:
99
                    break;
100
            }
101
            return;
102
        }./
103
104
    $additional_interfaces /../
105
    $action_class /.$file_prefix./
106
    $setSym1 /.dtParser.setSym1./
107
    $setResult /.dtParser.setSym1./
108
    $getSym /.dtParser.getSym./
109
    $getToken /.dtParser.getToken./
110
    $getIToken /.getIToken./
111
    $getLeftSpan /.dtParser.getFirstToken./
112
    $getRightSpan /.dtParser.getLastToken./
113
    $prs_stream /.prsStream./
114
    
115
    -- modified to include throwing exceptions
116
    $parserCore
117
    /.
118
    public class $action_class extends $prs_stream_class implements RuleAction$additional_interfaces
119
    {
120
        protected static ParseTable prs = new $prs_type();
121
        private $prs_parser_class dtParser;
122
123
        public $action_class($lex_stream_class lexer) {
124
            super(lexer);
125
        }
126
127
        public int getEOFTokenKind() { return $prs_type.EOFT_SYMBOL; }
128
    
129
        public $environment_class getOCLEnvironment() {
130
            return getLexer().getOCLEnvironment();
131
        }
132
        
133
        @Override 
134
        public $lex_stream_class getLexer() {
135
            return ($lex_stream_class)super.getLexer();
136
        }
137
138
        public String getTokenKindName(int kind) { return $sym_type.orderedTerminalSymbols[kind]; }         
139
140
        @Override
141
        public String[] orderedTerminalSymbols() { return $sym_type.orderedTerminalSymbols; }
142
            
143
        @SuppressWarnings("nls")
144
        @Override
145
        public $ast_type parseTokensToCST(Monitor monitor, int error_repair_count) {
146
            ParseTable prsTable = new $prs_type();
147
148
            try {
149
                dtParser = new $prs_parser_class(monitor, this, prsTable, this);
150
            }
151
            catch ($prs_parser_exception e) {
152
                $prs_parser_throw;
153
            }
154
            catch (BadParseSymFileException e) {
155
                throw new RuntimeException("****Error: Bad Parser Symbol File -- $sym_type.java. Regenerate $prs_type.java");
156
            }
157
158
            try {
159
                return ($ast_type) dtParser.parse($prs_parse_args);
160
            }
161
            catch (BadParseException e) {
162
                reset(e.error_token); // point to error token
163
164
                DiagnoseParser diagnoseParser = new DiagnoseParser(this, prsTable);
165
                diagnoseParser.diagnose(e.error_token);
166
            }
167
168
            return null;
169
        }
170
    
171
        /**
172
         * Initializes a concrete-syntax node's start and end offsets from the
173
         * current token in the parser stream.
174
         * 
175
         * @param cstNode a concrete-syntax node
176
         * 
177
         * @since 1.2
178
         */
179
        protected void setOffsets(CSTNode cstNode) {
180
            IToken firstToken = getIToken($getToken(1));
181
            cstNode.setStartToken(firstToken);
182
            cstNode.setEndToken(firstToken);
183
            cstNode.setStartOffset(firstToken.getStartOffset());
184
            cstNode.setEndOffset(firstToken.getEndOffset()-1);
185
        }
186
    ./
187
%End
188
189
%Notice
190
    /./**
191
 * Essential OCL Grammar
192
 * <copyright>
193
 *
194
 * Copyright (c) 2005, 2009 IBM Corporation and others.
195
 * All rights reserved.   This program and the accompanying materials
196
 * are made available under the terms of the Eclipse Public License v1.0
197
 * which accompanies this distribution, and is available at
198
 * http://www.eclipse.org/legal/epl-v10.html
199
 *
200
 * Contributors:
201
 *   IBM - Initial API and implementation
202
 *   E.D.Willink - Elimination of some shift-reduce conflicts
203
 *   E.D.Willink - Remove unnecessary warning suppression
204
 *   E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112
205
 *   Borland - Bug 242880
206
 *   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
207
$copyright_contributions
208
 * </copyright>
209
 *
210
 * $Id: EssentialOCL.g,v 1.16 2009/11/09 22:03:57 ewillink Exp $
211
 */
212
    ./
213
%End
214
215
%Globals
216
    /.import org.eclipse.emf.common.util.BasicEList;
217
    import org.eclipse.emf.common.util.EList;
218
    import org.eclipse.ocl.cst.BooleanLiteralExpCS;
219
    import org.eclipse.ocl.cst.CSTNode;
220
    import org.eclipse.ocl.cst.CallExpCS;
221
    import org.eclipse.ocl.cst.CollectionLiteralExpCS;
222
    import org.eclipse.ocl.cst.CollectionLiteralPartCS;
223
    import org.eclipse.ocl.cst.CollectionTypeCS;
224
    import org.eclipse.ocl.cst.CollectionTypeIdentifierEnum;
225
    import org.eclipse.ocl.cst.FeatureCallExpCS;
226
    import org.eclipse.ocl.cst.IfExpCS;
227
    import org.eclipse.ocl.cst.IntegerLiteralExpCS;
228
    import org.eclipse.ocl.cst.InvalidLiteralExpCS;
229
    import org.eclipse.ocl.cst.IsMarkedPreCS;
230
    import org.eclipse.ocl.cst.IterateExpCS;
231
    import org.eclipse.ocl.cst.IteratorExpCS;
232
    import org.eclipse.ocl.cst.LetExpCS;
233
    import org.eclipse.ocl.cst.NullLiteralExpCS;
234
    import org.eclipse.ocl.cst.OCLExpressionCS;
235
    import org.eclipse.ocl.cst.OperationCallExpCS;
236
    import org.eclipse.ocl.cst.PathNameCS;
237
    import org.eclipse.ocl.cst.PrimitiveTypeCS;
238
    import org.eclipse.ocl.cst.RealLiteralExpCS;
239
    import org.eclipse.ocl.cst.SimpleNameCS;
240
    import org.eclipse.ocl.cst.SimpleTypeEnum;
241
    import org.eclipse.ocl.cst.StringLiteralExpCS;
242
    import org.eclipse.ocl.cst.TupleLiteralExpCS;
243
    import org.eclipse.ocl.cst.TupleTypeCS;
244
    import org.eclipse.ocl.cst.TypeCS;
245
    import org.eclipse.ocl.cst.UnlimitedNaturalLiteralExpCS;
246
    import org.eclipse.ocl.cst.VariableCS;
247
    import org.eclipse.ocl.cst.VariableExpCS;
248
    
249
    import $lpg_ns.BadParseException;
250
    import $lpg_ns.BadParseSymFileException;
251
    import $lpg_ns.$prs_parser_class;
252
    import $lpg_ns.DiagnoseParser;
253
    import $lpg_ns.IToken;
254
    import $lpg_ns.Monitor;
255
    import $lpg_ns.$prs_parser_exception;
256
    import $lpg_ns.ParseTable;
257
    import $lpg_ns.RuleAction;
258
    ./
259
%End
260
261
%KeyWords
262
-- Reserved keywords
263
    and implies not or xor  
264
    if then else endif  
265
    let in  
266
    false true
267
    null invalid
268
    self    
269
270
-- Restricted keywords
271
    Bag Collection OrderedSet Sequence Set  
272
    Tuple
273
    Boolean Integer Real String UnlimitedNatural
274
    OclAny OclInvalid OclVoid
275
%End
276
277
-- Terminals
278
%Identifier
279
    IDENTIFIER
280
%End
281
282
%Terminals
283
    
284
    INTEGER_LITERAL REAL_LITERAL STRING_LITERAL
285
    
286
    PLUS     ::= '+'
287
    MINUS    ::= '-'
288
    MULTIPLY ::= '*'
289
    DIVIDE   ::= '/'
290
291
    GREATER       ::= '>'
292
    LESS          ::= '<'
293
    EQUAL         ::= '='
294
    GREATER_EQUAL ::= '>='
295
    LESS_EQUAL    ::= '<='
296
    NOT_EQUAL     ::= '<>'
297
298
    LPAREN   ::= '('
299
    RPAREN   ::= ')'
300
    LBRACE   ::= '{'
301
    RBRACE   ::= '}'
302
    LBRACKET ::= '['
303
    RBRACKET ::= ']'
304
305
    ARROW      ::= '->'
306
    BAR        ::= '|'
307
    COMMA      ::= ','
308
    COLON      ::= ':'
309
    COLONCOLON ::= '::'
310
    SEMICOLON  ::= ';'
311
    DOT        ::= '.'
312
    DOTDOT     ::= '..'
313
%End
314
315
%EOF
316
    EOF_TOKEN
317
%End
318
319
%ERROR
320
    ERROR_TOKEN
321
%End
322
323
%Headers
324
	/.$parserCore
325
326
	./
327
%End
328
329
%Rules
330
	/.$BeginActions./
331
332
-----------------------------------------------------------------------
333
--  Names
334
-----------------------------------------------------------------------
335
--  Temporary backward compatibility support for 7.4.8 conceptual usage 
336
    conceptualOperationName -> and
337
    conceptualOperationName -> implies
338
    conceptualOperationName -> not
339
    conceptualOperationName -> or
340
    conceptualOperationName -> xor
341
    conceptualOperationName -> '<'
342
    conceptualOperationName -> '<='
343
    conceptualOperationName -> '>='
344
    conceptualOperationName -> '>'
345
    conceptualOperationName -> '='
346
    conceptualOperationName -> '<>'
347
    conceptualOperationName -> '+'
348
    conceptualOperationName -> '-'
349
    conceptualOperationName -> '*'
350
    conceptualOperationName -> '/'
351
    conceptualOperationNameCS ::= conceptualOperationName
352
        /.$BeginCode
353
                    IToken iToken = getIToken($getToken(1));
354
                    SimpleNameCS result = createConceptualOperationNameCS(iToken);
355
                    setOffsets(result, iToken);
356
                    $setResult(result);
357
          $EndCode
358
        ./
359
    
360
    reservedKeyword -> and
361
    reservedKeyword -> else
362
    reservedKeyword -> endif
363
    reservedKeyword -> if
364
    reservedKeyword -> implies
365
    reservedKeyword -> in
366
    reservedKeyword -> let
367
    reservedKeyword -> not
368
    reservedKeyword -> or
369
    reservedKeyword -> then
370
    reservedKeyword -> xor
371
372
    tupleKeywordCS ::= Tuple
373
        /.$NewCase./
374
    reservedKeywordCS ::= reservedKeyword
375
        /.$BeginCode
376
                    IToken iToken = getIToken($getToken(1));
377
                    SimpleNameCS result = createSimpleNameCS(
378
                                SimpleTypeEnum.KEYWORD_LITERAL,
379
                                iToken
380
                            );
381
                    setOffsets(result, iToken);
382
                    $setResult(result);
383
          $EndCode
384
        ./
385
    restrictedKeywordCS -> CollectionTypeIdentifierCS
386
--  restrictedKeywordCS -> BooleanLiteralExpCS
387
--  restrictedKeywordCS -> InvalidLiteralExpCS
388
--  restrictedKeywordCS -> NullLiteralExpCS
389
--  restrictedKeywordCS -> selfKeywordCS
390
    restrictedKeywordCS -> primitiveTypeCS
391
    restrictedKeywordCS -> tupleKeywordCS
392
        
393
    selfKeywordCS ::= self
394
        /.$BeginCode
395
                    IToken iToken = getIToken($getToken(1));
396
                    SimpleNameCS result = createSimpleNameCS(
397
                            SimpleTypeEnum.SELF_LITERAL,
398
                            iToken
399
                        );
400
                    setOffsets(result, iToken);
401
                    $setResult(result);
402
          $EndCode
403
        ./
404
        
405
    simpleNameCS ::= IDENTIFIER
406
        /.$BeginCode
407
                    IToken iToken = getIToken($getToken(1));
408
                    SimpleNameCS result = createSimpleNameCS(
409
                            SimpleTypeEnum.IDENTIFIER_LITERAL,
410
                            iToken
411
                        );
412
                    setOffsets(result, iToken);
413
                    $setResult(result);
414
          $EndCode
415
        ./
416
417
    unreservedSimpleNameCS -> simpleNameCS
418
    unreservedSimpleNameCS -> restrictedKeywordCS
419
420
    pathNameCS ::= simpleNameCS
421
        /.$BeginCode
422
                    SimpleNameCS simpleName = (SimpleNameCS)$getSym(1);
423
                    PathNameCS result = createPathNameCS(simpleName);
424
                    setOffsets(result, simpleName);
425
                    $setResult(result);
426
          $EndCode
427
        ./
428
    pathNameCS ::= pathNameCS '::' unreservedSimpleNameCS
429
        /.$BeginCode
430
                    PathNameCS result = (PathNameCS)$getSym(1);
431
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3);
432
                    result = extendPathNameCS(result, simpleNameCS);
433
                    setOffsets(result, result, simpleNameCS);
434
                    $setResult(result);
435
          $EndCode
436
        ./
437
        
438
-----------------------------------------------------------------------
439
--  Types
440
-----------------------------------------------------------------------
441
    primitiveTypeCS ::= Boolean
442
        /.$BeginCode
443
                    PrimitiveTypeCS result = createPrimitiveTypeCS(
444
                            SimpleTypeEnum.BOOLEAN_LITERAL,
445
                            getTokenText($getToken(1))
446
                        );
447
                    setOffsets(result, getIToken($getToken(1)));
448
                    $setResult(result);
449
          $EndCode
450
        ./
451
    primitiveTypeCS ::= Integer
452
        /.$BeginCode
453
                    PrimitiveTypeCS result = createPrimitiveTypeCS(
454
                            SimpleTypeEnum.INTEGER_LITERAL,
455
                            getTokenText($getToken(1))
456
                        );
457
                    setOffsets(result, getIToken($getToken(1)));
458
                    $setResult(result);
459
          $EndCode
460
        ./
461
    primitiveTypeCS ::= Real
462
        /.$BeginCode
463
                    PrimitiveTypeCS result = createPrimitiveTypeCS(
464
                            SimpleTypeEnum.REAL_LITERAL,
465
                            getTokenText($getToken(1))
466
                        );
467
                    setOffsets(result, getIToken($getToken(1)));
468
                    $setResult(result);
469
          $EndCode
470
        ./
471
    primitiveTypeCS ::= String
472
        /.$BeginCode
473
                    PrimitiveTypeCS result = createPrimitiveTypeCS(
474
                            SimpleTypeEnum.STRING_LITERAL,
475
                            getTokenText($getToken(1))
476
                        );
477
                    setOffsets(result, getIToken($getToken(1)));
478
                    $setResult(result);
479
          $EndCode
480
        ./
481
    primitiveTypeCS ::= UnlimitedNatural
482
        /.$BeginCode
483
                    PrimitiveTypeCS result = createPrimitiveTypeCS(
484
                            SimpleTypeEnum.UNLIMITED_NATURAL_LITERAL,
485
                            getTokenText($getToken(1))
486
                        );
487
                    setOffsets(result, getIToken($getToken(1)));
488
                    $setResult(result);
489
          $EndCode
490
        ./
491
492
    primitiveTypeCS ::= OclAny
493
        /.$BeginCode
494
                    PrimitiveTypeCS result = createPrimitiveTypeCS(
495
                            SimpleTypeEnum.OCL_ANY_LITERAL,
496
                            getTokenText($getToken(1))
497
                        );
498
                    setOffsets(result, getIToken($getToken(1)));
499
                    $setResult(result);
500
          $EndCode
501
        ./
502
    primitiveTypeCS ::= OclInvalid
503
        /.$BeginCode
504
                    PrimitiveTypeCS result = createPrimitiveTypeCS(
505
                            SimpleTypeEnum.OCL_INVALID_LITERAL,
506
                            getTokenText($getToken(1))
507
                        );
508
                    setOffsets(result, getIToken($getToken(1)));
509
                    $setResult(result);
510
          $EndCode
511
        ./
512
    primitiveTypeCS ::= OclVoid
513
        /.$BeginCode
514
                    PrimitiveTypeCS result = createPrimitiveTypeCS(
515
                            SimpleTypeEnum.OCL_VOID_LITERAL,
516
                            getTokenText($getToken(1))
517
                        );
518
                    setOffsets(result, getIToken($getToken(1)));
519
                    $setResult(result);
520
          $EndCode
521
        ./
522
        
523
    CollectionTypeIdentifierCS ::= Set
524
        /.$BeginCode
525
                    SimpleNameCS result = createCollectionTypeCS(
526
                                CollectionTypeIdentifierEnum.SET_LITERAL,
527
                                getTokenText($getToken(1))
528
                            );
529
                    setOffsets(result, getIToken($getToken(1)));
530
                    $setResult(result);
531
          $EndCode
532
        ./
533
    CollectionTypeIdentifierCS ::= Bag
534
        /.$BeginCode
535
                    SimpleNameCS result = createCollectionTypeCS(
536
                                CollectionTypeIdentifierEnum.BAG_LITERAL,
537
                                getTokenText($getToken(1))
538
                            );
539
                    setOffsets(result, getIToken($getToken(1)));
540
                    $setResult(result);
541
          $EndCode
542
        ./
543
    CollectionTypeIdentifierCS ::= Sequence
544
        /.$BeginCode
545
                    SimpleNameCS result = createCollectionTypeCS(
546
                                CollectionTypeIdentifierEnum.SEQUENCE_LITERAL,
547
                                getTokenText($getToken(1))
548
                            );
549
                    setOffsets(result, getIToken($getToken(1)));
550
                    $setResult(result);
551
          $EndCode
552
        ./
553
    CollectionTypeIdentifierCS ::= Collection
554
        /.$BeginCode
555
                    SimpleNameCS result = createCollectionTypeCS(
556
                                CollectionTypeIdentifierEnum.COLLECTION_LITERAL,
557
                                getTokenText($getToken(1))
558
                            );
559
                    setOffsets(result, getIToken($getToken(1)));
560
                    $setResult(result);
561
          $EndCode
562
        ./
563
    CollectionTypeIdentifierCS ::= OrderedSet
564
        /.$BeginCode
565
                    SimpleNameCS result = createCollectionTypeCS(
566
                                CollectionTypeIdentifierEnum.ORDERED_SET_LITERAL,
567
                                getTokenText($getToken(1))
568
                            );
569
                    setOffsets(result, getIToken($getToken(1)));
570
                    $setResult(result);
571
          $EndCode
572
        ./
573
574
    typeCS -> primitiveTypeCS
575
    typeCS -> pathNameCS
576
    typeCS -> collectionTypeCS
577
    typeCS -> tupleTypeCS
578
579
    collectionTypeCS ::= CollectionTypeIdentifierCS '(' typeCS ')'
580
        /.$BeginCode
581
                    CollectionTypeCS result = (CollectionTypeCS)$getSym(1);
582
                    result.setTypeCS((TypeCS)$getSym(3));
583
                    setOffsets(result, result, getIToken($getToken(4)));
584
                    $setResult(result);
585
          $EndCode
586
        ./
587
588
    tupleTypeCS ::= Tuple '(' tupleTypePartsCSopt ')'
589
        /.$BeginCode
590
                     TupleTypeCS result = createTupleTypeCS((EList<VariableCS>)$getSym(3));
591
                    setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4)));
592
                    $setResult(result);
593
          $EndCode
594
        ./
595
596
    tupleTypePartsCSopt ::= %empty
597
        /.$BeginCode
598
                    $setResult(new BasicEList<VariableCS>());
599
          $EndCode
600
        ./
601
    tupleTypePartsCSopt -> tupleTypePartsCS
602
603
    tupleTypePartsCS ::= typedUninitializedVariableCS
604
        /.$BeginCode
605
                    EList<VariableCS> result = new BasicEList<VariableCS>();
606
                    result.add((VariableCS)$getSym(1));
607
                    $setResult(result);
608
          $EndCode
609
        ./
610
    tupleTypePartsCS ::= tupleTypePartsCS ',' typedUninitializedVariableCS
611
        /.$BeginCode
612
                    EList<VariableCS> result = (EList<VariableCS>)$getSym(1);
613
                    result.add((VariableCS)$getSym(3));
614
                    $setResult(result);
615
          $EndCode
616
        ./
617
618
-----------------------------------------------------------------------
619
--  Declarations
620
-----------------------------------------------------------------------     
621
    untypedUninitializedVariableCS ::= simpleNameCS
622
        /.$BeginCode
623
                    SimpleNameCS name = (SimpleNameCS)$getSym(1);
624
                    VariableCS result = createVariableCS(name, null, null);
625
                    setOffsets(result, name);
626
                    $setResult(result);
627
          $EndCode
628
        ./
629
630
    typedUninitializedVariableCS ::= simpleNameCS ':' typeCS
631
        /.$BeginCode
632
                    SimpleNameCS name = (SimpleNameCS)$getSym(1);
633
                    TypeCS type = (TypeCS)$getSym(3);
634
                    VariableCS result = createVariableCS(name, type, null);
635
                    setOffsets(result, name, type);
636
                    $setResult(result);
637
          $EndCode
638
        ./
639
        
640
    untypedInitializedVariableCS ::= simpleNameCS '=' OclExpressionCS
641
        /.$BeginCode
642
                    SimpleNameCS name = (SimpleNameCS)$getSym(1);
643
                    OCLExpressionCS initExpression = (OCLExpressionCS)$getSym(3);
644
                    VariableCS result = createVariableCS(name, null, initExpression);
645
                    setOffsets(result, name, initExpression);
646
                    $setResult(result);
647
          $EndCode
648
        ./
649
        
650
    typedInitializedVariableCS ::= simpleNameCS ':' typeCS '=' OclExpressionCS
651
        /.$BeginCode
652
                    SimpleNameCS name = (SimpleNameCS)$getSym(1);
653
                    TypeCS type = (TypeCS)$getSym(3);
654
                    OCLExpressionCS initExpression = (OCLExpressionCS)$getSym(5);
655
                    VariableCS result = createVariableCS(name, type, initExpression);
656
                    setOffsets(result, name, initExpression);
657
                    $setResult(result);
658
          $EndCode
659
        ./
660
661
    initializedVariableCS -> untypedInitializedVariableCS
662
    initializedVariableCS -> typedInitializedVariableCS
663
664
    uninitializedVariableCS -> untypedUninitializedVariableCS
665
    uninitializedVariableCS -> typedUninitializedVariableCS
666
667
    VariableDeclarationCS -> untypedUninitializedVariableCS
668
    VariableDeclarationCS -> untypedInitializedVariableCS
669
    VariableDeclarationCS -> typedUninitializedVariableCS
670
    VariableDeclarationCS -> typedInitializedVariableCS
671
672
-----------------------------------------------------------------------
673
--  Literals
674
-----------------------------------------------------------------------
675
-- EnumLiteralExpCS is parsed as a PropertyCallExpCS[C]
676
--  LiteralExpCS -> EnumLiteralExpCS
677
    LiteralExpCS -> CollectionLiteralExpCS
678
    LiteralExpCS -> TupleLiteralExpCS
679
    LiteralExpCS -> PrimitiveLiteralExpCS
680
    LiteralExpCS -> TypeLiteralExpCS
681
682
    CollectionLiteralExpCS ::= CollectionTypeIdentifierCS
683
       '{' CollectionLiteralPartsCSopt '}'
684
        /.$BeginCode
685
                    CollectionTypeCS typeCS = (CollectionTypeCS)$getSym(1);
686
                    CollectionLiteralExpCS result = createCollectionLiteralExpCS(
687
                            typeCS,
688
                            (EList<CollectionLiteralPartCS>)$getSym(3)
689
                        );
690
                    setOffsets(result, typeCS, getIToken($getToken(4)));
691
                    $setResult(result);
692
          $EndCode
693
        ./
694
    CollectionLiteralExpCS ::= collectionTypeCS '{' CollectionLiteralPartsCSopt '}'
695
        /.$BeginCode
696
                    CollectionTypeCS typeCS = (CollectionTypeCS)$getSym(1);
697
                    CollectionLiteralExpCS result = createCollectionLiteralExpCS(
698
                            typeCS,
699
                            (EList<CollectionLiteralPartCS>)$getSym(3)
700
                        );
701
                    setOffsets(result, typeCS, getIToken($getToken(4)));
702
                    $setResult(result);
703
          $EndCode
704
        ./
705
706
    CollectionLiteralPartsCSopt ::= %empty
707
        /.$BeginCode
708
                    $setResult(new BasicEList<CollectionLiteralPartCS>());
709
          $EndCode
710
        ./
711
    CollectionLiteralPartsCSopt -> CollectionLiteralPartsCS
712
713
    CollectionLiteralPartsCS ::= CollectionLiteralPartCS
714
        /.$BeginCode
715
                    EList<CollectionLiteralPartCS> result = new BasicEList<CollectionLiteralPartCS>();
716
                    result.add((CollectionLiteralPartCS)$getSym(1));
717
                    $setResult(result);
718
          $EndCode
719
        ./
720
    CollectionLiteralPartsCS ::= CollectionLiteralPartsCS ',' CollectionLiteralPartCS
721
        /.$BeginCode
722
                    EList<CollectionLiteralPartCS> result = (EList<CollectionLiteralPartCS>)$getSym(1);
723
                    result.add((CollectionLiteralPartCS)$getSym(3));
724
                    $setResult(result);
725
          $EndCode
726
        ./
727
728
    CollectionLiteralPartCS -> CollectionRangeCS
729
    CollectionLiteralPartCS ::= OclExpressionCS
730
        /.$BeginCode
731
                    CollectionLiteralPartCS result = createCollectionLiteralPartCS(
732
                            (OCLExpressionCS)$getSym(1)
733
                        );
734
                    setOffsets(result, (CSTNode)$getSym(1));
735
                    $setResult(result);
736
          $EndCode
737
        ./
738
739
    CollectionRangeCS ::= OclExpressionCS '..' OclExpressionCS
740
        /.$BeginCode
741
                    CollectionLiteralPartCS result = createCollectionRangeCS(
742
                            (OCLExpressionCS)$getSym(1),
743
                            (OCLExpressionCS)$getSym(3)
744
                        );
745
                    setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3));
746
                    $setResult(result);
747
          $EndCode
748
        ./
749
750
    PrimitiveLiteralExpCS -> IntegerLiteralExpCS
751
    PrimitiveLiteralExpCS -> RealLiteralExpCS
752
    PrimitiveLiteralExpCS -> StringLiteralExpCS
753
    PrimitiveLiteralExpCS -> BooleanLiteralExpCS
754
    PrimitiveLiteralExpCS -> UnlimitedNaturalLiteralExpCS
755
    PrimitiveLiteralExpCS -> InvalidLiteralExpCS
756
    PrimitiveLiteralExpCS -> NullLiteralExpCS
757
758
    TupleLiteralExpCS ::= Tuple '{' TupleLiteralPartsCS '}'
759
        /.$BeginCode
760
                    TupleLiteralExpCS result = createTupleLiteralExpCS((EList<VariableCS>)$getSym(3));
761
                    setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4)));
762
                    $setResult(result);
763
          $EndCode
764
        ./
765
766
    TupleLiteralPartsCS ::= initializedVariableCS
767
        /.$BeginCode
768
                    EList<VariableCS> result = new BasicEList<VariableCS>();
769
                    result.add((VariableCS)$getSym(1));
770
                    $setResult(result);
771
          $EndCode
772
        ./
773
    TupleLiteralPartsCS ::= TupleLiteralPartsCS ',' initializedVariableCS
774
        /.$BeginCode
775
                    EList<VariableCS> result = (EList<VariableCS>)$getSym(1);
776
                    result.add((VariableCS)$getSym(3));
777
                    $setResult(result);
778
          $EndCode
779
        ./
780
781
    IntegerLiteralExpCS ::= INTEGER_LITERAL
782
        /.$BeginCode
783
                    IntegerLiteralExpCS result = createIntegerLiteralExpCS(getTokenText($getToken(1)));
784
                    setOffsets(result, getIToken($getToken(1)));
785
                    $setResult(result);
786
          $EndCode
787
        ./
788
789
    RealLiteralExpCS ::= REAL_LITERAL
790
        /.$BeginCode
791
                    RealLiteralExpCS result = createRealLiteralExpCS(getTokenText($getToken(1)));
792
                    setOffsets(result, getIToken($getToken(1)));
793
                    $setResult(result);
794
          $EndCode
795
        ./
796
797
    StringLiteralExpCS ::= STRING_LITERAL
798
        /.$BeginCode
799
                    IToken literalToken = getIToken($getToken(1));
800
                    StringLiteralExpCS result = createStringLiteralExpCS(literalToken);
801
                    setOffsets(result, literalToken);
802
                    $setResult(result);
803
          $EndCode
804
        ./
805
    StringLiteralExpCS ::= StringLiteralExpCS STRING_LITERAL
806
        /.$BeginCode
807
                    StringLiteralExpCS string = (StringLiteralExpCS)$getSym(1);
808
                    IToken literalToken = getIToken($getToken(2));
809
                    StringLiteralExpCS result = extendStringLiteralExpCS(string, literalToken);
810
                    setOffsets(result, string, literalToken);
811
                    $setResult(result);
812
          $EndCode
813
        ./
814
815
    BooleanLiteralExpCS ::= true
816
        /.$BeginCode
817
                    BooleanLiteralExpCS result = createBooleanLiteralExpCS(getTokenText($getToken(1)));
818
                    setOffsets(result, getIToken($getToken(1)));
819
                    $setResult(result);
820
          $EndCode
821
        ./
822
    BooleanLiteralExpCS ::= false
823
        /.$BeginCode
824
                    BooleanLiteralExpCS result = createBooleanLiteralExpCS(getTokenText($getToken(1)));
825
                    setOffsets(result, getIToken($getToken(1)));
826
                    $setResult(result);
827
          $EndCode
828
        ./
829
830
    UnlimitedNaturalLiteralExpCS ::= '*'
831
        /.$BeginCode
832
                    UnlimitedNaturalLiteralExpCS result = createUnlimitedNaturalLiteralExpCS(getTokenText($getToken(1)));
833
                    setOffsets(result, getIToken($getToken(1)));
834
                    $setResult(result);
835
          $EndCode
836
        ./
837
838
    InvalidLiteralExpCS ::= invalid
839
        /.$BeginCode
840
                    InvalidLiteralExpCS result = createInvalidLiteralExpCS(getTokenText($getToken(1)));
841
                    setOffsets(result, getIToken($getToken(1)));
842
                    $setResult(result);
843
          $EndCode
844
        ./
845
846
    NullLiteralExpCS ::= null
847
        /.$BeginCode
848
                    NullLiteralExpCS result = createNullLiteralExpCS(getTokenText($getToken(1)));
849
                    setOffsets(result, getIToken($getToken(1)));
850
                    $setResult(result);
851
          $EndCode
852
        ./
853
        
854
    -- unqualified pathNameCS is parsed as SimpleNameExpCS
855
    -- qualified pathNameCS is parsed as PropertyCallExpCS[C]
856
    TypeLiteralExpCS ::= primitiveTypeCS
857
        /.$NewCase./
858
    TypeLiteralExpCS ::= collectionTypeCS
859
        /.$NewCase./
860
    TypeLiteralExpCS ::= tupleTypeCS
861
        /.$BeginCode
862
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1);
863
                    VariableExpCS result = createVariableExpCS(
864
                            simpleNameCS,
865
                            new BasicEList<OCLExpressionCS>(),
866
                            null
867
                        );
868
                    setOffsets(result, simpleNameCS);
869
                    $setResult(result);
870
          $EndCode
871
        ./
872
873
-----------------------------------------------------------------------
874
--  Calls
875
-----------------------------------------------------------------------         
876
    CallExpCS -> FeatureCallExpCS
877
    CallExpCS -> LoopExpCS
878
879
    LoopExpCS -> IteratorExpCS
880
    LoopExpCS -> IterateExpCS
881
882
--  IteratorExpCS[A.1] is parsed as OperationCallExpCS[B]
883
    IteratorExpCS ::=                          -- [A.2]
884
        primaryExpCS '->' simpleNameCS
885
        '(' uninitializedVariableCS '|' OclExpressionCS ')'
886
        /.$BeginCode
887
                    OCLExpressionCS source = (OCLExpressionCS)$getSym(1);
888
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3);
889
                    IteratorExpCS result = createIteratorExpCS(
890
                            source,
891
                            simpleNameCS,
892
                            (VariableCS)$getSym(5),
893
                            null,
894
                            (OCLExpressionCS)$getSym(7)
895
                        );
896
                    setOffsets(result, source, getIToken($getToken(8)));
897
                    $setResult(result);
898
          $EndCode
899
        ./
900
    IteratorExpCS ::=                          -- [A.3.1]
901
        primaryExpCS '->' simpleNameCS
902
        '(' simpleNameCS ',' uninitializedVariableCS '|' OclExpressionCS ')'
903
        /.$BeginCode
904
                    SimpleNameCS name = (SimpleNameCS)$getSym(5);
905
                    VariableCS variableCS = createVariableCS(name, null, null);
906
                    setOffsets(variableCS, name);
907
                    OCLExpressionCS source = (OCLExpressionCS)$getSym(1);
908
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3);
909
                    IteratorExpCS result = createIteratorExpCS(
910
                            source,
911
                            simpleNameCS,
912
                            variableCS,
913
                            (VariableCS)$getSym(7),
914
                            (OCLExpressionCS)$getSym(9)
915
                        );
916
                    setOffsets(result, source, getIToken($getToken(10)));
917
                    $setResult(result);
918
          $EndCode
919
        ./
920
    IteratorExpCS ::=                          -- [A.3.2]
921
        primaryExpCS '->' simpleNameCS '(' typedUninitializedVariableCS ','
922
        uninitializedVariableCS '|' OclExpressionCS ')'
923
        /.$BeginCode
924
                    OCLExpressionCS source = (OCLExpressionCS)$getSym(1);
925
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3);
926
                    IteratorExpCS result = createIteratorExpCS(
927
                            source,
928
                            simpleNameCS,
929
                            (VariableCS)$getSym(5),
930
                            (VariableCS)$getSym(7),
931
                            (OCLExpressionCS)$getSym(9)
932
                        );
933
                    setOffsets(result, source, getIToken($getToken(10)));
934
                    $setResult(result);
935
          $EndCode
936
        ./
937
--  IteratorExpCS[B] is parsed as OperationCallExpCS[C]
938
--  IteratorExpCS[C] is parsed as AssociationClassCallExpCS[A.1]
939
--  IteratorExpCS[D] is parsed as AssociationClassCallExpCS[A]
940
--  IteratorExpCS[E] is parsed as AssociationClassCallExpCS[A]
941
942
    IterateExpCS ::= primaryExpCS '->' simpleNameCS
943
        '(' typedInitializedVariableCS '|' OclExpressionCS ')'
944
        /.$BeginCode
945
                    OCLExpressionCS source = (OCLExpressionCS)$getSym(1);
946
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3);
947
                    IterateExpCS result = createIterateExpCS(
948
                            source,
949
                            simpleNameCS,
950
                            (VariableCS)$getSym(5),
951
                            null,
952
                            (OCLExpressionCS)$getSym(7)
953
                        );
954
                    setOffsets(result, source, getIToken($getToken(8)));
955
                    $setResult(result);
956
          $EndCode
957
        ./
958
    IterateExpCS ::= primaryExpCS '->' simpleNameCS
959
        '(' uninitializedVariableCS ';' typedInitializedVariableCS '|' OclExpressionCS ')'
960
        /.$BeginCode
961
                    OCLExpressionCS source = (OCLExpressionCS)$getSym(1);
962
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3);
963
                    IterateExpCS result = createIterateExpCS(
964
                            source,
965
                            simpleNameCS,
966
                            (VariableCS)$getSym(5),
967
                            (VariableCS)$getSym(7),
968
                            (OCLExpressionCS)$getSym(9)
969
                        );
970
                    setOffsets(result, source, getIToken($getToken(10)));
971
                    $setResult(result);
972
          $EndCode
973
        ./
974
975
    FeatureCallExpCS -> OperationCallExpCS
976
    FeatureCallExpCS -> PropertyCallExpCS
977
    FeatureCallExpCS -> NavigationCallExpCS
978
    
979
--  OperationCallExpCS[A] is realized by the infix OclExpressionCS productions
980
    OperationCallExpCS ::= -- [B.1]
981
        primaryExpCS '->' simpleNameCS '(' ')'
982
        /.$BeginCode
983
                    OCLExpressionCS source = (OCLExpressionCS)$getSym(1);
984
                    OperationCallExpCS result = createArrowOperationCallExpCS(
985
                            source,
986
                            (SimpleNameCS)$getSym(3),
987
                            null,
988
                            new BasicEList<OCLExpressionCS>()
989
                        );
990
                    setOffsets(result, source, getIToken($getToken(5)));
991
                    $setResult(result);
992
          $EndCode
993
        ./  
994
    OperationCallExpCS ::= -- [B.2],IteratorExpCS[A.1]
995
        primaryExpCS '->' simpleNameCS '(' OclExpressionCS ')'
996
        /.$BeginCode
997
                    OCLExpressionCS source = (OCLExpressionCS)$getSym(1);
998
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3);
999
                    OCLExpressionCS arg = (OCLExpressionCS)$getSym(5);
1000
                    OCLExpressionCS result;
1001
                    if (isIterator(simpleNameCS.getValue())) {
1002
                        result = createIteratorExpCS(
1003
                                source,
1004
                                simpleNameCS,
1005
                                null,
1006
                                null,
1007
                                arg
1008
                            );
1009
                    }
1010
                    else {
1011
                        EList<OCLExpressionCS> args = new BasicEList<OCLExpressionCS>();
1012
                        args.add(arg);
1013
                        result = createArrowOperationCallExpCS(
1014
                                source,
1015
                                simpleNameCS,
1016
                                null,
1017
                                args
1018
                            );
1019
                    }
1020
                    setOffsets(result, source, getIToken($getToken(6)));
1021
                    $setResult(result);
1022
          $EndCode
1023
        ./  
1024
    OperationCallExpCS ::= -- [B.3.1]
1025
        primaryExpCS '->' simpleNameCS '(' notNameExpressionCS ',' argumentsCS ')'
1026
        /.$BeginCode
1027
                    EList<OCLExpressionCS> args = (EList<OCLExpressionCS>)$getSym(7);
1028
                    args.add(0, (OCLExpressionCS)$getSym(5));
1029
                    OCLExpressionCS source = (OCLExpressionCS)$getSym(1);
1030
                    OperationCallExpCS result = createArrowOperationCallExpCS(
1031
                            source,
1032
                            (SimpleNameCS)$getSym(3),
1033
                            null,
1034
                            args
1035
                        );
1036
                    setOffsets(result, source, getIToken($getToken(8)));
1037
                    $setResult(result);
1038
          $EndCode
1039
        ./  
1040
    OperationCallExpCS ::= -- [B.3.2]
1041
        primaryExpCS '->' simpleNameCS '(' simpleNameCS ',' argumentsCS ')'
1042
        /.$BeginCode
1043
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(5);
1044
                    OCLExpressionCS variableExpCS = createVariableExpCS(
1045
                            simpleNameCS,
1046
                            new BasicEList<OCLExpressionCS>(),
1047
                            null
1048
                        );
1049
                    setOffsets(variableExpCS, simpleNameCS);
1050
                    EList<OCLExpressionCS> args = (EList<OCLExpressionCS>)$getSym(7);
1051
                    args.add(0, variableExpCS);
1052
                    OCLExpressionCS source = (OCLExpressionCS)$getSym(1);
1053
                    OperationCallExpCS result = createArrowOperationCallExpCS(
1054
                            source,
1055
                            (SimpleNameCS)$getSym(3),
1056
                            null,
1057
                            args
1058
                        );
1059
                    setOffsets(result, source, getIToken($getToken(8)));
1060
                    $setResult(result);
1061
          $EndCode
1062
        ./  
1063
    OperationCallExpCS ::=
1064
        primaryExpCS '.' conceptualOperationNameCS isMarkedPreCSopt '(' argumentsCSopt ')'
1065
        /.$NewCase./
1066
    OperationCallExpCS ::= -- [C],[E],IteratorExpCS[B]
1067
        primaryExpCS '.' simpleNameCS isMarkedPreCSopt '(' argumentsCSopt ')'
1068
        /.$BeginCode
1069
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3);
1070
                    OCLExpressionCS source = (OCLExpressionCS)$getSym(1);
1071
                    CallExpCS result = createDotOperationCallExpCS(
1072
                            source,
1073
                            null,
1074
                            simpleNameCS,
1075
                            (IsMarkedPreCS)$getSym(4),
1076
                            (EList<OCLExpressionCS>)$getSym(6)
1077
                        );
1078
                    setOffsets(result, source, getIToken($getToken(7)));
1079
                    $setResult(result);
1080
          $EndCode
1081
        ./  
1082
    OperationCallExpCS ::= -- [D],[F],[G.1]
1083
        simpleNameCS isMarkedPreCSopt '(' argumentsCSopt ')'
1084
        /.$BeginCode
1085
                    OperationCallExpCS result = createDotOperationCallExpCS(
1086
                            null,
1087
                            null,
1088
                            (SimpleNameCS)$getSym(1),
1089
                            (IsMarkedPreCS)$getSym(2),
1090
                            (EList<OCLExpressionCS>)$getSym(4)
1091
                        );
1092
                    setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5)));
1093
                    $setResult(result);
1094
          $EndCode
1095
        ./
1096
    OperationCallExpCS ::= -- [G.2]
1097
        pathNameCS '::' unreservedSimpleNameCS '(' argumentsCSopt ')'
1098
        /.$BeginCode
1099
                    PathNameCS pathNameCS = (PathNameCS)$getSym(1);
1100
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3);
1101
                    OperationCallExpCS result = createDotOperationCallExpCS(
1102
                            null,
1103
                            pathNameCS,
1104
                            simpleNameCS,
1105
                            null,
1106
                            (EList<OCLExpressionCS>)$getSym(5)
1107
                        );
1108
                    setOffsets(result, pathNameCS, getIToken($getToken(6)));
1109
                    $setResult(result);
1110
          $EndCode
1111
        ./
1112
--  OperationCallExpCS[H] is realized by the prefix OclExpressionCS productions
1113
    OperationCallExpCS ::= -- [I],[J]   
1114
        primaryExpCS '.' pathNameCS '::' unreservedSimpleNameCS isMarkedPreCSopt
1115
        '(' argumentsCSopt ')'
1116
        /.$BeginCode
1117
                    PathNameCS pathNameCS = (PathNameCS)$getSym(3);
1118
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(5);
1119
                    OCLExpressionCS source = (OCLExpressionCS)$getSym(1);
1120
                    CallExpCS result = createDotOperationCallExpCS(
1121
                            source,
1122
                            pathNameCS,
1123
                            simpleNameCS,
1124
                            (IsMarkedPreCS)$getSym(6),
1125
                            (EList<OCLExpressionCS>)$getSym(8)
1126
                        );
1127
                    setOffsets(result, source, getIToken($getToken(9)));
1128
                    $setResult(result);
1129
          $EndCode
1130
        ./
1131
            
1132
--  NavigationCallExpCS -> PropertyCallExpCS -- parsed as FeatureCallExpCS
1133
    NavigationCallExpCS -> AssociationClassCallExpCS
1134
        
1135
--  PropertyCallExpCS[A] is parsed as AssociationClassCallExpCS[A.1]
1136
--  PropertyCallExpCS[B.1] is parsed as a SimpleNameExpCS
1137
--  PropertyCallExpCS[B.2] is parsed as a AssociationClassCallExpCS[B.1]
1138
    PropertyCallExpCS ::= -- [C] excluding [B]
1139
        pathNameCS '::' unreservedSimpleNameCS isMarkedPreCSopt
1140
        /.$BeginCode
1141
                    PathNameCS pathNameCS = (PathNameCS)$getSym(1);
1142
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3);
1143
                    IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(4);
1144
                    FeatureCallExpCS result = createFeatureCallExpCS(
1145
                            null,
1146
                            pathNameCS,
1147
                            simpleNameCS,
1148
                            new BasicEList<OCLExpressionCS>(),
1149
                            isMarkedPreCS
1150
                        );
1151
                    if (isMarkedPreCS != null) {
1152
                        setOffsets(result, pathNameCS, isMarkedPreCS);
1153
                    } else {
1154
                        setOffsets(result, pathNameCS, simpleNameCS);
1155
                    }
1156
                    $setResult(result);
1157
          $EndCode
1158
        ./
1159
    PropertyCallExpCS ::= -- [D]
1160
        primaryExpCS '.' pathNameCS '::' unreservedSimpleNameCS isMarkedPreCSopt
1161
        /.$BeginCode
1162
                    OCLExpressionCS source = (OCLExpressionCS)$getSym(1);
1163
                    PathNameCS pathNameCS = (PathNameCS)$getSym(3);
1164
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(5);
1165
                    IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(6);
1166
                    FeatureCallExpCS result = createFeatureCallExpCS(
1167
                            source,
1168
                            pathNameCS,
1169
                            simpleNameCS,
1170
                            new BasicEList<OCLExpressionCS>(),
1171
                            isMarkedPreCS
1172
                        );
1173
                    if (isMarkedPreCS != null) {
1174
                        setOffsets(result, source, isMarkedPreCS);
1175
                    } else {
1176
                        setOffsets(result, source, simpleNameCS);
1177
                    }
1178
                    $setResult(result);
1179
          $EndCode
1180
        ./
1181
1182
    AssociationClassCallExpCS ::= -- [A.1],PropertyCallExpCS[A],IteratorExpCS[C,D,E]
1183
        primaryExpCS '.' simpleNameCS isMarkedPreCSopt
1184
        /.$BeginCode
1185
                    OCLExpressionCS source = (OCLExpressionCS)$getSym(1);
1186
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3);
1187
                    IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(4);
1188
                    FeatureCallExpCS result = createFeatureCallExpCS(
1189
                            source,
1190
                            null,
1191
                            simpleNameCS,
1192
                            new BasicEList<OCLExpressionCS>(),
1193
                            isMarkedPreCS
1194
                        );
1195
                    if (isMarkedPreCS != null) {
1196
                        setOffsets(result, source, isMarkedPreCS);
1197
                    } else {
1198
                        setOffsets(result, source, simpleNameCS);
1199
                    }
1200
                    $setResult(result);
1201
          $EndCode
1202
        ./
1203
    AssociationClassCallExpCS ::= -- [A.2],IteratorExpCS[D,E]
1204
        primaryExpCS '.' simpleNameCS '[' argumentsCS ']' isMarkedPreCSopt
1205
        /.$BeginCode
1206
                    OCLExpressionCS source = (OCLExpressionCS)$getSym(1);
1207
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3);
1208
                    IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(7);
1209
                    FeatureCallExpCS result = createFeatureCallExpCS(
1210
                            source,
1211
                            null,
1212
                            simpleNameCS,
1213
                            (EList<OCLExpressionCS>)$getSym(5),
1214
                            isMarkedPreCS
1215
                        );
1216
                    if (isMarkedPreCS != null) {
1217
                        setOffsets(result, source, isMarkedPreCS);
1218
                    } else {
1219
                        setOffsets(result, source, getIToken($getToken(6)));
1220
                    }
1221
                    $setResult(result);
1222
          $EndCode
1223
        ./
1224
--  AssociationClassCallExpCS[B.1.1] parsed as SimpleNameExpCS
1225
--  AssociationClassCallExpCS[B.1.2] is added by Complete OCL
1226
    AssociationClassCallExpCS ::=  -- [B.2]
1227
        simpleNameCS '[' argumentsCS ']' isMarkedPreCSopt
1228
        /.$BeginCode
1229
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1);
1230
                    IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(5);
1231
                    VariableExpCS result = createVariableExpCS(
1232
                            simpleNameCS,
1233
                            (EList<OCLExpressionCS>)$getSym(3),
1234
                            isMarkedPreCS
1235
                        );
1236
                    if (isMarkedPreCS != null) {
1237
                        setOffsets(result, simpleNameCS, isMarkedPreCS);
1238
                    } else {
1239
                        setOffsets(result, simpleNameCS, getIToken($getToken(4)));
1240
                    }
1241
                    $setResult(result);
1242
          $EndCode
1243
        ./
1244
1245
    isMarkedPreCSopt ::= %empty
1246
        /.$BeginCode
1247
                    $setResult(null);
1248
          $EndCode
1249
        ./
1250
1251
    argumentsCSopt ::= %empty
1252
        /.$BeginCode
1253
                    $setResult(new BasicEList<OCLExpressionCS>());
1254
          $EndCode
1255
        ./
1256
    argumentsCSopt -> argumentsCS
1257
1258
    argumentsCS ::= OclExpressionCS
1259
        /.$BeginCode
1260
                    EList<OCLExpressionCS> result = new BasicEList<OCLExpressionCS>();
1261
                    result.add((OCLExpressionCS)$getSym(1));
1262
                    $setResult(result);
1263
          $EndCode
1264
        ./
1265
    argumentsCS ::= argumentsCS ',' OclExpressionCS
1266
        /.$BeginCode
1267
                    EList<OCLExpressionCS> result = (EList<OCLExpressionCS>)$getSym(1);
1268
                    result.add((OCLExpressionCS)$getSym(3));
1269
                    $setResult(result);
1270
          $EndCode
1271
        ./
1272
1273
-----------------------------------------------------------------------
1274
--  Expressions
1275
-----------------------------------------------------------------------
1276
    -- An OclExpressionCS comprising just a SimpleNameCS is kept separate as
1277
    --  SimpleNameExpCS to avoid ambiguity when parsing "a->b(c,d" until the next
1278
    --  letter resolves the usage as a two iterator  or as a two or more argument
1279
    --  OperationCallExpCS.
1280
    -- An OclExpressionCS comprising one or more LetExpCS is kept separate to ensure
1281
    --  that let is right associative, whereas infix operators are left associative.
1282
    --   a = 64 / 16 / let b : Integer in 8 / let c : Integer in 4 
1283
    -- is
1284
    --   a = (64 / 16) / (let b : Integer in 8 / (let c : Integer in 4 ))
1285
    OclExpressionCS -> notNameExpressionCS
1286
    OclExpressionCS -> SimpleNameExpCS
1287
        
1288
--  VariableExpCS[.1] simpleNameCS parsed as SimpleNameExpCS
1289
    VariableExpCS ::= -- [.2]
1290
        selfKeywordCS
1291
        /.$BeginCode
1292
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1);
1293
                    VariableExpCS result = createVariableExpCS(
1294
                            simpleNameCS,
1295
                            new BasicEList<OCLExpressionCS>(),
1296
                            null
1297
                        );
1298
                    setOffsets(result, simpleNameCS);
1299
                    $setResult(result);
1300
          $EndCode
1301
        ./
1302
        
1303
    SimpleNameExpCS ::= -- AssociationClassCallExpCS[B.1.1],
1304
                        -- PropertyCallExpCS[B],VariableExpCS[.1]
1305
        simpleNameCS
1306
        /.$BeginCode
1307
                    SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1);
1308
                    VariableExpCS result = createVariableExpCS(
1309
                            simpleNameCS,
1310
                            new BasicEList<OCLExpressionCS>(),
1311
                            null
1312
                        );
1313
                    setOffsets(result, simpleNameCS);
1314
                    $setResult(result);
1315
          $EndCode
1316
        ./
1317
1318
    notNameExpressionCS -> impliesNotNameNotLetCS
1319
    notNameExpressionCS -> impliesWithLetCS
1320
    
1321
    impliesNotLetCS -> impliesNotNameNotLetCS
1322
    impliesNotLetCS -> SimpleNameExpCS
1323
    impliesNotNameNotLetCS -> xorNotNameNotLetCS
1324
    impliesNotNameNotLetCS ::= impliesNotLetCS implies xorNotLetCS
1325
        /.$NewCase./
1326
    impliesWithLetCS -> xorWithLetCS
1327
    impliesWithLetCS ::= impliesNotLetCS implies xorWithLetCS
1328
        /.$NewCase./
1329
1330
    xorNotLetCS -> xorNotNameNotLetCS
1331
    xorNotLetCS -> SimpleNameExpCS
1332
    xorNotNameNotLetCS -> orNotNameNotLetCS
1333
    xorNotNameNotLetCS ::= xorNotLetCS xor orNotLetCS
1334
        /.$NewCase./
1335
    xorWithLetCS -> orWithLetCS
1336
    xorWithLetCS ::= xorNotLetCS xor orWithLetCS
1337
        /.$NewCase./
1338
1339
    orNotLetCS -> orNotNameNotLetCS
1340
    orNotLetCS -> SimpleNameExpCS
1341
    orNotNameNotLetCS -> andNotNameNotLetCS
1342
    orNotNameNotLetCS ::= orNotLetCS or andNotLetCS
1343
        /.$NewCase./
1344
    orWithLetCS -> andWithLetCS
1345
    orWithLetCS ::= orNotLetCS or andWithLetCS
1346
        /.$NewCase./
1347
1348
    andNotLetCS -> andNotNameNotLetCS
1349
    andNotLetCS -> SimpleNameExpCS
1350
    andNotNameNotLetCS -> equalityNotNameNotLetCS
1351
    andNotNameNotLetCS ::= andNotLetCS and equalityNotLetCS
1352
        /.$NewCase./
1353
    andWithLetCS -> equalityWithLetCS
1354
    andWithLetCS ::= andNotLetCS and equalityWithLetCS
1355
        /.$NewCase./
1356
1357
    equalityNotLetCS -> equalityNotNameNotLetCS
1358
    equalityNotLetCS -> SimpleNameExpCS
1359
    equalityNotNameNotLetCS -> relationalNotNameNotLetCS
1360
    equalityNotNameNotLetCS ::= equalityNotLetCS '=' relationalNotLetCS
1361
        /.$NewCase./
1362
    equalityNotNameNotLetCS ::= equalityNotLetCS '<>' relationalNotLetCS
1363
        /.$NewCase./
1364
    equalityWithLetCS -> relationalWithLetCS
1365
    equalityWithLetCS ::= equalityNotLetCS '=' relationalWithLetCS
1366
        /.$NewCase./
1367
    equalityWithLetCS ::= equalityNotLetCS '<>' relationalWithLetCS
1368
        /.$NewCase./
1369
    
1370
    relationalNotLetCS -> relationalNotNameNotLetCS
1371
    relationalNotLetCS -> SimpleNameExpCS
1372
    relationalNotNameNotLetCS -> additiveNotNameNotLetCS
1373
    relationalNotNameNotLetCS ::= relationalNotLetCS '>' additiveNotLetCS
1374
        /.$NewCase./
1375
    relationalNotNameNotLetCS ::= relationalNotLetCS '<' additiveNotLetCS
1376
        /.$NewCase./
1377
    relationalNotNameNotLetCS ::= relationalNotLetCS '>=' additiveNotLetCS
1378
        /.$NewCase./
1379
    relationalNotNameNotLetCS ::= relationalNotLetCS '<=' additiveNotLetCS
1380
        /.$NewCase./
1381
    relationalWithLetCS -> additiveWithLetCS
1382
    relationalWithLetCS ::= relationalNotLetCS '>' additiveWithLetCS
1383
        /.$NewCase./
1384
    relationalWithLetCS ::= relationalNotLetCS '<' additiveWithLetCS
1385
        /.$NewCase./
1386
    relationalWithLetCS ::= relationalNotLetCS '>=' additiveWithLetCS
1387
        /.$NewCase./
1388
    relationalWithLetCS ::= relationalNotLetCS '<=' additiveWithLetCS
1389
        /.$NewCase./
1390
1391
    additiveNotLetCS -> additiveNotNameNotLetCS
1392
    additiveNotLetCS -> SimpleNameExpCS
1393
    additiveNotNameNotLetCS -> multiplicativeNotNameNotLetCS
1394
    additiveNotNameNotLetCS ::= additiveNotLetCS '+' multiplicativeNotLetCS
1395
        /.$NewCase./
1396
    additiveNotNameNotLetCS ::= additiveNotLetCS '-' multiplicativeNotLetCS
1397
        /.$NewCase./
1398
    additiveWithLetCS -> multiplicativeWithLetCS
1399
    additiveWithLetCS ::= additiveNotLetCS '+' multiplicativeWithLetCS
1400
        /.$NewCase./
1401
    additiveWithLetCS ::= additiveNotLetCS '-' multiplicativeWithLetCS
1402
        /.$NewCase./
1403
    
1404
    multiplicativeNotLetCS -> multiplicativeNotNameNotLetCS
1405
    multiplicativeNotLetCS -> SimpleNameExpCS
1406
    multiplicativeNotNameNotLetCS -> unaryNotNameNotLetCS
1407
    multiplicativeNotNameNotLetCS ::= multiplicativeNotLetCS '*' unaryNotLetCS
1408
        /.$NewCase./
1409
    multiplicativeNotNameNotLetCS ::= multiplicativeNotLetCS '/' unaryNotLetCS
1410
        /.$NewCase./
1411
    multiplicativeWithLetCS -> unaryWithLetCS
1412
    multiplicativeWithLetCS ::= multiplicativeNotLetCS '*' unaryWithLetCS
1413
        /.$NewCase./
1414
    multiplicativeWithLetCS ::= multiplicativeNotLetCS '/' unaryWithLetCS
1415
        /.$BeginCode
1416
                    SimpleNameCS simpleNameCS = createSimpleNameCS(
1417
                                SimpleTypeEnum.KEYWORD_LITERAL,
1418
                                getIToken($getToken(2))
1419
                            );
1420
                    setOffsets(simpleNameCS, getIToken($getToken(2)));
1421
                    OCLExpressionCS left = (OCLExpressionCS)$getSym(1);
1422
                    OCLExpressionCS right = (OCLExpressionCS)$getSym(3);
1423
                    EList<OCLExpressionCS> args = new BasicEList<OCLExpressionCS>();
1424
                    args.add(right);
1425
                    OperationCallExpCS result = createOperationCallExpCS(
1426
                            left,
1427
                            simpleNameCS,
1428
                            args
1429
                        );
1430
                    setOffsets(result, left, right);
1431
                    $setResult(result);
1432
          $EndCode
1433
        ./
1434
    
1435
    unaryNotLetCS -> unaryNotNameNotLetCS
1436
    unaryNotLetCS -> SimpleNameExpCS
1437
    unaryNotNameNotLetCS -> primaryNotNameCS
1438
    unaryNotNameNotLetCS ::= '-' unaryNotLetCS
1439
        /.$NewCase./
1440
    unaryNotNameNotLetCS ::= not unaryNotLetCS
1441
        /.$NewCase./
1442
    unaryWithLetCS -> LetExpCS             -- OclExpressionCS[D]
1443
    unaryWithLetCS ::= '-' unaryWithLetCS
1444
        /.$NewCase./
1445
    unaryWithLetCS ::= not unaryWithLetCS
1446
        /.$BeginCode
1447
                    SimpleNameCS simpleNameCS = createSimpleNameCS(
1448
                                SimpleTypeEnum.KEYWORD_LITERAL,
1449
                                getIToken($getToken(1))
1450
                            );
1451
                    setOffsets(simpleNameCS, getIToken($getToken(1)));
1452
                    OCLExpressionCS expr = (OCLExpressionCS)$getSym(2);
1453
                    OperationCallExpCS result = createOperationCallExpCS(
1454
                            expr,
1455
                            simpleNameCS,
1456
                            new BasicEList<OCLExpressionCS>()
1457
                        );
1458
                    setOffsets(result, simpleNameCS, expr);
1459
                    $setResult(result);
1460
          $EndCode
1461
        ./
1462
1463
    primaryExpCS -> primaryNotNameCS
1464
    primaryExpCS -> SimpleNameExpCS
1465
    
1466
    primaryNotNameCS -> CallExpCS       -- OclExpressionCS[A]
1467
    primaryNotNameCS -> VariableExpCS   -- OclExpressionCS[B]
1468
    primaryNotNameCS -> LiteralExpCS    -- OclExpressionCS[C]
1469
--  primaryNotNameCS -> OclMessageExpCS -- OclExpressionCS[E] is added by Complete OCL
1470
    primaryNotNameCS -> IfExpCS         -- OclExpressionCS[F]
1471
    primaryNotNameCS ::= '(' OclExpressionCS ')'
1472
        /.$BeginCode
1473
                    OCLExpressionCS result = (OCLExpressionCS)$getSym(2);
1474
                    if (result instanceof OperationCallExpCS) {
1475
                        ((OperationCallExpCS)result).setIsAtomic(true);
1476
                    }
1477
                    setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
1478
                    $setResult(result);
1479
          $EndCode
1480
        ./
1481
1482
    IfExpCS ::= if OclExpressionCS then OclExpressionCS else OclExpressionCS endif
1483
        /.$BeginCode
1484
                    IfExpCS result = createIfExpCS(
1485
                            (OCLExpressionCS)$getSym(2),
1486
                            (OCLExpressionCS)$getSym(4),
1487
                            (OCLExpressionCS)$getSym(6)
1488
                        );
1489
                    setOffsets(result, getIToken($getToken(1)), getIToken($getToken(7)));
1490
                    $setResult(result);
1491
          $EndCode
1492
        ./
1493
1494
    LetExpCS ::= let letVariablesCS in OclExpressionCS
1495
        /.$BeginCode
1496
                    OCLExpressionCS expr = (OCLExpressionCS)$getSym(4);
1497
                    LetExpCS result = createLetExpCS(
1498
                            (EList<VariableCS>)$getSym(2),
1499
                            expr
1500
                        );
1501
                    setOffsets(result, getIToken($getToken(1)), expr);
1502
                    $setResult(result);
1503
          $EndCode
1504
        ./
1505
    
1506
    letVariablesCS ::= typedInitializedVariableCS 
1507
        /.$BeginCode
1508
                    EList<VariableCS> result = new BasicEList<VariableCS>();
1509
                    result.add((VariableCS)$getSym(1));
1510
                    $setResult(result);
1511
          $EndCode
1512
        ./
1513
    letVariablesCS ::= letVariablesCS ',' typedInitializedVariableCS
1514
        /.$BeginCode
1515
                    EList<VariableCS> result = (EList<VariableCS>)$getSym(1);
1516
                    result.add((VariableCS)$getSym(3));
1517
                    $setResult(result);
1518
          $EndCode
1519
        ./
1520
%End
1521
1522
%Trailers
1523
    /.
1524
        $EndActions
1525
    }
1526
    ./
1527
%End
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexer.gi (+42 lines)
Added Link Here
1
--/**
2
-- * <copyright>
3
-- *
4
-- * Copyright (c) 2008, 2009 Eclipse.org and others.
5
-- * All rights reserved.   This program and the accompanying materials
6
-- * are made available under the terms of the Eclipse Public License v1.0
7
-- * which accompanies this distribution, and is available at
8
-- * http://www.eclipse.org/legal/epl-v10.html
9
-- *
10
-- * Contributors:
11
-- *   IBM - Initial API and implementation
12
-- *   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
-- *   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
14
-- *
15
-- * </copyright>
16
-- *
17
-- * $Id: OCLBacktrackingLexer.g,v 1.1 2009/01/13 20:31:30 cdamus Exp $
18
-- */
19
--
20
-- The OCL Backtracking Lexer, which is nominally identical to the
21
-- normal Lexer, however the extra ERROR_TOKEN symbol makes it difficult
22
-- to share reliably.
23
--
24
25
%options escape=$
26
%options la=2
27
%options fp=OCLBacktrackingLexer,prefix=Char_
28
%options single-productions
29
%options noserialize
30
%options package=org.eclipse.ocl.parser.backtracking
31
%options template=../../lpg/LexerTemplateD.gi
32
%options filter=OCLBacktrackingKWLexer.gi
33
%options export_terminals=("OCLBacktrackingParsersym.java", "TK_")
34
%options include_directory="..;../../lpg"
35
36
%Import
37
	OCLLexer.gi
38
%End
39
40
%Define
41
	$kw_lexer_class /.OCLBacktrackingKWLexer./
42
%End
(-)src/org/eclipse/ocl/parser/backtracking/EssentialOCLErrors.gi (+185 lines)
Added Link Here
1
--/**
2
-- * <copyright>
3
-- *
4
-- * Copyright (c) 2008, 2009 Eclipse.org and others.
5
-- * All rights reserved.   This program and the accompanying materials
6
-- * are made available under the terms of the Eclipse Public License v1.0
7
-- * which accompanies this distribution, and is available at
8
-- * http://www.eclipse.org/legal/epl-v10.html
9
-- *
10
-- * Contributors:
11
-- *   E.D.Willink - Initial API and implementation
12
-- *   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
13
-- *
14
-- * </copyright>
15
-- *
16
-- * $Id: EssentialOCLErrors.g,v 1.5 2009/11/09 22:11:45 ewillink Exp $
17
-- */
18
--
19
-- Additional ERROR_TOKEN rules for The EssentialOCL Backtracking Parser
20
--
21
22
%Rules
23
	ERROR_Colon ::= ERROR_TOKEN
24
		/.$BeginCode
25
					reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_COLON);
26
		  $EndCode
27
		./
28
	ERROR_Empty ::= ERROR_TOKEN
29
		/.$BeginCode
30
					reportErrorTokenMessage($getToken(1), OCLParserErrors.EXTRA_TOKENS);
31
		  $EndCode
32
		./
33
34
-----------------------------------------------------------------------
35
--	Names
36
-----------------------------------------------------------------------
37
		
38
	ERROR_SimpleNameCS ::= ERROR_TOKEN
39
		/.$BeginCode
40
					int token = $getToken(1);
41
					reportErrorTokenMessage(token, OCLParserErrors.MISSING_SIMPLE_NAME);
42
                    IToken iToken = getIToken(token);
43
					SimpleNameCS result = createSimpleNameCS(
44
							SimpleTypeEnum.IDENTIFIER_LITERAL,
45
							iToken
46
						);
47
					setOffsets(result, iToken);
48
					$setResult(result);
49
		  $EndCode
50
		./
51
52
	simpleNameCS -> ERROR_SimpleNameCS
53
--	simpleNameCS -> reservedKeyword ERROR_SimpleNameCS
54
55
-----------------------------------------------------------------------
56
--	Types
57
-----------------------------------------------------------------------		
58
	collectionTypeCS ::= CollectionTypeIdentifierCS '(' typeCS ERROR_TOKEN
59
		/.$BeginCode
60
					reportErrorTokenMessage($getToken(4), OCLParserErrors.MISSING_RPAREN);
61
					CollectionTypeCS result = (CollectionTypeCS)dtParser.getSym(1); 
62
					result.setTypeCS((TypeCS)dtParser.getSym(3));
63
					setOffsets(result, result, getIToken($getToken(4)));
64
					$setResult(result);
65
		  $EndCode
66
		./
67
68
-----------------------------------------------------------------------
69
--	Declarations
70
-----------------------------------------------------------------------
71
--	VariableDeclarationCS ::= notLiteralNorReservedSimpleNameCS ERROR_TOKEN
72
--		/.$BeginCode
73
--					reportErrorTokenMessage($getToken(2), OCLParserErrors.MISSING_VARIABLE_TYPE);
74
--					SimpleNameCS name = (SimpleNameCS)$getSym(1);
75
--					VariableCS result = createVariableCS(name, null, null);
76
--					setOffsets(result, name, getIToken($getToken(2)));
77
--					$setResult(result);
78
--		  $EndCode
79
--		./
80
81
--	variableDeclarationListCS ::= ERROR_TOKEN
82
--		/.$BeginCode
83
--					reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_VARIABLES);
84
--					EList result = new BasicEList();
85
--					$setResult(result);
86
--		  $EndCode
87
--		./
88
89
-----------------------------------------------------------------------
90
--	Literals
91
-----------------------------------------------------------------------
92
	TupleLiteralExpCS ::= Tuple ERROR_TOKEN
93
		/.$BeginCode
94
					reportErrorTokenMessage($getToken(7), OCLParserErrors.MISSING_LBRACE);
95
					TupleLiteralExpCS result = createTupleLiteralExpCS((EList<VariableCS>)$getSym(3));
96
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4)));
97
					$setResult(result);
98
		  $EndCode
99
		./
100
101
	TupleLiteralPartsCS ::= ERROR_TOKEN
102
		/.$BeginCode
103
					reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_VARIABLES);
104
					EList<VariableCS> result = new BasicEList<VariableCS>();
105
					$setResult(result);
106
		  $EndCode
107
		./
108
109
-----------------------------------------------------------------------
110
--	Calls
111
-----------------------------------------------------------------------		
112
	AssociationClassCallExpCS ::= simpleNameCS '[' argumentsCS ERROR_TOKEN
113
		/.$BeginCode
114
					reportErrorTokenMessage($getToken(4), OCLParserErrors.MISSING_RBRACK);
115
					VariableExpCS result = createVariableExpCS(
116
							(SimpleNameCS)$getSym(1),
117
							(EList<OCLExpressionCS>)$getSym(3),
118
							null
119
						);
120
					setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(4)));
121
					$setResult(result);
122
		  $EndCode
123
		./
124
125
-----------------------------------------------------------------------
126
--	Expressions
127
-----------------------------------------------------------------------
128
	IfExpCS ::= if OclExpressionCS then OclExpressionCS else OclExpressionCS ERROR_TOKEN
129
		/.$BeginCode
130
					reportErrorTokenMessage($getToken(7), OCLParserErrors.MISSING_ENDIF);
131
					IfExpCS result = createIfExpCS(
132
							(OCLExpressionCS)$getSym(2),
133
							(OCLExpressionCS)$getSym(4),
134
							(OCLExpressionCS)$getSym(6)
135
						);
136
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(7)));
137
					$setResult(result);
138
		  $EndCode
139
		./
140
	IfExpCS ::= if OclExpressionCS then OclExpressionCS ERROR_TOKEN
141
		/.$BeginCode
142
					reportErrorTokenMessage($getToken(5), OCLParserErrors.MISSING_ELSE_ENDIF);
143
					IfExpCS result = createIfExpCS(
144
							(OCLExpressionCS)$getSym(2),
145
							(OCLExpressionCS)$getSym(4),
146
							createInvalidLiteralExpCS(getTokenText($getToken(5)))
147
						);
148
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5)));
149
					$setResult(result);
150
		  $EndCode
151
		./
152
	IfExpCS ::= if OclExpressionCS ERROR_TOKEN
153
		/.$BeginCode
154
					reportErrorTokenMessage($getToken(3), OCLParserErrors.MISSING_THEN_ELSE_ENDIF);
155
					IfExpCS result = createIfExpCS(
156
							(OCLExpressionCS)$getSym(2),
157
							createInvalidLiteralExpCS(getTokenText($getToken(3))),
158
							createInvalidLiteralExpCS(getTokenText($getToken(3)))
159
						);
160
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
161
					$setResult(result);
162
		  $EndCode
163
		./
164
	IfExpCS ::= if ERROR_TOKEN endif
165
		/.$BeginCode
166
					reportErrorTokenMessage($getToken(3), OCLParserErrors.MISSING_THEN_ELSE);
167
					IfExpCS result = createIfExpCS(
168
							createInvalidLiteralExpCS(getTokenText($getToken(2))),
169
							createInvalidLiteralExpCS(getTokenText($getToken(2))),
170
							createInvalidLiteralExpCS(getTokenText($getToken(2)))
171
						);
172
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
173
					$setResult(result);
174
		  $EndCode
175
		./
176
177
	primaryExpCS ::= '(' OclExpressionCS ERROR_TOKEN
178
		/.$BeginCode
179
					reportErrorTokenMessage($getToken(3), OCLParserErrors.MISSING_RPAREN);
180
					OCLExpressionCS result = (OCLExpressionCS)$getSym(2);
181
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
182
					$setResult(result);
183
		  $EndCode
184
		./
185
%End
(-)src/org/eclipse/ocl/parser/OCLLexer.gi (+99 lines)
Added Link Here
1
--/**
2
-- * <copyright>
3
-- *
4
-- * Copyright (c) 2005, 2009 IBM Corporation and others.
5
-- * All rights reserved.   This program and the accompanying materials
6
-- * are made available under the terms of the Eclipse Public License v1.0
7
-- * which accompanies this distribution, and is available at
8
-- * http://www.eclipse.org/legal/epl-v10.html
9
-- *
10
-- * Contributors:
11
-- *   See (or edit) Notice Declaration below
12
-- *   
13
-- * </copyright>
14
-- *
15
-- * $Id: OCLLexer.g,v 1.7 2009/10/23 21:26:55 ewillink Exp $
16
-- */
17
--
18
-- The Complete OCL Lexer
19
--
20
21
%options escape=$
22
%options la=2
23
%options fp=OCLLexer,prefix=Char_
24
%options single-productions
25
%options noserialize
26
%options package=org.eclipse.ocl.parser
27
%options template=../lpg/LexerTemplateD.gi
28
%options filter=OCLKWLexer.gi
29
%options export_terminals=("OCLParsersym.java", "TK_")
30
%options include_directory="../lpg"
31
32
%Import
33
	EssentialOCLLexer.gi
34
%End
35
36
%Define
37
38
	--
39
	-- Definition of macro used in the included file LexerBasicMap.g
40
	-- We redefine that one defined by EssentialOCLLexer
41
	--
42
	$kw_lexer_class /.OCLKWLexer./
43
	$copyright_contributions /.*./
44
45
%End
46
47
%Notice
48
	/./**
49
 * Complete OCL Lexer
50
 * <copyright>
51
 *
52
 * Copyright (c) 2005, 2009 IBM Corporation and others.
53
 * All rights reserved.   This program and the accompanying materials
54
 * are made available under the terms of the Eclipse Public License v1.0
55
 * which accompanies this distribution, and is available at
56
 * http://www.eclipse.org/legal/epl-v10.html
57
 *
58
 * Contributors:
59
 *   IBM - Initial API and implementation
60
 *   E.D.Willink - Bug 292112, 292594
61
 *   Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
62
 $copyright_contributions
63
 * </copyright>
64
 */
65
	./
66
%End
67
68
%Export
69
	AT
70
	CARET
71
	CARETCARET
72
	QUESTIONMARK
73
%End
74
75
%Rules
76
	Token ::= '@'
77
		/.$BeginAction
78
					makeToken($_AT);
79
		  $EndAction
80
		./
81
82
	Token ::= '^'
83
		/.$BeginAction
84
					makeToken($_CARET);
85
		  $EndAction
86
		./
87
88
	Token ::= '^' '^'
89
		/.$BeginAction
90
					makeToken($_CARETCARET);
91
		  $EndAction
92
		./
93
		
94
	Token ::= '?'
95
		/.$BeginAction
96
					makeToken($_QUESTIONMARK);
97
		  $EndAction
98
		./
99
%End
(-)src/org/eclipse/ocl/lpg/KeywordTemplateD.gi (+120 lines)
Added Link Here
1
--
2
-- An LPG Lexer Template Using lpg.jar
3
--
4
-- An instance of this template must have a $Export section and the export_terminals option
5
-- There must be only one non-terminal, the start symbol, for the keywords
6
-- The action for each keyword should be a call to $setResult(terminal_symbol)
7
--
8
-- Macro that may be redefined in an instance of this template
9
--
10
--     $eof_char
11
--
12
-- B E G I N N I N G   O F   T E M P L A T E   KeywordTemplateD
13
--
14
%options Programming_Language=java,margin=4
15
%options table
16
%options action-block=("*.java", "/.", "./")
17
%options ParseTable=lpg.runtime.ParseTable
18
%options prefix=Char_
19
%options single-productions
20
21
--
22
-- This template requires that the name of the EOF token be set
23
-- to EOF and that the prefix be "Char_" to be consistent with
24
-- LexerTemplateD.
25
--
26
%Eof
27
    EOF
28
%End
29
30
%Define
31
    --
32
    -- Macro that may be respecified in an instance of this template
33
    --
34
    $eof_char /.Char_EOF./
35
36
    --
37
    -- Macros useful for specifying actions
38
    --
39
    $setResult /.keywordKind[$rule_number] = ./
40
41
    $Header
42
    /.
43
            //
44
            // Rule $rule_number:  $rule_text
45
            //
46
            ./
47
48
    $BeginAction /.$Header./
49
50
    $EndAction /../
51
52
    $BeginJava /.$BeginAction./
53
54
    $EndJava /.$EndAction./
55
%End
56
57
%Headers
58
    /.
59
    public class $action_type extends $prs_type implements $exp_type
60
    {
61
        private char[] inputChars;
62
        private final int keywordKind[] = new int[$num_rules + 1];
63
64
        public int[] getKeywordKinds() { return keywordKind; }
65
66
        public int lexer(int curtok, int lasttok)
67
        {
68
            int current_kind = getKind(inputChars[curtok]),
69
                act;
70
71
            for (act = tAction(START_STATE, current_kind);
72
                 act > NUM_RULES && act < ACCEPT_ACTION;
73
                 act = tAction(act, current_kind))
74
            {
75
                curtok++;
76
                current_kind = (curtok > lasttok
77
                                       ? $eof_char
78
                                       : getKind(inputChars[curtok]));
79
            }
80
81
            if (act > ERROR_ACTION)
82
            {
83
                curtok++;
84
                act -= ERROR_ACTION;
85
            }
86
87
            return keywordKind[act == ERROR_ACTION  || curtok <= lasttok ? 0 : act];
88
        }
89
90
        public void setInputChars(char[] inputChars) { this.inputChars = inputChars; }
91
92
    ./
93
%End
94
95
%Rules
96
    /.
97
98
        public $action_type(char[] inputChars, int identifierKind)
99
        {
100
            this.inputChars = inputChars;
101
            keywordKind[0] = identifierKind;
102
    ./
103
%End
104
105
%Trailers
106
    /.
107
108
            for (int i = 0; i < keywordKind.length; i++)
109
            {
110
                if (keywordKind[i] == 0)
111
                    keywordKind[i] = identifierKind;
112
            }
113
        }
114
    }
115
    ./
116
%End
117
118
--
119
-- E N D   O F   T E M P L A T E
120
--

Return to bug 242153