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 (-126 / +189 lines)
Lines 1-7 Link Here
1
/**
1
/**
2
* <copyright>
2
* <copyright>
3
*
3
*
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others.
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc, Open Canarias S.L., and others.
5
* All rights reserved.   This program and the accompanying materials
5
* All rights reserved.   This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
6
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
7
* which accompanies this distribution, and is available at
Lines 10-27 Link Here
10
* Contributors:
10
* Contributors:
11
*   IBM - Initial API and implementation
11
*   IBM - Initial API and implementation
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*   Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption
13
*
14
*
14
* </copyright>
15
* </copyright>
15
*
16
*
16
* $Id: OCLKWLexer.java,v 1.2 2009/01/13 20:31:30 cdamus Exp $
17
* 
17
*/
18
*/
18
19
19
package org.eclipse.ocl.parser;
20
package org.eclipse.ocl.parser;
20
21
21
22
22
/**
23
23
 * @noextend This class is not intended to be subclassed by clients.
24
 */
25
public class OCLKWLexer extends OCLKWLexerprs implements OCLParsersym
24
public class OCLKWLexer extends OCLKWLexerprs implements OCLParsersym
26
{
25
{
27
    private char[] inputChars;
26
    private char[] inputChars;
Lines 59-124 Link Here
59
    final static int tokenKind[] = new int[128];
58
    final static int tokenKind[] = new int[128];
60
    static
59
    static
61
    {
60
    {
62
        tokenKind['$'] = Char_DollarSign;
61
        tokenKind['$'] = OCLKWLexersym.Char_DollarSign;
63
62
        tokenKind['%'] = OCLKWLexersym.Char_Percent;
64
        tokenKind['a'] = Char_a;
63
        tokenKind['_'] = OCLKWLexersym.Char__;
65
        tokenKind['b'] = Char_b;
64
66
        tokenKind['c'] = Char_c;
65
        tokenKind['a'] = OCLKWLexersym.Char_a;
67
        tokenKind['d'] = Char_d;
66
        tokenKind['b'] = OCLKWLexersym.Char_b;
68
        tokenKind['e'] = Char_e;
67
        tokenKind['c'] = OCLKWLexersym.Char_c;
69
        tokenKind['f'] = Char_f;
68
        tokenKind['d'] = OCLKWLexersym.Char_d;
70
        tokenKind['g'] = Char_g;
69
        tokenKind['e'] = OCLKWLexersym.Char_e;
71
        tokenKind['h'] = Char_h;
70
        tokenKind['f'] = OCLKWLexersym.Char_f;
72
        tokenKind['i'] = Char_i;
71
        tokenKind['g'] = OCLKWLexersym.Char_g;
73
        tokenKind['j'] = Char_j;
72
        tokenKind['h'] = OCLKWLexersym.Char_h;
74
        tokenKind['k'] = Char_k;
73
        tokenKind['i'] = OCLKWLexersym.Char_i;
75
        tokenKind['l'] = Char_l;
74
        tokenKind['j'] = OCLKWLexersym.Char_j;
76
        tokenKind['m'] = Char_m;
75
        tokenKind['k'] = OCLKWLexersym.Char_k;
77
        tokenKind['n'] = Char_n;
76
        tokenKind['l'] = OCLKWLexersym.Char_l;
78
        tokenKind['o'] = Char_o;
77
        tokenKind['m'] = OCLKWLexersym.Char_m;
79
        tokenKind['p'] = Char_p;
78
        tokenKind['n'] = OCLKWLexersym.Char_n;
80
        tokenKind['q'] = Char_q;
79
        tokenKind['o'] = OCLKWLexersym.Char_o;
81
        tokenKind['r'] = Char_r;
80
        tokenKind['p'] = OCLKWLexersym.Char_p;
82
        tokenKind['s'] = Char_s;
81
        tokenKind['q'] = OCLKWLexersym.Char_q;
83
        tokenKind['t'] = Char_t;
82
        tokenKind['r'] = OCLKWLexersym.Char_r;
84
        tokenKind['u'] = Char_u;
83
        tokenKind['s'] = OCLKWLexersym.Char_s;
85
        tokenKind['v'] = Char_v;
84
        tokenKind['t'] = OCLKWLexersym.Char_t;
86
        tokenKind['w'] = Char_w;
85
        tokenKind['u'] = OCLKWLexersym.Char_u;
87
        tokenKind['x'] = Char_x;
86
        tokenKind['v'] = OCLKWLexersym.Char_v;
88
        tokenKind['y'] = Char_y;
87
        tokenKind['w'] = OCLKWLexersym.Char_w;
89
        tokenKind['z'] = Char_z;
88
        tokenKind['x'] = OCLKWLexersym.Char_x;
90
89
        tokenKind['y'] = OCLKWLexersym.Char_y;
91
        tokenKind['A'] = Char_A;
90
        tokenKind['z'] = OCLKWLexersym.Char_z;
92
        tokenKind['B'] = Char_B;
91
93
        tokenKind['C'] = Char_C;
92
        tokenKind['A'] = OCLKWLexersym.Char_A;
94
        tokenKind['D'] = Char_D;
93
        tokenKind['B'] = OCLKWLexersym.Char_B;
95
        tokenKind['E'] = Char_E;
94
        tokenKind['C'] = OCLKWLexersym.Char_C;
96
        tokenKind['F'] = Char_F;
95
        tokenKind['D'] = OCLKWLexersym.Char_D;
97
        tokenKind['G'] = Char_G;
96
        tokenKind['E'] = OCLKWLexersym.Char_E;
98
        tokenKind['H'] = Char_H;
97
        tokenKind['F'] = OCLKWLexersym.Char_F;
99
        tokenKind['I'] = Char_I;
98
        tokenKind['G'] = OCLKWLexersym.Char_G;
100
        tokenKind['J'] = Char_J;
99
        tokenKind['H'] = OCLKWLexersym.Char_H;
101
        tokenKind['K'] = Char_K;
100
        tokenKind['I'] = OCLKWLexersym.Char_I;
102
        tokenKind['L'] = Char_L;
101
        tokenKind['J'] = OCLKWLexersym.Char_J;
103
        tokenKind['M'] = Char_M;
102
        tokenKind['K'] = OCLKWLexersym.Char_K;
104
        tokenKind['N'] = Char_N;
103
        tokenKind['L'] = OCLKWLexersym.Char_L;
105
        tokenKind['O'] = Char_O;
104
        tokenKind['M'] = OCLKWLexersym.Char_M;
106
        tokenKind['P'] = Char_P;
105
        tokenKind['N'] = OCLKWLexersym.Char_N;
107
        tokenKind['Q'] = Char_Q;
106
        tokenKind['O'] = OCLKWLexersym.Char_O;
108
        tokenKind['R'] = Char_R;
107
        tokenKind['P'] = OCLKWLexersym.Char_P;
109
        tokenKind['S'] = Char_S;
108
        tokenKind['Q'] = OCLKWLexersym.Char_Q;
110
        tokenKind['T'] = Char_T;
109
        tokenKind['R'] = OCLKWLexersym.Char_R;
111
        tokenKind['U'] = Char_U;
110
        tokenKind['S'] = OCLKWLexersym.Char_S;
112
        tokenKind['V'] = Char_V;
111
        tokenKind['T'] = OCLKWLexersym.Char_T;
113
        tokenKind['W'] = Char_W;
112
        tokenKind['U'] = OCLKWLexersym.Char_U;
114
        tokenKind['X'] = Char_X;
113
        tokenKind['V'] = OCLKWLexersym.Char_V;
115
        tokenKind['Y'] = Char_Y;
114
        tokenKind['W'] = OCLKWLexersym.Char_W;
116
        tokenKind['Z'] = Char_Z;
115
        tokenKind['X'] = OCLKWLexersym.Char_X;
116
        tokenKind['Y'] = OCLKWLexersym.Char_Y;
117
        tokenKind['Z'] = OCLKWLexersym.Char_Z;
117
    };
118
    };
118
119
119
    final int getKind(char c)
120
    final int getKind(int c)
120
    {
121
    {
121
        return (c < 128 ? tokenKind[c] : 0);
122
        return (((c & 0xFFFFFF80) == 0) /* 0 <= c < 128? */ ? tokenKind[c] : 0);
122
    }
123
    }
123
124
124
125
Lines 130-511 Link Here
130
        //
131
        //
131
        // Rule 1:  KeyWord ::= s e l f
132
        // Rule 1:  KeyWord ::= s e l f
132
        //
133
        //
133
		keywordKind[1] = (TK_self);
134
        
135
		keywordKind[1] = (OCLParsersym.TK_self);
134
	  
136
	  
135
	
137
	
136
        //
138
        //
137
        // Rule 2:  KeyWord ::= i n v
139
        // Rule 2:  KeyWord ::= i n v
138
        //
140
        //
139
		keywordKind[2] = (TK_inv);
141
        
142
		keywordKind[2] = (OCLParsersym.TK_inv);
140
	  
143
	  
141
	
144
	
142
        //
145
        //
143
        // Rule 3:  KeyWord ::= p r e
146
        // Rule 3:  KeyWord ::= p r e
144
        //
147
        //
145
		keywordKind[3] = (TK_pre);
148
        
149
		keywordKind[3] = (OCLParsersym.TK_pre);
146
	  
150
	  
147
	
151
	
148
        //
152
        //
149
        // Rule 4:  KeyWord ::= p o s t
153
        // Rule 4:  KeyWord ::= p o s t
150
        //
154
        //
151
		keywordKind[4] = (TK_post);
155
        
156
		keywordKind[4] = (OCLParsersym.TK_post);
152
	  
157
	  
153
	
158
	
154
        //
159
        //
155
        // Rule 5:  KeyWord ::= b o d y
160
        // Rule 5:  KeyWord ::= b o d y
156
        //
161
        //
157
		keywordKind[5] = (TK_body);
162
        
163
		keywordKind[5] = (OCLParsersym.TK_body);
158
	  
164
	  
159
	
165
	
160
        //
166
        //
161
        // Rule 6:  KeyWord ::= c o n t e x t
167
        // Rule 6:  KeyWord ::= c o n t e x t
162
        //
168
        //
163
		keywordKind[6] = (TK_context);
169
        
170
		keywordKind[6] = (OCLParsersym.TK_context);
164
	  
171
	  
165
	
172
	
166
        //
173
        //
167
        // Rule 7:  KeyWord ::= p a c k a g e
174
        // Rule 7:  KeyWord ::= p a c k a g e
168
        //
175
        //
169
		keywordKind[7] = (TK_package);
176
        
177
		keywordKind[7] = (OCLParsersym.TK_package);
170
	  
178
	  
171
	
179
	
172
        //
180
        //
173
        // Rule 8:  KeyWord ::= e n d p a c k a g e
181
        // Rule 8:  KeyWord ::= e n d p a c k a g e
174
        //
182
        //
175
		keywordKind[8] = (TK_endpackage);
183
        
184
		keywordKind[8] = (OCLParsersym.TK_endpackage);
176
	  
185
	  
177
	
186
	
178
        //
187
        //
179
        // Rule 9:  KeyWord ::= d e f
188
        // Rule 9:  KeyWord ::= d e f
180
        //
189
        //
181
		keywordKind[9] = (TK_def);
190
        
191
		keywordKind[9] = (OCLParsersym.TK_def);
182
	  
192
	  
183
	
193
	
184
        //
194
        //
185
        // Rule 10:  KeyWord ::= d e r i v e
195
        // Rule 10:  KeyWord ::= d e r i v e
186
        //
196
        //
187
		keywordKind[10] = (TK_derive);
197
        
198
		keywordKind[10] = (OCLParsersym.TK_derive);
188
	  
199
	  
189
	
200
	
190
        //
201
        //
191
        // Rule 11:  KeyWord ::= i n i t
202
        // Rule 11:  KeyWord ::= i n i t
192
        //
203
        //
193
		keywordKind[11] = (TK_init);
204
        
205
		keywordKind[11] = (OCLParsersym.TK_init);
194
	  
206
	  
195
	
207
	
196
        //
208
        //
197
        // Rule 12:  KeyWord ::= i f
209
        // Rule 12:  KeyWord ::= i f
198
        //
210
        //
199
		keywordKind[12] = (TK_if);
211
        
212
		keywordKind[12] = (OCLParsersym.TK_if);
200
	  
213
	  
201
	
214
	
202
        //
215
        //
203
        // Rule 13:  KeyWord ::= t h e n
216
        // Rule 13:  KeyWord ::= t h e n
204
        //
217
        //
205
		keywordKind[13] = (TK_then);
218
        
219
		keywordKind[13] = (OCLParsersym.TK_then);
206
	  
220
	  
207
	
221
	
208
        //
222
        //
209
        // Rule 14:  KeyWord ::= e l s e
223
        // Rule 14:  KeyWord ::= e l s e
210
        //
224
        //
211
		keywordKind[14] = (TK_else);
225
        
226
		keywordKind[14] = (OCLParsersym.TK_else);
212
	  
227
	  
213
	
228
	
214
        //
229
        //
215
        // Rule 15:  KeyWord ::= e n d i f
230
        // Rule 15:  KeyWord ::= e n d i f
216
        //
231
        //
217
		keywordKind[15] = (TK_endif);
232
        
233
		keywordKind[15] = (OCLParsersym.TK_endif);
218
	  
234
	  
219
	
235
	
220
        //
236
        //
221
        // Rule 16:  KeyWord ::= a n d
237
        // Rule 16:  KeyWord ::= a n d
222
        //
238
        //
223
		keywordKind[16] = (TK_and);
239
        
240
		keywordKind[16] = (OCLParsersym.TK_and);
224
	  
241
	  
225
	
242
	
226
        //
243
        //
227
        // Rule 17:  KeyWord ::= o r
244
        // Rule 17:  KeyWord ::= o r
228
        //
245
        //
229
		keywordKind[17] = (TK_or);
246
        
247
		keywordKind[17] = (OCLParsersym.TK_or);
230
	  
248
	  
231
	
249
	
232
        //
250
        //
233
        // Rule 18:  KeyWord ::= x o r
251
        // Rule 18:  KeyWord ::= x o r
234
        //
252
        //
235
		keywordKind[18] = (TK_xor);
253
        
254
		keywordKind[18] = (OCLParsersym.TK_xor);
236
	  
255
	  
237
	
256
	
238
        //
257
        //
239
        // Rule 19:  KeyWord ::= n o t
258
        // Rule 19:  KeyWord ::= n o t
240
        //
259
        //
241
		keywordKind[19] = (TK_not);
260
        
261
		keywordKind[19] = (OCLParsersym.TK_not);
242
	  
262
	  
243
	
263
	
244
        //
264
        //
245
        // Rule 20:  KeyWord ::= i m p l i e s
265
        // Rule 20:  KeyWord ::= i m p l i e s
246
        //
266
        //
247
		keywordKind[20] = (TK_implies);
267
        
268
		keywordKind[20] = (OCLParsersym.TK_implies);
248
	  
269
	  
249
	
270
	
250
        //
271
        //
251
        // Rule 21:  KeyWord ::= l e t
272
        // Rule 21:  KeyWord ::= l e t
252
        //
273
        //
253
		keywordKind[21] = (TK_let);
274
        
275
		keywordKind[21] = (OCLParsersym.TK_let);
254
	  
276
	  
255
	
277
	
256
        //
278
        //
257
        // Rule 22:  KeyWord ::= i n
279
        // Rule 22:  KeyWord ::= i n
258
        //
280
        //
259
		keywordKind[22] = (TK_in);
281
        
282
		keywordKind[22] = (OCLParsersym.TK_in);
260
	  
283
	  
261
	
284
	
262
        //
285
        //
263
        // Rule 23:  KeyWord ::= t r u e
286
        // Rule 23:  KeyWord ::= t r u e
264
        //
287
        //
265
		keywordKind[23] = (TK_true);
288
        
289
		keywordKind[23] = (OCLParsersym.TK_true);
266
	  
290
	  
267
	
291
	
268
        //
292
        //
269
        // Rule 24:  KeyWord ::= f a l s e
293
        // Rule 24:  KeyWord ::= f a l s e
270
        //
294
        //
271
		keywordKind[24] = (TK_false);
295
        
296
		keywordKind[24] = (OCLParsersym.TK_false);
272
	  
297
	  
273
	
298
	
274
        //
299
        //
275
        // Rule 25:  KeyWord ::= S e t
300
        // Rule 25:  KeyWord ::= S e t
276
        //
301
        //
277
		keywordKind[25] = (TK_Set);
302
        
303
		keywordKind[25] = (OCLParsersym.TK_Set);
278
	  
304
	  
279
	
305
	
280
        //
306
        //
281
        // Rule 26:  KeyWord ::= B a g
307
        // Rule 26:  KeyWord ::= B a g
282
        //
308
        //
283
		keywordKind[26] = (TK_Bag);
309
        
310
		keywordKind[26] = (OCLParsersym.TK_Bag);
284
	  
311
	  
285
	
312
	
286
        //
313
        //
287
        // Rule 27:  KeyWord ::= S e q u e n c e
314
        // Rule 27:  KeyWord ::= S e q u e n c e
288
        //
315
        //
289
		keywordKind[27] = (TK_Sequence);
316
        
317
		keywordKind[27] = (OCLParsersym.TK_Sequence);
290
	  
318
	  
291
	
319
	
292
        //
320
        //
293
        // Rule 28:  KeyWord ::= C o l l e c t i o n
321
        // Rule 28:  KeyWord ::= C o l l e c t i o n
294
        //
322
        //
295
		keywordKind[28] = (TK_Collection);
323
        
324
		keywordKind[28] = (OCLParsersym.TK_Collection);
296
	  
325
	  
297
	
326
	
298
        //
327
        //
299
        // Rule 29:  KeyWord ::= O r d e r e d S e t
328
        // Rule 29:  KeyWord ::= O r d e r e d S e t
300
        //
329
        //
301
		keywordKind[29] = (TK_OrderedSet);
330
        
331
		keywordKind[29] = (OCLParsersym.TK_OrderedSet);
302
	  
332
	  
303
	
333
	
304
        //
334
        //
305
        // Rule 30:  KeyWord ::= i t e r a t e
335
        // Rule 30:  KeyWord ::= i t e r a t e
306
        //
336
        //
307
		keywordKind[30] = (TK_iterate);
337
        
338
		keywordKind[30] = (OCLParsersym.TK_iterate);
308
	  
339
	  
309
	
340
	
310
        //
341
        //
311
        // Rule 31:  KeyWord ::= f o r A l l
342
        // Rule 31:  KeyWord ::= f o r A l l
312
        //
343
        //
313
		keywordKind[31] = (TK_forAll);
344
        
345
		keywordKind[31] = (OCLParsersym.TK_forAll);
314
	  
346
	  
315
	
347
	
316
        //
348
        //
317
        // Rule 32:  KeyWord ::= e x i s t s
349
        // Rule 32:  KeyWord ::= e x i s t s
318
        //
350
        //
319
		keywordKind[32] = (TK_exists);
351
        
352
		keywordKind[32] = (OCLParsersym.TK_exists);
320
	  
353
	  
321
	
354
	
322
        //
355
        //
323
        // Rule 33:  KeyWord ::= i s U n i q u e
356
        // Rule 33:  KeyWord ::= i s U n i q u e
324
        //
357
        //
325
		keywordKind[33] = (TK_isUnique);
358
        
359
		keywordKind[33] = (OCLParsersym.TK_isUnique);
326
	  
360
	  
327
	
361
	
328
        //
362
        //
329
        // Rule 34:  KeyWord ::= a n y
363
        // Rule 34:  KeyWord ::= a n y
330
        //
364
        //
331
		keywordKind[34] = (TK_any);
365
        
366
		keywordKind[34] = (OCLParsersym.TK_any);
332
	  
367
	  
333
	
368
	
334
        //
369
        //
335
        // Rule 35:  KeyWord ::= o n e
370
        // Rule 35:  KeyWord ::= o n e
336
        //
371
        //
337
		keywordKind[35] = (TK_one);
372
        
373
		keywordKind[35] = (OCLParsersym.TK_one);
338
	  
374
	  
339
	
375
	
340
        //
376
        //
341
        // Rule 36:  KeyWord ::= c o l l e c t
377
        // Rule 36:  KeyWord ::= c o l l e c t
342
        //
378
        //
343
		keywordKind[36] = (TK_collect);
379
        
380
		keywordKind[36] = (OCLParsersym.TK_collect);
344
	  
381
	  
345
	
382
	
346
        //
383
        //
347
        // Rule 37:  KeyWord ::= s e l e c t
384
        // Rule 37:  KeyWord ::= s e l e c t
348
        //
385
        //
349
		keywordKind[37] = (TK_select);
386
        
387
		keywordKind[37] = (OCLParsersym.TK_select);
350
	  
388
	  
351
	
389
	
352
        //
390
        //
353
        // Rule 38:  KeyWord ::= r e j e c t
391
        // Rule 38:  KeyWord ::= r e j e c t
354
        //
392
        //
355
		keywordKind[38] = (TK_reject);
393
        
394
		keywordKind[38] = (OCLParsersym.TK_reject);
356
	  
395
	  
357
	
396
	
358
        //
397
        //
359
        // Rule 39:  KeyWord ::= c o l l e c t N e s t e d
398
        // Rule 39:  KeyWord ::= c o l l e c t N e s t e d
360
        //
399
        //
361
		keywordKind[39] = (TK_collectNested);
400
        
401
		keywordKind[39] = (OCLParsersym.TK_collectNested);
362
	  
402
	  
363
	
403
	
364
        //
404
        //
365
        // Rule 40:  KeyWord ::= s o r t e d B y
405
        // Rule 40:  KeyWord ::= s o r t e d B y
366
        //
406
        //
367
		keywordKind[40] = (TK_sortedBy);
407
        
408
		keywordKind[40] = (OCLParsersym.TK_sortedBy);
368
	  
409
	  
369
	
410
	
370
        //
411
        //
371
        // Rule 41:  KeyWord ::= c l o s u r e
412
        // Rule 41:  KeyWord ::= c l o s u r e
372
        //
413
        //
373
		keywordKind[41] = (TK_closure);
414
        
415
		keywordKind[41] = (OCLParsersym.TK_closure);
374
	  
416
	  
375
	
417
	
376
        //
418
        //
377
        // Rule 42:  KeyWord ::= o c l I s K i n d O f
419
        // Rule 42:  KeyWord ::= o c l I s K i n d O f
378
        //
420
        //
379
		keywordKind[42] = (TK_oclIsKindOf);
421
        
422
		keywordKind[42] = (OCLParsersym.TK_oclIsKindOf);
380
	  
423
	  
381
	
424
	
382
        //
425
        //
383
        // Rule 43:  KeyWord ::= o c l I s T y p e O f
426
        // Rule 43:  KeyWord ::= o c l I s T y p e O f
384
        //
427
        //
385
		keywordKind[43] = (TK_oclIsTypeOf);
428
        
429
		keywordKind[43] = (OCLParsersym.TK_oclIsTypeOf);
386
	  
430
	  
387
	
431
	
388
        //
432
        //
389
        // Rule 44:  KeyWord ::= o c l A s T y p e
433
        // Rule 44:  KeyWord ::= o c l A s T y p e
390
        //
434
        //
391
		keywordKind[44] = (TK_oclAsType);
435
        
436
		keywordKind[44] = (OCLParsersym.TK_oclAsType);
392
	  
437
	  
393
	
438
	
394
        //
439
        //
395
        // Rule 45:  KeyWord ::= o c l I s N e w
440
        // Rule 45:  KeyWord ::= o c l I s N e w
396
        //
441
        //
397
		keywordKind[45] = (TK_oclIsNew);
442
        
443
		keywordKind[45] = (OCLParsersym.TK_oclIsNew);
398
	  
444
	  
399
	
445
	
400
        //
446
        //
401
        // Rule 46:  KeyWord ::= o c l I s U n d e f i n e d
447
        // Rule 46:  KeyWord ::= o c l I s U n d e f i n e d
402
        //
448
        //
403
		keywordKind[46] = (TK_oclIsUndefined);
449
        
450
		keywordKind[46] = (OCLParsersym.TK_oclIsUndefined);
404
	  
451
	  
405
	
452
	
406
        //
453
        //
407
        // Rule 47:  KeyWord ::= o c l I s I n v a l i d
454
        // Rule 47:  KeyWord ::= o c l I s I n v a l i d
408
        //
455
        //
409
		keywordKind[47] = (TK_oclIsInvalid);
456
        
457
		keywordKind[47] = (OCLParsersym.TK_oclIsInvalid);
410
	  
458
	  
411
	
459
	
412
        //
460
        //
413
        // Rule 48:  KeyWord ::= o c l I s I n S t a t e
461
        // Rule 48:  KeyWord ::= o c l I s I n S t a t e
414
        //
462
        //
415
		keywordKind[48] = (TK_oclIsInState);
463
        
464
		keywordKind[48] = (OCLParsersym.TK_oclIsInState);
416
	  
465
	  
417
	
466
	
418
        //
467
        //
419
        // Rule 49:  KeyWord ::= a l l I n s t a n c e s
468
        // Rule 49:  KeyWord ::= a l l I n s t a n c e s
420
        //
469
        //
421
		keywordKind[49] = (TK_allInstances);
470
        
471
		keywordKind[49] = (OCLParsersym.TK_allInstances);
422
	  
472
	  
423
	
473
	
424
        //
474
        //
425
        // Rule 50:  KeyWord ::= S t r i n g
475
        // Rule 50:  KeyWord ::= S t r i n g
426
        //
476
        //
427
		keywordKind[50] = (TK_String);
477
        
478
		keywordKind[50] = (OCLParsersym.TK_String);
428
	  
479
	  
429
	
480
	
430
        //
481
        //
431
        // Rule 51:  KeyWord ::= I n t e g e r
482
        // Rule 51:  KeyWord ::= I n t e g e r
432
        //
483
        //
433
		keywordKind[51] = (TK_Integer);
484
        
485
		keywordKind[51] = (OCLParsersym.TK_Integer);
434
	  
486
	  
435
	
487
	
436
        //
488
        //
437
        // Rule 52:  KeyWord ::= U n l i m i t e d N a t u r a l
489
        // Rule 52:  KeyWord ::= U n l i m i t e d N a t u r a l
438
        //
490
        //
439
		keywordKind[52] = (TK_UnlimitedNatural);
491
        
492
		keywordKind[52] = (OCLParsersym.TK_UnlimitedNatural);
440
	  
493
	  
441
	
494
	
442
        //
495
        //
443
        // Rule 53:  KeyWord ::= R e a l
496
        // Rule 53:  KeyWord ::= R e a l
444
        //
497
        //
445
		keywordKind[53] = (TK_Real);
498
        
499
		keywordKind[53] = (OCLParsersym.TK_Real);
446
	  
500
	  
447
	
501
	
448
        //
502
        //
449
        // Rule 54:  KeyWord ::= B o o l e a n
503
        // Rule 54:  KeyWord ::= B o o l e a n
450
        //
504
        //
451
		keywordKind[54] = (TK_Boolean);
505
        
506
		keywordKind[54] = (OCLParsersym.TK_Boolean);
452
	  
507
	  
453
	
508
	
454
        //
509
        //
455
        // Rule 55:  KeyWord ::= T u p l e
510
        // Rule 55:  KeyWord ::= T u p l e
456
        //
511
        //
457
		keywordKind[55] = (TK_Tuple);
512
        
513
		keywordKind[55] = (OCLParsersym.TK_Tuple);
458
	  
514
	  
459
	
515
	
460
        //
516
        //
461
        // Rule 56:  KeyWord ::= O c l A n y
517
        // Rule 56:  KeyWord ::= O c l A n y
462
        //
518
        //
463
		keywordKind[56] = (TK_OclAny);
519
        
520
		keywordKind[56] = (OCLParsersym.TK_OclAny);
464
	  
521
	  
465
	
522
	
466
        //
523
        //
467
        // Rule 57:  KeyWord ::= O c l V o i d
524
        // Rule 57:  KeyWord ::= O c l V o i d
468
        //
525
        //
469
		keywordKind[57] = (TK_OclVoid);
526
        
527
		keywordKind[57] = (OCLParsersym.TK_OclVoid);
470
	  
528
	  
471
	
529
	
472
        //
530
        //
473
        // Rule 58:  KeyWord ::= I n v a l i d
531
        // Rule 58:  KeyWord ::= I n v a l i d
474
        //
532
        //
475
		keywordKind[58] = (TK_Invalid);
533
        
534
		keywordKind[58] = (OCLParsersym.TK_Invalid);
476
	  
535
	  
477
	
536
	
478
        //
537
        //
479
        // Rule 59:  KeyWord ::= O c l M e s s a g e
538
        // Rule 59:  KeyWord ::= O c l M e s s a g e
480
        //
539
        //
481
		keywordKind[59] = (TK_OclMessage);
540
        
541
		keywordKind[59] = (OCLParsersym.TK_OclMessage);
482
	  
542
	  
483
	
543
	
484
        //
544
        //
485
        // Rule 60:  KeyWord ::= n u l l
545
        // Rule 60:  KeyWord ::= n u l l
486
        //
546
        //
487
		keywordKind[60] = (TK_null);
547
        
548
		keywordKind[60] = (OCLParsersym.TK_null);
488
	  
549
	  
489
	
550
	
490
        //
551
        //
491
        // Rule 61:  KeyWord ::= O c l I n v a l i d
552
        // Rule 61:  KeyWord ::= O c l I n v a l i d
492
        //
553
        //
493
		keywordKind[61] = (TK_OclInvalid);
554
        
555
		keywordKind[61] = (OCLParsersym.TK_OclInvalid);
494
	  
556
	  
495
	
557
	
496
        //
558
        //
497
        // Rule 62:  KeyWord ::= a t t r
559
        // Rule 62:  KeyWord ::= a t t r
498
        //
560
        //
499
		keywordKind[62] = (TK_attr);
561
        
562
		keywordKind[62] = (OCLParsersym.TK_attr);
500
	  
563
	  
501
	
564
	
502
        //
565
        //
503
        // Rule 63:  KeyWord ::= o p e r
566
        // Rule 63:  KeyWord ::= o p e r
504
        //
567
        //
505
		keywordKind[63] = (TK_oper);
568
        
569
		keywordKind[63] = (OCLParsersym.TK_oper);
506
	  
570
	  
507
	
571
	
508
509
        for (int i = 0; i < keywordKind.length; i++)
572
        for (int i = 0; i < keywordKind.length; i++)
510
        {
573
        {
511
            if (keywordKind[i] == 0)
574
            if (keywordKind[i] == 0)
(-)src/org/eclipse/ocl/parser/OCLParser.java (-11 / +13 lines)
Lines 1-7 Link Here
1
/**
1
/**
2
* <copyright>
2
* <copyright>
3
*
3
*
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., and others.
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., 
5
* Open Canarias S.L. and others.
5
* All rights reserved.   This program and the accompanying materials
6
* All rights reserved.   This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
7
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
8
* which accompanies this distribution, and is available at
Lines 14-23 Link Here
14
*   E.D.Willink - Bugs 225493, 243976, 259818
15
*   E.D.Willink - Bugs 225493, 243976, 259818
15
*   Zeligsoft - Bug 243976
16
*   Zeligsoft - Bug 243976
16
*   Borland - Bug 242880
17
*   Borland - Bug 242880
18
*   Adolfo Sanchez- Barbudo Herrera - LPG v 2.0.17 adoption
17
*
19
*
18
* </copyright>
20
* </copyright>
19
*
21
*
20
* $Id: OCLParser.java,v 1.7 2009/03/05 14:12:14 cdamus Exp $
22
* $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $
21
*/
23
*/
22
24
23
package org.eclipse.ocl.parser;
25
package org.eclipse.ocl.parser;
Lines 44-58 Link Here
44
import org.eclipse.ocl.util.OCLStandardLibraryUtil;
46
import org.eclipse.ocl.util.OCLStandardLibraryUtil;
45
import org.eclipse.ocl.utilities.PredefinedType;
47
import org.eclipse.ocl.utilities.PredefinedType;
46
48
47
import lpg.lpgjavaruntime.BadParseException;
49
import lpg.runtime.BadParseException;
48
import lpg.lpgjavaruntime.BadParseSymFileException;
50
import lpg.runtime.BadParseSymFileException;
49
import lpg.lpgjavaruntime.DeterministicParser;
51
import lpg.runtime.DeterministicParser;
50
import lpg.lpgjavaruntime.DiagnoseParser;
52
import lpg.runtime.DiagnoseParser;
51
import lpg.lpgjavaruntime.IToken;
53
import lpg.runtime.IToken;
52
import lpg.lpgjavaruntime.Monitor;
54
import lpg.runtime.Monitor;
53
import lpg.lpgjavaruntime.NotDeterministicParseTableException;
55
import lpg.runtime.NotDeterministicParseTableException;
54
import lpg.lpgjavaruntime.ParseTable;
56
import lpg.runtime.ParseTable;
55
import lpg.lpgjavaruntime.RuleAction;
57
import lpg.runtime.RuleAction;
56
58
57
import org.eclipse.ocl.Environment;
59
import org.eclipse.ocl.Environment;
58
import org.eclipse.ocl.cst.DefExpressionCS;
60
import org.eclipse.ocl.cst.DefExpressionCS;
(-)src/org/eclipse/ocl/parser/OCLKWLexerprs.java (-49 / +93 lines)
Lines 1-7 Link Here
1
/**
1
/**
2
* <copyright>
2
* <copyright>
3
*
3
*
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others.
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc, Open Canarias S.L., and others.
5
* All rights reserved.   This program and the accompanying materials
5
* All rights reserved.   This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
6
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
7
* which accompanies this distribution, and is available at
Lines 10-27 Link Here
10
* Contributors:
10
* Contributors:
11
*   IBM - Initial API and implementation
11
*   IBM - Initial API and implementation
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*   Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption
13
*
14
*
14
* </copyright>
15
* </copyright>
15
*
16
*
16
* $Id: OCLKWLexerprs.java,v 1.2 2009/01/13 20:31:30 cdamus Exp $
17
* 
17
*/
18
*/
18
19
19
package org.eclipse.ocl.parser;
20
package org.eclipse.ocl.parser;
20
21
21
/**
22
public class OCLKWLexerprs implements lpg.runtime.ParseTable, OCLKWLexersym {
22
 * @noextend This class is not intended to be subclassed by clients.
23
    public final static int ERROR_SYMBOL = 0;
23
 */
24
    public final int getErrorSymbol() { return ERROR_SYMBOL; }
24
public class OCLKWLexerprs implements lpg.lpgjavaruntime.ParseTable, OCLKWLexersym {
25
26
    public final static int SCOPE_UBOUND = 0;
27
    public final int getScopeUbound() { return SCOPE_UBOUND; }
28
29
    public final static int SCOPE_SIZE = 0;
30
    public final int getScopeSize() { return SCOPE_SIZE; }
31
32
    public final static int MAX_NAME_LENGTH = 0;
33
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
34
35
    public final static int NUM_STATES = 256;
36
    public final int getNumStates() { return NUM_STATES; }
37
38
    public final static int NT_OFFSET = 56;
39
    public final int getNtOffset() { return NT_OFFSET; }
40
41
    public final static int LA_STATE_OFFSET = 386;
42
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
43
44
    public final static int MAX_LA = 1;
45
    public final int getMaxLa() { return MAX_LA; }
46
47
    public final static int NUM_RULES = 63;
48
    public final int getNumRules() { return NUM_RULES; }
49
50
    public final static int NUM_NONTERMINALS = 2;
51
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
52
53
    public final static int NUM_SYMBOLS = 58;
54
    public final int getNumSymbols() { return NUM_SYMBOLS; }
55
56
    public final static int SEGMENT_SIZE = 8192;
57
    public final int getSegmentSize() { return SEGMENT_SIZE; }
58
59
    public final static int START_STATE = 64;
60
    public final int getStartState() { return START_STATE; }
61
62
    public final static int IDENTIFIER_SYMBOL = 0;
63
    public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; }
64
65
    public final static int EOFT_SYMBOL = 39;
66
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
67
68
    public final static int EOLT_SYMBOL = 57;
69
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
70
71
    public final static int ACCEPT_ACTION = 322;
72
    public final int getAcceptAction() { return ACCEPT_ACTION; }
73
74
    public final static int ERROR_ACTION = 323;
75
    public final int getErrorAction() { return ERROR_ACTION; }
76
77
    public final static boolean BACKTRACK = false;
78
    public final boolean getBacktrack() { return BACKTRACK; }
79
80
    public final int getStartSymbol() { return lhs(0); }
81
    public final boolean isValidForParser() { return OCLKWLexersym.isValidForParser; }
82
83
84
    public interface IsNullable {
85
        public final static byte isNullable[] = {0,
86
            0,0,0,0,0,0,0,0,0,0,
87
            0,0,0,0,0,0,0,0,0,0,
88
            0,0,0,0,0,0,0,0,0,0,
89
            0,0,0,0,0,0,0,0,0,0,
90
            0,0,0,0,0,0,0,0,0,0,
91
            0,0,0,0,0,0,0,0
92
        };
93
    };
94
    public final static byte isNullable[] = IsNullable.isNullable;
95
    public final boolean isNullable(int index) { return isNullable[index] != 0; }
96
97
    public interface ProsthesesIndex {
98
        public final static byte prosthesesIndex[] = {0,
99
            2,1
100
        };
101
    };
102
    public final static byte prosthesesIndex[] = ProsthesesIndex.prosthesesIndex;
103
    public final int prosthesesIndex(int index) { return prosthesesIndex[index]; }
25
104
26
    public interface IsKeyword {
105
    public interface IsKeyword {
27
        public final static byte isKeyword[] = {0,
106
        public final static byte isKeyword[] = {0,
Lines 30-36 Link Here
30
            0,0,0,0,0,0,0,0,0,0,
109
            0,0,0,0,0,0,0,0,0,0,
31
            0,0,0,0,0,0,0,0,0,0,
110
            0,0,0,0,0,0,0,0,0,0,
32
            0,0,0,0,0,0,0,0,0,0,
111
            0,0,0,0,0,0,0,0,0,0,
33
            0,0,0,0
112
            0,0,0,0,0,0
34
        };
113
        };
35
    };
114
    };
36
    public final static byte isKeyword[] = IsKeyword.isKeyword;
115
    public final static byte isKeyword[] = IsKeyword.isKeyword;
Lines 159-165 Link Here
159
            0,0,0,0,0,0,0,0,0,0,
238
            0,0,0,0,0,0,0,0,0,0,
160
            0,0,0,0,0,0,0,0,0,0,
239
            0,0,0,0,0,0,0,0,0,0,
161
            0,0,0,0,0,0,0,0,0,0,
240
            0,0,0,0,0,0,0,0,0,0,
162
            0,0,0,0,0
241
            0,0,0,0,0,0,0
163
        };
242
        };
164
    };
243
    };
165
    public final static byte termCheck[] = TermCheck.termCheck;
244
    public final static byte termCheck[] = TermCheck.termCheck;
Lines 245-300 Link Here
245
    public final int scopeState(int index) { return 0;}
324
    public final int scopeState(int index) { return 0;}
246
    public final int inSymb(int index) { return 0;}
325
    public final int inSymb(int index) { return 0;}
247
    public final String name(int index) { return null; }
326
    public final String name(int index) { return null; }
248
    public final int getErrorSymbol() { return 0; }
249
    public final int getScopeUbound() { return 0; }
250
    public final int getScopeSize() { return 0; }
251
    public final int getMaxNameLength() { return 0; }
252
253
    public final static int
254
           NUM_STATES        = 256,
255
           NT_OFFSET         = 54,
256
           LA_STATE_OFFSET   = 386,
257
           MAX_LA            = 1,
258
           NUM_RULES         = 63,
259
           NUM_NONTERMINALS  = 2,
260
           NUM_SYMBOLS       = 56,
261
           SEGMENT_SIZE      = 8192,
262
           START_STATE       = 64,
263
           IDENTIFIER_SYMBOL = 0,
264
           EOFT_SYMBOL       = 39,
265
           EOLT_SYMBOL       = 55,
266
           ACCEPT_ACTION     = 322,
267
           ERROR_ACTION      = 323;
268
269
    public final static boolean BACKTRACK = false;
270
271
    public final int getNumStates() { return NUM_STATES; }
272
    public final int getNtOffset() { return NT_OFFSET; }
273
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
274
    public final int getMaxLa() { return MAX_LA; }
275
    public final int getNumRules() { return NUM_RULES; }
276
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
277
    public final int getNumSymbols() { return NUM_SYMBOLS; }
278
    public final int getSegmentSize() { return SEGMENT_SIZE; }
279
    public final int getStartState() { return START_STATE; }
280
    public final int getStartSymbol() { return lhs[0]; }
281
    public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
282
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
283
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
284
    public final int getAcceptAction() { return ACCEPT_ACTION; }
285
    public final int getErrorAction() { return ERROR_ACTION; }
286
    public final boolean isValidForParser() { return isValidForParser; }
287
    public final boolean getBacktrack() { return BACKTRACK; }
288
289
    public final int originalState(int state) { return 0; }
327
    public final int originalState(int state) { return 0; }
290
    public final int asi(int state) { return 0; }
328
    public final int asi(int state) { return 0; }
291
    public final int nasi(int state) { return 0; }
329
    public final int nasi(int state) { return 0; }
292
    public final int inSymbol(int state) { return 0; }
330
    public final int inSymbol(int state) { return 0; }
293
331
332
    /**
333
     * assert(! goto_default);
334
     */
294
    public final int ntAction(int state, int sym) {
335
    public final int ntAction(int state, int sym) {
295
        return baseAction[state + sym];
336
        return baseAction[state + sym];
296
    }
337
    }
297
338
339
    /**
340
     * assert(! shift_default);
341
     */
298
    public final int tAction(int state, int sym) {
342
    public final int tAction(int state, int sym) {
299
        int i = baseAction[state],
343
        int i = baseAction[state],
300
            k = i + sym;
344
            k = i + sym;
(-)src/org/eclipse/ocl/parser/OCLParser.g
Lines 1-7 Link Here
1
--/**
1
--/**
2
-- * <copyright>
2
-- * <copyright>
3
-- *
3
-- *
(-)* Copyright (c) 2005, 2009 IBM Corporation and others. (-61 / +62 lines)
Lines 11-16 Link Here
11
-- *   IBM - Initial API and implementation
11
-- *   IBM - Initial API and implementation
12
-- *   E.D. Willink - Elimination of some shift-reduce conflicts
12
-- *   E.D. Willink - Elimination of some shift-reduce conflicts
13
-- *      - Bug 259818
13
-- *      - Bug 259818
14
-- *   Adolfo Sanchez- Barbudo Herrera - LPG v 2.0.17 adoption
14
-- *
15
-- *
15
-- * </copyright>
16
-- * </copyright>
16
-- *
17
-- *
Lines 29-55 Link Here
29
%options margin=4
30
%options margin=4
30
%options noserialize
31
%options noserialize
31
%options package=org.eclipse.ocl.parser
32
%options package=org.eclipse.ocl.parser
32
%options import_terminals=OCLLexer.g
33
%options import_terminals=OCLLexer.gi
33
%options ast_type=CSTNode
34
%options ast_type=CSTNode
34
%options programming_language=java
35
%options programming_language=java
35
%options action=("*.java", "/.", "./")
36
%options action-block=("*.java", "/.", "./")
36
%options ParseTable=lpg.lpgjavaruntime.ParseTable
37
%options ParseTable=lpg.runtime.ParseTable
37
%options include_directory=".;../lpg"
38
%options include_directory=".;../lpg"
38
39
39
$Start
40
%Start
40
	goal
41
	goal
41
$End
42
%End
42
43
43
$Include
44
%Include
44
	EssentialOCL.g
45
	EssentialOCL.gi
45
$End
46
%End
46
47
47
$Define
48
%Define
48
    $environment_class /.Environment<?,?,?,?,?,?,?,?,?,?,?,?>./
49
    $environment_class /.Environment<?,?,?,?,?,?,?,?,?,?,?,?>./
49
	$lex_stream_class /.OCLLexer./
50
	$lex_stream_class /.OCLLexer./
50
$End
51
%End
51
52
52
$Globals
53
%Globals
53
	/.
54
	/.
54
	import org.eclipse.ocl.Environment;
55
	import org.eclipse.ocl.Environment;
55
	import org.eclipse.ocl.cst.DefExpressionCS;
56
	import org.eclipse.ocl.cst.DefExpressionCS;
Lines 59-67 Link Here
59
	import org.eclipse.ocl.cst.PackageDeclarationCS;
60
	import org.eclipse.ocl.cst.PackageDeclarationCS;
60
	import org.eclipse.ocl.cst.PrePostOrBodyEnum;
61
	import org.eclipse.ocl.cst.PrePostOrBodyEnum;
61
	./
62
	./
62
$End
63
%End
63
64
64
$KeyWords
65
%KeyWords
65
	context
66
	context
66
	package
67
	package
67
	
68
	
Lines 71-79 Link Here
71
	--
72
	--
72
	attr
73
	attr
73
	oper
74
	oper
74
$End
75
%End
75
76
76
$Rules
77
%Rules
77
	-- opt = optional
78
	-- opt = optional
78
	-- m = multiple
79
	-- m = multiple
79
	
80
	
Lines 83-138 Link Here
83
	goal -> prePostOrBodyDeclCS
84
	goal -> prePostOrBodyDeclCS
84
	goal -> initOrDerValueCS
85
	goal -> initOrDerValueCS
85
	goal -> variableCS
86
	goal -> variableCS
86
	goal -> $empty	
87
	goal -> %empty	
87
88
88
	packageDeclarationCSm -> packageDeclarationCS
89
	packageDeclarationCSm -> packageDeclarationCS
89
	packageDeclarationCSm ::= packageDeclarationCSm packageDeclarationCS
90
	packageDeclarationCSm ::= packageDeclarationCSm packageDeclarationCS
90
		/.$BeginJava
91
		/.$BeginCode
91
					PackageDeclarationCS result = (PackageDeclarationCS)$getSym(2);
92
					PackageDeclarationCS result = (PackageDeclarationCS)$getSym(2);
92
					result.setPackageDeclarationCS((PackageDeclarationCS) $getSym(1));
93
					result.setPackageDeclarationCS((PackageDeclarationCS) $getSym(1));
93
					$setResult(result);
94
					$setResult(result);
94
		  $EndJava
95
		  $EndCode
95
		./
96
		./
96
	packageDeclarationCS ::= package pathNameCS contextDeclCSmopt endpackage
97
	packageDeclarationCS ::= package pathNameCS contextDeclCSmopt endpackage
97
		/.$BeginJava
98
		/.$BeginCode
98
					CSTNode result = createPackageDeclarationCS(
99
					CSTNode result = createPackageDeclarationCS(
99
							(PathNameCS)$getSym(2),
100
							(PathNameCS)$getSym(2),
100
							(EList)$getSym(3)
101
							(EList)$getSym(3)
101
						);
102
						);
102
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4)));
103
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4)));
103
					$setResult(result);
104
					$setResult(result);
104
		  $EndJava
105
		  $EndCode
105
		./
106
		./
106
	
107
	
107
	packageDeclarationCS1 ::= contextDeclCSm
108
	packageDeclarationCS1 ::= contextDeclCSm
108
		/.$BeginJava
109
		/.$BeginCode
109
					EList contextDecls = (EList)$getSym(1);
110
					EList contextDecls = (EList)$getSym(1);
110
					CSTNode result = createPackageDeclarationCS(null, contextDecls);
111
					CSTNode result = createPackageDeclarationCS(null, contextDecls);
111
					if (!contextDecls.isEmpty()) {
112
					if (!contextDecls.isEmpty()) {
112
						setOffsets(result, (CSTNode)contextDecls.get(0), (CSTNode)contextDecls.get(contextDecls.size()-1));
113
						setOffsets(result, (CSTNode)contextDecls.get(0), (CSTNode)contextDecls.get(contextDecls.size()-1));
113
					}
114
					}
114
					$setResult(result);
115
					$setResult(result);
115
		  $EndJava
116
		  $EndCode
116
		./
117
		./
117
118
118
119
119
	contextDeclCSmopt ::= $empty
120
	contextDeclCSmopt ::= %empty
120
		/.$EmptyListAction./
121
		/.$EmptyListAction./
121
	contextDeclCSmopt -> contextDeclCSm
122
	contextDeclCSmopt -> contextDeclCSm
122
123
123
	contextDeclCSm ::= contextDeclCS
124
	contextDeclCSm ::= contextDeclCS
124
		/.$BeginJava
125
		/.$BeginCode
125
					EList result = new BasicEList();
126
					EList result = new BasicEList();
126
					result.add($getSym(1));
127
					result.add($getSym(1));
127
					$setResult(result);
128
					$setResult(result);
128
		  $EndJava
129
		  $EndCode
129
		./
130
		./
130
	contextDeclCSm ::= contextDeclCSm contextDeclCS
131
	contextDeclCSm ::= contextDeclCSm contextDeclCS
131
		/.$BeginJava
132
		/.$BeginCode
132
					EList result = (EList)$getSym(1);
133
					EList result = (EList)$getSym(1);
133
					result.add($getSym(2));
134
					result.add($getSym(2));
134
					$setResult(result);
135
					$setResult(result);
135
		  $EndJava
136
		  $EndCode
136
		./
137
		./
137
138
138
	contextDeclCS -> classifierContextDeclCS
139
	contextDeclCS -> classifierContextDeclCS
Lines 140-146 Link Here
140
	contextDeclCS -> propertyContextCS
141
	contextDeclCS -> propertyContextCS
141
142
142
	propertyContextCS ::= context pathNameCS '::' simpleNameCS ':' typeCS initOrDerValueCS
143
	propertyContextCS ::= context pathNameCS '::' simpleNameCS ':' typeCS initOrDerValueCS
143
		/.$BeginJava
144
		/.$BeginCode
144
					CSTNode result = createPropertyContextCS(
145
					CSTNode result = createPropertyContextCS(
145
							(PathNameCS)$getSym(2),
146
							(PathNameCS)$getSym(2),
146
							(SimpleNameCS)$getSym(4),
147
							(SimpleNameCS)$getSym(4),
Lines 149-159 Link Here
149
						);
150
						);
150
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(7));
151
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(7));
151
					$setResult(result);
152
					$setResult(result);
152
		  $EndJava
153
		  $EndCode
153
		./
154
		./
154
155
155
	initOrDerValueCS ::= initOrDerValueCSopt init ':' oclExpressionCS
156
	initOrDerValueCS ::= initOrDerValueCSopt init ':' oclExpressionCS
156
		/.$BeginJava
157
		/.$BeginCode
157
					CSTNode result = createInitValueCS(
158
					CSTNode result = createInitValueCS(
158
							(InitOrDerValueCS)$getSym(1),
159
							(InitOrDerValueCS)$getSym(1),
159
							(OCLExpressionCS)$getSym(4)
160
							(OCLExpressionCS)$getSym(4)
Lines 164-174 Link Here
164
						setOffsets(result, getIToken($getToken(2)), (CSTNode)$getSym(4));
165
						setOffsets(result, getIToken($getToken(2)), (CSTNode)$getSym(4));
165
					}
166
					}
166
					$setResult(result);
167
					$setResult(result);
167
		  $EndJava
168
		  $EndCode
168
		./
169
		./
169
170
170
	initOrDerValueCS ::= initOrDerValueCSopt derive ':' oclExpressionCS
171
	initOrDerValueCS ::= initOrDerValueCSopt derive ':' oclExpressionCS
171
		/.$BeginJava
172
		/.$BeginCode
172
					CSTNode result = createDerValueCS(
173
					CSTNode result = createDerValueCS(
173
							(InitOrDerValueCS)$getSym(1),
174
							(InitOrDerValueCS)$getSym(1),
174
							(OCLExpressionCS)$getSym(4)
175
							(OCLExpressionCS)$getSym(4)
Lines 179-193 Link Here
179
						setOffsets(result, getIToken($getToken(2)), (CSTNode)$getSym(4));
180
						setOffsets(result, getIToken($getToken(2)), (CSTNode)$getSym(4));
180
					}
181
					}
181
					$setResult(result);
182
					$setResult(result);
182
		  $EndJava
183
		  $EndCode
183
		./
184
		./
184
185
185
	initOrDerValueCSopt ::= $empty
186
	initOrDerValueCSopt ::= %empty
186
		/.$NullAction./
187
		/.$NullAction./
187
	initOrDerValueCSopt -> initOrDerValueCS
188
	initOrDerValueCSopt -> initOrDerValueCS
188
189
189
	classifierContextDeclCS ::= context pathNameCS invOrDefCSm
190
	classifierContextDeclCS ::= context pathNameCS invOrDefCSm
190
		/.$BeginJava
191
		/.$BeginCode
191
					EList<InvOrDefCS> list = (EList<InvOrDefCS>)$getSym(3);
192
					EList<InvOrDefCS> list = (EList<InvOrDefCS>)$getSym(3);
192
					CSTNode result = createClassifierContextDeclCS(
193
					CSTNode result = createClassifierContextDeclCS(
193
							(PathNameCS)$getSym(2),
194
							(PathNameCS)$getSym(2),
Lines 195-241 Link Here
195
						);
196
						);
196
					setOffsets(result, getIToken($getToken(1)), list.get(list.size()-1));
197
					setOffsets(result, getIToken($getToken(1)), list.get(list.size()-1));
197
					$setResult(result);
198
					$setResult(result);
198
		  $EndJava
199
		  $EndCode
199
		./
200
		./
200
201
201
	invOrDefCSm ::= invOrDefCS
202
	invOrDefCSm ::= invOrDefCS
202
		/.$BeginJava
203
		/.$BeginCode
203
					EList<InvOrDefCS> result = new BasicEList<InvOrDefCS>();
204
					EList<InvOrDefCS> result = new BasicEList<InvOrDefCS>();
204
					result.add((InvOrDefCS)$getSym(1));
205
					result.add((InvOrDefCS)$getSym(1));
205
					$setResult(result);
206
					$setResult(result);
206
		  $EndJava
207
		  $EndCode
207
		./
208
		./
208
	invOrDefCSm ::= invOrDefCSm invOrDefCS
209
	invOrDefCSm ::= invOrDefCSm invOrDefCS
209
		/.$BeginJava
210
		/.$BeginCode
210
					EList<InvOrDefCS> result = (EList<InvOrDefCS>)$getSym(1);
211
					EList<InvOrDefCS> result = (EList<InvOrDefCS>)$getSym(1);
211
					result.add((InvOrDefCS)$getSym(2));
212
					result.add((InvOrDefCS)$getSym(2));
212
					$setResult(result);
213
					$setResult(result);
213
		  $EndJava
214
		  $EndCode
214
		./
215
		./
215
	invOrDefCS ::= inv simpleNameCSopt ':' oclExpressionCS
216
	invOrDefCS ::= inv simpleNameCSopt ':' oclExpressionCS
216
		/.$BeginJava
217
		/.$BeginCode
217
					CSTNode result = createInvCS(
218
					CSTNode result = createInvCS(
218
							(SimpleNameCS)$getSym(2),
219
							(SimpleNameCS)$getSym(2),
219
							(OCLExpressionCS)$getSym(4)
220
							(OCLExpressionCS)$getSym(4)
220
						);
221
						);
221
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
222
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
222
					$setResult(result);
223
					$setResult(result);
223
		  $EndJava
224
		  $EndCode
224
		./
225
		./
225
	
226
	
226
	invOrDefCS ::= def simpleNameCSopt ':' defExpressionCS
227
	invOrDefCS ::= def simpleNameCSopt ':' defExpressionCS
227
		/.$BeginJava
228
		/.$BeginCode
228
					CSTNode result = createDefCS(
229
					CSTNode result = createDefCS(
229
							(SimpleNameCS)$getSym(2),
230
							(SimpleNameCS)$getSym(2),
230
							(DefExpressionCS)$getSym(4)
231
							(DefExpressionCS)$getSym(4)
231
						);
232
						);
232
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
233
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
233
					$setResult(result);
234
					$setResult(result);
234
		  $EndJava
235
		  $EndCode
235
		./
236
		./
236
237
237
	defExpressionCS ::= typedVariableCS '=' oclExpressionCS
238
	defExpressionCS ::= typedVariableCS '=' oclExpressionCS
238
		/.$BeginJava
239
		/.$BeginCode
239
					VariableCS variableCS = (VariableCS)$getSym(1);
240
					VariableCS variableCS = (VariableCS)$getSym(1);
240
					OCLExpressionCS expressionCS = (OCLExpressionCS)$getSym(3);
241
					OCLExpressionCS expressionCS = (OCLExpressionCS)$getSym(3);
241
					CSTNode result = createDefExpressionCS(
242
					CSTNode result = createDefExpressionCS(
Lines 245-254 Link Here
245
						);
246
						);
246
					setOffsets(result, variableCS, expressionCS);
247
					setOffsets(result, variableCS, expressionCS);
247
					$setResult(result);
248
					$setResult(result);
248
		  $EndJava
249
		  $EndCode
249
		./
250
		./
250
	defExpressionCS ::= operationCS1 '=' oclExpressionCS
251
	defExpressionCS ::= operationCS1 '=' oclExpressionCS
251
		/.$BeginJava
252
		/.$BeginCode
252
					CSTNode result = createDefExpressionCS(
253
					CSTNode result = createDefExpressionCS(
253
							null,
254
							null,
254
							(OperationCS)$getSym(1),
255
							(OperationCS)$getSym(1),
Lines 256-266 Link Here
256
						);
257
						);
257
					setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3));
258
					setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3));
258
					$setResult(result);
259
					$setResult(result);
259
		  $EndJava
260
		  $EndCode
260
		./
261
		./
261
262
262
	operationContextDeclCS ::= context operationCS2 prePostOrBodyDeclCSm
263
	operationContextDeclCS ::= context operationCS2 prePostOrBodyDeclCSm
263
		/.$BeginJava
264
		/.$BeginCode
264
					EList prePostOrBodyDecls = (EList)$getSym(3);
265
					EList prePostOrBodyDecls = (EList)$getSym(3);
265
					CSTNode result = createOperationContextDeclCS(
266
					CSTNode result = createOperationContextDeclCS(
266
							(OperationCS)$getSym(2),
267
							(OperationCS)$getSym(2),
Lines 268-293 Link Here
268
						);
269
						);
269
					setOffsets(result, getIToken($getToken(1)), (CSTNode)prePostOrBodyDecls.get(prePostOrBodyDecls.size()-1));
270
					setOffsets(result, getIToken($getToken(1)), (CSTNode)prePostOrBodyDecls.get(prePostOrBodyDecls.size()-1));
270
					$setResult(result);
271
					$setResult(result);
271
		  $EndJava
272
		  $EndCode
272
		./
273
		./
273
274
274
	prePostOrBodyDeclCSm ::= prePostOrBodyDeclCS
275
	prePostOrBodyDeclCSm ::= prePostOrBodyDeclCS
275
		/.$BeginJava
276
		/.$BeginCode
276
					EList result = new BasicEList();
277
					EList result = new BasicEList();
277
					result.add($getSym(1));
278
					result.add($getSym(1));
278
					$setResult(result);
279
					$setResult(result);
279
		  $EndJava
280
		  $EndCode
280
		./
281
		./
281
	prePostOrBodyDeclCSm ::= prePostOrBodyDeclCSm prePostOrBodyDeclCS
282
	prePostOrBodyDeclCSm ::= prePostOrBodyDeclCSm prePostOrBodyDeclCS
282
		/.$BeginJava
283
		/.$BeginCode
283
					EList result = (EList)$getSym(1);
284
					EList result = (EList)$getSym(1);
284
					result.add($getSym(2));
285
					result.add($getSym(2));
285
					$setResult(result);
286
					$setResult(result);
286
		  $EndJava
287
		  $EndCode
287
		./
288
		./
288
289
289
	prePostOrBodyDeclCS ::= pre simpleNameCSopt ':' oclExpressionCS
290
	prePostOrBodyDeclCS ::= pre simpleNameCSopt ':' oclExpressionCS
290
		/.$BeginJava
291
		/.$BeginCode
291
					CSTNode result = createPrePostOrBodyDeclCS(
292
					CSTNode result = createPrePostOrBodyDeclCS(
292
							PrePostOrBodyEnum.PRE_LITERAL,
293
							PrePostOrBodyEnum.PRE_LITERAL,
293
							(SimpleNameCS)$getSym(2),
294
							(SimpleNameCS)$getSym(2),
Lines 295-304 Link Here
295
						);
296
						);
296
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
297
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
297
					$setResult(result);
298
					$setResult(result);
298
		  $EndJava
299
		  $EndCode
299
		./
300
		./
300
	prePostOrBodyDeclCS ::= post simpleNameCSopt ':' oclExpressionCS
301
	prePostOrBodyDeclCS ::= post simpleNameCSopt ':' oclExpressionCS
301
		/.$BeginJava
302
		/.$BeginCode
302
					CSTNode result = createPrePostOrBodyDeclCS(
303
					CSTNode result = createPrePostOrBodyDeclCS(
303
							PrePostOrBodyEnum.POST_LITERAL,
304
							PrePostOrBodyEnum.POST_LITERAL,
304
							(SimpleNameCS)$getSym(2),
305
							(SimpleNameCS)$getSym(2),
Lines 306-315 Link Here
306
						);
307
						);
307
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
308
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
308
					$setResult(result);
309
					$setResult(result);
309
		  $EndJava
310
		  $EndCode
310
		./
311
		./
311
	prePostOrBodyDeclCS ::= body simpleNameCSopt ':' oclExpressionCS
312
	prePostOrBodyDeclCS ::= body simpleNameCSopt ':' oclExpressionCS
312
		/.$BeginJava
313
		/.$BeginCode
313
					CSTNode result = createPrePostOrBodyDeclCS(
314
					CSTNode result = createPrePostOrBodyDeclCS(
314
							PrePostOrBodyEnum.BODY_LITERAL,
315
							PrePostOrBodyEnum.BODY_LITERAL,
315
							(SimpleNameCS)$getSym(2),
316
							(SimpleNameCS)$getSym(2),
Lines 317-322 Link Here
317
						);
318
						);
318
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
319
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
319
					$setResult(result);
320
					$setResult(result);
320
		  $EndJava
321
		  $EndCode
321
		./
322
		./
322
$End
323
%End
(-)src/org/eclipse/ocl/parser/AbstractOCLParser.java (-8 / +9 lines)
Lines 20-31 Link Here
20
 */
20
 */
21
package org.eclipse.ocl.parser;
21
package org.eclipse.ocl.parser;
22
22
23
import lpg.lpgjavaruntime.IToken;
23
import lpg.runtime.IToken;
24
import lpg.lpgjavaruntime.NullExportedSymbolsException;
24
import lpg.runtime.NullExportedSymbolsException;
25
import lpg.lpgjavaruntime.NullTerminalSymbolsException;
25
import lpg.runtime.NullTerminalSymbolsException;
26
import lpg.lpgjavaruntime.ParseErrorCodes;
26
import lpg.runtime.ParseErrorCodes;
27
import lpg.lpgjavaruntime.UndefinedEofSymbolException;
27
import lpg.runtime.UndefinedEofSymbolException;
28
import lpg.lpgjavaruntime.UnimplementedTerminalsException;
28
import lpg.runtime.UnimplementedTerminalsException;
29
29
30
import org.eclipse.emf.common.util.EList;
30
import org.eclipse.emf.common.util.EList;
31
import org.eclipse.ocl.cst.BooleanLiteralExpCS;
31
import org.eclipse.ocl.cst.BooleanLiteralExpCS;
Lines 87-92 Link Here
87
import org.eclipse.ocl.options.ParsingOptions;
87
import org.eclipse.ocl.options.ParsingOptions;
88
import org.eclipse.ocl.options.ProblemOption;
88
import org.eclipse.ocl.options.ProblemOption;
89
89
90
90
public abstract class AbstractOCLParser
91
public abstract class AbstractOCLParser
91
		extends AbstractParser {
92
		extends AbstractParser {
92
	
93
	
Lines 743-749 Link Here
743
				if (i >= n) {
744
				if (i >= n) {
744
					reportError(
745
					reportError(
745
						ParseErrorCodes.INVALID_CODE,
746
						ParseErrorCodes.INVALID_CODE,
746
						"", stringLiteral.getTokenIndex(), stringLiteral.getTokenIndex(), //$NON-NLS-1$
747
						stringLiteral.getTokenIndex(), stringLiteral.getTokenIndex(),
747
						OCLMessages.StringNotProperlyClosed_ERROR);
748
						OCLMessages.StringNotProperlyClosed_ERROR);
748
				}
749
				}
749
				char nextCh = rawString.charAt(i);
750
				char nextCh = rawString.charAt(i);
Lines 812-818 Link Here
812
							if (unescapedChar < 0) {
813
							if (unescapedChar < 0) {
813
								reportError(
814
								reportError(
814
									ParseErrorCodes.INVALID_CODE,
815
									ParseErrorCodes.INVALID_CODE,
815
									"", stringLiteral.getTokenIndex(), stringLiteral.getTokenIndex(), //$NON-NLS-1$
816
									stringLiteral.getTokenIndex(), stringLiteral.getTokenIndex(),
816
									OCLMessages.InvalidEscapeSequence_ERROR);
817
									OCLMessages.InvalidEscapeSequence_ERROR);
817
							}
818
							}
818
							break;
819
							break;
(-)src/org/eclipse/ocl/parser/OCLParserprs.java (-72 / +136 lines)
Lines 1-7 Link Here
1
/**
1
/**
2
* <copyright>
2
* <copyright>
3
*
3
*
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others.
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., 
5
* Open Canarias S.L. and others.
5
* All rights reserved.   This program and the accompanying materials
6
* All rights reserved.   This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
7
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
8
* which accompanies this distribution, and is available at
Lines 13-31 Link Here
13
*   E.D.Willink - Remove unnecessary warning suppression
14
*   E.D.Willink - Remove unnecessary warning suppression
14
*   E.D.Willink - Bugs 225493, 243976, 259818
15
*   E.D.Willink - Bugs 225493, 243976, 259818
15
*   Zeligsoft - Bug 243976
16
*   Zeligsoft - Bug 243976
17
*   Borland - Bug 242880
18
*   Adolfo Sanchez- Barbudo Herrera - LPG v 2.0.17 adoption
16
*
19
*
17
* </copyright>
20
* </copyright>
18
*
21
*
19
* $Id: OCLParserprs.java,v 1.6 2009/01/13 20:31:30 cdamus Exp $
22
* $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $
20
*/
23
*/
21
24
22
package org.eclipse.ocl.parser;
25
package org.eclipse.ocl.parser;
23
26
24
/**
27
public class OCLParserprs implements lpg.runtime.ParseTable, OCLParsersym {
25
 * @noextend This interface is not intended to be extended by clients.
28
    public final static int ERROR_SYMBOL = 99;
26
 */
29
    public final int getErrorSymbol() { return ERROR_SYMBOL; }
27
@SuppressWarnings("nls")
30
28
public class OCLParserprs implements lpg.lpgjavaruntime.ParseTable, OCLParsersym {
31
    public final static int SCOPE_UBOUND = 43;
32
    public final int getScopeUbound() { return SCOPE_UBOUND; }
33
34
    public final static int SCOPE_SIZE = 44;
35
    public final int getScopeSize() { return SCOPE_SIZE; }
36
37
    public final static int MAX_NAME_LENGTH = 26;
38
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
39
40
    public final static int NUM_STATES = 214;
41
    public final int getNumStates() { return NUM_STATES; }
42
43
    public final static int NT_OFFSET = 99;
44
    public final int getNtOffset() { return NT_OFFSET; }
45
46
    public final static int LA_STATE_OFFSET = 3369;
47
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
48
49
    public final static int MAX_LA = 2;
50
    public final int getMaxLa() { return MAX_LA; }
51
52
    public final static int NUM_RULES = 272;
53
    public final int getNumRules() { return NUM_RULES; }
54
55
    public final static int NUM_NONTERMINALS = 104;
56
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
57
58
    public final static int NUM_SYMBOLS = 203;
59
    public final int getNumSymbols() { return NUM_SYMBOLS; }
60
61
    public final static int SEGMENT_SIZE = 8192;
62
    public final int getSegmentSize() { return SEGMENT_SIZE; }
63
64
    public final static int START_STATE = 2905;
65
    public final int getStartState() { return START_STATE; }
66
67
    public final static int IDENTIFIER_SYMBOL = 2;
68
    public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; }
69
70
    public final static int EOFT_SYMBOL = 79;
71
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
72
73
    public final static int EOLT_SYMBOL = 79;
74
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
75
76
    public final static int ACCEPT_ACTION = 3096;
77
    public final int getAcceptAction() { return ACCEPT_ACTION; }
78
79
    public final static int ERROR_ACTION = 3097;
80
    public final int getErrorAction() { return ERROR_ACTION; }
81
82
    public final static boolean BACKTRACK = false;
83
    public final boolean getBacktrack() { return BACKTRACK; }
84
85
    public final int getStartSymbol() { return lhs(0); }
86
    public final boolean isValidForParser() { return OCLParsersym.isValidForParser; }
87
88
89
    public interface IsNullable {
90
        public final static byte isNullable[] = {0,
91
            0,0,0,0,0,0,0,0,0,0,
92
            0,0,0,0,0,0,0,0,0,0,
93
            0,0,0,0,0,0,0,0,0,0,
94
            0,0,0,0,0,0,0,0,0,0,
95
            0,0,0,0,0,0,0,0,0,0,
96
            0,0,0,0,0,0,0,0,0,0,
97
            0,0,0,0,0,0,0,0,0,0,
98
            0,0,0,0,0,0,0,0,0,0,
99
            0,0,0,0,0,0,0,0,0,0,
100
            0,0,0,0,0,0,0,0,0,0,
101
            0,0,0,0,0,0,0,0,0,0,
102
            0,0,0,0,0,0,0,0,0,0,
103
            0,0,0,0,0,0,0,0,0,0,
104
            0,0,0,0,0,0,0,0,0,0,
105
            0,0,0,0,0,0,0,0,1,0,
106
            0,0,0,1,1,0,0,0,0,0,
107
            0,0,0,0,1,1,0,0,0,0,
108
            0,0,0,1,0,0,0,0,1,1,
109
            0,0,0,0,0,0,1,1,0,0,
110
            0,0,0,1,1,0,0,1,0,0,
111
            0,0,0
112
        };
113
    };
114
    public final static byte isNullable[] = IsNullable.isNullable;
115
    public final boolean isNullable(int index) { return isNullable[index] != 0; }
116
117
    public interface ProsthesesIndex {
118
        public final static byte prosthesesIndex[] = {0,
119
            54,9,21,62,5,6,7,10,3,8,
120
            15,50,51,11,40,42,44,48,49,56,
121
            57,58,59,60,61,67,68,69,70,71,
122
            41,43,38,39,34,35,36,37,32,33,
123
            30,31,28,29,25,26,27,77,23,52,
124
            53,78,80,81,24,47,97,98,99,100,
125
            88,91,92,4,12,19,20,22,65,66,
126
            73,79,83,84,86,87,93,94,96,101,
127
            2,13,14,17,18,45,46,55,63,64,
128
            72,74,75,76,82,85,89,90,95,102,
129
            103,104,1,16
130
        };
131
    };
132
    public final static byte prosthesesIndex[] = ProsthesesIndex.prosthesesIndex;
133
    public final int prosthesesIndex(int index) { return prosthesesIndex[index]; }
29
134
30
    public interface IsKeyword {
135
    public interface IsKeyword {
31
        public final static byte isKeyword[] = {0,
136
        public final static byte isKeyword[] = {0,
Lines 1190-1218 Link Here
1190
1295
1191
    public interface ScopeRhs {
1296
    public interface ScopeRhs {
1192
        public final static char scopeRhs[] = {0,
1297
        public final static char scopeRhs[] = {0,
1193
            174,1,101,88,0,12,0,174,1,101,
1298
            174,1,101,88,0,4,0,174,1,101,
1194
            87,0,144,93,144,92,144,71,0,45,
1299
            87,0,144,93,144,92,144,71,0,94,
1195
            0,144,92,144,71,0,44,116,45,0,
1300
            0,144,92,144,71,0,93,144,94,0,
1196
            144,71,0,43,116,44,116,45,0,172,
1301
            144,71,0,92,144,93,144,94,0,172,
1197
            68,0,52,116,0,150,81,101,0,16,
1302
            68,0,96,144,0,150,81,101,0,74,
1198
            0,0,155,1,149,107,0,155,1,149,
1303
            149,0,155,1,149,107,0,155,1,149,
1199
            109,0,155,1,149,164,0,194,1,59,
1304
            109,0,155,1,149,164,0,194,1,59,
1200
            0,151,1,103,0,151,24,2,0,7,
1305
            0,151,1,103,0,151,24,2,0,3,
1201
            116,0,144,72,148,84,148,1,181,0,
1306
            144,0,144,72,148,84,148,1,181,0,
1202
            148,84,148,1,181,0,18,116,12,0,
1307
            148,84,148,1,181,0,72,144,4,0,
1203
            148,1,181,0,22,115,18,116,12,0,
1308
            148,1,181,0,84,148,72,144,4,0,
1204
            144,72,148,1,181,0,144,72,148,36,
1309
            144,72,148,1,181,0,144,72,148,36,
1205
            148,1,182,0,148,36,148,1,182,0,
1310
            148,1,182,0,148,36,148,1,182,0,
1206
            148,1,182,0,19,115,18,116,12,0,
1311
            148,1,182,0,36,148,72,144,4,0,
1207
            144,72,148,1,182,0,144,1,182,0,
1312
            144,72,148,1,182,0,144,1,182,0,
1208
            190,69,59,0,14,0,188,69,103,0,
1313
            190,69,59,0,80,0,188,69,103,0,
1209
            150,81,113,0,144,1,0,155,1,101,
1314
            150,81,113,0,144,1,0,155,1,101,
1210
            67,102,0,155,1,60,0,132,0,4,
1315
            67,102,0,155,1,60,0,132,0,17,
1211
            130,0,3,130,0,136,0,2,128,0,
1316
            130,0,16,130,0,136,0,35,133,0,
1212
            1,128,0,138,0,9,125,0,8,125,
1317
            34,133,0,138,0,21,135,0,20,135,
1213
            0,6,125,0,5,125,0,140,0,10,
1318
            0,19,135,0,18,135,0,140,0,5,
1214
            123,0,7,123,0,142,0,48,121,0,
1319
            139,0,3,139,0,142,0,28,141,0,
1215
            47,121,0,46,121,0
1320
            27,141,0,26,141,0
1216
        };
1321
        };
1217
    };
1322
    };
1218
    public final static char scopeRhs[] = ScopeRhs.scopeRhs;
1323
    public final static char scopeRhs[] = ScopeRhs.scopeRhs;
Lines 1428-1480 Link Here
1428
    public final static String name[] = Name.name;
1533
    public final static String name[] = Name.name;
1429
    public final String name(int index) { return name[index]; }
1534
    public final String name(int index) { return name[index]; }
1430
1535
1431
    public final static int
1432
           ERROR_SYMBOL      = 99,
1433
           SCOPE_UBOUND      = 43,
1434
           SCOPE_SIZE        = 44,
1435
           MAX_NAME_LENGTH   = 26;
1436
1437
    public final int getErrorSymbol() { return ERROR_SYMBOL; }
1438
    public final int getScopeUbound() { return SCOPE_UBOUND; }
1439
    public final int getScopeSize() { return SCOPE_SIZE; }
1440
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
1441
1442
    public final static int
1443
           NUM_STATES        = 214,
1444
           NT_OFFSET         = 99,
1445
           LA_STATE_OFFSET   = 3369,
1446
           MAX_LA            = 2,
1447
           NUM_RULES         = 272,
1448
           NUM_NONTERMINALS  = 104,
1449
           NUM_SYMBOLS       = 203,
1450
           SEGMENT_SIZE      = 8192,
1451
           START_STATE       = 2905,
1452
           IDENTIFIER_SYMBOL = 2,
1453
           EOFT_SYMBOL       = 79,
1454
           EOLT_SYMBOL       = 79,
1455
           ACCEPT_ACTION     = 3096,
1456
           ERROR_ACTION      = 3097;
1457
1458
    public final static boolean BACKTRACK = false;
1459
1460
    public final int getNumStates() { return NUM_STATES; }
1461
    public final int getNtOffset() { return NT_OFFSET; }
1462
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
1463
    public final int getMaxLa() { return MAX_LA; }
1464
    public final int getNumRules() { return NUM_RULES; }
1465
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
1466
    public final int getNumSymbols() { return NUM_SYMBOLS; }
1467
    public final int getSegmentSize() { return SEGMENT_SIZE; }
1468
    public final int getStartState() { return START_STATE; }
1469
    public final int getStartSymbol() { return lhs[0]; }
1470
    public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
1471
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
1472
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
1473
    public final int getAcceptAction() { return ACCEPT_ACTION; }
1474
    public final int getErrorAction() { return ERROR_ACTION; }
1475
    public final boolean isValidForParser() { return isValidForParser; }
1476
    public final boolean getBacktrack() { return BACKTRACK; }
1477
1478
    public final int originalState(int state) {
1536
    public final int originalState(int state) {
1479
        return -baseCheck[state];
1537
        return -baseCheck[state];
1480
    }
1538
    }
Lines 1488-1497 Link Here
1488
        return inSymb[originalState(state)];
1546
        return inSymb[originalState(state)];
1489
    }
1547
    }
1490
1548
1549
    /**
1550
     * assert(! goto_default);
1551
     */
1491
    public final int ntAction(int state, int sym) {
1552
    public final int ntAction(int state, int sym) {
1492
        return baseAction[state + sym];
1553
        return baseAction[state + sym];
1493
    }
1554
    }
1494
1555
1556
    /**
1557
     * assert(! shift_default);
1558
     */
1495
    public final int tAction(int state, int sym) {
1559
    public final int tAction(int state, int sym) {
1496
        int i = baseAction[state],
1560
        int i = baseAction[state],
1497
            k = i + sym;
1561
            k = i + sym;
(-)src/org/eclipse/ocl/parser/OCLKWLexersym.java (-22 / +23 lines)
Lines 1-7 Link Here
1
/**
1
/**
2
* <copyright>
2
* <copyright>
3
*
3
*
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others.
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc, Open Canarias S.L., and others.
5
* All rights reserved.   This program and the accompanying materials
5
* All rights reserved.   This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
6
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
7
* which accompanies this distribution, and is available at
Lines 10-31 Link Here
10
* Contributors:
10
* Contributors:
11
*   IBM - Initial API and implementation
11
*   IBM - Initial API and implementation
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*   Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption
13
*
14
*
14
* </copyright>
15
* </copyright>
15
*
16
*
16
* $Id: OCLKWLexersym.java,v 1.2 2009/01/13 20:31:30 cdamus Exp $
17
* 
17
*/
18
*/
18
19
19
package org.eclipse.ocl.parser;
20
package org.eclipse.ocl.parser;
20
21
21
/**
22
 * @noimplement This interface is not intended to be implemented by clients.
23
 * @noextend This interface is not intended to be extended by clients.
24
 */
25
@SuppressWarnings("nls")
26
public interface OCLKWLexersym {
22
public interface OCLKWLexersym {
27
    public final static int
23
    public final static int
28
      Char_DollarSign = 40,
24
      Char_DollarSign = 40,
25
      Char_Percent = 41,
26
      Char__ = 42,
29
      Char_a = 5,
27
      Char_a = 5,
30
      Char_b = 30,
28
      Char_b = 30,
31
      Char_c = 11,
29
      Char_c = 11,
Lines 51-86 Link Here
51
      Char_w = 33,
49
      Char_w = 33,
52
      Char_x = 19,
50
      Char_x = 19,
53
      Char_y = 16,
51
      Char_y = 16,
54
      Char_z = 41,
52
      Char_z = 43,
55
      Char_A = 20,
53
      Char_A = 20,
56
      Char_B = 29,
54
      Char_B = 29,
57
      Char_C = 34,
55
      Char_C = 34,
58
      Char_D = 42,
56
      Char_D = 44,
59
      Char_E = 43,
57
      Char_E = 45,
60
      Char_F = 44,
58
      Char_F = 46,
61
      Char_G = 45,
59
      Char_G = 47,
62
      Char_H = 46,
60
      Char_H = 48,
63
      Char_I = 18,
61
      Char_I = 18,
64
      Char_J = 47,
62
      Char_J = 49,
65
      Char_K = 35,
63
      Char_K = 35,
66
      Char_L = 48,
64
      Char_L = 50,
67
      Char_M = 36,
65
      Char_M = 36,
68
      Char_N = 21,
66
      Char_N = 21,
69
      Char_O = 22,
67
      Char_O = 22,
70
      Char_P = 49,
68
      Char_P = 51,
71
      Char_Q = 50,
69
      Char_Q = 52,
72
      Char_R = 37,
70
      Char_R = 37,
73
      Char_S = 23,
71
      Char_S = 23,
74
      Char_T = 24,
72
      Char_T = 24,
75
      Char_U = 25,
73
      Char_U = 25,
76
      Char_V = 38,
74
      Char_V = 38,
77
      Char_W = 51,
75
      Char_W = 53,
78
      Char_X = 52,
76
      Char_X = 54,
79
      Char_Y = 53,
77
      Char_Y = 55,
80
      Char_Z = 54,
78
      Char_Z = 56,
81
      Char_EOF = 39;
79
      Char_EOF = 39;
82
80
83
      public final static String orderedTerminalSymbols[] = {
81
    public final static String orderedTerminalSymbols[] = {
84
                 "",
82
                 "",
85
                 "e",
83
                 "e",
86
                 "t",
84
                 "t",
Lines 122-127 Link Here
122
                 "V",
120
                 "V",
123
                 "EOF",
121
                 "EOF",
124
                 "DollarSign",
122
                 "DollarSign",
123
                 "Percent",
124
                 "_",
125
                 "z",
125
                 "z",
126
                 "D",
126
                 "D",
127
                 "E",
127
                 "E",
Lines 138-142 Link Here
138
                 "Z"
138
                 "Z"
139
             };
139
             };
140
140
141
    public final static int numTokenKinds = orderedTerminalSymbols.length;
141
    public final static boolean isValidForParser = true;
142
    public final static boolean isValidForParser = true;
142
}
143
}
(-)src/org/eclipse/ocl/parser/OCLLexerprs.java (-48 / +106 lines)
Lines 1-7 Link Here
1
/**
1
/**
2
* <copyright>
2
* <copyright>
3
*
3
*
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., and others.
4
* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., Open Canarias S.L. and others.
5
* All rights reserved.   This program and the accompanying materials
5
* All rights reserved.   This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
6
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
7
* which accompanies this distribution, and is available at
Lines 10-28 Link Here
10
* Contributors:
10
* Contributors:
11
*   IBM - Initial API and implementation
11
*   IBM - Initial API and implementation
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*               - Bug 259818
13
*   Borland - Bug 242880
14
*   Borland - Bug 242880
14
*   
15
*   Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption
16
*
15
* </copyright>
17
* </copyright>
16
*
18
*
17
* $Id: OCLLexerprs.java,v 1.3 2009/02/12 00:04:09 cdamus Exp $
19
* $Id$
18
*/
20
*/
19
21
20
package org.eclipse.ocl.parser;
22
package org.eclipse.ocl.parser;
21
23
22
/**
24
public class OCLLexerprs implements lpg.runtime.ParseTable, OCLLexersym {
23
 * @noextend This class is not intended to be subclassed by clients.
25
    public final static int ERROR_SYMBOL = 0;
24
 */
26
    public final int getErrorSymbol() { return ERROR_SYMBOL; }
25
public class OCLLexerprs implements lpg.lpgjavaruntime.ParseTable, OCLLexersym {
27
28
    public final static int SCOPE_UBOUND = 0;
29
    public final int getScopeUbound() { return SCOPE_UBOUND; }
30
31
    public final static int SCOPE_SIZE = 0;
32
    public final int getScopeSize() { return SCOPE_SIZE; }
33
34
    public final static int MAX_NAME_LENGTH = 0;
35
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
36
37
    public final static int NUM_STATES = 50;
38
    public final int getNumStates() { return NUM_STATES; }
39
40
    public final static int NT_OFFSET = 103;
41
    public final int getNtOffset() { return NT_OFFSET; }
42
43
    public final static int LA_STATE_OFFSET = 824;
44
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
45
46
    public final static int MAX_LA = 1;
47
    public final int getMaxLa() { return MAX_LA; }
48
49
    public final static int NUM_RULES = 309;
50
    public final int getNumRules() { return NUM_RULES; }
51
52
    public final static int NUM_NONTERMINALS = 44;
53
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
54
55
    public final static int NUM_SYMBOLS = 147;
56
    public final int getNumSymbols() { return NUM_SYMBOLS; }
57
58
    public final static int SEGMENT_SIZE = 8192;
59
    public final int getSegmentSize() { return SEGMENT_SIZE; }
60
61
    public final static int START_STATE = 310;
62
    public final int getStartState() { return START_STATE; }
63
64
    public final static int IDENTIFIER_SYMBOL = 0;
65
    public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; }
66
67
    public final static int EOFT_SYMBOL = 99;
68
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
69
70
    public final static int EOLT_SYMBOL = 104;
71
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
72
73
    public final static int ACCEPT_ACTION = 514;
74
    public final int getAcceptAction() { return ACCEPT_ACTION; }
75
76
    public final static int ERROR_ACTION = 515;
77
    public final int getErrorAction() { return ERROR_ACTION; }
78
79
    public final static boolean BACKTRACK = false;
80
    public final boolean getBacktrack() { return BACKTRACK; }
81
82
    public final int getStartSymbol() { return lhs(0); }
83
    public final boolean isValidForParser() { return OCLLexersym.isValidForParser; }
84
85
86
    public interface IsNullable {
87
        public final static byte isNullable[] = {0,
88
            0,0,0,0,0,0,0,0,0,0,
89
            0,0,0,0,0,0,0,0,0,0,
90
            0,0,0,0,0,0,0,0,0,0,
91
            0,0,0,0,0,0,0,0,0,0,
92
            0,0,0,0,0,0,0,0,0,0,
93
            0,0,0,0,0,0,0,0,0,0,
94
            0,0,0,0,0,0,0,0,0,0,
95
            0,0,0,0,0,0,0,0,0,0,
96
            0,0,0,0,0,0,0,0,0,0,
97
            0,0,0,0,0,0,0,0,0,0,
98
            0,0,0,0,0,0,0,0,0,0,
99
            0,0,0,0,0,0,1,0,0,0,
100
            0,0,0,0,0,0,0,0,0,0,
101
            0,1,0,0,0,0,0,0,0,0,
102
            0,0,0,0,0,0,0
103
        };
104
    };
105
    public final static byte isNullable[] = IsNullable.isNullable;
106
    public final boolean isNullable(int index) { return isNullable[index] != 0; }
107
108
    public interface ProsthesesIndex {
109
        public final static byte prosthesesIndex[] = {0,
110
            20,25,26,27,35,4,15,37,40,43,
111
            24,5,3,6,17,18,23,32,34,36,
112
            41,42,2,7,8,9,10,11,12,13,
113
            14,16,19,33,38,39,44,1,21,22,
114
            28,29,30,31
115
        };
116
    };
117
    public final static byte prosthesesIndex[] = ProsthesesIndex.prosthesesIndex;
118
    public final int prosthesesIndex(int index) { return prosthesesIndex[index]; }
26
119
27
    public interface IsKeyword {
120
    public interface IsKeyword {
28
        public final static byte isKeyword[] = {0,
121
        public final static byte isKeyword[] = {0,
Lines 479-534 Link Here
479
    public final int scopeState(int index) { return 0;}
572
    public final int scopeState(int index) { return 0;}
480
    public final int inSymb(int index) { return 0;}
573
    public final int inSymb(int index) { return 0;}
481
    public final String name(int index) { return null; }
574
    public final String name(int index) { return null; }
482
    public final int getErrorSymbol() { return 0; }
483
    public final int getScopeUbound() { return 0; }
484
    public final int getScopeSize() { return 0; }
485
    public final int getMaxNameLength() { return 0; }
486
487
    public final static int
488
           NUM_STATES        = 50,
489
           NT_OFFSET         = 103,
490
           LA_STATE_OFFSET   = 824,
491
           MAX_LA            = 1,
492
           NUM_RULES         = 309,
493
           NUM_NONTERMINALS  = 44,
494
           NUM_SYMBOLS       = 147,
495
           SEGMENT_SIZE      = 8192,
496
           START_STATE       = 310,
497
           IDENTIFIER_SYMBOL = 0,
498
           EOFT_SYMBOL       = 99,
499
           EOLT_SYMBOL       = 104,
500
           ACCEPT_ACTION     = 514,
501
           ERROR_ACTION      = 515;
502
503
    public final static boolean BACKTRACK = false;
504
505
    public final int getNumStates() { return NUM_STATES; }
506
    public final int getNtOffset() { return NT_OFFSET; }
507
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
508
    public final int getMaxLa() { return MAX_LA; }
509
    public final int getNumRules() { return NUM_RULES; }
510
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
511
    public final int getNumSymbols() { return NUM_SYMBOLS; }
512
    public final int getSegmentSize() { return SEGMENT_SIZE; }
513
    public final int getStartState() { return START_STATE; }
514
    public final int getStartSymbol() { return lhs[0]; }
515
    public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
516
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
517
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
518
    public final int getAcceptAction() { return ACCEPT_ACTION; }
519
    public final int getErrorAction() { return ERROR_ACTION; }
520
    public final boolean isValidForParser() { return isValidForParser; }
521
    public final boolean getBacktrack() { return BACKTRACK; }
522
523
    public final int originalState(int state) { return 0; }
575
    public final int originalState(int state) { return 0; }
524
    public final int asi(int state) { return 0; }
576
    public final int asi(int state) { return 0; }
525
    public final int nasi(int state) { return 0; }
577
    public final int nasi(int state) { return 0; }
526
    public final int inSymbol(int state) { return 0; }
578
    public final int inSymbol(int state) { return 0; }
527
579
580
    /**
581
     * assert(! goto_default);
582
     */
528
    public final int ntAction(int state, int sym) {
583
    public final int ntAction(int state, int sym) {
529
        return baseAction[state + sym];
584
        return baseAction[state + sym];
530
    }
585
    }
531
586
587
    /**
588
     * assert(! shift_default);
589
     */
532
    public final int tAction(int state, int sym) {
590
    public final int tAction(int state, int sym) {
533
        int i = baseAction[state],
591
        int i = baseAction[state],
534
            k = i + sym;
592
            k = i + sym;
(-)src/org/eclipse/ocl/parser/OCLParsersym.java (-13 / +7 lines)
Lines 1-7 Link Here
1
/**
1
/**
2
* <copyright>
2
* <copyright>
3
*
3
*
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others.
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., 
5
* Open Canarias S.L. and others.
5
* All rights reserved.   This program and the accompanying materials
6
* All rights reserved.   This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
7
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
8
* which accompanies this distribution, and is available at
Lines 13-37 Link Here
13
*   E.D.Willink - Remove unnecessary warning suppression
14
*   E.D.Willink - Remove unnecessary warning suppression
14
*   E.D.Willink - Bugs 225493, 243976, 259818
15
*   E.D.Willink - Bugs 225493, 243976, 259818
15
*   Zeligsoft - Bug 243976
16
*   Zeligsoft - Bug 243976
17
*   Borland - Bug 242880
18
*   Adolfo Sanchez- Barbudo Herrera - LPG v 2.0.17 adoption
16
*
19
*
17
* </copyright>
20
* </copyright>
18
*
21
*
19
* $Id: OCLParsersym.java,v 1.5 2009/01/13 19:44:29 cdamus Exp $
22
* $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $
20
*/
23
*/
21
24
22
package org.eclipse.ocl.parser;
25
package org.eclipse.ocl.parser;
23
26
24
/**
25
 * @noimplement This interface is not intended to be implemented by clients.
26
 * @noextend This interface is not intended to be extended by clients.
27
 */
28
@SuppressWarnings("nls")
29
public interface OCLParsersym {
27
public interface OCLParsersym {
30
	/**
31
	 * Token kind codes.
32
	 * 
33
	 * @noreference These constants are not intended to be referenced by clients.
34
	 */
35
    public final static int
28
    public final static int
36
      TK_NUMERIC_OPERATION = 60,
29
      TK_NUMERIC_OPERATION = 60,
37
      TK_STRING_LITERAL = 61,
30
      TK_STRING_LITERAL = 61,
Lines 133-139 Link Here
133
      TK_INTEGER_RANGE_START = 82,
126
      TK_INTEGER_RANGE_START = 82,
134
      TK_ERROR_TOKEN = 99;
127
      TK_ERROR_TOKEN = 99;
135
128
136
      public final static String orderedTerminalSymbols[] = {
129
    public final static String orderedTerminalSymbols[] = {
137
                 "",
130
                 "",
138
                 "LPAREN",
131
                 "LPAREN",
139
                 "IDENTIFIER",
132
                 "IDENTIFIER",
Lines 236-240 Link Here
236
                 "ERROR_TOKEN"
229
                 "ERROR_TOKEN"
237
             };
230
             };
238
231
232
    public final static int numTokenKinds = orderedTerminalSymbols.length;
239
    public final static boolean isValidForParser = true;
233
    public final static boolean isValidForParser = true;
240
}
234
}
(-)src/org/eclipse/ocl/parser/OCLLexersym.java (-8 / +7 lines)
Lines 1-7 Link Here
1
/**
1
/**
2
* <copyright>
2
* <copyright>
3
*
3
*
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others.
4
* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., Open Canarias S.L. and others.
5
* All rights reserved.   This program and the accompanying materials
5
* All rights reserved.   This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
6
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
7
* which accompanies this distribution, and is available at
Lines 10-28 Link Here
10
* Contributors:
10
* Contributors:
11
*   IBM - Initial API and implementation
11
*   IBM - Initial API and implementation
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*               - Bug 259818
14
*   Borland - Bug 242880
15
*   Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption
13
*
16
*
14
* </copyright>
17
* </copyright>
15
*
18
*
16
* $Id: OCLLexersym.java,v 1.2 2009/01/13 20:31:30 cdamus Exp $
19
* $Id$
17
*/
20
*/
18
21
19
package org.eclipse.ocl.parser;
22
package org.eclipse.ocl.parser;
20
23
21
/**
22
 * @noimplement This interface is not intended to be implemented by clients.
23
 * @noextend This interface is not intended to be extended by clients.
24
 */
25
@SuppressWarnings("nls")
26
public interface OCLLexersym {
24
public interface OCLLexersym {
27
    public final static int
25
    public final static int
28
      Char_CtlCharNotWS = 103,
26
      Char_CtlCharNotWS = 103,
Lines 129-135 Link Here
129
      Char_Equal = 15,
127
      Char_Equal = 15,
130
      Char_EOF = 99;
128
      Char_EOF = 99;
131
129
132
      public final static String orderedTerminalSymbols[] = {
130
    public final static String orderedTerminalSymbols[] = {
133
                 "",
131
                 "",
134
                 "0",
132
                 "0",
135
                 "1",
133
                 "1",
Lines 236-240 Link Here
236
                 "CtlCharNotWS"
234
                 "CtlCharNotWS"
237
             };
235
             };
238
236
237
    public final static int numTokenKinds = orderedTerminalSymbols.length;
239
    public final static boolean isValidForParser = true;
238
    public final static boolean isValidForParser = true;
240
}
239
}
(-)src/org/eclipse/ocl/parser/OCLLexer.java (-46 / +48 lines)
Lines 1-7 Link Here
1
/**
1
/**
2
* <copyright>
2
* <copyright>
3
*
3
*
4
* Copyright (c) 2005, 2009 IBM Corporation and others.
4
* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., Open Canarias S.L. and others.
5
* All rights reserved.   This program and the accompanying materials
5
* All rights reserved.   This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
6
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
7
* which accompanies this distribution, and is available at
Lines 10-25 Link Here
10
* Contributors:
10
* Contributors:
11
*   IBM - Initial API and implementation
11
*   IBM - Initial API and implementation
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*      - Bug 259818
13
*               - Bug 259818
14
*      
14
*   Borland - Bug 242880
15
*   Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption
16
*
15
* </copyright>
17
* </copyright>
16
*
18
*
17
* $Id: OCLLexer.java,v 1.3 2009/01/13 19:44:29 cdamus Exp $
19
* $Id$
18
*/
20
*/
19
21
20
package org.eclipse.ocl.parser;
22
package org.eclipse.ocl.parser;
21
23
22
import lpg.lpgjavaruntime.*;
24
import lpg.runtime.*;
23
import org.eclipse.ocl.lpg.AbstractLexer;
25
import org.eclipse.ocl.lpg.AbstractLexer;
24
import org.eclipse.ocl.lpg.AbstractParser;
26
import org.eclipse.ocl.lpg.AbstractParser;
25
import org.eclipse.ocl.Environment;
27
import org.eclipse.ocl.Environment;
Lines 52-58 Link Here
52
    
54
    
53
	public OCLLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] chars) {
55
	public OCLLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] chars) {
54
		this(environment, chars, "OCL", ECLIPSE_TAB_VALUE);
56
		this(environment, chars, "OCL", ECLIPSE_TAB_VALUE);
55
		kwLexer = new OCLKWLexer(getInputChars(), TK_IDENTIFIER);
57
		kwLexer = new OCLKWLexer(getInputChars(), OCLParsersym.TK_IDENTIFIER);
56
	}
58
	}
57
59
58
    public OCLLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] input_chars, String filename, int tab)  {
60
    public OCLLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] input_chars, String filename, int tab)  {
Lines 81-87 Link Here
81
    {
83
    {
82
        super.initialize(content, filename);
84
        super.initialize(content, filename);
83
        if (kwLexer == null)
85
        if (kwLexer == null)
84
             kwLexer = new OCLKWLexer(getInputChars(), TK_IDENTIFIER);
86
             kwLexer = new OCLKWLexer(getInputChars(), OCLParsersym.TK_IDENTIFIER);
85
        else
87
        else
86
             kwLexer.setInputChars(getInputChars());
88
             kwLexer.setInputChars(getInputChars());
87
    }
89
    }
Lines 92-98 Link Here
92
    @Override
94
    @Override
93
    public void setInputChars(char[] inputChars) {
95
    public void setInputChars(char[] inputChars) {
94
		super.setInputChars(inputChars);
96
		super.setInputChars(inputChars);
95
		kwLexer = new OCLKWLexer(getInputChars(), TK_IDENTIFIER);
97
		kwLexer = new OCLKWLexer(getInputChars(), OCLParsersym.TK_IDENTIFIER);
96
	}
98
	}
97
    
99
    
98
    @Override
100
    @Override
Lines 108-119 Link Here
108
        lexParser.parseCharacters(monitor);  // Lex the input characters
110
        lexParser.parseCharacters(monitor);  // Lex the input characters
109
            
111
            
110
        int i = getStreamIndex();
112
        int i = getStreamIndex();
111
        parser.makeToken(i, i, TK_EOF_TOKEN); // and end with the end of file token
113
        parser.makeToken(i, i, OCLParsersym.TK_EOF_TOKEN); // and end with the end of file token
112
        parser.setStreamLength(parser.getSize());
114
        parser.setStreamLength(parser.getSize());
113
            
115
            
114
        return;
116
        return;
115
    }
117
    }
116
    
118
        
117
    final void makeToken(int kind)
119
    final void makeToken(int kind)
118
    {
120
    {
119
        int startOffset = getLeftSpan(),
121
        int startOffset = getLeftSpan(),
Lines 317-323 Link Here
317
            // Rule 2:  Token ::= EscapedSQ
319
            // Rule 2:  Token ::= EscapedSQ
318
            //
320
            //
319
            case 2: { 
321
            case 2: { 
320
				makeToken(TK_STRING_LITERAL);
322
				makeToken(OCLParsersym.TK_STRING_LITERAL);
321
	            break;
323
	            break;
322
            }
324
            }
323
	 
325
	 
Lines 325-331 Link Here
325
            // Rule 3:  Token ::= SingleQuote SLNotSQ SingleQuote
327
            // Rule 3:  Token ::= SingleQuote SLNotSQ SingleQuote
326
            //
328
            //
327
            case 3: { 
329
            case 3: { 
328
				makeToken(TK_STRING_LITERAL);
330
				makeToken(OCLParsersym.TK_STRING_LITERAL);
329
	            break;
331
	            break;
330
            }
332
            }
331
	 
333
	 
Lines 333-339 Link Here
333
            // Rule 4:  Token ::= Acute SLNotSQOpt Acute
335
            // Rule 4:  Token ::= Acute SLNotSQOpt Acute
334
            //
336
            //
335
            case 4: { 
337
            case 4: { 
336
				makeToken(TK_STRING_LITERAL);
338
				makeToken(OCLParsersym.TK_STRING_LITERAL);
337
	            break;
339
	            break;
338
            }
340
            }
339
	 
341
	 
Lines 341-347 Link Here
341
            // Rule 5:  Token ::= BackQuote SLNotSQOpt Acute
343
            // Rule 5:  Token ::= BackQuote SLNotSQOpt Acute
342
            //
344
            //
343
            case 5: { 
345
            case 5: { 
344
				makeToken(TK_STRING_LITERAL);
346
				makeToken(OCLParsersym.TK_STRING_LITERAL);
345
	            break;
347
	            break;
346
            }
348
            }
347
	 
349
	 
Lines 349-355 Link Here
349
            // Rule 6:  Token ::= IntegerLiteral
351
            // Rule 6:  Token ::= IntegerLiteral
350
            //
352
            //
351
            case 6: { 
353
            case 6: { 
352
				makeToken(TK_INTEGER_LITERAL);
354
				makeToken(OCLParsersym.TK_INTEGER_LITERAL);
353
	            break;
355
	            break;
354
            }
356
            }
355
	 
357
	 
Lines 357-363 Link Here
357
            // Rule 7:  Token ::= RealLiteral
359
            // Rule 7:  Token ::= RealLiteral
358
            //
360
            //
359
            case 7: { 
361
            case 7: { 
360
				makeToken(TK_REAL_LITERAL);
362
				makeToken(OCLParsersym.TK_REAL_LITERAL);
361
	            break;
363
	            break;
362
            }
364
            }
363
	 
365
	 
Lines 365-371 Link Here
365
            // Rule 8:  Token ::= NumericOperation
367
            // Rule 8:  Token ::= NumericOperation
366
            //
368
            //
367
            case 8: { 
369
            case 8: { 
368
				makeToken(TK_NUMERIC_OPERATION);
370
				makeToken(OCLParsersym.TK_NUMERIC_OPERATION);
369
	            break;
371
	            break;
370
            }
372
            }
371
	 
373
	 
Lines 373-379 Link Here
373
            // Rule 9:  Token ::= IntegerRangeStart
375
            // Rule 9:  Token ::= IntegerRangeStart
374
            //
376
            //
375
            case 9: { 
377
            case 9: { 
376
				makeToken(TK_INTEGER_RANGE_START);
378
				makeToken(OCLParsersym.TK_INTEGER_RANGE_START);
377
	            break;
379
	            break;
378
            }
380
            }
379
	 
381
	 
Lines 405-411 Link Here
405
            // Rule 13:  Token ::= +
407
            // Rule 13:  Token ::= +
406
            //
408
            //
407
            case 13: { 
409
            case 13: { 
408
				makeToken(TK_PLUS);
410
				makeToken(OCLParsersym.TK_PLUS);
409
	            break;
411
	            break;
410
            }
412
            }
411
	 
413
	 
Lines 413-419 Link Here
413
            // Rule 14:  Token ::= -
415
            // Rule 14:  Token ::= -
414
            //
416
            //
415
            case 14: { 
417
            case 14: { 
416
				makeToken(TK_MINUS);
418
				makeToken(OCLParsersym.TK_MINUS);
417
	            break;
419
	            break;
418
            }
420
            }
419
	 
421
	 
Lines 421-427 Link Here
421
            // Rule 15:  Token ::= *
423
            // Rule 15:  Token ::= *
422
            //
424
            //
423
            case 15: { 
425
            case 15: { 
424
				makeToken(TK_MULTIPLY);
426
				makeToken(OCLParsersym.TK_MULTIPLY);
425
	            break;
427
	            break;
426
            }
428
            }
427
	 
429
	 
Lines 429-435 Link Here
429
            // Rule 16:  Token ::= /
431
            // Rule 16:  Token ::= /
430
            //
432
            //
431
            case 16: { 
433
            case 16: { 
432
				makeToken(TK_DIVIDE);
434
				makeToken(OCLParsersym.TK_DIVIDE);
433
	            break;
435
	            break;
434
            }
436
            }
435
	 
437
	 
Lines 437-443 Link Here
437
            // Rule 17:  Token ::= (
439
            // Rule 17:  Token ::= (
438
            //
440
            //
439
            case 17: { 
441
            case 17: { 
440
				makeToken(TK_LPAREN);
442
				makeToken(OCLParsersym.TK_LPAREN);
441
	            break;
443
	            break;
442
            }
444
            }
443
	 
445
	 
Lines 445-451 Link Here
445
            // Rule 18:  Token ::= )
447
            // Rule 18:  Token ::= )
446
            //
448
            //
447
            case 18: { 
449
            case 18: { 
448
				makeToken(TK_RPAREN);
450
				makeToken(OCLParsersym.TK_RPAREN);
449
	            break;
451
	            break;
450
            }
452
            }
451
	 
453
	 
Lines 453-459 Link Here
453
            // Rule 19:  Token ::= >
455
            // Rule 19:  Token ::= >
454
            //
456
            //
455
            case 19: { 
457
            case 19: { 
456
				makeToken(TK_GREATER);
458
				makeToken(OCLParsersym.TK_GREATER);
457
	            break;
459
	            break;
458
            }
460
            }
459
	 
461
	 
Lines 461-467 Link Here
461
            // Rule 20:  Token ::= <
463
            // Rule 20:  Token ::= <
462
            //
464
            //
463
            case 20: { 
465
            case 20: { 
464
				makeToken(TK_LESS);
466
				makeToken(OCLParsersym.TK_LESS);
465
	            break;
467
	            break;
466
            }
468
            }
467
	 
469
	 
Lines 469-475 Link Here
469
            // Rule 21:  Token ::= =
471
            // Rule 21:  Token ::= =
470
            //
472
            //
471
            case 21: { 
473
            case 21: { 
472
				makeToken(TK_EQUAL);
474
				makeToken(OCLParsersym.TK_EQUAL);
473
	            break;
475
	            break;
474
            }
476
            }
475
	 
477
	 
Lines 477-483 Link Here
477
            // Rule 22:  Token ::= > =
479
            // Rule 22:  Token ::= > =
478
            //
480
            //
479
            case 22: { 
481
            case 22: { 
480
				makeToken(TK_GREATER_EQUAL);
482
				makeToken(OCLParsersym.TK_GREATER_EQUAL);
481
	            break;
483
	            break;
482
            }
484
            }
483
	 
485
	 
Lines 485-491 Link Here
485
            // Rule 23:  Token ::= < =
487
            // Rule 23:  Token ::= < =
486
            //
488
            //
487
            case 23: { 
489
            case 23: { 
488
				makeToken(TK_LESS_EQUAL);
490
				makeToken(OCLParsersym.TK_LESS_EQUAL);
489
	            break;
491
	            break;
490
            }
492
            }
491
	 
493
	 
Lines 493-499 Link Here
493
            // Rule 24:  Token ::= < >
495
            // Rule 24:  Token ::= < >
494
            //
496
            //
495
            case 24: { 
497
            case 24: { 
496
				makeToken(TK_NOT_EQUAL);
498
				makeToken(OCLParsersym.TK_NOT_EQUAL);
497
	            break;
499
	            break;
498
            }
500
            }
499
	 
501
	 
Lines 501-507 Link Here
501
            // Rule 25:  Token ::= [
503
            // Rule 25:  Token ::= [
502
            //
504
            //
503
            case 25: { 
505
            case 25: { 
504
				makeToken(TK_LBRACKET);
506
				makeToken(OCLParsersym.TK_LBRACKET);
505
	            break;
507
	            break;
506
            }
508
            }
507
	 
509
	 
Lines 509-515 Link Here
509
            // Rule 26:  Token ::= ]
511
            // Rule 26:  Token ::= ]
510
            //
512
            //
511
            case 26: { 
513
            case 26: { 
512
				makeToken(TK_RBRACKET);
514
				makeToken(OCLParsersym.TK_RBRACKET);
513
	            break;
515
	            break;
514
            }
516
            }
515
	 
517
	 
Lines 517-523 Link Here
517
            // Rule 27:  Token ::= {
519
            // Rule 27:  Token ::= {
518
            //
520
            //
519
            case 27: { 
521
            case 27: { 
520
				makeToken(TK_LBRACE);
522
				makeToken(OCLParsersym.TK_LBRACE);
521
	            break;
523
	            break;
522
            }
524
            }
523
	 
525
	 
Lines 525-531 Link Here
525
            // Rule 28:  Token ::= }
527
            // Rule 28:  Token ::= }
526
            //
528
            //
527
            case 28: { 
529
            case 28: { 
528
				makeToken(TK_RBRACE);
530
				makeToken(OCLParsersym.TK_RBRACE);
529
	            break;
531
	            break;
530
            }
532
            }
531
	 
533
	 
Lines 533-539 Link Here
533
            // Rule 29:  Token ::= - >
535
            // Rule 29:  Token ::= - >
534
            //
536
            //
535
            case 29: { 
537
            case 29: { 
536
				makeToken(TK_ARROW);
538
				makeToken(OCLParsersym.TK_ARROW);
537
	            break;
539
	            break;
538
            }
540
            }
539
	 
541
	 
Lines 541-547 Link Here
541
            // Rule 30:  Token ::= |
543
            // Rule 30:  Token ::= |
542
            //
544
            //
543
            case 30: { 
545
            case 30: { 
544
				makeToken(TK_BAR);
546
				makeToken(OCLParsersym.TK_BAR);
545
	            break;
547
	            break;
546
            }
548
            }
547
	 
549
	 
Lines 549-555 Link Here
549
            // Rule 31:  Token ::= ,
551
            // Rule 31:  Token ::= ,
550
            //
552
            //
551
            case 31: { 
553
            case 31: { 
552
				makeToken(TK_COMMA);
554
				makeToken(OCLParsersym.TK_COMMA);
553
	            break;
555
	            break;
554
            }
556
            }
555
	 
557
	 
Lines 557-563 Link Here
557
            // Rule 32:  Token ::= :
559
            // Rule 32:  Token ::= :
558
            //
560
            //
559
            case 32: { 
561
            case 32: { 
560
				makeToken(TK_COLON);
562
				makeToken(OCLParsersym.TK_COLON);
561
	            break;
563
	            break;
562
            }
564
            }
563
	 
565
	 
Lines 565-571 Link Here
565
            // Rule 33:  Token ::= : :
567
            // Rule 33:  Token ::= : :
566
            //
568
            //
567
            case 33: { 
569
            case 33: { 
568
				makeToken(TK_COLONCOLON);
570
				makeToken(OCLParsersym.TK_COLONCOLON);
569
	            break;
571
	            break;
570
            }
572
            }
571
	 
573
	 
Lines 573-579 Link Here
573
            // Rule 34:  Token ::= ;
575
            // Rule 34:  Token ::= ;
574
            //
576
            //
575
            case 34: { 
577
            case 34: { 
576
				makeToken(TK_SEMICOLON);
578
				makeToken(OCLParsersym.TK_SEMICOLON);
577
	            break;
579
	            break;
578
            }
580
            }
579
	 
581
	 
Lines 581-587 Link Here
581
            // Rule 35:  Token ::= .
583
            // Rule 35:  Token ::= .
582
            //
584
            //
583
            case 35: { 
585
            case 35: { 
584
				makeToken(TK_DOT);
586
				makeToken(OCLParsersym.TK_DOT);
585
	            break;
587
	            break;
586
            }
588
            }
587
	 
589
	 
Lines 589-595 Link Here
589
            // Rule 36:  Token ::= . .
591
            // Rule 36:  Token ::= . .
590
            //
592
            //
591
            case 36: { 
593
            case 36: { 
592
				makeToken(TK_DOTDOT);
594
				makeToken(OCLParsersym.TK_DOTDOT);
593
	            break;
595
	            break;
594
            }
596
            }
595
	 
597
	 
Lines 597-603 Link Here
597
            // Rule 37:  Token ::= @ p r e
599
            // Rule 37:  Token ::= @ p r e
598
            //
600
            //
599
            case 37: { 
601
            case 37: { 
600
				makeToken(TK_ATPRE);
602
				makeToken(OCLParsersym.TK_ATPRE);
601
	            break;
603
	            break;
602
            }
604
            }
603
	 
605
	 
Lines 605-611 Link Here
605
            // Rule 38:  Token ::= ^
607
            // Rule 38:  Token ::= ^
606
            //
608
            //
607
            case 38: { 
609
            case 38: { 
608
				makeToken(TK_CARET);
610
				makeToken(OCLParsersym.TK_CARET);
609
	            break;
611
	            break;
610
            }
612
            }
611
	 
613
	 
Lines 613-619 Link Here
613
            // Rule 39:  Token ::= ^ ^
615
            // Rule 39:  Token ::= ^ ^
614
            //
616
            //
615
            case 39: { 
617
            case 39: { 
616
				makeToken(TK_CARETCARET);
618
				makeToken(OCLParsersym.TK_CARETCARET);
617
	            break;
619
	            break;
618
            }
620
            }
619
	 
621
	 
Lines 621-627 Link Here
621
            // Rule 40:  Token ::= ?
623
            // Rule 40:  Token ::= ?
622
            //
624
            //
623
            case 40: { 
625
            case 40: { 
624
				makeToken(TK_QUESTIONMARK);
626
				makeToken(OCLParsersym.TK_QUESTIONMARK);
625
	            break;
627
	            break;
626
            }
628
            }
627
	
629
	
(-)src/org/eclipse/ocl/lpg/AbstractLexer.java (-8 / +19 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 120-138 Link Here
120
	
120
	
121
	public abstract void lexToTokens(Monitor monitor, AbstractParser parser);
121
	public abstract void lexToTokens(Monitor monitor, AbstractParser parser);
122
122
123
	
124
	/*@Override public void reportError(int leftToken, int rightToken) {
125
		BasicEnvironment environment = getEnvironment();
126
		if (environment != null)
127
			environment.lexerError(computeErrorCode(leftToken, rightToken), leftToken, rightToken);
128
		else
129
			super.reportError(leftToken, rightToken);
130
	}*/
131
	
132
	@Override
123
	/**
133
	/**
124
	 * Errors generated within the lexer are redirected to the error handler if there is one.
134
	 * Errors generated within the lexer are redirected to the error handler if there is one.
125
	 * 
135
	 * 
126
	 * Note that other variants of reportError either feed this one, are fed from a default implementation
136
	 * Note that other variants of 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.
137
	 * of this one or originate in the parser, where a ParserErrorHandler can intercept them.
128
	 */
138
	 */
129
	@Override public void reportError(int leftToken, int rightToken) {
139
	public void reportError(int errorCode, int leftToken, int errorToken,
140
			int rightToken, String[] errorInfo) {
130
		BasicEnvironment environment = getEnvironment();
141
		BasicEnvironment environment = getEnvironment();
131
		if (environment != null)
142
		if (environment != null)
132
			environment.lexerError(computeErrorCode(leftToken, rightToken), leftToken, rightToken);
143
			environment.lexerError(errorCode, errorToken, rightToken);
133
		else
144
		super.reportError(errorCode, leftToken, errorToken, rightToken, errorInfo);
134
			super.reportError(leftToken, rightToken);
135
	}
145
	}
146
	
136
147
137
    /**
148
    /**
138
	 * Define the input text as a given array of characters.
149
	 * Define the input text as a given array of characters.
Lines 141-147 Link Here
141
	public void initialize(char[] inputChars) {
152
	public void initialize(char[] inputChars) {
142
		setInputChars(inputChars);
153
		setInputChars(inputChars);
143
        setStreamLength(inputChars.length);
154
        setStreamLength(inputChars.length);
144
        computeLineOffsets();        
155
        computeLineOffsets();
145
	}
156
	}
146
157
147
	/**
158
	/**
(-)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 (-18 / +34 lines)
Lines 21-33 Link Here
21
21
22
import java.util.ArrayList;
22
import java.util.ArrayList;
23
23
24
import lpg.lpgjavaruntime.ErrorToken;
24
import lpg.runtime.ErrorToken;
25
import lpg.lpgjavaruntime.IToken;
25
import lpg.runtime.IToken;
26
import lpg.lpgjavaruntime.LexStream;
26
import lpg.runtime.LexStream;
27
import lpg.lpgjavaruntime.Monitor;
27
import lpg.runtime.Monitor;
28
import lpg.lpgjavaruntime.ParseErrorCodes;
28
import lpg.runtime.ParseErrorCodes;
29
import lpg.lpgjavaruntime.PrsStream;
29
import lpg.runtime.PrsStream;
30
import lpg.lpgjavaruntime.Token;
30
import lpg.runtime.Token;
31
31
32
import org.eclipse.ocl.cst.CSTNode;
32
import org.eclipse.ocl.cst.CSTNode;
33
import org.eclipse.ocl.internal.l10n.OCLMessages;
33
import org.eclipse.ocl.internal.l10n.OCLMessages;
Lines 141-147 Link Here
141
	}
141
	}
142
142
143
	public AbstractLexer getLexer() {
143
	public AbstractLexer getLexer() {
144
		return (AbstractLexer) super.getLexStream();
144
		return (AbstractLexer) super.getILexStream();
145
	}
145
	}
146
146
147
	/**
147
	/**
Lines 193-199 Link Here
193
193
194
			@Override
194
			@Override
195
			public String toString() {
195
			public String toString() {
196
				if (getPrsStream() == null) {
196
				if (getIPrsStream() == null) {
197
					return "<toString>"; //$NON-NLS-1$
197
					return "<toString>"; //$NON-NLS-1$
198
				}
198
				}
199
				int startOffset = getStartOffset();
199
				int startOffset = getStartOffset();
Lines 202-211 Link Here
202
					length = -length - 1;
202
					length = -length - 1;
203
					startOffset = getEndOffset();
203
					startOffset = getEndOffset();
204
				}
204
				}
205
				if ((startOffset + length) > getPrsStream().getInputChars().length) {
205
				if ((startOffset + length) > getIPrsStream().getInputChars().length) {
206
					return String.valueOf(IToken.EOF);
206
					return String.valueOf(IToken.EOF);
207
				}
207
				}
208
				return new String(getPrsStream().getInputChars(), startOffset,
208
				return new String(getIPrsStream().getInputChars(), startOffset,
209
					length);
209
					length);
210
			}
210
			}
211
211
Lines 223-229 Link Here
223
	public abstract CSTNode parseTokensToCST(Monitor monitor,
223
	public abstract CSTNode parseTokensToCST(Monitor monitor,
224
			int error_repair_count);
224
			int error_repair_count);
225
225
226
	@Override
226
	/*@Override
227
	public void reportError(int errorCode, String locationInfo, int leftToken,
227
	public void reportError(int errorCode, String locationInfo, int leftToken,
228
			int rightToken, String tokenText) {
228
			int rightToken, String tokenText) {
229
		BasicEnvironment environment = getEnvironment();
229
		BasicEnvironment environment = getEnvironment();
Lines 237-242 Link Here
237
			environment
237
			environment
238
				.parserError(errorCode, leftToken, rightToken, tokenText);
238
				.parserError(errorCode, leftToken, rightToken, tokenText);
239
		}
239
		}
240
	}*/
241
	
242
	@Override
243
	public void reportError(int errorCode, int leftToken, int errorToken,
244
			int rightToken, String[] errorInfo) {
245
		BasicEnvironment environment = getEnvironment();
246
		if (environment == null) {
247
			super.reportError(errorCode, leftToken, errorToken, rightToken, errorInfo);
248
		} else {			
249
			if (errorCode == DELETION_CODE || errorCode == MISPLACED_CODE) {
250
				
251
			} 
252
			environment
253
				.parserError(errorCode, leftToken, rightToken, "");
254
		}
255
		
240
	}
256
	}
241
257
242
	/**
258
	/**
Lines 253-270 Link Here
253
		int firsttok = super.getFirstRealToken(error_token);
269
		int firsttok = super.getFirstRealToken(error_token);
254
		int lasttok = super.getLastRealToken(error_token);
270
		int lasttok = super.getLastRealToken(error_token);
255
		if (firsttok > lasttok) {
271
		if (firsttok > lasttok) {
256
			String location = super.getFileName() + ':'
272
			/*String location = super.getFileName() + ':'
257
				+ super.getEndLine(lasttok) + ':' + super.getEndColumn(lasttok)
273
				+ super.getEndLine(lasttok) + ':' + super.getEndColumn(lasttok)
258
				+ ": "; //$NON-NLS-1$
274
				+ ": "; //$NON-NLS-1$*/
259
			reportError(ParseErrorCodes.INSERTION_CODE, location, lasttok,
275
			reportError(ParseErrorCodes.INSERTION_CODE, lasttok,
260
				lasttok, msg);
276
				lasttok, msg);
261
		} else {
277
		} else {
262
			String location = super.getFileName() + ':'
278
			/*String location = super.getFileName() + ':'
263
				+ super.getLine(error_token) + ':'
279
				+ super.getLine(error_token) + ':'
264
				+ super.getColumn(error_token) + ':'
280
				+ super.getColumn(error_token) + ':'
265
				+ super.getEndLine(error_token) + ':'
281
				+ super.getEndLine(error_token) + ':'
266
				+ super.getEndColumn(error_token) + ": "; //$NON-NLS-1$
282
				+ super.getEndColumn(error_token) + ": "; //$NON-NLS-1$*/
267
			reportError(ParseErrorCodes.SUBSTITUTION_CODE, location, firsttok,
283
			reportError(ParseErrorCodes.SUBSTITUTION_CODE, firsttok,
268
				lasttok, msg);
284
				lasttok, msg);
269
		}
285
		}
270
	}
286
	}
(-)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;
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexer.java (-50 / +47 lines)
Lines 1-7 Link Here
1
/**
1
/**
2
* <copyright>
2
* <copyright>
3
*
3
*
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others.
4
* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., Open Canarias S.L. and others.
5
* All rights reserved.   This program and the accompanying materials
5
* All rights reserved.   This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
6
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
7
* which accompanies this distribution, and is available at
Lines 10-36 Link Here
10
* Contributors:
10
* Contributors:
11
*   IBM - Initial API and implementation
11
*   IBM - Initial API and implementation
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*      - Bug 259818
13
*               - Bug 259818
14
*   Borland - Bug 242880
15
*   Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption
14
*
16
*
15
* </copyright>
17
* </copyright>
16
*
18
*
17
* $Id: OCLBacktrackingLexer.java,v 1.1 2009/01/13 20:31:30 cdamus Exp $
19
* $Id$
18
*/
20
*/
19
21
20
package org.eclipse.ocl.parser.backtracking;
22
package org.eclipse.ocl.parser.backtracking;
21
23
22
import lpg.lpgjavaruntime.*;
24
import lpg.runtime.*;
23
import org.eclipse.ocl.lpg.AbstractLexer;
25
import org.eclipse.ocl.lpg.AbstractLexer;
24
import org.eclipse.ocl.lpg.AbstractParser;
26
import org.eclipse.ocl.lpg.AbstractParser;
25
import org.eclipse.ocl.Environment;
27
import org.eclipse.ocl.Environment;
26
import org.eclipse.ocl.lpg.BasicEnvironment;
28
import org.eclipse.ocl.lpg.BasicEnvironment;
27
import org.eclipse.ocl.util.OCLUtil;
29
import org.eclipse.ocl.util.OCLUtil;
28
30
29
/**
30
 * The backtracking variant of the OCL lexer.
31
 * 
32
 * @since 1.3
33
 */
34
@SuppressWarnings("nls")
31
@SuppressWarnings("nls")
35
public class OCLBacktrackingLexer extends AbstractLexer implements OCLBacktrackingParsersym, OCLBacktrackingLexersym, RuleAction
32
public class OCLBacktrackingLexer extends AbstractLexer implements OCLBacktrackingParsersym, OCLBacktrackingLexersym, RuleAction
36
{
33
{
Lines 57-63 Link Here
57
    
54
    
58
	public OCLBacktrackingLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] chars) {
55
	public OCLBacktrackingLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] chars) {
59
		this(environment, chars, "OCL", ECLIPSE_TAB_VALUE);
56
		this(environment, chars, "OCL", ECLIPSE_TAB_VALUE);
60
		kwLexer = new OCLBacktrackingKWLexer(getInputChars(), TK_IDENTIFIER);
57
		kwLexer = new OCLBacktrackingKWLexer(getInputChars(), OCLBacktrackingParsersym.TK_IDENTIFIER);
61
	}
58
	}
62
59
63
    public OCLBacktrackingLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] input_chars, String filename, int tab)  {
60
    public OCLBacktrackingLexer(Environment<?,?,?,?,?,?,?,?,?,?,?,?> environment, char[] input_chars, String filename, int tab)  {
Lines 86-92 Link Here
86
    {
83
    {
87
        super.initialize(content, filename);
84
        super.initialize(content, filename);
88
        if (kwLexer == null)
85
        if (kwLexer == null)
89
             kwLexer = new OCLBacktrackingKWLexer(getInputChars(), TK_IDENTIFIER);
86
             kwLexer = new OCLBacktrackingKWLexer(getInputChars(), OCLBacktrackingParsersym.TK_IDENTIFIER);
90
        else
87
        else
91
             kwLexer.setInputChars(getInputChars());
88
             kwLexer.setInputChars(getInputChars());
92
    }
89
    }
Lines 97-103 Link Here
97
    @Override
94
    @Override
98
    public void setInputChars(char[] inputChars) {
95
    public void setInputChars(char[] inputChars) {
99
		super.setInputChars(inputChars);
96
		super.setInputChars(inputChars);
100
		kwLexer = new OCLBacktrackingKWLexer(getInputChars(), TK_IDENTIFIER);
97
		kwLexer = new OCLBacktrackingKWLexer(getInputChars(), OCLBacktrackingParsersym.TK_IDENTIFIER);
101
	}
98
	}
102
    
99
    
103
    @Override
100
    @Override
Lines 113-124 Link Here
113
        lexParser.parseCharacters(monitor);  // Lex the input characters
110
        lexParser.parseCharacters(monitor);  // Lex the input characters
114
            
111
            
115
        int i = getStreamIndex();
112
        int i = getStreamIndex();
116
        parser.makeToken(i, i, TK_EOF_TOKEN); // and end with the end of file token
113
        parser.makeToken(i, i, OCLBacktrackingParsersym.TK_EOF_TOKEN); // and end with the end of file token
117
        parser.setStreamLength(parser.getSize());
114
        parser.setStreamLength(parser.getSize());
118
            
115
            
119
        return;
116
        return;
120
    }
117
    }
121
    
118
        
122
    final void makeToken(int kind)
119
    final void makeToken(int kind)
123
    {
120
    {
124
        int startOffset = getLeftSpan(),
121
        int startOffset = getLeftSpan(),
Lines 322-328 Link Here
322
            // Rule 2:  Token ::= EscapedSQ
319
            // Rule 2:  Token ::= EscapedSQ
323
            //
320
            //
324
            case 2: { 
321
            case 2: { 
325
				makeToken(TK_STRING_LITERAL);
322
				makeToken(OCLBacktrackingParsersym.TK_STRING_LITERAL);
326
	            break;
323
	            break;
327
            }
324
            }
328
	 
325
	 
Lines 330-336 Link Here
330
            // Rule 3:  Token ::= SingleQuote SLNotSQ SingleQuote
327
            // Rule 3:  Token ::= SingleQuote SLNotSQ SingleQuote
331
            //
328
            //
332
            case 3: { 
329
            case 3: { 
333
				makeToken(TK_STRING_LITERAL);
330
				makeToken(OCLBacktrackingParsersym.TK_STRING_LITERAL);
334
	            break;
331
	            break;
335
            }
332
            }
336
	 
333
	 
Lines 338-344 Link Here
338
            // Rule 4:  Token ::= Acute SLNotSQOpt Acute
335
            // Rule 4:  Token ::= Acute SLNotSQOpt Acute
339
            //
336
            //
340
            case 4: { 
337
            case 4: { 
341
				makeToken(TK_STRING_LITERAL);
338
				makeToken(OCLBacktrackingParsersym.TK_STRING_LITERAL);
342
	            break;
339
	            break;
343
            }
340
            }
344
	 
341
	 
Lines 346-352 Link Here
346
            // Rule 5:  Token ::= BackQuote SLNotSQOpt Acute
343
            // Rule 5:  Token ::= BackQuote SLNotSQOpt Acute
347
            //
344
            //
348
            case 5: { 
345
            case 5: { 
349
				makeToken(TK_STRING_LITERAL);
346
				makeToken(OCLBacktrackingParsersym.TK_STRING_LITERAL);
350
	            break;
347
	            break;
351
            }
348
            }
352
	 
349
	 
Lines 354-360 Link Here
354
            // Rule 6:  Token ::= IntegerLiteral
351
            // Rule 6:  Token ::= IntegerLiteral
355
            //
352
            //
356
            case 6: { 
353
            case 6: { 
357
				makeToken(TK_INTEGER_LITERAL);
354
				makeToken(OCLBacktrackingParsersym.TK_INTEGER_LITERAL);
358
	            break;
355
	            break;
359
            }
356
            }
360
	 
357
	 
Lines 362-368 Link Here
362
            // Rule 7:  Token ::= RealLiteral
359
            // Rule 7:  Token ::= RealLiteral
363
            //
360
            //
364
            case 7: { 
361
            case 7: { 
365
				makeToken(TK_REAL_LITERAL);
362
				makeToken(OCLBacktrackingParsersym.TK_REAL_LITERAL);
366
	            break;
363
	            break;
367
            }
364
            }
368
	 
365
	 
Lines 370-376 Link Here
370
            // Rule 8:  Token ::= NumericOperation
367
            // Rule 8:  Token ::= NumericOperation
371
            //
368
            //
372
            case 8: { 
369
            case 8: { 
373
				makeToken(TK_NUMERIC_OPERATION);
370
				makeToken(OCLBacktrackingParsersym.TK_NUMERIC_OPERATION);
374
	            break;
371
	            break;
375
            }
372
            }
376
	 
373
	 
Lines 378-384 Link Here
378
            // Rule 9:  Token ::= IntegerRangeStart
375
            // Rule 9:  Token ::= IntegerRangeStart
379
            //
376
            //
380
            case 9: { 
377
            case 9: { 
381
				makeToken(TK_INTEGER_RANGE_START);
378
				makeToken(OCLBacktrackingParsersym.TK_INTEGER_RANGE_START);
382
	            break;
379
	            break;
383
            }
380
            }
384
	 
381
	 
Lines 410-416 Link Here
410
            // Rule 13:  Token ::= +
407
            // Rule 13:  Token ::= +
411
            //
408
            //
412
            case 13: { 
409
            case 13: { 
413
				makeToken(TK_PLUS);
410
				makeToken(OCLBacktrackingParsersym.TK_PLUS);
414
	            break;
411
	            break;
415
            }
412
            }
416
	 
413
	 
Lines 418-424 Link Here
418
            // Rule 14:  Token ::= -
415
            // Rule 14:  Token ::= -
419
            //
416
            //
420
            case 14: { 
417
            case 14: { 
421
				makeToken(TK_MINUS);
418
				makeToken(OCLBacktrackingParsersym.TK_MINUS);
422
	            break;
419
	            break;
423
            }
420
            }
424
	 
421
	 
Lines 426-432 Link Here
426
            // Rule 15:  Token ::= *
423
            // Rule 15:  Token ::= *
427
            //
424
            //
428
            case 15: { 
425
            case 15: { 
429
				makeToken(TK_MULTIPLY);
426
				makeToken(OCLBacktrackingParsersym.TK_MULTIPLY);
430
	            break;
427
	            break;
431
            }
428
            }
432
	 
429
	 
Lines 434-440 Link Here
434
            // Rule 16:  Token ::= /
431
            // Rule 16:  Token ::= /
435
            //
432
            //
436
            case 16: { 
433
            case 16: { 
437
				makeToken(TK_DIVIDE);
434
				makeToken(OCLBacktrackingParsersym.TK_DIVIDE);
438
	            break;
435
	            break;
439
            }
436
            }
440
	 
437
	 
Lines 442-448 Link Here
442
            // Rule 17:  Token ::= (
439
            // Rule 17:  Token ::= (
443
            //
440
            //
444
            case 17: { 
441
            case 17: { 
445
				makeToken(TK_LPAREN);
442
				makeToken(OCLBacktrackingParsersym.TK_LPAREN);
446
	            break;
443
	            break;
447
            }
444
            }
448
	 
445
	 
Lines 450-456 Link Here
450
            // Rule 18:  Token ::= )
447
            // Rule 18:  Token ::= )
451
            //
448
            //
452
            case 18: { 
449
            case 18: { 
453
				makeToken(TK_RPAREN);
450
				makeToken(OCLBacktrackingParsersym.TK_RPAREN);
454
	            break;
451
	            break;
455
            }
452
            }
456
	 
453
	 
Lines 458-464 Link Here
458
            // Rule 19:  Token ::= >
455
            // Rule 19:  Token ::= >
459
            //
456
            //
460
            case 19: { 
457
            case 19: { 
461
				makeToken(TK_GREATER);
458
				makeToken(OCLBacktrackingParsersym.TK_GREATER);
462
	            break;
459
	            break;
463
            }
460
            }
464
	 
461
	 
Lines 466-472 Link Here
466
            // Rule 20:  Token ::= <
463
            // Rule 20:  Token ::= <
467
            //
464
            //
468
            case 20: { 
465
            case 20: { 
469
				makeToken(TK_LESS);
466
				makeToken(OCLBacktrackingParsersym.TK_LESS);
470
	            break;
467
	            break;
471
            }
468
            }
472
	 
469
	 
Lines 474-480 Link Here
474
            // Rule 21:  Token ::= =
471
            // Rule 21:  Token ::= =
475
            //
472
            //
476
            case 21: { 
473
            case 21: { 
477
				makeToken(TK_EQUAL);
474
				makeToken(OCLBacktrackingParsersym.TK_EQUAL);
478
	            break;
475
	            break;
479
            }
476
            }
480
	 
477
	 
Lines 482-488 Link Here
482
            // Rule 22:  Token ::= > =
479
            // Rule 22:  Token ::= > =
483
            //
480
            //
484
            case 22: { 
481
            case 22: { 
485
				makeToken(TK_GREATER_EQUAL);
482
				makeToken(OCLBacktrackingParsersym.TK_GREATER_EQUAL);
486
	            break;
483
	            break;
487
            }
484
            }
488
	 
485
	 
Lines 490-496 Link Here
490
            // Rule 23:  Token ::= < =
487
            // Rule 23:  Token ::= < =
491
            //
488
            //
492
            case 23: { 
489
            case 23: { 
493
				makeToken(TK_LESS_EQUAL);
490
				makeToken(OCLBacktrackingParsersym.TK_LESS_EQUAL);
494
	            break;
491
	            break;
495
            }
492
            }
496
	 
493
	 
Lines 498-504 Link Here
498
            // Rule 24:  Token ::= < >
495
            // Rule 24:  Token ::= < >
499
            //
496
            //
500
            case 24: { 
497
            case 24: { 
501
				makeToken(TK_NOT_EQUAL);
498
				makeToken(OCLBacktrackingParsersym.TK_NOT_EQUAL);
502
	            break;
499
	            break;
503
            }
500
            }
504
	 
501
	 
Lines 506-512 Link Here
506
            // Rule 25:  Token ::= [
503
            // Rule 25:  Token ::= [
507
            //
504
            //
508
            case 25: { 
505
            case 25: { 
509
				makeToken(TK_LBRACKET);
506
				makeToken(OCLBacktrackingParsersym.TK_LBRACKET);
510
	            break;
507
	            break;
511
            }
508
            }
512
	 
509
	 
Lines 514-520 Link Here
514
            // Rule 26:  Token ::= ]
511
            // Rule 26:  Token ::= ]
515
            //
512
            //
516
            case 26: { 
513
            case 26: { 
517
				makeToken(TK_RBRACKET);
514
				makeToken(OCLBacktrackingParsersym.TK_RBRACKET);
518
	            break;
515
	            break;
519
            }
516
            }
520
	 
517
	 
Lines 522-528 Link Here
522
            // Rule 27:  Token ::= {
519
            // Rule 27:  Token ::= {
523
            //
520
            //
524
            case 27: { 
521
            case 27: { 
525
				makeToken(TK_LBRACE);
522
				makeToken(OCLBacktrackingParsersym.TK_LBRACE);
526
	            break;
523
	            break;
527
            }
524
            }
528
	 
525
	 
Lines 530-536 Link Here
530
            // Rule 28:  Token ::= }
527
            // Rule 28:  Token ::= }
531
            //
528
            //
532
            case 28: { 
529
            case 28: { 
533
				makeToken(TK_RBRACE);
530
				makeToken(OCLBacktrackingParsersym.TK_RBRACE);
534
	            break;
531
	            break;
535
            }
532
            }
536
	 
533
	 
Lines 538-544 Link Here
538
            // Rule 29:  Token ::= - >
535
            // Rule 29:  Token ::= - >
539
            //
536
            //
540
            case 29: { 
537
            case 29: { 
541
				makeToken(TK_ARROW);
538
				makeToken(OCLBacktrackingParsersym.TK_ARROW);
542
	            break;
539
	            break;
543
            }
540
            }
544
	 
541
	 
Lines 546-552 Link Here
546
            // Rule 30:  Token ::= |
543
            // Rule 30:  Token ::= |
547
            //
544
            //
548
            case 30: { 
545
            case 30: { 
549
				makeToken(TK_BAR);
546
				makeToken(OCLBacktrackingParsersym.TK_BAR);
550
	            break;
547
	            break;
551
            }
548
            }
552
	 
549
	 
Lines 554-560 Link Here
554
            // Rule 31:  Token ::= ,
551
            // Rule 31:  Token ::= ,
555
            //
552
            //
556
            case 31: { 
553
            case 31: { 
557
				makeToken(TK_COMMA);
554
				makeToken(OCLBacktrackingParsersym.TK_COMMA);
558
	            break;
555
	            break;
559
            }
556
            }
560
	 
557
	 
Lines 562-568 Link Here
562
            // Rule 32:  Token ::= :
559
            // Rule 32:  Token ::= :
563
            //
560
            //
564
            case 32: { 
561
            case 32: { 
565
				makeToken(TK_COLON);
562
				makeToken(OCLBacktrackingParsersym.TK_COLON);
566
	            break;
563
	            break;
567
            }
564
            }
568
	 
565
	 
Lines 570-576 Link Here
570
            // Rule 33:  Token ::= : :
567
            // Rule 33:  Token ::= : :
571
            //
568
            //
572
            case 33: { 
569
            case 33: { 
573
				makeToken(TK_COLONCOLON);
570
				makeToken(OCLBacktrackingParsersym.TK_COLONCOLON);
574
	            break;
571
	            break;
575
            }
572
            }
576
	 
573
	 
Lines 578-584 Link Here
578
            // Rule 34:  Token ::= ;
575
            // Rule 34:  Token ::= ;
579
            //
576
            //
580
            case 34: { 
577
            case 34: { 
581
				makeToken(TK_SEMICOLON);
578
				makeToken(OCLBacktrackingParsersym.TK_SEMICOLON);
582
	            break;
579
	            break;
583
            }
580
            }
584
	 
581
	 
Lines 586-592 Link Here
586
            // Rule 35:  Token ::= .
583
            // Rule 35:  Token ::= .
587
            //
584
            //
588
            case 35: { 
585
            case 35: { 
589
				makeToken(TK_DOT);
586
				makeToken(OCLBacktrackingParsersym.TK_DOT);
590
	            break;
587
	            break;
591
            }
588
            }
592
	 
589
	 
Lines 594-600 Link Here
594
            // Rule 36:  Token ::= . .
591
            // Rule 36:  Token ::= . .
595
            //
592
            //
596
            case 36: { 
593
            case 36: { 
597
				makeToken(TK_DOTDOT);
594
				makeToken(OCLBacktrackingParsersym.TK_DOTDOT);
598
	            break;
595
	            break;
599
            }
596
            }
600
	 
597
	 
Lines 602-608 Link Here
602
            // Rule 37:  Token ::= @ p r e
599
            // Rule 37:  Token ::= @ p r e
603
            //
600
            //
604
            case 37: { 
601
            case 37: { 
605
				makeToken(TK_ATPRE);
602
				makeToken(OCLBacktrackingParsersym.TK_ATPRE);
606
	            break;
603
	            break;
607
            }
604
            }
608
	 
605
	 
Lines 610-616 Link Here
610
            // Rule 38:  Token ::= ^
607
            // Rule 38:  Token ::= ^
611
            //
608
            //
612
            case 38: { 
609
            case 38: { 
613
				makeToken(TK_CARET);
610
				makeToken(OCLBacktrackingParsersym.TK_CARET);
614
	            break;
611
	            break;
615
            }
612
            }
616
	 
613
	 
Lines 618-624 Link Here
618
            // Rule 39:  Token ::= ^ ^
615
            // Rule 39:  Token ::= ^ ^
619
            //
616
            //
620
            case 39: { 
617
            case 39: { 
621
				makeToken(TK_CARETCARET);
618
				makeToken(OCLBacktrackingParsersym.TK_CARETCARET);
622
	            break;
619
	            break;
623
            }
620
            }
624
	 
621
	 
Lines 626-632 Link Here
626
            // Rule 40:  Token ::= ?
623
            // Rule 40:  Token ::= ?
627
            //
624
            //
628
            case 40: { 
625
            case 40: { 
629
				makeToken(TK_QUESTIONMARK);
626
				makeToken(OCLBacktrackingParsersym.TK_QUESTIONMARK);
630
	            break;
627
	            break;
631
            }
628
            }
632
	
629
	
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexersym.java (-27 / +23 lines)
Lines 1-7 Link Here
1
/**
1
/**
2
* <copyright>
2
* <copyright>
3
*
3
*
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others.
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc, Open Canarias S.L., and others.
5
* All rights reserved.   This program and the accompanying materials
5
* All rights reserved.   This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
6
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
7
* which accompanies this distribution, and is available at
Lines 10-36 Link Here
10
* Contributors:
10
* Contributors:
11
*   IBM - Initial API and implementation
11
*   IBM - Initial API and implementation
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*      - Bug 259818
13
*   Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption
14
*
14
*
15
* </copyright>
15
* </copyright>
16
*
16
*
17
* $Id: OCLBacktrackingKWLexersym.java,v 1.1 2009/01/13 20:31:30 cdamus Exp $
17
* 
18
*/
18
*/
19
19
20
package org.eclipse.ocl.parser.backtracking;
20
package org.eclipse.ocl.parser.backtracking;
21
21
22
/**
23
 * The backtracking variant of the OCL keyword lexer symbol table.
24
 * 
25
 * @noimplement This interface is not intended to be implemented by clients.
26
 * @noextend This interface is not intended to be extended by clients.
27
 * 
28
 * @since 1.3
29
 */
30
@SuppressWarnings("nls")
31
public interface OCLBacktrackingKWLexersym {
22
public interface OCLBacktrackingKWLexersym {
32
    public final static int
23
    public final static int
33
      Char_DollarSign = 40,
24
      Char_DollarSign = 40,
25
      Char_Percent = 41,
26
      Char__ = 42,
34
      Char_a = 5,
27
      Char_a = 5,
35
      Char_b = 30,
28
      Char_b = 30,
36
      Char_c = 11,
29
      Char_c = 11,
Lines 56-91 Link Here
56
      Char_w = 33,
49
      Char_w = 33,
57
      Char_x = 19,
50
      Char_x = 19,
58
      Char_y = 16,
51
      Char_y = 16,
59
      Char_z = 41,
52
      Char_z = 43,
60
      Char_A = 20,
53
      Char_A = 20,
61
      Char_B = 29,
54
      Char_B = 29,
62
      Char_C = 34,
55
      Char_C = 34,
63
      Char_D = 42,
56
      Char_D = 44,
64
      Char_E = 43,
57
      Char_E = 45,
65
      Char_F = 44,
58
      Char_F = 46,
66
      Char_G = 45,
59
      Char_G = 47,
67
      Char_H = 46,
60
      Char_H = 48,
68
      Char_I = 18,
61
      Char_I = 18,
69
      Char_J = 47,
62
      Char_J = 49,
70
      Char_K = 35,
63
      Char_K = 35,
71
      Char_L = 48,
64
      Char_L = 50,
72
      Char_M = 36,
65
      Char_M = 36,
73
      Char_N = 21,
66
      Char_N = 21,
74
      Char_O = 22,
67
      Char_O = 22,
75
      Char_P = 49,
68
      Char_P = 51,
76
      Char_Q = 50,
69
      Char_Q = 52,
77
      Char_R = 37,
70
      Char_R = 37,
78
      Char_S = 23,
71
      Char_S = 23,
79
      Char_T = 24,
72
      Char_T = 24,
80
      Char_U = 25,
73
      Char_U = 25,
81
      Char_V = 38,
74
      Char_V = 38,
82
      Char_W = 51,
75
      Char_W = 53,
83
      Char_X = 52,
76
      Char_X = 54,
84
      Char_Y = 53,
77
      Char_Y = 55,
85
      Char_Z = 54,
78
      Char_Z = 56,
86
      Char_EOF = 39;
79
      Char_EOF = 39;
87
80
88
      public final static String orderedTerminalSymbols[] = {
81
    public final static String orderedTerminalSymbols[] = {
89
                 "",
82
                 "",
90
                 "e",
83
                 "e",
91
                 "t",
84
                 "t",
Lines 127-132 Link Here
127
                 "V",
120
                 "V",
128
                 "EOF",
121
                 "EOF",
129
                 "DollarSign",
122
                 "DollarSign",
123
                 "Percent",
124
                 "_",
130
                 "z",
125
                 "z",
131
                 "D",
126
                 "D",
132
                 "E",
127
                 "E",
Lines 143-147 Link Here
143
                 "Z"
138
                 "Z"
144
             };
139
             };
145
140
141
    public final static int numTokenKinds = orderedTerminalSymbols.length;
146
    public final static boolean isValidForParser = true;
142
    public final static boolean isValidForParser = true;
147
}
143
}
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParser.java (-16 / +13 lines)
Lines 1-7 Link Here
1
/**
1
/**
2
* <copyright>
2
* <copyright>
3
*
3
*
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., and others.
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., 
5
* Open Canarias S.L. and others.
5
* All rights reserved.   This program and the accompanying materials
6
* All rights reserved.   This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
7
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
8
* which accompanies this distribution, and is available at
Lines 14-23 Link Here
14
*   E.D.Willink - Bugs 225493, 243976, 259818
15
*   E.D.Willink - Bugs 225493, 243976, 259818
15
*   Zeligsoft - Bug 243976
16
*   Zeligsoft - Bug 243976
16
*   Borland - Bug 242880
17
*   Borland - Bug 242880
18
*   Adolfo Sanchez- Barbudo Herrera - LPG v 2.0.17 adoption
17
*
19
*
18
* </copyright>
20
* </copyright>
19
*
21
*
20
* $Id: OCLBacktrackingParser.java,v 1.2 2009/03/05 14:12:14 cdamus Exp $
22
* $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $
21
*/
23
*/
22
24
23
package org.eclipse.ocl.parser.backtracking;
25
package org.eclipse.ocl.parser.backtracking;
Lines 44-58 Link Here
44
import org.eclipse.ocl.util.OCLStandardLibraryUtil;
46
import org.eclipse.ocl.util.OCLStandardLibraryUtil;
45
import org.eclipse.ocl.utilities.PredefinedType;
47
import org.eclipse.ocl.utilities.PredefinedType;
46
48
47
import lpg.lpgjavaruntime.BadParseException;
49
import lpg.runtime.BadParseException;
48
import lpg.lpgjavaruntime.BadParseSymFileException;
50
import lpg.runtime.BadParseSymFileException;
49
import lpg.lpgjavaruntime.BacktrackingParser;
51
import lpg.runtime.BacktrackingParser;
50
import lpg.lpgjavaruntime.DiagnoseParser;
52
import lpg.runtime.DiagnoseParser;
51
import lpg.lpgjavaruntime.IToken;
53
import lpg.runtime.IToken;
52
import lpg.lpgjavaruntime.Monitor;
54
import lpg.runtime.Monitor;
53
import lpg.lpgjavaruntime.NotBacktrackParseTableException;
55
import lpg.runtime.NotBacktrackParseTableException;
54
import lpg.lpgjavaruntime.ParseTable;
56
import lpg.runtime.ParseTable;
55
import lpg.lpgjavaruntime.RuleAction;
57
import lpg.runtime.RuleAction;
56
58
57
import org.eclipse.ocl.Environment;
59
import org.eclipse.ocl.Environment;
58
import org.eclipse.ocl.cst.DefExpressionCS;
60
import org.eclipse.ocl.cst.DefExpressionCS;
Lines 64-74 Link Here
64
66
65
	import org.eclipse.ocl.parser.AbstractOCLParser;
67
	import org.eclipse.ocl.parser.AbstractOCLParser;
66
68
67
/**
68
 * The backtracking variant of the OCL parser.
69
 * 
70
 * @since 1.3
71
 */
72
public class OCLBacktrackingParser extends AbstractOCLParser implements RuleAction
69
public class OCLBacktrackingParser extends AbstractOCLParser implements RuleAction
73
{
70
{
74
	protected static ParseTable prs = new OCLBacktrackingParserprs();
71
	protected static ParseTable prs = new OCLBacktrackingParserprs();
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParser.g
Lines 1-7 Link Here
1
--/**
1
--/**
2
-- * <copyright>
2
-- * <copyright>
3
-- *
3
-- *
(-)* Copyright (c) 2008, 2009 Eclipse.org and others. (-10 / +12 lines)
Lines 9-14 Link Here
9
-- *
9
-- *
10
-- * Contributors:
10
-- * Contributors:
11
-- *   E.D. Willink - Initial API and implementation
11
-- *   E.D. Willink - Initial API and implementation
12
-- *   Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption
12
-- *
13
-- *
13
-- * </copyright>
14
-- * </copyright>
14
-- *
15
-- *
Lines 33-59 Link Here
33
%options backtrack
34
%options backtrack
34
%options noserialize
35
%options noserialize
35
%options package=org.eclipse.ocl.parser.backtracking
36
%options package=org.eclipse.ocl.parser.backtracking
36
%options import_terminals=OCLBacktrackingLexer.g
37
%options import_terminals=OCLBacktrackingLexer.gi
37
%options ast_type=CSTNode
38
%options ast_type=CSTNode
38
%options programming_language=java
39
%options programming_language=java
39
%options action=("*.java", "/.", "./")
40
%options action-block=("*.java", "/.", "./")
40
%options ParseTable=lpg.lpgjavaruntime.ParseTable
41
%options ParseTable=lpg.runtime.ParseTable
41
%options include_directory=".;..;../../lpg"
42
%options include_directory=".;..;../../lpg"
42
43
43
$Include
44
%Import
44
	OCLParserErrors.g
45
	OCLParserErrors.gi
45
$End
46
%End
46
47
47
$Globals
48
%Globals
48
	/.
49
	/.
49
		import org.eclipse.ocl.parser.AbstractOCLParser;
50
		import org.eclipse.ocl.parser.AbstractOCLParser;
50
	./
51
	./
51
$End
52
%End
52
53
53
$Define
54
%Define
54
	$lex_stream_class /.OCLBacktrackingLexer./
55
	$lex_stream_class /.OCLBacktrackingLexer./
55
	$prs_parser_class /.BacktrackingParser./
56
	$prs_parser_class /.BacktrackingParser./
56
	$prs_parser_exception /.NotBacktrackParseTableException./
57
	$prs_parser_exception /.NotBacktrackParseTableException./
57
	$prs_parser_throw /.throw new RuntimeException("****Error: Regenerate $prs_type.java with -BACKTRACK option")./
58
	$prs_parser_throw /.throw new RuntimeException("****Error: Regenerate $prs_type.java with -BACKTRACK option")./
58
	$prs_parse_args /.error_repair_count./
59
	$prs_parse_args /.error_repair_count./
59
$End
60
%End
61
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexersym.java (-13 / +7 lines)
Lines 1-7 Link Here
1
/**
1
/**
2
* <copyright>
2
* <copyright>
3
*
3
*
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others.
4
* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., Open Canarias S.L. and others.
5
* All rights reserved.   This program and the accompanying materials
5
* All rights reserved.   This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
6
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
7
* which accompanies this distribution, and is available at
Lines 10-33 Link Here
10
* Contributors:
10
* Contributors:
11
*   IBM - Initial API and implementation
11
*   IBM - Initial API and implementation
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*      - Bug 259818
13
*               - Bug 259818
14
*   Borland - Bug 242880
15
*   Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption
14
*
16
*
15
* </copyright>
17
* </copyright>
16
*
18
*
17
* $Id: OCLBacktrackingLexersym.java,v 1.1 2009/01/13 20:31:30 cdamus Exp $
19
* $Id$
18
*/
20
*/
19
21
20
package org.eclipse.ocl.parser.backtracking;
22
package org.eclipse.ocl.parser.backtracking;
21
23
22
/**
23
 * The backtracking variant of the OCL lexer symbol table.
24
 * 
25
 * @noimplement This interface is not intended to be implemented by clients.
26
 * @noextend This interface is not intended to be extended by clients.
27
 * 
28
 * @since 1.3
29
 */
30
@SuppressWarnings("nls")
31
public interface OCLBacktrackingLexersym {
24
public interface OCLBacktrackingLexersym {
32
    public final static int
25
    public final static int
33
      Char_CtlCharNotWS = 103,
26
      Char_CtlCharNotWS = 103,
Lines 134-140 Link Here
134
      Char_Equal = 15,
127
      Char_Equal = 15,
135
      Char_EOF = 99;
128
      Char_EOF = 99;
136
129
137
      public final static String orderedTerminalSymbols[] = {
130
    public final static String orderedTerminalSymbols[] = {
138
                 "",
131
                 "",
139
                 "0",
132
                 "0",
140
                 "1",
133
                 "1",
Lines 241-245 Link Here
241
                 "CtlCharNotWS"
234
                 "CtlCharNotWS"
242
             };
235
             };
243
236
237
    public final static int numTokenKinds = orderedTerminalSymbols.length;
244
    public final static boolean isValidForParser = true;
238
    public final static boolean isValidForParser = true;
245
}
239
}
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.java (-132 / +189 lines)
Lines 1-7 Link Here
1
/**
1
/**
2
* <copyright>
2
* <copyright>
3
*
3
*
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others.
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc, Open Canarias S.L., and others.
5
* All rights reserved.   This program and the accompanying materials
5
* All rights reserved.   This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
6
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
7
* which accompanies this distribution, and is available at
Lines 10-33 Link Here
10
* Contributors:
10
* Contributors:
11
*   IBM - Initial API and implementation
11
*   IBM - Initial API and implementation
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*      - Bug 259818
13
*   Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption
14
*   
14
*
15
* </copyright>
15
* </copyright>
16
*
16
*
17
* $Id: OCLBacktrackingKWLexer.java,v 1.1 2009/01/13 20:31:30 cdamus Exp $
17
* 
18
*/
18
*/
19
19
20
package org.eclipse.ocl.parser.backtracking;
20
package org.eclipse.ocl.parser.backtracking;
21
21
22
22
23
23
24
/**
25
 * The backtracking variant of the OCL keyword lexer.
26
 * 
27
 * @noextend This class is not intended to be subclassed by clients.
28
 * 
29
 * @since 1.3
30
 */
31
public class OCLBacktrackingKWLexer extends OCLBacktrackingKWLexerprs implements OCLBacktrackingParsersym
24
public class OCLBacktrackingKWLexer extends OCLBacktrackingKWLexerprs implements OCLBacktrackingParsersym
32
{
25
{
33
    private char[] inputChars;
26
    private char[] inputChars;
Lines 65-130 Link Here
65
    final static int tokenKind[] = new int[128];
58
    final static int tokenKind[] = new int[128];
66
    static
59
    static
67
    {
60
    {
68
        tokenKind['$'] = Char_DollarSign;
61
        tokenKind['$'] = OCLBacktrackingKWLexersym.Char_DollarSign;
69
62
        tokenKind['%'] = OCLBacktrackingKWLexersym.Char_Percent;
70
        tokenKind['a'] = Char_a;
63
        tokenKind['_'] = OCLBacktrackingKWLexersym.Char__;
71
        tokenKind['b'] = Char_b;
64
72
        tokenKind['c'] = Char_c;
65
        tokenKind['a'] = OCLBacktrackingKWLexersym.Char_a;
73
        tokenKind['d'] = Char_d;
66
        tokenKind['b'] = OCLBacktrackingKWLexersym.Char_b;
74
        tokenKind['e'] = Char_e;
67
        tokenKind['c'] = OCLBacktrackingKWLexersym.Char_c;
75
        tokenKind['f'] = Char_f;
68
        tokenKind['d'] = OCLBacktrackingKWLexersym.Char_d;
76
        tokenKind['g'] = Char_g;
69
        tokenKind['e'] = OCLBacktrackingKWLexersym.Char_e;
77
        tokenKind['h'] = Char_h;
70
        tokenKind['f'] = OCLBacktrackingKWLexersym.Char_f;
78
        tokenKind['i'] = Char_i;
71
        tokenKind['g'] = OCLBacktrackingKWLexersym.Char_g;
79
        tokenKind['j'] = Char_j;
72
        tokenKind['h'] = OCLBacktrackingKWLexersym.Char_h;
80
        tokenKind['k'] = Char_k;
73
        tokenKind['i'] = OCLBacktrackingKWLexersym.Char_i;
81
        tokenKind['l'] = Char_l;
74
        tokenKind['j'] = OCLBacktrackingKWLexersym.Char_j;
82
        tokenKind['m'] = Char_m;
75
        tokenKind['k'] = OCLBacktrackingKWLexersym.Char_k;
83
        tokenKind['n'] = Char_n;
76
        tokenKind['l'] = OCLBacktrackingKWLexersym.Char_l;
84
        tokenKind['o'] = Char_o;
77
        tokenKind['m'] = OCLBacktrackingKWLexersym.Char_m;
85
        tokenKind['p'] = Char_p;
78
        tokenKind['n'] = OCLBacktrackingKWLexersym.Char_n;
86
        tokenKind['q'] = Char_q;
79
        tokenKind['o'] = OCLBacktrackingKWLexersym.Char_o;
87
        tokenKind['r'] = Char_r;
80
        tokenKind['p'] = OCLBacktrackingKWLexersym.Char_p;
88
        tokenKind['s'] = Char_s;
81
        tokenKind['q'] = OCLBacktrackingKWLexersym.Char_q;
89
        tokenKind['t'] = Char_t;
82
        tokenKind['r'] = OCLBacktrackingKWLexersym.Char_r;
90
        tokenKind['u'] = Char_u;
83
        tokenKind['s'] = OCLBacktrackingKWLexersym.Char_s;
91
        tokenKind['v'] = Char_v;
84
        tokenKind['t'] = OCLBacktrackingKWLexersym.Char_t;
92
        tokenKind['w'] = Char_w;
85
        tokenKind['u'] = OCLBacktrackingKWLexersym.Char_u;
93
        tokenKind['x'] = Char_x;
86
        tokenKind['v'] = OCLBacktrackingKWLexersym.Char_v;
94
        tokenKind['y'] = Char_y;
87
        tokenKind['w'] = OCLBacktrackingKWLexersym.Char_w;
95
        tokenKind['z'] = Char_z;
88
        tokenKind['x'] = OCLBacktrackingKWLexersym.Char_x;
96
89
        tokenKind['y'] = OCLBacktrackingKWLexersym.Char_y;
97
        tokenKind['A'] = Char_A;
90
        tokenKind['z'] = OCLBacktrackingKWLexersym.Char_z;
98
        tokenKind['B'] = Char_B;
91
99
        tokenKind['C'] = Char_C;
92
        tokenKind['A'] = OCLBacktrackingKWLexersym.Char_A;
100
        tokenKind['D'] = Char_D;
93
        tokenKind['B'] = OCLBacktrackingKWLexersym.Char_B;
101
        tokenKind['E'] = Char_E;
94
        tokenKind['C'] = OCLBacktrackingKWLexersym.Char_C;
102
        tokenKind['F'] = Char_F;
95
        tokenKind['D'] = OCLBacktrackingKWLexersym.Char_D;
103
        tokenKind['G'] = Char_G;
96
        tokenKind['E'] = OCLBacktrackingKWLexersym.Char_E;
104
        tokenKind['H'] = Char_H;
97
        tokenKind['F'] = OCLBacktrackingKWLexersym.Char_F;
105
        tokenKind['I'] = Char_I;
98
        tokenKind['G'] = OCLBacktrackingKWLexersym.Char_G;
106
        tokenKind['J'] = Char_J;
99
        tokenKind['H'] = OCLBacktrackingKWLexersym.Char_H;
107
        tokenKind['K'] = Char_K;
100
        tokenKind['I'] = OCLBacktrackingKWLexersym.Char_I;
108
        tokenKind['L'] = Char_L;
101
        tokenKind['J'] = OCLBacktrackingKWLexersym.Char_J;
109
        tokenKind['M'] = Char_M;
102
        tokenKind['K'] = OCLBacktrackingKWLexersym.Char_K;
110
        tokenKind['N'] = Char_N;
103
        tokenKind['L'] = OCLBacktrackingKWLexersym.Char_L;
111
        tokenKind['O'] = Char_O;
104
        tokenKind['M'] = OCLBacktrackingKWLexersym.Char_M;
112
        tokenKind['P'] = Char_P;
105
        tokenKind['N'] = OCLBacktrackingKWLexersym.Char_N;
113
        tokenKind['Q'] = Char_Q;
106
        tokenKind['O'] = OCLBacktrackingKWLexersym.Char_O;
114
        tokenKind['R'] = Char_R;
107
        tokenKind['P'] = OCLBacktrackingKWLexersym.Char_P;
115
        tokenKind['S'] = Char_S;
108
        tokenKind['Q'] = OCLBacktrackingKWLexersym.Char_Q;
116
        tokenKind['T'] = Char_T;
109
        tokenKind['R'] = OCLBacktrackingKWLexersym.Char_R;
117
        tokenKind['U'] = Char_U;
110
        tokenKind['S'] = OCLBacktrackingKWLexersym.Char_S;
118
        tokenKind['V'] = Char_V;
111
        tokenKind['T'] = OCLBacktrackingKWLexersym.Char_T;
119
        tokenKind['W'] = Char_W;
112
        tokenKind['U'] = OCLBacktrackingKWLexersym.Char_U;
120
        tokenKind['X'] = Char_X;
113
        tokenKind['V'] = OCLBacktrackingKWLexersym.Char_V;
121
        tokenKind['Y'] = Char_Y;
114
        tokenKind['W'] = OCLBacktrackingKWLexersym.Char_W;
122
        tokenKind['Z'] = Char_Z;
115
        tokenKind['X'] = OCLBacktrackingKWLexersym.Char_X;
116
        tokenKind['Y'] = OCLBacktrackingKWLexersym.Char_Y;
117
        tokenKind['Z'] = OCLBacktrackingKWLexersym.Char_Z;
123
    };
118
    };
124
119
125
    final int getKind(char c)
120
    final int getKind(int c)
126
    {
121
    {
127
        return (c < 128 ? tokenKind[c] : 0);
122
        return (((c & 0xFFFFFF80) == 0) /* 0 <= c < 128? */ ? tokenKind[c] : 0);
128
    }
123
    }
129
124
130
125
Lines 136-517 Link Here
136
        //
131
        //
137
        // Rule 1:  KeyWord ::= s e l f
132
        // Rule 1:  KeyWord ::= s e l f
138
        //
133
        //
139
		keywordKind[1] = (TK_self);
134
        
135
		keywordKind[1] = (OCLBacktrackingParsersym.TK_self);
140
	  
136
	  
141
	
137
	
142
        //
138
        //
143
        // Rule 2:  KeyWord ::= i n v
139
        // Rule 2:  KeyWord ::= i n v
144
        //
140
        //
145
		keywordKind[2] = (TK_inv);
141
        
142
		keywordKind[2] = (OCLBacktrackingParsersym.TK_inv);
146
	  
143
	  
147
	
144
	
148
        //
145
        //
149
        // Rule 3:  KeyWord ::= p r e
146
        // Rule 3:  KeyWord ::= p r e
150
        //
147
        //
151
		keywordKind[3] = (TK_pre);
148
        
149
		keywordKind[3] = (OCLBacktrackingParsersym.TK_pre);
152
	  
150
	  
153
	
151
	
154
        //
152
        //
155
        // Rule 4:  KeyWord ::= p o s t
153
        // Rule 4:  KeyWord ::= p o s t
156
        //
154
        //
157
		keywordKind[4] = (TK_post);
155
        
156
		keywordKind[4] = (OCLBacktrackingParsersym.TK_post);
158
	  
157
	  
159
	
158
	
160
        //
159
        //
161
        // Rule 5:  KeyWord ::= b o d y
160
        // Rule 5:  KeyWord ::= b o d y
162
        //
161
        //
163
		keywordKind[5] = (TK_body);
162
        
163
		keywordKind[5] = (OCLBacktrackingParsersym.TK_body);
164
	  
164
	  
165
	
165
	
166
        //
166
        //
167
        // Rule 6:  KeyWord ::= c o n t e x t
167
        // Rule 6:  KeyWord ::= c o n t e x t
168
        //
168
        //
169
		keywordKind[6] = (TK_context);
169
        
170
		keywordKind[6] = (OCLBacktrackingParsersym.TK_context);
170
	  
171
	  
171
	
172
	
172
        //
173
        //
173
        // Rule 7:  KeyWord ::= p a c k a g e
174
        // Rule 7:  KeyWord ::= p a c k a g e
174
        //
175
        //
175
		keywordKind[7] = (TK_package);
176
        
177
		keywordKind[7] = (OCLBacktrackingParsersym.TK_package);
176
	  
178
	  
177
	
179
	
178
        //
180
        //
179
        // Rule 8:  KeyWord ::= e n d p a c k a g e
181
        // Rule 8:  KeyWord ::= e n d p a c k a g e
180
        //
182
        //
181
		keywordKind[8] = (TK_endpackage);
183
        
184
		keywordKind[8] = (OCLBacktrackingParsersym.TK_endpackage);
182
	  
185
	  
183
	
186
	
184
        //
187
        //
185
        // Rule 9:  KeyWord ::= d e f
188
        // Rule 9:  KeyWord ::= d e f
186
        //
189
        //
187
		keywordKind[9] = (TK_def);
190
        
191
		keywordKind[9] = (OCLBacktrackingParsersym.TK_def);
188
	  
192
	  
189
	
193
	
190
        //
194
        //
191
        // Rule 10:  KeyWord ::= d e r i v e
195
        // Rule 10:  KeyWord ::= d e r i v e
192
        //
196
        //
193
		keywordKind[10] = (TK_derive);
197
        
198
		keywordKind[10] = (OCLBacktrackingParsersym.TK_derive);
194
	  
199
	  
195
	
200
	
196
        //
201
        //
197
        // Rule 11:  KeyWord ::= i n i t
202
        // Rule 11:  KeyWord ::= i n i t
198
        //
203
        //
199
		keywordKind[11] = (TK_init);
204
        
205
		keywordKind[11] = (OCLBacktrackingParsersym.TK_init);
200
	  
206
	  
201
	
207
	
202
        //
208
        //
203
        // Rule 12:  KeyWord ::= i f
209
        // Rule 12:  KeyWord ::= i f
204
        //
210
        //
205
		keywordKind[12] = (TK_if);
211
        
212
		keywordKind[12] = (OCLBacktrackingParsersym.TK_if);
206
	  
213
	  
207
	
214
	
208
        //
215
        //
209
        // Rule 13:  KeyWord ::= t h e n
216
        // Rule 13:  KeyWord ::= t h e n
210
        //
217
        //
211
		keywordKind[13] = (TK_then);
218
        
219
		keywordKind[13] = (OCLBacktrackingParsersym.TK_then);
212
	  
220
	  
213
	
221
	
214
        //
222
        //
215
        // Rule 14:  KeyWord ::= e l s e
223
        // Rule 14:  KeyWord ::= e l s e
216
        //
224
        //
217
		keywordKind[14] = (TK_else);
225
        
226
		keywordKind[14] = (OCLBacktrackingParsersym.TK_else);
218
	  
227
	  
219
	
228
	
220
        //
229
        //
221
        // Rule 15:  KeyWord ::= e n d i f
230
        // Rule 15:  KeyWord ::= e n d i f
222
        //
231
        //
223
		keywordKind[15] = (TK_endif);
232
        
233
		keywordKind[15] = (OCLBacktrackingParsersym.TK_endif);
224
	  
234
	  
225
	
235
	
226
        //
236
        //
227
        // Rule 16:  KeyWord ::= a n d
237
        // Rule 16:  KeyWord ::= a n d
228
        //
238
        //
229
		keywordKind[16] = (TK_and);
239
        
240
		keywordKind[16] = (OCLBacktrackingParsersym.TK_and);
230
	  
241
	  
231
	
242
	
232
        //
243
        //
233
        // Rule 17:  KeyWord ::= o r
244
        // Rule 17:  KeyWord ::= o r
234
        //
245
        //
235
		keywordKind[17] = (TK_or);
246
        
247
		keywordKind[17] = (OCLBacktrackingParsersym.TK_or);
236
	  
248
	  
237
	
249
	
238
        //
250
        //
239
        // Rule 18:  KeyWord ::= x o r
251
        // Rule 18:  KeyWord ::= x o r
240
        //
252
        //
241
		keywordKind[18] = (TK_xor);
253
        
254
		keywordKind[18] = (OCLBacktrackingParsersym.TK_xor);
242
	  
255
	  
243
	
256
	
244
        //
257
        //
245
        // Rule 19:  KeyWord ::= n o t
258
        // Rule 19:  KeyWord ::= n o t
246
        //
259
        //
247
		keywordKind[19] = (TK_not);
260
        
261
		keywordKind[19] = (OCLBacktrackingParsersym.TK_not);
248
	  
262
	  
249
	
263
	
250
        //
264
        //
251
        // Rule 20:  KeyWord ::= i m p l i e s
265
        // Rule 20:  KeyWord ::= i m p l i e s
252
        //
266
        //
253
		keywordKind[20] = (TK_implies);
267
        
268
		keywordKind[20] = (OCLBacktrackingParsersym.TK_implies);
254
	  
269
	  
255
	
270
	
256
        //
271
        //
257
        // Rule 21:  KeyWord ::= l e t
272
        // Rule 21:  KeyWord ::= l e t
258
        //
273
        //
259
		keywordKind[21] = (TK_let);
274
        
275
		keywordKind[21] = (OCLBacktrackingParsersym.TK_let);
260
	  
276
	  
261
	
277
	
262
        //
278
        //
263
        // Rule 22:  KeyWord ::= i n
279
        // Rule 22:  KeyWord ::= i n
264
        //
280
        //
265
		keywordKind[22] = (TK_in);
281
        
282
		keywordKind[22] = (OCLBacktrackingParsersym.TK_in);
266
	  
283
	  
267
	
284
	
268
        //
285
        //
269
        // Rule 23:  KeyWord ::= t r u e
286
        // Rule 23:  KeyWord ::= t r u e
270
        //
287
        //
271
		keywordKind[23] = (TK_true);
288
        
289
		keywordKind[23] = (OCLBacktrackingParsersym.TK_true);
272
	  
290
	  
273
	
291
	
274
        //
292
        //
275
        // Rule 24:  KeyWord ::= f a l s e
293
        // Rule 24:  KeyWord ::= f a l s e
276
        //
294
        //
277
		keywordKind[24] = (TK_false);
295
        
296
		keywordKind[24] = (OCLBacktrackingParsersym.TK_false);
278
	  
297
	  
279
	
298
	
280
        //
299
        //
281
        // Rule 25:  KeyWord ::= S e t
300
        // Rule 25:  KeyWord ::= S e t
282
        //
301
        //
283
		keywordKind[25] = (TK_Set);
302
        
303
		keywordKind[25] = (OCLBacktrackingParsersym.TK_Set);
284
	  
304
	  
285
	
305
	
286
        //
306
        //
287
        // Rule 26:  KeyWord ::= B a g
307
        // Rule 26:  KeyWord ::= B a g
288
        //
308
        //
289
		keywordKind[26] = (TK_Bag);
309
        
310
		keywordKind[26] = (OCLBacktrackingParsersym.TK_Bag);
290
	  
311
	  
291
	
312
	
292
        //
313
        //
293
        // Rule 27:  KeyWord ::= S e q u e n c e
314
        // Rule 27:  KeyWord ::= S e q u e n c e
294
        //
315
        //
295
		keywordKind[27] = (TK_Sequence);
316
        
317
		keywordKind[27] = (OCLBacktrackingParsersym.TK_Sequence);
296
	  
318
	  
297
	
319
	
298
        //
320
        //
299
        // Rule 28:  KeyWord ::= C o l l e c t i o n
321
        // Rule 28:  KeyWord ::= C o l l e c t i o n
300
        //
322
        //
301
		keywordKind[28] = (TK_Collection);
323
        
324
		keywordKind[28] = (OCLBacktrackingParsersym.TK_Collection);
302
	  
325
	  
303
	
326
	
304
        //
327
        //
305
        // Rule 29:  KeyWord ::= O r d e r e d S e t
328
        // Rule 29:  KeyWord ::= O r d e r e d S e t
306
        //
329
        //
307
		keywordKind[29] = (TK_OrderedSet);
330
        
331
		keywordKind[29] = (OCLBacktrackingParsersym.TK_OrderedSet);
308
	  
332
	  
309
	
333
	
310
        //
334
        //
311
        // Rule 30:  KeyWord ::= i t e r a t e
335
        // Rule 30:  KeyWord ::= i t e r a t e
312
        //
336
        //
313
		keywordKind[30] = (TK_iterate);
337
        
338
		keywordKind[30] = (OCLBacktrackingParsersym.TK_iterate);
314
	  
339
	  
315
	
340
	
316
        //
341
        //
317
        // Rule 31:  KeyWord ::= f o r A l l
342
        // Rule 31:  KeyWord ::= f o r A l l
318
        //
343
        //
319
		keywordKind[31] = (TK_forAll);
344
        
345
		keywordKind[31] = (OCLBacktrackingParsersym.TK_forAll);
320
	  
346
	  
321
	
347
	
322
        //
348
        //
323
        // Rule 32:  KeyWord ::= e x i s t s
349
        // Rule 32:  KeyWord ::= e x i s t s
324
        //
350
        //
325
		keywordKind[32] = (TK_exists);
351
        
352
		keywordKind[32] = (OCLBacktrackingParsersym.TK_exists);
326
	  
353
	  
327
	
354
	
328
        //
355
        //
329
        // Rule 33:  KeyWord ::= i s U n i q u e
356
        // Rule 33:  KeyWord ::= i s U n i q u e
330
        //
357
        //
331
		keywordKind[33] = (TK_isUnique);
358
        
359
		keywordKind[33] = (OCLBacktrackingParsersym.TK_isUnique);
332
	  
360
	  
333
	
361
	
334
        //
362
        //
335
        // Rule 34:  KeyWord ::= a n y
363
        // Rule 34:  KeyWord ::= a n y
336
        //
364
        //
337
		keywordKind[34] = (TK_any);
365
        
366
		keywordKind[34] = (OCLBacktrackingParsersym.TK_any);
338
	  
367
	  
339
	
368
	
340
        //
369
        //
341
        // Rule 35:  KeyWord ::= o n e
370
        // Rule 35:  KeyWord ::= o n e
342
        //
371
        //
343
		keywordKind[35] = (TK_one);
372
        
373
		keywordKind[35] = (OCLBacktrackingParsersym.TK_one);
344
	  
374
	  
345
	
375
	
346
        //
376
        //
347
        // Rule 36:  KeyWord ::= c o l l e c t
377
        // Rule 36:  KeyWord ::= c o l l e c t
348
        //
378
        //
349
		keywordKind[36] = (TK_collect);
379
        
380
		keywordKind[36] = (OCLBacktrackingParsersym.TK_collect);
350
	  
381
	  
351
	
382
	
352
        //
383
        //
353
        // Rule 37:  KeyWord ::= s e l e c t
384
        // Rule 37:  KeyWord ::= s e l e c t
354
        //
385
        //
355
		keywordKind[37] = (TK_select);
386
        
387
		keywordKind[37] = (OCLBacktrackingParsersym.TK_select);
356
	  
388
	  
357
	
389
	
358
        //
390
        //
359
        // Rule 38:  KeyWord ::= r e j e c t
391
        // Rule 38:  KeyWord ::= r e j e c t
360
        //
392
        //
361
		keywordKind[38] = (TK_reject);
393
        
394
		keywordKind[38] = (OCLBacktrackingParsersym.TK_reject);
362
	  
395
	  
363
	
396
	
364
        //
397
        //
365
        // Rule 39:  KeyWord ::= c o l l e c t N e s t e d
398
        // Rule 39:  KeyWord ::= c o l l e c t N e s t e d
366
        //
399
        //
367
		keywordKind[39] = (TK_collectNested);
400
        
401
		keywordKind[39] = (OCLBacktrackingParsersym.TK_collectNested);
368
	  
402
	  
369
	
403
	
370
        //
404
        //
371
        // Rule 40:  KeyWord ::= s o r t e d B y
405
        // Rule 40:  KeyWord ::= s o r t e d B y
372
        //
406
        //
373
		keywordKind[40] = (TK_sortedBy);
407
        
408
		keywordKind[40] = (OCLBacktrackingParsersym.TK_sortedBy);
374
	  
409
	  
375
	
410
	
376
        //
411
        //
377
        // Rule 41:  KeyWord ::= c l o s u r e
412
        // Rule 41:  KeyWord ::= c l o s u r e
378
        //
413
        //
379
		keywordKind[41] = (TK_closure);
414
        
415
		keywordKind[41] = (OCLBacktrackingParsersym.TK_closure);
380
	  
416
	  
381
	
417
	
382
        //
418
        //
383
        // Rule 42:  KeyWord ::= o c l I s K i n d O f
419
        // Rule 42:  KeyWord ::= o c l I s K i n d O f
384
        //
420
        //
385
		keywordKind[42] = (TK_oclIsKindOf);
421
        
422
		keywordKind[42] = (OCLBacktrackingParsersym.TK_oclIsKindOf);
386
	  
423
	  
387
	
424
	
388
        //
425
        //
389
        // Rule 43:  KeyWord ::= o c l I s T y p e O f
426
        // Rule 43:  KeyWord ::= o c l I s T y p e O f
390
        //
427
        //
391
		keywordKind[43] = (TK_oclIsTypeOf);
428
        
429
		keywordKind[43] = (OCLBacktrackingParsersym.TK_oclIsTypeOf);
392
	  
430
	  
393
	
431
	
394
        //
432
        //
395
        // Rule 44:  KeyWord ::= o c l A s T y p e
433
        // Rule 44:  KeyWord ::= o c l A s T y p e
396
        //
434
        //
397
		keywordKind[44] = (TK_oclAsType);
435
        
436
		keywordKind[44] = (OCLBacktrackingParsersym.TK_oclAsType);
398
	  
437
	  
399
	
438
	
400
        //
439
        //
401
        // Rule 45:  KeyWord ::= o c l I s N e w
440
        // Rule 45:  KeyWord ::= o c l I s N e w
402
        //
441
        //
403
		keywordKind[45] = (TK_oclIsNew);
442
        
443
		keywordKind[45] = (OCLBacktrackingParsersym.TK_oclIsNew);
404
	  
444
	  
405
	
445
	
406
        //
446
        //
407
        // Rule 46:  KeyWord ::= o c l I s U n d e f i n e d
447
        // Rule 46:  KeyWord ::= o c l I s U n d e f i n e d
408
        //
448
        //
409
		keywordKind[46] = (TK_oclIsUndefined);
449
        
450
		keywordKind[46] = (OCLBacktrackingParsersym.TK_oclIsUndefined);
410
	  
451
	  
411
	
452
	
412
        //
453
        //
413
        // Rule 47:  KeyWord ::= o c l I s I n v a l i d
454
        // Rule 47:  KeyWord ::= o c l I s I n v a l i d
414
        //
455
        //
415
		keywordKind[47] = (TK_oclIsInvalid);
456
        
457
		keywordKind[47] = (OCLBacktrackingParsersym.TK_oclIsInvalid);
416
	  
458
	  
417
	
459
	
418
        //
460
        //
419
        // Rule 48:  KeyWord ::= o c l I s I n S t a t e
461
        // Rule 48:  KeyWord ::= o c l I s I n S t a t e
420
        //
462
        //
421
		keywordKind[48] = (TK_oclIsInState);
463
        
464
		keywordKind[48] = (OCLBacktrackingParsersym.TK_oclIsInState);
422
	  
465
	  
423
	
466
	
424
        //
467
        //
425
        // Rule 49:  KeyWord ::= a l l I n s t a n c e s
468
        // Rule 49:  KeyWord ::= a l l I n s t a n c e s
426
        //
469
        //
427
		keywordKind[49] = (TK_allInstances);
470
        
471
		keywordKind[49] = (OCLBacktrackingParsersym.TK_allInstances);
428
	  
472
	  
429
	
473
	
430
        //
474
        //
431
        // Rule 50:  KeyWord ::= S t r i n g
475
        // Rule 50:  KeyWord ::= S t r i n g
432
        //
476
        //
433
		keywordKind[50] = (TK_String);
477
        
478
		keywordKind[50] = (OCLBacktrackingParsersym.TK_String);
434
	  
479
	  
435
	
480
	
436
        //
481
        //
437
        // Rule 51:  KeyWord ::= I n t e g e r
482
        // Rule 51:  KeyWord ::= I n t e g e r
438
        //
483
        //
439
		keywordKind[51] = (TK_Integer);
484
        
485
		keywordKind[51] = (OCLBacktrackingParsersym.TK_Integer);
440
	  
486
	  
441
	
487
	
442
        //
488
        //
443
        // Rule 52:  KeyWord ::= U n l i m i t e d N a t u r a l
489
        // Rule 52:  KeyWord ::= U n l i m i t e d N a t u r a l
444
        //
490
        //
445
		keywordKind[52] = (TK_UnlimitedNatural);
491
        
492
		keywordKind[52] = (OCLBacktrackingParsersym.TK_UnlimitedNatural);
446
	  
493
	  
447
	
494
	
448
        //
495
        //
449
        // Rule 53:  KeyWord ::= R e a l
496
        // Rule 53:  KeyWord ::= R e a l
450
        //
497
        //
451
		keywordKind[53] = (TK_Real);
498
        
499
		keywordKind[53] = (OCLBacktrackingParsersym.TK_Real);
452
	  
500
	  
453
	
501
	
454
        //
502
        //
455
        // Rule 54:  KeyWord ::= B o o l e a n
503
        // Rule 54:  KeyWord ::= B o o l e a n
456
        //
504
        //
457
		keywordKind[54] = (TK_Boolean);
505
        
506
		keywordKind[54] = (OCLBacktrackingParsersym.TK_Boolean);
458
	  
507
	  
459
	
508
	
460
        //
509
        //
461
        // Rule 55:  KeyWord ::= T u p l e
510
        // Rule 55:  KeyWord ::= T u p l e
462
        //
511
        //
463
		keywordKind[55] = (TK_Tuple);
512
        
513
		keywordKind[55] = (OCLBacktrackingParsersym.TK_Tuple);
464
	  
514
	  
465
	
515
	
466
        //
516
        //
467
        // Rule 56:  KeyWord ::= O c l A n y
517
        // Rule 56:  KeyWord ::= O c l A n y
468
        //
518
        //
469
		keywordKind[56] = (TK_OclAny);
519
        
520
		keywordKind[56] = (OCLBacktrackingParsersym.TK_OclAny);
470
	  
521
	  
471
	
522
	
472
        //
523
        //
473
        // Rule 57:  KeyWord ::= O c l V o i d
524
        // Rule 57:  KeyWord ::= O c l V o i d
474
        //
525
        //
475
		keywordKind[57] = (TK_OclVoid);
526
        
527
		keywordKind[57] = (OCLBacktrackingParsersym.TK_OclVoid);
476
	  
528
	  
477
	
529
	
478
        //
530
        //
479
        // Rule 58:  KeyWord ::= I n v a l i d
531
        // Rule 58:  KeyWord ::= I n v a l i d
480
        //
532
        //
481
		keywordKind[58] = (TK_Invalid);
533
        
534
		keywordKind[58] = (OCLBacktrackingParsersym.TK_Invalid);
482
	  
535
	  
483
	
536
	
484
        //
537
        //
485
        // Rule 59:  KeyWord ::= O c l M e s s a g e
538
        // Rule 59:  KeyWord ::= O c l M e s s a g e
486
        //
539
        //
487
		keywordKind[59] = (TK_OclMessage);
540
        
541
		keywordKind[59] = (OCLBacktrackingParsersym.TK_OclMessage);
488
	  
542
	  
489
	
543
	
490
        //
544
        //
491
        // Rule 60:  KeyWord ::= n u l l
545
        // Rule 60:  KeyWord ::= n u l l
492
        //
546
        //
493
		keywordKind[60] = (TK_null);
547
        
548
		keywordKind[60] = (OCLBacktrackingParsersym.TK_null);
494
	  
549
	  
495
	
550
	
496
        //
551
        //
497
        // Rule 61:  KeyWord ::= O c l I n v a l i d
552
        // Rule 61:  KeyWord ::= O c l I n v a l i d
498
        //
553
        //
499
		keywordKind[61] = (TK_OclInvalid);
554
        
555
		keywordKind[61] = (OCLBacktrackingParsersym.TK_OclInvalid);
500
	  
556
	  
501
	
557
	
502
        //
558
        //
503
        // Rule 62:  KeyWord ::= a t t r
559
        // Rule 62:  KeyWord ::= a t t r
504
        //
560
        //
505
		keywordKind[62] = (TK_attr);
561
        
562
		keywordKind[62] = (OCLBacktrackingParsersym.TK_attr);
506
	  
563
	  
507
	
564
	
508
        //
565
        //
509
        // Rule 63:  KeyWord ::= o p e r
566
        // Rule 63:  KeyWord ::= o p e r
510
        //
567
        //
511
		keywordKind[63] = (TK_oper);
568
        
569
		keywordKind[63] = (OCLBacktrackingParsersym.TK_oper);
512
	  
570
	  
513
	
571
	
514
515
        for (int i = 0; i < keywordKind.length; i++)
572
        for (int i = 0; i < keywordKind.length; i++)
516
        {
573
        {
517
            if (keywordKind[i] == 0)
574
            if (keywordKind[i] == 0)
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexerprs.java (-54 / +93 lines)
Lines 1-7 Link Here
1
/**
1
/**
2
* <copyright>
2
* <copyright>
3
*
3
*
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others.
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc, Open Canarias S.L., and others.
5
* All rights reserved.   This program and the accompanying materials
5
* All rights reserved.   This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
6
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
7
* which accompanies this distribution, and is available at
Lines 10-32 Link Here
10
* Contributors:
10
* Contributors:
11
*   IBM - Initial API and implementation
11
*   IBM - Initial API and implementation
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*      - Bug 259818
13
*   Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption
14
*
14
*
15
* </copyright>
15
* </copyright>
16
*
16
*
17
* $Id: OCLBacktrackingKWLexerprs.java,v 1.1 2009/01/13 20:31:30 cdamus Exp $
17
* 
18
*/
18
*/
19
19
20
package org.eclipse.ocl.parser.backtracking;
20
package org.eclipse.ocl.parser.backtracking;
21
21
22
/**
22
public class OCLBacktrackingKWLexerprs implements lpg.runtime.ParseTable, OCLBacktrackingKWLexersym {
23
 * The backtracking variant of the OCL keyword lexer parse table.
23
    public final static int ERROR_SYMBOL = 0;
24
 * 
24
    public final int getErrorSymbol() { return ERROR_SYMBOL; }
25
 * @noextend This class is not intended to be subclassed by clients.
25
26
 * 
26
    public final static int SCOPE_UBOUND = 0;
27
 * @since 1.3
27
    public final int getScopeUbound() { return SCOPE_UBOUND; }
28
 */
28
29
public class OCLBacktrackingKWLexerprs implements lpg.lpgjavaruntime.ParseTable, OCLBacktrackingKWLexersym {
29
    public final static int SCOPE_SIZE = 0;
30
    public final int getScopeSize() { return SCOPE_SIZE; }
31
32
    public final static int MAX_NAME_LENGTH = 0;
33
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
34
35
    public final static int NUM_STATES = 256;
36
    public final int getNumStates() { return NUM_STATES; }
37
38
    public final static int NT_OFFSET = 56;
39
    public final int getNtOffset() { return NT_OFFSET; }
40
41
    public final static int LA_STATE_OFFSET = 386;
42
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
43
44
    public final static int MAX_LA = 1;
45
    public final int getMaxLa() { return MAX_LA; }
46
47
    public final static int NUM_RULES = 63;
48
    public final int getNumRules() { return NUM_RULES; }
49
50
    public final static int NUM_NONTERMINALS = 2;
51
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
52
53
    public final static int NUM_SYMBOLS = 58;
54
    public final int getNumSymbols() { return NUM_SYMBOLS; }
55
56
    public final static int SEGMENT_SIZE = 8192;
57
    public final int getSegmentSize() { return SEGMENT_SIZE; }
58
59
    public final static int START_STATE = 64;
60
    public final int getStartState() { return START_STATE; }
61
62
    public final static int IDENTIFIER_SYMBOL = 0;
63
    public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; }
64
65
    public final static int EOFT_SYMBOL = 39;
66
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
67
68
    public final static int EOLT_SYMBOL = 57;
69
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
70
71
    public final static int ACCEPT_ACTION = 322;
72
    public final int getAcceptAction() { return ACCEPT_ACTION; }
73
74
    public final static int ERROR_ACTION = 323;
75
    public final int getErrorAction() { return ERROR_ACTION; }
76
77
    public final static boolean BACKTRACK = false;
78
    public final boolean getBacktrack() { return BACKTRACK; }
79
80
    public final int getStartSymbol() { return lhs(0); }
81
    public final boolean isValidForParser() { return OCLBacktrackingKWLexersym.isValidForParser; }
82
83
84
    public interface IsNullable {
85
        public final static byte isNullable[] = {0,
86
            0,0,0,0,0,0,0,0,0,0,
87
            0,0,0,0,0,0,0,0,0,0,
88
            0,0,0,0,0,0,0,0,0,0,
89
            0,0,0,0,0,0,0,0,0,0,
90
            0,0,0,0,0,0,0,0,0,0,
91
            0,0,0,0,0,0,0,0
92
        };
93
    };
94
    public final static byte isNullable[] = IsNullable.isNullable;
95
    public final boolean isNullable(int index) { return isNullable[index] != 0; }
96
97
    public interface ProsthesesIndex {
98
        public final static byte prosthesesIndex[] = {0,
99
            2,1
100
        };
101
    };
102
    public final static byte prosthesesIndex[] = ProsthesesIndex.prosthesesIndex;
103
    public final int prosthesesIndex(int index) { return prosthesesIndex[index]; }
30
104
31
    public interface IsKeyword {
105
    public interface IsKeyword {
32
        public final static byte isKeyword[] = {0,
106
        public final static byte isKeyword[] = {0,
Lines 35-41 Link Here
35
            0,0,0,0,0,0,0,0,0,0,
109
            0,0,0,0,0,0,0,0,0,0,
36
            0,0,0,0,0,0,0,0,0,0,
110
            0,0,0,0,0,0,0,0,0,0,
37
            0,0,0,0,0,0,0,0,0,0,
111
            0,0,0,0,0,0,0,0,0,0,
38
            0,0,0,0
112
            0,0,0,0,0,0
39
        };
113
        };
40
    };
114
    };
41
    public final static byte isKeyword[] = IsKeyword.isKeyword;
115
    public final static byte isKeyword[] = IsKeyword.isKeyword;
Lines 164-170 Link Here
164
            0,0,0,0,0,0,0,0,0,0,
238
            0,0,0,0,0,0,0,0,0,0,
165
            0,0,0,0,0,0,0,0,0,0,
239
            0,0,0,0,0,0,0,0,0,0,
166
            0,0,0,0,0,0,0,0,0,0,
240
            0,0,0,0,0,0,0,0,0,0,
167
            0,0,0,0,0
241
            0,0,0,0,0,0,0
168
        };
242
        };
169
    };
243
    };
170
    public final static byte termCheck[] = TermCheck.termCheck;
244
    public final static byte termCheck[] = TermCheck.termCheck;
Lines 250-305 Link Here
250
    public final int scopeState(int index) { return 0;}
324
    public final int scopeState(int index) { return 0;}
251
    public final int inSymb(int index) { return 0;}
325
    public final int inSymb(int index) { return 0;}
252
    public final String name(int index) { return null; }
326
    public final String name(int index) { return null; }
253
    public final int getErrorSymbol() { return 0; }
254
    public final int getScopeUbound() { return 0; }
255
    public final int getScopeSize() { return 0; }
256
    public final int getMaxNameLength() { return 0; }
257
258
    public final static int
259
           NUM_STATES        = 256,
260
           NT_OFFSET         = 54,
261
           LA_STATE_OFFSET   = 386,
262
           MAX_LA            = 1,
263
           NUM_RULES         = 63,
264
           NUM_NONTERMINALS  = 2,
265
           NUM_SYMBOLS       = 56,
266
           SEGMENT_SIZE      = 8192,
267
           START_STATE       = 64,
268
           IDENTIFIER_SYMBOL = 0,
269
           EOFT_SYMBOL       = 39,
270
           EOLT_SYMBOL       = 55,
271
           ACCEPT_ACTION     = 322,
272
           ERROR_ACTION      = 323;
273
274
    public final static boolean BACKTRACK = false;
275
276
    public final int getNumStates() { return NUM_STATES; }
277
    public final int getNtOffset() { return NT_OFFSET; }
278
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
279
    public final int getMaxLa() { return MAX_LA; }
280
    public final int getNumRules() { return NUM_RULES; }
281
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
282
    public final int getNumSymbols() { return NUM_SYMBOLS; }
283
    public final int getSegmentSize() { return SEGMENT_SIZE; }
284
    public final int getStartState() { return START_STATE; }
285
    public final int getStartSymbol() { return lhs[0]; }
286
    public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
287
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
288
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
289
    public final int getAcceptAction() { return ACCEPT_ACTION; }
290
    public final int getErrorAction() { return ERROR_ACTION; }
291
    public final boolean isValidForParser() { return isValidForParser; }
292
    public final boolean getBacktrack() { return BACKTRACK; }
293
294
    public final int originalState(int state) { return 0; }
327
    public final int originalState(int state) { return 0; }
295
    public final int asi(int state) { return 0; }
328
    public final int asi(int state) { return 0; }
296
    public final int nasi(int state) { return 0; }
329
    public final int nasi(int state) { return 0; }
297
    public final int inSymbol(int state) { return 0; }
330
    public final int inSymbol(int state) { return 0; }
298
331
332
    /**
333
     * assert(! goto_default);
334
     */
299
    public final int ntAction(int state, int sym) {
335
    public final int ntAction(int state, int sym) {
300
        return baseAction[state + sym];
336
        return baseAction[state + sym];
301
    }
337
    }
302
338
339
    /**
340
     * assert(! shift_default);
341
     */
303
    public final int tAction(int state, int sym) {
342
    public final int tAction(int state, int sym) {
304
        int i = baseAction[state],
343
        int i = baseAction[state],
305
            k = i + sym;
344
            k = i + sym;
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParserprs.java (-77 / +137 lines)
Lines 1-7 Link Here
1
/**
1
/**
2
* <copyright>
2
* <copyright>
3
*
3
*
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others.
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., 
5
* Open Canarias S.L. and others.
5
* All rights reserved.   This program and the accompanying materials
6
* All rights reserved.   This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
7
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
8
* which accompanies this distribution, and is available at
Lines 13-35 Link Here
13
*   E.D.Willink - Remove unnecessary warning suppression
14
*   E.D.Willink - Remove unnecessary warning suppression
14
*   E.D.Willink - Bugs 225493, 243976, 259818
15
*   E.D.Willink - Bugs 225493, 243976, 259818
15
*   Zeligsoft - Bug 243976
16
*   Zeligsoft - Bug 243976
17
*   Borland - Bug 242880
18
*   Adolfo Sanchez- Barbudo Herrera - LPG v 2.0.17 adoption
16
*
19
*
17
* </copyright>
20
* </copyright>
18
*
21
*
19
* $Id: OCLBacktrackingParserprs.java,v 1.1 2009/01/13 20:31:30 cdamus Exp $
22
* $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $
20
*/
23
*/
21
24
22
package org.eclipse.ocl.parser.backtracking;
25
package org.eclipse.ocl.parser.backtracking;
23
26
24
/**
27
public class OCLBacktrackingParserprs implements lpg.runtime.ParseTable, OCLBacktrackingParsersym {
25
 * The backtracking variant of the OCL parser parse table.
28
    public final static int ERROR_SYMBOL = 1;
26
 * 
29
    public final int getErrorSymbol() { return ERROR_SYMBOL; }
27
 * @noextend This class is not intended to be subclassed by clients.
30
28
 * 
31
    public final static int SCOPE_UBOUND = 58;
29
 * @since 1.3
32
    public final int getScopeUbound() { return SCOPE_UBOUND; }
30
 */
33
31
@SuppressWarnings("nls")
34
    public final static int SCOPE_SIZE = 59;
32
public class OCLBacktrackingParserprs implements lpg.lpgjavaruntime.ParseTable, OCLBacktrackingParsersym {
35
    public final int getScopeSize() { return SCOPE_SIZE; }
36
37
    public final static int MAX_NAME_LENGTH = 26;
38
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
39
40
    public final static int NUM_STATES = 241;
41
    public final int getNumStates() { return NUM_STATES; }
42
43
    public final static int NT_OFFSET = 99;
44
    public final int getNtOffset() { return NT_OFFSET; }
45
46
    public final static int LA_STATE_OFFSET = 3795;
47
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
48
49
    public final static int MAX_LA = 2;
50
    public final int getMaxLa() { return MAX_LA; }
51
52
    public final static int NUM_RULES = 328;
53
    public final int getNumRules() { return NUM_RULES; }
54
55
    public final static int NUM_NONTERMINALS = 109;
56
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
57
58
    public final static int NUM_SYMBOLS = 208;
59
    public final int getNumSymbols() { return NUM_SYMBOLS; }
60
61
    public final static int SEGMENT_SIZE = 8192;
62
    public final int getSegmentSize() { return SEGMENT_SIZE; }
63
64
    public final static int START_STATE = 3223;
65
    public final int getStartState() { return START_STATE; }
66
67
    public final static int IDENTIFIER_SYMBOL = 4;
68
    public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; }
69
70
    public final static int EOFT_SYMBOL = 73;
71
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
72
73
    public final static int EOLT_SYMBOL = 73;
74
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
75
76
    public final static int ACCEPT_ACTION = 3466;
77
    public final int getAcceptAction() { return ACCEPT_ACTION; }
78
79
    public final static int ERROR_ACTION = 3467;
80
    public final int getErrorAction() { return ERROR_ACTION; }
81
82
    public final static boolean BACKTRACK = true;
83
    public final boolean getBacktrack() { return BACKTRACK; }
84
85
    public final int getStartSymbol() { return lhs(0); }
86
    public final boolean isValidForParser() { return OCLBacktrackingParsersym.isValidForParser; }
87
88
89
    public interface IsNullable {
90
        public final static byte isNullable[] = {0,
91
            0,0,0,0,0,0,0,0,0,0,
92
            0,0,0,0,0,0,0,0,0,0,
93
            0,0,0,0,0,0,0,0,0,0,
94
            0,0,0,0,0,0,0,0,0,0,
95
            0,0,0,0,0,0,0,0,0,0,
96
            0,0,0,0,0,0,0,0,0,0,
97
            0,0,0,0,0,0,0,0,0,0,
98
            0,0,0,0,0,0,0,0,0,0,
99
            0,0,0,0,0,0,0,0,0,0,
100
            0,0,0,0,0,0,0,0,0,0,
101
            0,0,0,0,0,0,0,0,0,0,
102
            0,0,0,0,0,0,0,0,0,0,
103
            0,0,0,0,0,0,0,0,0,0,
104
            0,0,0,0,0,0,0,0,0,0,
105
            0,0,0,0,0,0,0,0,0,1,
106
            0,0,1,0,0,0,0,1,0,0,
107
            0,0,0,0,0,0,0,0,1,1,
108
            0,1,0,0,0,0,0,0,1,1,
109
            0,0,0,0,1,1,0,0,0,0,
110
            0,0,1,0,0,0,0,0,1,0,
111
            0,1,0,0,0,0,0,0
112
        };
113
    };
114
    public final static byte isNullable[] = IsNullable.isNullable;
115
    public final boolean isNullable(int index) { return isNullable[index] != 0; }
116
117
    public interface ProsthesesIndex {
118
        public final static byte prosthesesIndex[] = {0,
119
            54,9,21,108,62,5,6,7,10,3,
120
            8,15,50,51,11,40,42,44,48,49,
121
            56,57,58,59,60,61,67,68,69,70,
122
            71,41,43,38,39,34,35,36,37,32,
123
            33,30,31,28,29,25,26,27,77,23,
124
            52,53,105,47,109,78,80,81,24,107,
125
            97,98,99,100,88,91,92,4,12,19,
126
            20,22,55,65,66,73,79,83,84,85,
127
            86,87,93,94,96,101,2,13,14,17,
128
            18,45,46,63,64,72,74,75,76,82,
129
            89,90,95,102,103,104,106,1,16
130
        };
131
    };
132
    public final static byte prosthesesIndex[] = ProsthesesIndex.prosthesesIndex;
133
    public final int prosthesesIndex(int index) { return prosthesesIndex[index]; }
33
134
34
    public interface IsKeyword {
135
    public interface IsKeyword {
35
        public final static byte isKeyword[] = {0,
136
        public final static byte isKeyword[] = {0,
Lines 1541-1573 Link Here
1541
1642
1542
    public interface ScopeRhs {
1643
    public interface ScopeRhs {
1543
        public final static char scopeRhs[] = {0,
1644
        public final static char scopeRhs[] = {0,
1544
            151,94,114,0,100,0,151,94,101,0,
1645
            151,94,114,0,1,0,151,94,101,0,
1545
            145,2,0,145,69,0,145,90,145,69,
1646
            145,2,0,145,69,0,145,90,145,69,
1546
            0,43,116,100,0,145,91,145,90,145,
1647
            0,90,145,1,0,145,91,145,90,145,
1547
            69,0,44,116,100,0,43,116,44,116,
1648
            69,0,91,145,1,0,90,145,91,145,
1548
            100,0,153,2,159,110,0,12,0,153,
1649
            1,0,153,2,159,110,0,3,0,153,
1549
            2,159,108,0,153,2,159,168,0,153,
1650
            2,159,108,0,153,2,159,168,0,153,
1550
            2,154,80,102,0,155,2,104,0,180,
1651
            2,154,80,102,0,155,2,104,0,180,
1551
            2,101,89,0,180,2,101,88,0,45,
1652
            2,101,89,0,180,2,101,88,0,84,
1552
            0,44,116,45,0,43,116,44,116,45,
1653
            0,91,145,84,0,90,145,91,145,84,
1553
            0,177,68,0,52,116,0,16,0,0,
1654
            0,177,68,0,83,145,0,79,150,0,
1554
            153,2,150,108,0,153,2,150,110,0,
1655
            153,2,150,108,0,153,2,150,110,0,
1555
            153,2,150,168,0,199,2,52,0,155,
1656
            153,2,150,168,0,199,2,52,0,155,
1556
            37,4,0,7,116,0,145,70,149,81,
1657
            37,4,0,5,145,0,145,70,149,81,
1557
            149,2,187,0,149,81,149,2,187,0,
1658
            149,2,187,0,149,81,149,2,187,0,
1558
            18,116,12,0,149,2,187,0,22,115,
1659
            70,145,3,0,149,2,187,0,81,149,
1559
            18,116,12,0,145,70,149,2,187,0,
1660
            70,145,3,0,145,70,149,2,187,0,
1560
            145,70,149,31,149,2,188,0,149,31,
1661
            145,70,149,31,149,2,188,0,149,31,
1561
            149,2,188,0,149,2,188,0,19,115,
1662
            149,2,188,0,149,2,188,0,31,149,
1562
            18,116,12,0,145,70,149,2,188,0,
1663
            70,145,3,0,145,70,149,2,188,0,
1563
            145,2,188,0,195,93,52,0,14,0,
1664
            145,2,188,0,195,93,52,0,74,0,
1564
            193,93,104,0,153,2,101,80,102,0,
1665
            193,93,104,0,153,2,101,80,102,0,
1565
            153,2,61,0,133,0,4,130,0,3,
1666
            153,2,61,0,133,0,9,131,0,8,
1566
            130,0,137,0,2,128,0,1,128,0,
1667
            131,0,137,0,29,134,0,28,134,0,
1567
            139,0,9,125,0,8,125,0,6,125,
1668
            139,0,13,136,0,12,136,0,11,136,
1568
            0,5,125,0,141,0,10,123,0,7,
1669
            0,10,136,0,141,0,7,140,0,5,
1569
            123,0,143,0,48,121,0,47,121,0,
1670
            140,0,143,0,27,142,0,26,142,0,
1570
            46,121,0
1671
            25,142,0
1571
        };
1672
        };
1572
    };
1673
    };
1573
    public final static char scopeRhs[] = ScopeRhs.scopeRhs;
1674
    public final static char scopeRhs[] = ScopeRhs.scopeRhs;
Lines 1791-1843 Link Here
1791
    public final static String name[] = Name.name;
1892
    public final static String name[] = Name.name;
1792
    public final String name(int index) { return name[index]; }
1893
    public final String name(int index) { return name[index]; }
1793
1894
1794
    public final static int
1795
           ERROR_SYMBOL      = 1,
1796
           SCOPE_UBOUND      = 58,
1797
           SCOPE_SIZE        = 59,
1798
           MAX_NAME_LENGTH   = 26;
1799
1800
    public final int getErrorSymbol() { return ERROR_SYMBOL; }
1801
    public final int getScopeUbound() { return SCOPE_UBOUND; }
1802
    public final int getScopeSize() { return SCOPE_SIZE; }
1803
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
1804
1805
    public final static int
1806
           NUM_STATES        = 241,
1807
           NT_OFFSET         = 99,
1808
           LA_STATE_OFFSET   = 3795,
1809
           MAX_LA            = 2,
1810
           NUM_RULES         = 328,
1811
           NUM_NONTERMINALS  = 109,
1812
           NUM_SYMBOLS       = 208,
1813
           SEGMENT_SIZE      = 8192,
1814
           START_STATE       = 3223,
1815
           IDENTIFIER_SYMBOL = 4,
1816
           EOFT_SYMBOL       = 73,
1817
           EOLT_SYMBOL       = 73,
1818
           ACCEPT_ACTION     = 3466,
1819
           ERROR_ACTION      = 3467;
1820
1821
    public final static boolean BACKTRACK = true;
1822
1823
    public final int getNumStates() { return NUM_STATES; }
1824
    public final int getNtOffset() { return NT_OFFSET; }
1825
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
1826
    public final int getMaxLa() { return MAX_LA; }
1827
    public final int getNumRules() { return NUM_RULES; }
1828
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
1829
    public final int getNumSymbols() { return NUM_SYMBOLS; }
1830
    public final int getSegmentSize() { return SEGMENT_SIZE; }
1831
    public final int getStartState() { return START_STATE; }
1832
    public final int getStartSymbol() { return lhs[0]; }
1833
    public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
1834
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
1835
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
1836
    public final int getAcceptAction() { return ACCEPT_ACTION; }
1837
    public final int getErrorAction() { return ERROR_ACTION; }
1838
    public final boolean isValidForParser() { return isValidForParser; }
1839
    public final boolean getBacktrack() { return BACKTRACK; }
1840
1841
    public final int originalState(int state) {
1895
    public final int originalState(int state) {
1842
        return -baseCheck[state];
1896
        return -baseCheck[state];
1843
    }
1897
    }
Lines 1851-1860 Link Here
1851
        return inSymb[originalState(state)];
1905
        return inSymb[originalState(state)];
1852
    }
1906
    }
1853
1907
1908
    /**
1909
     * assert(! goto_default);
1910
     */
1854
    public final int ntAction(int state, int sym) {
1911
    public final int ntAction(int state, int sym) {
1855
        return baseAction[state + sym];
1912
        return baseAction[state + sym];
1856
    }
1913
    }
1857
1914
1915
    /**
1916
     * assert(! shift_default);
1917
     */
1858
    public final int tAction(int state, int sym) {
1918
    public final int tAction(int state, int sym) {
1859
        int i = baseAction[state],
1919
        int i = baseAction[state],
1860
            k = i + sym;
1920
            k = i + sym;
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingParsersym.java (-12 / +7 lines)
Lines 1-7 Link Here
1
/**
1
/**
2
* <copyright>
2
* <copyright>
3
*
3
*
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others.
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., 
5
* Open Canarias S.L. and others.
5
* All rights reserved.   This program and the accompanying materials
6
* All rights reserved.   This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
7
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
8
* which accompanies this distribution, and is available at
Lines 13-35 Link Here
13
*   E.D.Willink - Remove unnecessary warning suppression
14
*   E.D.Willink - Remove unnecessary warning suppression
14
*   E.D.Willink - Bugs 225493, 243976, 259818
15
*   E.D.Willink - Bugs 225493, 243976, 259818
15
*   Zeligsoft - Bug 243976
16
*   Zeligsoft - Bug 243976
17
*   Borland - Bug 242880
18
*   Adolfo Sanchez- Barbudo Herrera - LPG v 2.0.17 adoption
16
*
19
*
17
* </copyright>
20
* </copyright>
18
*
21
*
19
* $Id: OCLBacktrackingParsersym.java,v 1.1 2009/01/13 20:31:30 cdamus Exp $
22
* $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $
20
*/
23
*/
21
24
22
package org.eclipse.ocl.parser.backtracking;
25
package org.eclipse.ocl.parser.backtracking;
23
26
24
/**
25
 * The backtracking variant of the OCL parser symbol table.
26
 * 
27
 * @noimplement This interface is not intended to be implemented by clients.
28
 * @noextend This interface is not intended to be extended by clients.
29
 * 
30
 * @since 1.3
31
 */
32
@SuppressWarnings("nls")
33
public interface OCLBacktrackingParsersym {
27
public interface OCLBacktrackingParsersym {
34
    public final static int
28
    public final static int
35
      TK_NUMERIC_OPERATION = 61,
29
      TK_NUMERIC_OPERATION = 61,
Lines 132-138 Link Here
132
      TK_INTEGER_RANGE_START = 97,
126
      TK_INTEGER_RANGE_START = 97,
133
      TK_ERROR_TOKEN = 1;
127
      TK_ERROR_TOKEN = 1;
134
128
135
      public final static String orderedTerminalSymbols[] = {
129
    public final static String orderedTerminalSymbols[] = {
136
                 "",
130
                 "",
137
                 "ERROR_TOKEN",
131
                 "ERROR_TOKEN",
138
                 "LPAREN",
132
                 "LPAREN",
Lines 235-239 Link Here
235
                 "oper"
229
                 "oper"
236
             };
230
             };
237
231
232
    public final static int numTokenKinds = orderedTerminalSymbols.length;
238
    public final static boolean isValidForParser = true;
233
    public final static boolean isValidForParser = true;
239
}
234
}
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingLexerprs.java (-283 / +356 lines)
Lines 1-7 Link Here
1
/**
1
/**
2
* <copyright>
2
* <copyright>
3
*
3
*
4
* Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., and others.
4
* Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., Open Canarias S.L. and others.
5
* All rights reserved.   This program and the accompanying materials
5
* All rights reserved.   This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
6
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
7
* which accompanies this distribution, and is available at
Lines 10-32 Link Here
10
* Contributors:
10
* Contributors:
11
*   IBM - Initial API and implementation
11
*   IBM - Initial API and implementation
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
12
*   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
13
*      - Bug 259818
13
*               - Bug 259818
14
*   Borland - Bug 242880
15
*   Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption
14
*
16
*
15
* </copyright>
17
* </copyright>
16
*
18
*
17
* $Id: OCLBacktrackingLexerprs.java,v 1.1 2009/01/13 20:31:30 cdamus Exp $
19
* $Id$
18
*/
20
*/
19
21
20
package org.eclipse.ocl.parser.backtracking;
22
package org.eclipse.ocl.parser.backtracking;
21
23
22
/**
24
public class OCLBacktrackingLexerprs implements lpg.runtime.ParseTable, OCLBacktrackingLexersym {
23
 * The backtracking variant of the OCL lexer parse table.
25
    public final static int ERROR_SYMBOL = 0;
24
 * 
26
    public final int getErrorSymbol() { return ERROR_SYMBOL; }
25
 * @noextend This class is not intended to be subclassed by clients.
27
26
 * 
28
    public final static int SCOPE_UBOUND = 0;
27
 * @since 1.3
29
    public final int getScopeUbound() { return SCOPE_UBOUND; }
28
 */
30
29
public class OCLBacktrackingLexerprs implements lpg.lpgjavaruntime.ParseTable, OCLBacktrackingLexersym {
31
    public final static int SCOPE_SIZE = 0;
32
    public final int getScopeSize() { return SCOPE_SIZE; }
33
34
    public final static int MAX_NAME_LENGTH = 0;
35
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
36
37
    public final static int NUM_STATES = 50;
38
    public final int getNumStates() { return NUM_STATES; }
39
40
    public final static int NT_OFFSET = 103;
41
    public final int getNtOffset() { return NT_OFFSET; }
42
43
    public final static int LA_STATE_OFFSET = 824;
44
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
45
46
    public final static int MAX_LA = 1;
47
    public final int getMaxLa() { return MAX_LA; }
48
49
    public final static int NUM_RULES = 309;
50
    public final int getNumRules() { return NUM_RULES; }
51
52
    public final static int NUM_NONTERMINALS = 44;
53
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
54
55
    public final static int NUM_SYMBOLS = 147;
56
    public final int getNumSymbols() { return NUM_SYMBOLS; }
57
58
    public final static int SEGMENT_SIZE = 8192;
59
    public final int getSegmentSize() { return SEGMENT_SIZE; }
60
61
    public final static int START_STATE = 310;
62
    public final int getStartState() { return START_STATE; }
63
64
    public final static int IDENTIFIER_SYMBOL = 0;
65
    public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; }
66
67
    public final static int EOFT_SYMBOL = 99;
68
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
69
70
    public final static int EOLT_SYMBOL = 104;
71
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
72
73
    public final static int ACCEPT_ACTION = 514;
74
    public final int getAcceptAction() { return ACCEPT_ACTION; }
75
76
    public final static int ERROR_ACTION = 515;
77
    public final int getErrorAction() { return ERROR_ACTION; }
78
79
    public final static boolean BACKTRACK = false;
80
    public final boolean getBacktrack() { return BACKTRACK; }
81
82
    public final int getStartSymbol() { return lhs(0); }
83
    public final boolean isValidForParser() { return OCLBacktrackingLexersym.isValidForParser; }
84
85
86
    public interface IsNullable {
87
        public final static byte isNullable[] = {0,
88
            0,0,0,0,0,0,0,0,0,0,
89
            0,0,0,0,0,0,0,0,0,0,
90
            0,0,0,0,0,0,0,0,0,0,
91
            0,0,0,0,0,0,0,0,0,0,
92
            0,0,0,0,0,0,0,0,0,0,
93
            0,0,0,0,0,0,0,0,0,0,
94
            0,0,0,0,0,0,0,0,0,0,
95
            0,0,0,0,0,0,0,0,0,0,
96
            0,0,0,0,0,0,0,0,0,0,
97
            0,0,0,0,0,0,0,0,0,0,
98
            0,0,0,0,0,0,0,0,0,0,
99
            0,0,0,0,0,0,1,0,0,0,
100
            0,0,0,0,0,0,0,0,0,0,
101
            0,1,0,0,0,0,0,0,0,0,
102
            0,0,0,0,0,0,0
103
        };
104
    };
105
    public final static byte isNullable[] = IsNullable.isNullable;
106
    public final boolean isNullable(int index) { return isNullable[index] != 0; }
107
108
    public interface ProsthesesIndex {
109
        public final static byte prosthesesIndex[] = {0,
110
            20,25,26,27,35,4,15,37,40,43,
111
            24,5,3,6,17,18,23,32,34,36,
112
            41,42,2,7,8,9,10,11,12,13,
113
            14,16,19,33,38,39,44,1,21,22,
114
            28,29,30,31
115
        };
116
    };
117
    public final static byte prosthesesIndex[] = ProsthesesIndex.prosthesesIndex;
118
    public final int prosthesesIndex(int index) { return prosthesesIndex[index]; }
30
119
31
    public interface IsKeyword {
120
    public interface IsKeyword {
32
        public final static byte isKeyword[] = {0,
121
        public final static byte isKeyword[] = {0,
Lines 74-86 Link Here
74
            1,1,1,1,1,1,1,1,1,1,
163
            1,1,1,1,1,1,1,1,1,1,
75
            1,1,1,1,1,1,1,1,1,1,
164
            1,1,1,1,1,1,1,1,1,1,
76
            1,1,1,1,1,1,1,1,1,1,
165
            1,1,1,1,1,1,1,1,1,1,
166
            1,1,2,1,1,1,1,1,1,1,
77
            1,1,1,1,1,1,1,1,1,1,
167
            1,1,1,1,1,1,1,1,1,1,
78
            1,1,1,1,1,1,1,1,1,1,
168
            1,1,1,1,1,1,1,1,1,1,
79
            1,1,1,1,1,1,1,1,1,1,
169
            2,2,1,2,1,2,0,1,3,3,
80
            1,1,1,1,1,1,1,1,1,1,
170
            3,3,3,3,3,4,4,3,3
81
            1,1,1,1,1,1,1,2,2,1,
82
            2,1,2,0,1,3,3,3,3,3,
83
            3,3,4,4,3,3
84
        };
171
        };
85
    };
172
    };
86
    public final static byte baseCheck[] = BaseCheck.baseCheck;
173
    public final static byte baseCheck[] = BaseCheck.baseCheck;
Lines 90-146 Link Here
90
177
91
    public interface BaseAction {
178
    public interface BaseAction {
92
        public final static char baseAction[] = {
179
        public final static char baseAction[] = {
93
            21,21,21,21,21,21,21,21,21,21,
180
            23,23,23,23,23,23,23,23,23,23,
94
            21,21,21,21,21,21,21,21,21,21,
181
            23,23,23,23,23,23,23,23,23,23,
95
            21,21,21,21,21,21,21,21,21,21,
182
            23,23,23,23,23,23,23,23,23,23,
96
            21,21,21,21,21,21,21,21,21,21,
183
            23,23,23,23,23,23,23,23,23,23,
97
            21,22,23,23,23,27,27,27,27,28,
184
            23,24,25,25,25,29,29,29,29,30,
98
            28,26,26,6,6,35,35,30,13,13,
185
            30,28,28,7,7,39,39,32,15,15,
99
            13,9,9,9,9,9,2,2,2,2,
186
            15,11,11,11,11,11,2,2,2,2,
100
            3,3,3,3,3,3,3,3,3,3,
187
            3,3,3,3,3,3,3,3,3,3,
101
            3,3,3,3,3,3,3,3,3,3,
188
            3,3,3,3,3,3,3,3,3,3,
102
            3,3,3,3,3,3,4,4,4,4,
189
            3,3,3,3,3,3,4,4,4,4,
103
            4,4,4,4,4,4,4,4,4,4,
190
            4,4,4,4,4,4,4,4,4,4,
104
            4,4,4,4,4,4,4,4,4,4,
191
            4,4,4,4,4,4,4,4,4,4,
105
            4,4,1,1,1,1,1,1,1,1,
192
            4,4,1,1,1,1,1,1,1,1,
106
            1,1,37,37,37,37,37,37,37,37,
193
            1,1,41,41,41,41,41,41,41,41,
107
            38,38,38,38,38,38,38,38,38,38,
194
            42,42,42,42,42,42,42,42,42,42,
108
            38,38,36,36,39,39,39,15,15,40,
195
            42,42,40,40,43,43,43,17,17,44,
109
            40,29,29,11,11,11,11,11,32,32,
196
            44,31,31,13,13,13,13,13,34,34,
110
            32,32,32,32,32,32,32,32,32,32,
197
            34,34,34,34,34,34,34,34,34,34,
111
            32,32,32,32,32,32,32,32,32,32,
198
            34,34,34,34,34,34,34,34,34,34,
112
            32,32,32,32,32,32,32,32,17,17,
199
            34,34,34,34,34,34,34,34,19,19,
113
            17,17,17,17,17,17,17,17,17,17,
200
            19,19,19,19,19,19,19,19,19,19,
114
            17,17,17,17,17,17,17,17,17,17,
201
            19,19,19,19,19,19,19,19,19,19,
115
            17,17,17,17,17,17,17,18,18,18,
202
            19,19,19,19,19,19,19,5,5,5,
116
            18,18,18,18,18,18,18,18,18,18,
203
            5,5,5,5,5,5,5,5,5,5,
117
            18,18,18,18,18,18,18,18,18,18,
204
            5,5,5,5,5,5,5,5,5,5,
118
            18,18,18,18,18,18,7,7,7,7,
205
            5,5,5,5,5,20,20,8,8,35,
119
            7,7,7,7,7,7,7,7,7,7,
206
            35,35,35,9,16,16,16,16,33,33,
120
            7,7,7,7,7,7,7,7,7,7,
207
            33,33,33,33,33,33,36,36,36,36,
121
            7,7,7,7,7,7,14,14,14,14,
208
            21,21,21,21,21,10,10,10,10,10,
122
            31,31,31,31,31,31,31,31,19,19,
209
            10,6,22,37,37,12,12,14,14,18,
123
            19,19,19,8,8,8,8,8,5,20,
210
            26,26,26,26,26,26,26,26,26,27,
124
            33,33,10,10,12,12,16,24,24,24,
211
            988,486,485,485,485,1426,2,339,1333,326,
125
            24,24,24,24,24,24,25,891,478,472,
212
            1377,487,1380,493,1082,326,1366,54,488,1427,
126
            472,472,2,354,1236,344,479,1280,491,1283,
213
            43,162,318,322,6,7,8,9,478,1320,
127
            344,1247,408,480,1269,54,162,408,339,6,
214
            54,320,315,309,490,490,490,490,490,490,
128
            7,8,9,421,1223,54,337,488,309,481,
215
            1314,490,490,490,44,392,318,405,309,490,
129
            481,481,481,481,985,481,481,44,431,334,
216
            490,490,490,490,490,1087,490,490,490,1384,
130
            427,309,481,481,481,481,481,1330,481,481,
217
            392,1385,430,406,409,409,409,409,409,409,
131
            304,431,1217,437,406,457,457,457,457,457,
218
            1165,409,409,409,1243,409,891,424,424,424,
132
            990,457,457,1287,457,794,466,466,466,466,
219
            424,424,600,296,296,296,296,296,296,1428,
133
            1291,54,1,47,47,47,47,402,1307,54,
220
            296,296,296,1388,54,100,424,424,424,697,
134
            1288,47,1068,466,466,466,47,1318,54,47,
221
            296,296,296,296,296,296,1313,296,296,296,
135
            1146,205,52,52,52,52,1331,100,466,1216,
222
            304,1404,54,424,794,294,294,294,294,294,
136
            473,503,313,313,313,313,313,986,313,313,
223
            1083,1,47,47,47,47,503,263,263,263,
137
            994,400,496,496,496,1219,400,1069,1258,417,
224
            263,263,47,1316,294,294,294,47,1166,431,
138
            1333,496,52,52,417,1289,496,600,313,313,
225
            47,1091,403,498,498,498,1344,421,403,1355,
139
            313,313,313,1332,313,313,697,311,311,311,
226
            467,473,1430,421,498,1386,467,1415,54,498,
140
            311,1220,1334,103,45,45,45,45,1335,1336,
227
            1429,263,263,103,45,45,45,45,205,52,
141
            1337,1281,45,506,311,311,311,45,1329,506,
228
            52,52,52,1317,45,1431,1432,1433,1434,45,
142
            45,1073,165,164,164,164,1148,165,164,164,
229
            1378,515,45,1170,165,164,164,164,1245,165,
143
            164,43,506,334,506,506
230
            164,164,164,515,515,515,515,515,515,515,
231
            515,52,52,515,515
144
        };
232
        };
145
    };
233
    };
146
    public final static char baseAction[] = BaseAction.baseAction;
234
    public final static char baseAction[] = BaseAction.baseAction;
Lines 236-242 Link Here
236
            37,38,39,40,41,42,43,44,45,46,
324
            37,38,39,40,41,42,43,44,45,46,
237
            47,48,49,50,51,52,53,54,55,56,
325
            47,48,49,50,51,52,53,54,55,56,
238
            57,58,59,60,61,62,63,64,65,66,
326
            57,58,59,60,61,62,63,64,65,66,
239
            67,68,69,70,71,72,0,74,75,76,
327
            67,68,69,70,71,72,73,74,75,76,
240
            77,78,79,80,81,82,83,84,85,86,
328
            77,78,79,80,81,82,83,84,85,86,
241
            87,88,89,90,91,92,93,94,95,96,
329
            87,88,89,90,91,92,93,94,95,96,
242
            0,1,2,3,4,5,6,7,8,9,
330
            0,1,2,3,4,5,6,7,8,9,
Lines 246-299 Link Here
246
            40,41,42,43,44,45,46,47,48,49,
334
            40,41,42,43,44,45,46,47,48,49,
247
            50,51,52,53,54,55,56,57,58,59,
335
            50,51,52,53,54,55,56,57,58,59,
248
            60,61,62,63,64,65,66,67,68,69,
336
            60,61,62,63,64,65,66,67,68,69,
249
            70,71,72,73,0,75,76,77,78,79,
337
            70,71,72,0,74,75,76,77,78,79,
250
            80,81,82,83,84,85,86,87,88,89,
338
            80,81,82,83,84,85,86,87,88,89,
251
            90,0,0,0,0,0,0,97,98,0,
339
            90,91,92,93,94,95,96,0,1,2,
252
            100,101,102,0,1,2,3,4,5,6,
253
            7,8,9,10,11,12,13,14,0,16,
254
            17,18,19,20,21,22,23,24,25,26,
255
            27,28,29,30,31,32,33,34,35,36,
256
            37,38,39,40,41,42,43,44,45,46,
257
            47,48,49,50,51,52,53,54,55,56,
258
            57,58,59,60,61,62,63,64,65,75,
259
            67,68,69,70,71,76,73,0,0,0,
260
            77,78,0,1,2,3,4,5,6,7,
261
            8,9,10,11,12,13,14,102,16,17,
262
            18,19,20,21,22,23,24,25,26,27,
263
            28,29,30,31,32,33,34,35,36,37,
264
            38,39,40,41,42,43,44,45,46,47,
265
            48,49,50,51,52,53,54,55,56,57,
266
            58,59,60,61,62,63,64,65,71,0,
267
            0,73,0,0,0,0,74,0,1,2,
268
            3,4,5,6,7,8,9,10,11,12,
340
            3,4,5,6,7,8,9,10,11,12,
269
            13,14,0,16,17,18,19,20,21,22,
341
            13,14,15,16,17,18,19,20,21,22,
270
            23,24,25,26,27,28,29,30,31,32,
342
            23,24,25,26,27,28,29,30,31,32,
271
            33,34,35,36,37,38,39,40,41,42,
343
            33,34,35,36,37,38,39,40,41,42,
272
            43,44,45,46,47,48,49,50,51,52,
344
            43,44,45,46,47,48,49,50,51,52,
273
            53,54,55,56,57,58,59,60,61,62,
345
            53,54,55,56,57,58,59,60,61,62,
274
            63,64,65,68,69,0,0,0,0,0,
346
            63,64,65,66,67,68,69,70,71,72,
275
            0,74,0,1,2,3,4,5,6,7,
347
            73,0,75,76,77,78,79,80,81,82,
276
            8,9,10,11,12,0,1,2,3,4,
348
            83,84,85,86,87,88,89,90,0,0,
277
            5,6,7,8,9,10,0,1,2,3,
349
            0,0,0,0,97,98,0,100,101,102,
278
            4,5,6,7,8,9,10,0,1,2,
279
            3,4,5,6,7,8,9,10,0,1,
280
            2,3,4,5,6,7,8,9,10,0,
281
            0,66,0,67,66,66,0,0,0,67,
282
            0,1,2,3,4,5,6,7,8,9,
350
            0,1,2,3,4,5,6,7,8,9,
283
            10,15,15,15,69,70,0,1,2,3,
351
            10,11,12,13,14,0,16,17,18,19,
284
            4,5,6,7,8,9,10,0,1,2,
352
            20,21,22,23,24,25,26,27,28,29,
285
            3,4,5,6,7,8,9,10,0,0,
353
            30,31,32,33,34,35,36,37,38,39,
286
            0,0,0,0,0,0,0,0,0,11,
354
            40,41,42,43,44,45,46,47,48,49,
287
            12,0,13,11,14,0,15,0,0,0,
355
            50,51,52,53,54,55,56,57,58,59,
288
            0,72,0,0,68,0,0,0,0,0,
356
            60,61,62,63,64,65,75,67,68,69,
357
            70,71,76,73,0,0,0,77,78,0,
358
            1,2,3,4,5,6,7,8,9,10,
359
            11,12,13,14,102,16,17,18,19,20,
360
            21,22,23,24,25,26,27,28,29,30,
361
            31,32,33,34,35,36,37,38,39,40,
362
            41,42,43,44,45,46,47,48,49,50,
363
            51,52,53,54,55,56,57,58,59,60,
364
            61,62,63,64,65,71,0,0,73,0,
365
            0,0,0,74,0,1,2,3,4,5,
366
            6,7,8,9,10,11,12,13,14,0,
367
            16,17,18,19,20,21,22,23,24,25,
368
            26,27,28,29,30,31,32,33,34,35,
369
            36,37,38,39,40,41,42,43,44,45,
370
            46,47,48,49,50,51,52,53,54,55,
371
            56,57,58,59,60,61,62,63,64,65,
372
            68,69,0,0,0,0,0,0,74,0,
373
            1,2,3,4,5,6,7,8,9,10,
374
            11,12,0,1,2,3,4,5,6,7,
375
            8,9,10,0,1,2,3,4,5,6,
376
            7,8,9,10,0,1,2,3,4,5,
377
            6,7,8,9,10,0,1,2,3,4,
378
            5,6,7,8,9,10,0,0,66,0,
379
            67,66,66,0,0,0,67,0,1,2,
380
            3,4,5,6,7,8,9,10,15,15,
381
            15,69,70,0,1,2,3,4,5,6,
382
            7,8,9,10,0,1,2,3,4,5,
383
            6,7,8,9,10,0,0,0,0,0,
384
            0,0,0,0,0,0,11,12,0,13,
385
            11,14,0,15,0,0,0,0,72,0,
386
            0,68,0,0,0,0,0,0,0,0,
289
            0,0,0,0,0,0,0,0,0,0,
387
            0,0,0,0,0,0,0,0,0,0,
290
            0,0,0,0,0,0,97,98,0,100,
388
            0,0,0,97,98,0,100,101,99,102,
291
            101,99,102,0,0,0,0,0,0,0,
292
            0,0,0,0,0,0,0,0,0,0,
389
            0,0,0,0,0,0,0,0,0,0,
293
            0,0,0,0,0,0,0,0,0,0,
390
            0,0,0,0,0,0,0,0,0,0,
294
            0,0,0,0,0,0,0,0,0,0,
391
            0,0,0,0,0,0,0,0,0,0,
295
            0,0,0,0,0,0,0,0,0,0,
392
            0,0,0,0,0,0,0,0,0,0,
296
            0,0,99,99,99,99,0,0,0,0
393
            0,0,0,0,0,0,0,0,0,99,
394
            99,99,99,0,0,0,0
297
        };
395
        };
298
    };
396
    };
299
    public final static byte termCheck[] = TermCheck.termCheck;
397
    public final static byte termCheck[] = TermCheck.termCheck;
Lines 301-450 Link Here
301
399
302
    public interface TermAction {
400
    public interface TermAction {
303
        public final static char termAction[] = {0,
401
        public final static char termAction[] = {0,
304
            506,553,553,553,553,553,553,553,553,553,
402
            515,562,562,562,562,562,562,562,562,562,
305
            553,553,553,553,553,553,553,553,553,553,
403
            562,562,562,562,562,562,562,562,562,562,
306
            553,553,553,553,553,553,553,553,553,553,
404
            562,562,562,562,562,562,562,562,562,562,
307
            553,553,553,553,553,553,553,553,553,553,
405
            562,562,562,562,562,562,562,562,562,562,
308
            553,553,553,553,553,553,553,553,553,553,
406
            562,562,562,562,562,562,562,562,562,562,
309
            553,553,553,553,553,553,553,553,553,553,
407
            562,562,562,562,562,562,562,562,562,562,
310
            553,553,553,553,553,553,553,553,553,553,
408
            562,562,562,562,562,562,562,562,562,562,
311
            553,473,553,553,553,553,553,553,552,553,
409
            562,473,562,562,562,562,562,562,561,562,
312
            553,553,553,553,553,553,553,553,553,553,
410
            562,562,562,562,562,562,562,562,562,562,
313
            553,553,553,553,553,553,553,553,553,506,
411
            562,562,562,562,562,562,562,562,562,515,
314
            553,553,506,551,551,551,551,551,551,551,
412
            562,562,515,560,560,560,560,560,560,560,
315
            551,551,551,551,551,551,551,551,551,551,
413
            560,560,560,560,560,560,560,560,560,560,
316
            551,551,551,551,551,551,551,551,551,551,
414
            560,560,560,560,560,560,560,560,560,560,
317
            551,551,551,551,551,551,551,551,551,551,
415
            560,560,560,560,560,560,560,560,560,560,
318
            551,551,551,551,551,551,551,551,551,551,
416
            560,560,560,560,560,560,560,560,560,560,
319
            551,551,551,551,551,551,551,551,551,551,
417
            560,560,560,560,560,560,560,560,560,560,
320
            551,551,551,551,551,551,551,551,551,551,
418
            560,560,560,560,560,560,560,560,560,560,
321
            551,551,551,556,551,551,551,551,551,551,
419
            560,560,560,565,560,560,560,560,560,560,
322
            517,551,551,551,551,551,551,551,551,551,
420
            526,560,560,560,560,560,560,560,560,560,
323
            551,551,551,551,551,551,551,551,551,551,
421
            560,560,560,560,560,560,560,560,560,560,
324
            551,511,551,551,10,558,558,558,558,558,
422
            560,520,560,560,10,567,567,567,567,567,
325
            558,558,558,558,558,558,558,558,558,558,
423
            567,567,567,567,567,567,567,567,567,567,
326
            558,558,558,558,558,558,558,558,558,558,
424
            567,567,567,567,567,567,567,567,567,567,
327
            558,558,558,558,558,558,558,558,558,558,
425
            567,567,567,567,567,567,567,567,567,567,
328
            558,558,558,558,558,558,558,558,558,558,
426
            567,567,567,567,567,567,567,567,567,567,
329
            558,558,558,558,558,558,558,558,558,558,
427
            567,567,567,567,567,567,567,567,567,567,
330
            558,558,558,558,558,558,558,558,558,558,
428
            567,567,567,567,567,567,567,567,567,567,
331
            558,558,558,558,558,558,558,558,558,558,
429
            567,567,567,567,567,567,567,567,567,567,
332
            558,558,558,558,558,558,558,558,558,558,
430
            567,567,567,567,567,567,567,567,567,567,
333
            558,558,558,558,558,558,558,558,558,558,
431
            567,567,567,567,567,567,567,567,567,567,
334
            558,558,558,48,506,506,506,558,314,481,
432
            567,567,567,48,515,515,515,567,297,490,
335
            481,481,481,481,481,481,481,481,481,481,
433
            490,490,490,490,490,490,490,490,490,490,
336
            481,481,481,481,481,481,481,481,481,481,
434
            490,490,490,490,490,490,490,490,490,490,
337
            481,481,481,481,481,481,481,481,481,481,
435
            490,490,490,490,490,490,490,490,490,490,
338
            481,481,481,481,481,481,481,481,481,481,
436
            490,490,490,490,490,490,490,490,490,490,
339
            481,481,481,481,481,481,481,481,481,481,
437
            490,490,490,490,490,490,490,490,490,490,
340
            481,481,481,481,481,481,481,481,481,481,
438
            490,490,490,490,490,490,490,490,490,490,
341
            481,481,481,481,429,481,481,481,481,481,
439
            490,490,490,490,416,490,490,490,490,490,
342
            481,481,481,481,481,481,481,481,481,481,
440
            490,490,490,490,490,490,490,490,490,490,
343
            481,481,481,481,481,481,481,481,481,481,
441
            490,490,490,490,490,490,490,490,490,490,
344
            481,481,481,481,481,506,457,457,457,457,
442
            490,490,490,490,436,515,409,409,409,409,
345
            457,457,457,457,457,457,457,457,457,457,
443
            409,409,409,409,409,409,409,409,409,409,
346
            457,457,457,457,457,457,457,457,457,457,
444
            409,409,409,409,409,409,409,409,409,409,
347
            457,457,457,457,457,457,457,457,457,457,
445
            409,409,409,409,409,409,409,409,409,409,
348
            457,457,457,457,457,457,457,457,457,457,
446
            409,409,409,409,409,409,409,409,409,409,
349
            457,457,457,457,457,457,457,457,457,457,
447
            409,409,409,409,409,409,409,409,409,409,
350
            457,457,457,457,457,457,457,457,457,457,
448
            409,409,409,409,409,409,409,409,409,409,
351
            457,445,457,457,457,457,457,457,457,457,
449
            409,443,409,409,409,409,409,409,409,409,
352
            457,457,457,457,457,457,457,457,457,457,
450
            409,409,409,409,409,409,409,409,409,409,
353
            457,457,457,457,457,457,457,457,457,457,
451
            409,409,409,409,409,409,409,409,409,409,
354
            457,457,315,819,819,819,819,819,819,819,
452
            409,436,515,778,778,778,778,778,778,778,
355
            819,819,819,819,819,819,819,819,819,819,
453
            778,778,778,778,778,778,778,778,778,778,
356
            819,819,819,819,819,819,819,819,819,819,
454
            778,778,778,778,778,778,778,778,778,778,
357
            819,819,819,819,819,819,819,819,819,819,
455
            778,778,778,778,778,778,778,778,778,778,
358
            819,819,819,819,819,819,819,819,819,819,
456
            778,778,778,778,778,778,778,778,778,778,
359
            819,819,819,819,819,819,819,819,819,819,
457
            778,778,778,778,778,778,778,778,778,778,
360
            819,819,819,819,819,819,819,819,429,819,
458
            778,778,778,778,778,778,778,778,778,778,
361
            819,819,819,819,819,819,819,819,819,819,
459
            778,778,778,778,778,778,778,778,778,778,
362
            819,819,819,819,819,819,819,819,819,819,
460
            778,778,778,778,778,778,778,778,778,778,
363
            819,819,819,819,819,819,819,819,819,506,
461
            778,778,778,778,778,778,778,778,778,298,
364
            819,819,819,819,819,819,819,819,819,819,
462
            811,811,811,811,811,811,811,811,811,811,
365
            819,819,819,819,819,819,819,819,819,819,
463
            811,811,811,811,811,811,811,811,811,811,
366
            819,819,819,819,819,819,819,819,819,819,
464
            811,811,811,811,811,811,811,811,811,811,
367
            819,819,819,819,819,819,819,819,819,819,
465
            811,811,811,811,811,811,811,811,811,811,
368
            819,819,819,819,819,819,819,819,819,819,
466
            811,811,811,811,811,811,811,811,811,811,
369
            819,819,819,819,819,819,819,819,819,819,
467
            811,811,811,811,811,811,811,811,811,811,
370
            819,819,819,819,819,471,819,819,819,819,
468
            811,811,811,811,811,416,811,811,811,811,
371
            819,819,819,819,819,819,819,819,819,819,
469
            811,811,811,811,811,811,811,811,811,811,
372
            819,819,819,819,819,819,819,819,819,819,
470
            811,811,811,811,811,811,811,811,811,811,
373
            819,819,819,819,819,819,506,817,817,817,
471
            811,811,811,811,811,436,515,811,811,811,
374
            817,817,817,817,817,817,817,817,817,817,
472
            811,811,811,811,811,811,811,811,811,811,
375
            817,817,817,817,817,817,817,817,817,817,
473
            811,811,811,811,811,811,811,811,811,811,
376
            817,817,817,817,817,817,817,817,817,817,
474
            811,811,811,811,811,811,811,811,811,811,
377
            817,817,817,817,817,817,817,817,817,817,
475
            811,811,811,811,811,811,811,811,811,811,
378
            817,817,817,817,817,817,817,817,817,817,
476
            811,811,811,811,811,811,811,811,811,811,
379
            817,817,817,817,817,817,817,817,817,817,
477
            811,811,811,811,811,811,811,811,811,811,
380
            817,817,817,817,817,817,817,817,817,822,
478
            811,811,483,811,811,811,811,811,811,811,
381
            817,817,817,817,817,817,817,817,817,817,
479
            811,811,811,811,811,811,811,811,811,811,
382
            817,817,817,817,817,817,817,817,817,817,
480
            811,811,811,811,811,811,811,811,811,811,
383
            817,817,447,506,466,466,466,466,466,466,
481
            811,811,436,515,809,809,809,809,809,809,
384
            466,466,466,466,466,466,466,466,466,466,
482
            809,809,809,809,809,809,809,809,809,809,
385
            466,466,466,466,466,466,466,466,466,466,
483
            809,809,809,809,809,809,809,809,809,809,
386
            466,466,466,466,466,466,466,466,466,466,
484
            809,809,809,809,809,809,809,809,809,809,
387
            466,466,466,466,466,466,466,466,466,466,
485
            809,809,809,809,809,809,809,809,809,809,
388
            466,466,466,466,466,466,466,466,466,466,
486
            809,809,809,809,809,809,809,809,809,809,
389
            466,466,466,466,466,466,466,466,466,466,
487
            809,809,809,809,809,809,809,809,809,809,
390
            466,466,466,466,466,466,506,466,466,466,
488
            809,809,809,809,809,809,814,809,809,809,
391
            466,466,466,466,466,466,466,466,466,466,
489
            809,809,809,809,809,809,809,809,809,809,
392
            466,466,466,466,466,466,466,466,466,447,
490
            809,809,809,809,809,809,809,809,809,448,
393
            506,478,478,478,478,478,478,478,478,478,
491
            515,424,424,424,424,424,424,424,424,424,
394
            478,472,472,472,472,527,472,472,472,472,
492
            424,424,424,424,424,424,424,424,424,424,
395
            472,472,472,472,472,472,472,472,472,472,
493
            424,424,424,424,424,424,424,424,424,424,
396
            472,472,472,472,472,472,472,472,472,472,
494
            424,424,424,424,424,424,424,424,424,424,
397
            472,472,472,472,472,472,472,472,472,472,
495
            424,424,424,424,424,424,424,424,424,424,
398
            472,472,472,472,472,472,472,472,472,472,
496
            424,424,424,424,424,424,424,424,424,424,
399
            472,472,472,472,472,472,384,382,410,420,
497
            424,424,424,424,424,424,424,424,424,424,
400
            519,521,479,395,506,364,390,393,412,536,
498
            424,424,424,515,424,424,424,424,424,424,
401
            377,358,540,533,534,531,532,546,537,523,
499
            424,424,424,424,424,424,424,424,424,424,
402
            524,506,506,506,38,506,506,479,479,32,
500
            424,424,424,424,424,424,448,515,486,486,
403
            479,479,371,506,400,400,400,400,400,400,
501
            486,486,486,486,486,486,486,486,485,485,
404
            400,400,400,400,496,496,496,496,506,496,
502
            485,485,536,485,485,485,485,485,485,485,
405
            496,496,496,496,496,496,496,496,496,496,
503
            485,485,485,485,485,485,485,485,485,485,
406
            496,496,496,496,496,496,496,496,496,496,
504
            485,485,485,485,485,485,485,485,485,485,
407
            496,496,496,496,496,496,496,496,496,496,
505
            485,485,485,485,485,485,485,485,485,485,
408
            496,496,496,496,496,496,496,496,496,496,
506
            485,485,485,485,485,485,485,485,485,485,
409
            496,496,496,496,496,496,496,496,496,545,
507
            485,485,485,373,350,371,384,528,530,487,
410
            832,455,825,824,826,539,395,16,506,506,
508
            386,515,324,365,369,380,545,329,343,549,
411
            463,827,1,671,671,671,671,671,671,671,
509
            542,543,540,541,555,546,532,533,515,515,
412
            671,671,671,670,670,670,670,510,670,670,
510
            515,38,515,515,487,487,32,487,487,358,
413
            670,670,670,670,670,670,670,670,670,670,
511
            515,403,403,403,403,403,403,403,403,403,
414
            670,670,670,670,670,670,670,670,670,670,
512
            403,498,498,498,498,515,498,498,498,498,
415
            670,670,670,670,670,670,670,670,670,670,
513
            498,498,498,498,498,498,498,498,498,498,
416
            670,670,670,670,670,670,670,670,670,670,
514
            498,498,498,498,498,498,498,498,498,498,
417
            670,670,670,670,670,670,670,670,380,506,
515
            498,498,498,498,498,498,498,498,498,498,
418
            506,815,506,506,506,14,672,317,671,671,
516
            498,498,498,498,498,498,498,498,498,498,
419
            671,671,671,671,671,671,671,671,670,670,
517
            498,498,498,498,498,498,554,824,465,817,
420
            670,670,506,670,670,670,670,670,670,670,
518
            816,818,548,386,16,515,515,470,819,1,
421
            670,670,670,670,670,670,670,670,670,670,
519
            680,680,680,680,680,680,680,680,680,680,
422
            670,670,670,670,670,670,670,670,670,670,
520
            679,679,679,679,519,679,679,679,679,679,
423
            670,670,670,670,670,670,670,670,670,670,
521
            679,679,679,679,679,679,679,679,679,679,
424
            670,670,670,670,670,670,670,670,670,670,
522
            679,679,679,679,679,679,679,679,679,679,
425
            670,670,670,535,557,506,35,506,308,3,
523
            679,679,679,679,679,679,679,679,679,679,
426
            506,672,6,560,560,560,560,560,560,560,
524
            679,679,679,679,679,679,679,679,679,679,
427
            560,560,560,334,334,506,344,344,344,344,
525
            679,679,679,679,679,420,515,515,807,515,
428
            344,344,344,344,344,344,506,408,408,408,
526
            515,515,14,681,300,680,680,680,680,680,
429
            408,408,408,408,408,408,408,506,417,417,
527
            680,680,680,680,680,679,679,679,679,515,
430
            417,417,417,417,417,417,417,417,58,560,
528
            679,679,679,679,679,679,679,679,679,679,
431
            560,560,560,560,560,560,560,560,560,12,
529
            679,679,679,679,679,679,679,679,679,679,
432
            312,814,506,542,814,814,20,19,325,440,
530
            679,679,679,679,679,679,679,679,679,679,
433
            57,560,560,560,560,560,560,560,560,560,
531
            679,679,679,679,679,679,679,679,679,679,
434
            560,529,528,830,448,341,60,560,560,560,
532
            679,679,679,679,679,679,679,679,679,679,
435
            560,560,560,560,560,560,560,59,560,560,
533
            544,566,515,35,515,291,3,515,681,6,
436
            560,560,560,560,560,560,560,560,7,506,
534
            569,569,569,569,569,569,569,569,569,569,
437
            506,322,506,163,53,161,167,506,506,334,
535
            318,318,515,326,326,326,326,326,326,326,
438
            334,506,426,543,450,506,829,506,506,506,
536
            326,326,326,515,421,421,421,421,421,421,
439
            506,668,506,506,530,506,506,506,506,506,
537
            421,421,421,421,515,467,467,467,467,467,
440
            506,506,506,506,506,506,506,506,506,506,
538
            467,467,467,467,467,58,569,569,569,569,
441
            506,506,506,506,506,506,668,668,506,668,
539
            569,569,569,569,569,569,12,295,806,515,
442
            668,505,315,506,506,506,506,506,506,506,
540
            551,806,806,20,19,308,451,57,569,569,
443
            506,506,506,506,506,506,506,506,506,506,
541
            569,569,569,569,569,569,569,569,538,537,
444
            506,506,506,506,506,506,506,506,506,506,
542
            822,459,456,60,569,569,569,569,569,569,
445
            506,506,506,506,506,506,506,506,506,506,
543
            569,569,569,569,59,569,569,569,569,569,
446
            506,506,506,506,506,506,506,506,506,506,
544
            569,569,569,569,569,7,515,515,305,515,
447
            506,506,1,6,12,1
545
            163,53,161,167,515,515,318,318,515,399,
546
            552,462,515,821,515,515,515,515,677,515,
547
            515,539,515,515,515,515,515,515,515,515,
548
            515,515,515,515,515,515,515,515,515,515,
549
            515,515,515,677,677,515,677,677,514,298,
550
            515,515,515,515,515,515,515,515,515,515,
551
            515,515,515,515,515,515,515,515,515,515,
552
            515,515,515,515,515,515,515,515,515,515,
553
            515,515,515,515,515,515,515,515,515,515,
554
            515,515,515,515,515,515,515,515,515,1,
555
            6,12,1
448
        };
556
        };
449
    };
557
    };
450
    public final static char termAction[] = TermAction.termAction;
558
    public final static char termAction[] = TermAction.termAction;
Lines 464-519 Link Here
464
    public final int scopeState(int index) { return 0;}
572
    public final int scopeState(int index) { return 0;}
465
    public final int inSymb(int index) { return 0;}
573
    public final int inSymb(int index) { return 0;}
466
    public final String name(int index) { return null; }
574
    public final String name(int index) { return null; }
467
    public final int getErrorSymbol() { return 0; }
468
    public final int getScopeUbound() { return 0; }
469
    public final int getScopeSize() { return 0; }
470
    public final int getMaxNameLength() { return 0; }
471
472
    public final static int
473
           NUM_STATES        = 49,
474
           NT_OFFSET         = 103,
475
           LA_STATE_OFFSET   = 832,
476
           MAX_LA            = 1,
477
           NUM_RULES         = 326,
478
           NUM_NONTERMINALS  = 40,
479
           NUM_SYMBOLS       = 143,
480
           SEGMENT_SIZE      = 8192,
481
           START_STATE       = 327,
482
           IDENTIFIER_SYMBOL = 0,
483
           EOFT_SYMBOL       = 99,
484
           EOLT_SYMBOL       = 104,
485
           ACCEPT_ACTION     = 505,
486
           ERROR_ACTION      = 506;
487
488
    public final static boolean BACKTRACK = false;
489
490
    public final int getNumStates() { return NUM_STATES; }
491
    public final int getNtOffset() { return NT_OFFSET; }
492
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
493
    public final int getMaxLa() { return MAX_LA; }
494
    public final int getNumRules() { return NUM_RULES; }
495
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
496
    public final int getNumSymbols() { return NUM_SYMBOLS; }
497
    public final int getSegmentSize() { return SEGMENT_SIZE; }
498
    public final int getStartState() { return START_STATE; }
499
    public final int getStartSymbol() { return lhs[0]; }
500
    public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
501
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
502
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
503
    public final int getAcceptAction() { return ACCEPT_ACTION; }
504
    public final int getErrorAction() { return ERROR_ACTION; }
505
    public final boolean isValidForParser() { return isValidForParser; }
506
    public final boolean getBacktrack() { return BACKTRACK; }
507
508
    public final int originalState(int state) { return 0; }
575
    public final int originalState(int state) { return 0; }
509
    public final int asi(int state) { return 0; }
576
    public final int asi(int state) { return 0; }
510
    public final int nasi(int state) { return 0; }
577
    public final int nasi(int state) { return 0; }
511
    public final int inSymbol(int state) { return 0; }
578
    public final int inSymbol(int state) { return 0; }
512
579
580
    /**
581
     * assert(! goto_default);
582
     */
513
    public final int ntAction(int state, int sym) {
583
    public final int ntAction(int state, int sym) {
514
        return baseAction[state + sym];
584
        return baseAction[state + sym];
515
    }
585
    }
516
586
587
    /**
588
     * assert(! shift_default);
589
     */
517
    public final int tAction(int state, int sym) {
590
    public final int tAction(int state, int sym) {
518
        int i = baseAction[state],
591
        int i = baseAction[state],
519
            k = i + sym;
592
            k = i + sym;
(-)src/org/eclipse/ocl/cst/CSTNode.java (-1 / +1 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
import org.eclipse.emf.ecore.EObject;
21
import org.eclipse.emf.ecore.EObject;
22
22
23
/**
23
/**
(-)src/org/eclipse/ocl/cst/CSTPackage.java (-5 / +5 lines)
Lines 4937-4943 Link Here
4937
	 * The meta object id for the '<em>IToken</em>' data type.
4937
	 * The meta object id for the '<em>IToken</em>' data type.
4938
	 * <!-- begin-user-doc -->
4938
	 * <!-- begin-user-doc -->
4939
	 * <!-- end-user-doc -->
4939
	 * <!-- end-user-doc -->
4940
	 * @see lpg.lpgjavaruntime.IToken
4940
	 * @see lpg.runtime.IToken
4941
	 * @see org.eclipse.ocl.cst.impl.CSTPackageImpl#getIToken()
4941
	 * @see org.eclipse.ocl.cst.impl.CSTPackageImpl#getIToken()
4942
	 * @generated
4942
	 * @generated
4943
	 * @noreference This field is not intended to be referenced by clients.
4943
	 * @noreference This field is not intended to be referenced by clients.
Lines 6425-6437 Link Here
6425
	EEnum getDotOrArrowEnum();
6425
	EEnum getDotOrArrowEnum();
6426
6426
6427
	/**
6427
	/**
6428
	 * Returns the meta object for data type '{@link lpg.lpgjavaruntime.IToken <em>IToken</em>}'.
6428
	 * Returns the meta object for data type '{@link lpg.runtime.IToken <em>IToken</em>}'.
6429
	 * <!-- begin-user-doc -->
6429
	 * <!-- begin-user-doc -->
6430
	 * @since 1.3
6430
	 * @since 1.3
6431
	 * <!-- end-user-doc -->
6431
	 * <!-- end-user-doc -->
6432
	 * @return the meta object for data type '<em>IToken</em>'.
6432
	 * @return the meta object for data type '<em>IToken</em>'.
6433
	 * @see lpg.lpgjavaruntime.IToken
6433
	 * @see lpg.runtime.IToken
6434
	 * @model instanceClass="lpg.lpgjavaruntime.IToken"
6434
	 * @model instanceClass="lpg.runtime.IToken"
6435
	 * @generated
6435
	 * @generated
6436
	 */
6436
	 */
6437
	EDataType getIToken();
6437
	EDataType getIToken();
Lines 7765-7771 Link Here
7765
		 * <!-- begin-user-doc -->
7765
		 * <!-- begin-user-doc -->
7766
		 * @since 1.3
7766
		 * @since 1.3
7767
		 * <!-- end-user-doc -->
7767
		 * <!-- end-user-doc -->
7768
		 * @see lpg.lpgjavaruntime.IToken
7768
		 * @see lpg.runtime.IToken
7769
		 * @see org.eclipse.ocl.cst.impl.CSTPackageImpl#getIToken()
7769
		 * @see org.eclipse.ocl.cst.impl.CSTPackageImpl#getIToken()
7770
		 * @generated
7770
		 * @generated
7771
		 */
7771
		 */
(-)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
import org.eclipse.emf.ecore.EAttribute;
22
import org.eclipse.emf.ecore.EAttribute;
23
import org.eclipse.emf.ecore.EClass;
23
import org.eclipse.emf.ecore.EClass;
24
import org.eclipse.emf.ecore.EDataType;
24
import org.eclipse.emf.ecore.EDataType;
(-)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
import org.eclipse.emf.ecore.EClass;
21
import org.eclipse.emf.ecore.EClass;
22
import org.eclipse.emf.ecore.EDataType;
22
import org.eclipse.emf.ecore.EDataType;
23
import org.eclipse.emf.ecore.EObject;
23
import org.eclipse.emf.ecore.EObject;
(-)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
import org.eclipse.emf.common.notify.Notification;
21
import org.eclipse.emf.common.notify.Notification;
22
import org.eclipse.emf.ecore.EClass;
22
import org.eclipse.emf.ecore.EClass;
23
import org.eclipse.emf.ecore.impl.ENotificationImpl;
23
import org.eclipse.emf.ecore.impl.ENotificationImpl;
(-)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 874-880 Link Here
874
  <Ecore:EClass xmi:id="_qf-8J_8fEduhWtVvKtiQ7w" base_Class="_qdx-Vf8fEduhWtVvKtiQ7w"/>
874
  <Ecore:EClass xmi:id="_qf-8J_8fEduhWtVvKtiQ7w" base_Class="_qdx-Vf8fEduhWtVvKtiQ7w"/>
875
  <Ecore:EClass xmi:id="_qf-8KP8fEduhWtVvKtiQ7w" base_Class="_qdx-V_8fEduhWtVvKtiQ7w"/>
875
  <Ecore:EClass xmi:id="_qf-8KP8fEduhWtVvKtiQ7w" base_Class="_qdx-V_8fEduhWtVvKtiQ7w"/>
876
  <Ecore:EAttribute xmi:id="_qf-8Kf8fEduhWtVvKtiQ7w" base_Property="_qdx-Wf8fEduhWtVvKtiQ7w"/>
876
  <Ecore:EAttribute xmi:id="_qf-8Kf8fEduhWtVvKtiQ7w" base_Property="_qdx-Wf8fEduhWtVvKtiQ7w"/>
877
  <Ecore:EDataType xmi:id="_wn-44I2FEd2mlKUM3HGxZg" instanceClassName="lpg.lpgjavaruntime.IToken" base_PrimitiveType="_tvVQwI2FEd2mlKUM3HGxZg"/>
877
  <Ecore:EDataType xmi:id="_wn-44I2FEd2mlKUM3HGxZg" instanceClassName="lpg.runtime.IToken" base_PrimitiveType="_tvVQwI2FEd2mlKUM3HGxZg"/>
878
  <Ecore:EAttribute xmi:id="_qkehgI2JEd2mlKUM3HGxZg" isTransient="true" base_Property="_PkTnII2GEd2mlKUM3HGxZg"/>
878
  <Ecore:EAttribute xmi:id="_qkehgI2JEd2mlKUM3HGxZg" isTransient="true" base_Property="_PkTnII2GEd2mlKUM3HGxZg"/>
879
  <Ecore:EAttribute xmi:id="_na5BwI2GEd2mlKUM3HGxZg" isTransient="true" base_Property="_kTt1cI2GEd2mlKUM3HGxZg"/>
879
  <Ecore:EAttribute xmi:id="_na5BwI2GEd2mlKUM3HGxZg" isTransient="true" base_Property="_kTt1cI2GEd2mlKUM3HGxZg"/>
880
  <Ecore:EAttribute xmi:id="_CoEkwI2HEd2mlKUM3HGxZg" isTransient="true" base_Property="_xJpmEI2GEd2mlKUM3HGxZg"/>
880
  <Ecore:EAttribute xmi:id="_CoEkwI2HEd2mlKUM3HGxZg" isTransient="true" base_Property="_xJpmEI2GEd2mlKUM3HGxZg"/>
(-)META-INF/MANIFEST.MF (-1 / +1 lines)
Lines 36-42 Link Here
36
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
36
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
37
 org.eclipse.emf.ecore;bundle-version="[2.4.0,3.0.0)";visibility:=reexport,
37
 org.eclipse.emf.ecore;bundle-version="[2.4.0,3.0.0)";visibility:=reexport,
38
 org.eclipse.emf.ecore.xmi;bundle-version="[2.4.0,3.0.0)",
38
 org.eclipse.emf.ecore.xmi;bundle-version="[2.4.0,3.0.0)",
39
 net.sourceforge.lpg.lpgjavaruntime;version="[1.0.0,1.2.0)";visibility:=reexport
39
 lpg.runtime;bundle-version="2.0.17";visibility:=reexport
40
Bundle-Activator: org.eclipse.ocl.internal.OCLPlugin$Implementation
40
Bundle-Activator: org.eclipse.ocl.internal.OCLPlugin$Implementation
41
Eclipse-LazyStart: true
41
Eclipse-LazyStart: true
42
Bundle-ActivationPolicy: lazy
42
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.ecore.EObject;
33
import org.eclipse.emf.ecore.EObject;
34
import org.eclipse.emf.ecore.util.EcoreUtil;
34
import org.eclipse.emf.ecore.util.EcoreUtil;
(-)src/org/eclipse/ocl/parser/backtracking/OCLBacktrackingKWLexer.gi (+35 lines)
Added Link Here
1
--/**
2
-- * <copyright>
3
-- *
4
-- * Copyright (c) 2008, 2009 IBM Corporation, Open Canarias S.L. 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 - LPG v2.0.17 adoption
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/backtracking/OCLParserErrors.gi (+205 lines)
Added Link Here
1
--/**
2
-- * <copyright>
3
-- *
4
-- * Copyright (c) 2008 Eclipse.org, Open Canarias S.L. 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 - LPG v2.0.17 adoption
13
-- *
14
-- * </copyright>
15
-- *
16
-- * $Id: OCLParserErrors.g,v 1.1 2009/01/13 20:31:30 cdamus Exp $
17
-- */
18
--
19
-- Additional ERROR_TOKEN rules for The OCL Parser
20
--
21
22
%Include
23
	OCLParser.g
24
%End
25
26
%Include
27
	EssentialOCLErrors.gi
28
%End
29
30
%Rules
31
32
	classifierContextDeclCS ::= context pathNameCS ERROR_TOKEN
33
		/.$BeginCode
34
					reportErrorTokenMessage($getToken(3), OCLParserErrors.MISSING_INV_OR_DEF);
35
					CSTNode result = createClassifierContextDeclCS(
36
							(PathNameCS)$getSym(2),
37
							new BasicEList<InvOrDefCS>()
38
						);
39
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
40
					$setResult(result);
41
		  $EndCode
42
		./
43
		
44
	defExpressionCS ::= typedVariableCS ERROR_TOKEN
45
		/.$BeginCode
46
					reportErrorTokenMessage($getToken(2), OCLParserErrors.MISSING_EQUALS);
47
					VariableCS variableCS = (VariableCS)$getSym(1);
48
					CSTNode result = createDefExpressionCS(
49
							variableCS,
50
							null,
51
							null
52
						);
53
					setOffsets(result, variableCS, getIToken($getToken(2)));
54
					$setResult(result);
55
		  $EndCode
56
		./
57
	defExpressionCS ::= IDENTIFIER ERROR_Colon
58
		/.$BeginCode
59
					VariableCS variableCS = createVariableCS(
60
								getTokenText($getToken(1)),
61
								null,
62
								null
63
							);
64
					setOffsets(variableCS, getIToken($getToken(1)), getIToken($getToken(2)));
65
					CSTNode result = createDefExpressionCS(
66
							variableCS,
67
							null,
68
							null
69
						);
70
					setOffsets(result, variableCS, getIToken($getToken(2)));
71
					$setResult(result);
72
		  $EndCode
73
		./
74
75
	initOrDerValueCS ::= initOrDerValueCSopt init ERROR_Colon
76
		/.$BeginCode
77
					CSTNode result = createInitValueCS(
78
							(InitOrDerValueCS)$getSym(1),
79
							null
80
						);
81
					if ($getSym(1) != null) {
82
						setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(3)));
83
					} else {
84
						setOffsets(result, getIToken($getToken(2)), getIToken($getToken(3)));
85
					}
86
					$setResult(result);
87
		  $EndCode
88
		./
89
	initOrDerValueCS ::= initOrDerValueCSopt derive ERROR_Colon
90
		/.$BeginCode
91
					CSTNode result = createDerValueCS(
92
							(InitOrDerValueCS)$getSym(1),
93
							null
94
						);
95
					if ($getSym(1) != null) {
96
						setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(3)));
97
					} else {
98
						setOffsets(result, getIToken($getToken(2)), getIToken($getToken(3)));
99
					}
100
					$setResult(result);
101
		  $EndCode
102
		./
103
		
104
	invOrDefCS ::= inv simpleNameCS ERROR_Colon
105
		/.$BeginCode
106
					CSTNode result = createInvCS(
107
							(SimpleNameCS)$getSym(2),
108
							null
109
						);
110
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
111
					$setResult(result);
112
		  $EndCode
113
		./	
114
	invOrDefCS ::= def simpleNameCS ERROR_Colon
115
		/.$BeginCode
116
					CSTNode result = createDefCS(
117
							(SimpleNameCS)$getSym(2),
118
							null
119
						);
120
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
121
					$setResult(result);
122
		  $EndCode
123
		./
124
125
	packageDeclarationCS ::= package pathNameCS contextDeclCSmopt ERROR_Empty endpackage
126
		/.$BeginCode
127
					CSTNode result = createPackageDeclarationCS(
128
							(PathNameCS)$getSym(2),
129
							(EList)$getSym(3)
130
						);
131
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5)));
132
					$setResult(result);
133
		  $EndCode
134
		./
135
	packageDeclarationCS ::= package pathNameCS contextDeclCSmopt ERROR_TOKEN
136
		/.$BeginCode
137
					reportErrorTokenMessage($getToken(4), OCLParserErrors.MISSING_ENDPACKAGE);
138
					CSTNode result = createPackageDeclarationCS(
139
							(PathNameCS)$getSym(2),
140
							(EList)$getSym(3)
141
						);
142
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4)));
143
					$setResult(result);
144
		  $EndCode
145
		./
146
	packageDeclarationCS ::= package ERROR_PathNameCS
147
		/.$BeginCode
148
					CSTNode result = createPackageDeclarationCS(
149
							(PathNameCS)$getSym(2),
150
							new BasicEList()
151
						);
152
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(2)));
153
					$setResult(result);
154
		  $EndCode
155
		./
156
		
157
	prePostOrBodyDeclCS ::= pre simpleNameCS ERROR_Colon
158
		/.$BeginCode
159
					CSTNode result = createPrePostOrBodyDeclCS(
160
							PrePostOrBodyEnum.PRE_LITERAL,
161
							(SimpleNameCS)$getSym(2),
162
							createInvalidLiteralExpCS(getTokenText($getToken(3)))
163
						);
164
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
165
					$setResult(result);
166
		  $EndCode
167
		./
168
	prePostOrBodyDeclCS ::= post simpleNameCS ERROR_Colon
169
		/.$BeginCode
170
					CSTNode result = createPrePostOrBodyDeclCS(
171
							PrePostOrBodyEnum.POST_LITERAL,
172
							(SimpleNameCS)$getSym(2),
173
							createInvalidLiteralExpCS(getTokenText($getToken(3)))
174
						);
175
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
176
					$setResult(result);
177
		  $EndCode
178
		./
179
	prePostOrBodyDeclCS ::= body simpleNameCS ERROR_Colon
180
		/.$BeginCode
181
					CSTNode result = createPrePostOrBodyDeclCS(
182
							PrePostOrBodyEnum.BODY_LITERAL,
183
							(SimpleNameCS)$getSym(2),
184
							createInvalidLiteralExpCS(getTokenText($getToken(3)))
185
						);
186
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
187
					$setResult(result);
188
		  $EndCode
189
		./
190
		
191
	propertyContextCS ::= context pathNameCS '::' ERROR_SimpleNameCS
192
		/.$BeginCode
193
					SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(4);
194
					CSTNode result = createPropertyContextCS(
195
							(PathNameCS)$getSym(2),
196
							simpleNameCS,
197
							null,
198
							null
199
						);
200
					setOffsets(result, getIToken($getToken(1)), simpleNameCS);
201
					$setResult(result);
202
		  $EndCode
203
		./
204
		
205
%End
(-)src/org/eclipse/ocl/parser/OCLKWLexer.gi (+553 lines)
Added Link Here
1
--/**
2
-- * <copyright>
3
-- *
4
-- * Copyright (c) 2005, 2009 IBM Corporation  Zeligsoft Inc, Open Canarias S.L., 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 - LPG v2.0.17 adoption
14
-- *
15
-- * </copyright>
16
-- *
17
-- * $Id: OCLKWLexer.g,v 1.1 2007/10/11 23:05:00 cdamus Exp $
18
-- */
19
--
20
-- The OCL KeyWord Lexer
21
--
22
23
%options slr
24
%options fp=OCLKWLexer,prefix=Char_
25
%options noserialize
26
%options package=org.eclipse.ocl.parser
27
%options template=../lpg/KeywordTemplateD.gi
28
%options export_terminals=("OCLParsersym.java", "TK_")
29
%options include_directory="../lpg"
30
31
%Define
32
33
	--
34
	-- Definition of macros used in the template
35
	--
36
	$action_class /.$file_prefix./
37
	$eof_char /.Char_EOF./
38
	$copyright_contributions /.*./
39
	
40
%End
41
42
%Notice
43
	/./**
44
 * <copyright>
45
 *
46
 * Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc, Open Canarias S.L., and others.
47
 * All rights reserved.   This program and the accompanying materials
48
 * are made available under the terms of the Eclipse Public License v1.0
49
 * which accompanies this distribution, and is available at
50
 * http://www.eclipse.org/legal/epl-v10.html
51
 *
52
 * Contributors:
53
 *   IBM - Initial API and implementation
54
 *   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
55
 *   Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption
56
$copyright_contributions
57
 * </copyright>
58
 *
59
 * 
60
 */
61
	./
62
%End
63
64
%Globals
65
	/../
66
%End
67
68
%Include
69
	KWLexerMap.gi
70
%End
71
72
%Export
73
	self
74
	inv
75
	pre
76
	post
77
	context
78
	package
79
	endpackage
80
	def
81
	if
82
	then
83
	else
84
	endif
85
	and
86
	or
87
	xor
88
	not
89
	implies
90
	let
91
	in
92
	true
93
	false
94
95
	--
96
	-- the following appear to have been omitted from the list of
97
	-- OCL reserved words in Section 7.4.9.  They will be treated 
98
	-- as unreserved for compliance
99
	--
100
	body
101
	derive
102
	init
103
	null
104
--  return  -- don't need a keyword for LPG purposes
105
	
106
	--
107
	-- the following are not used in the OCL concrete syntax, but
108
	-- are defined as reserved words in the Spec 7.4.9
109
	--
110
	attr
111
	oper
112
113
	--
114
	-- the remainder of the LPG keywords are defined as such for the
115
	-- purpose of constructing the CST grammar.  They are not OCL
116
	-- reserved words
117
	--		
118
	Set
119
	Bag
120
	Sequence
121
	Collection
122
	OrderedSet
123
124
	iterate
125
	forAll
126
	exists
127
	isUnique
128
	any
129
	one
130
131
	collect
132
	select
133
	reject
134
	collectNested
135
	sortedBy
136
137
	closure
138
139
	oclIsKindOf
140
	oclIsTypeOf
141
	oclAsType
142
	oclIsNew
143
	oclIsUndefined
144
	oclIsInvalid
145
	oclIsInState
146
	allInstances
147
148
	String
149
	Integer
150
	UnlimitedNatural
151
	Real
152
	Boolean
153
	Tuple
154
	OclAny
155
	OclVoid
156
	Invalid
157
	OclMessage
158
159
	OclInvalid
160
%End
161
162
%Terminals
163
	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
164
	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
165
%End
166
167
%Start
168
	KeyWord
169
%End
170
171
%Rules
172
173
-- The Goal for the parser is a single Keyword
174
175
	KeyWord ::=
176
		s e l f
177
		/.$BeginAction
178
			$setResult($_self);
179
		  $EndAction
180
		./
181
182
		| i n v
183
		/.$BeginAction
184
			$setResult($_inv);
185
		  $EndAction
186
		./
187
188
		| p r e
189
		/.$BeginAction
190
			$setResult($_pre);
191
		  $EndAction
192
		./
193
194
		| p o s t
195
		/.$BeginAction
196
			$setResult($_post);
197
		  $EndAction
198
		./
199
		
200
		| b o d y
201
		/.$BeginAction
202
			$setResult($_body);
203
		  $EndAction
204
		./
205
		
206
		| c o n t e x t
207
		/.$BeginAction
208
			$setResult($_context);
209
		  $EndAction
210
		./
211
		
212
		| p a c k a g e
213
		/.$BeginAction
214
			$setResult($_package);
215
		  $EndAction
216
		./
217
		
218
		| e n d p a c k a g e
219
		/.$BeginAction
220
			$setResult($_endpackage);
221
		  $EndAction
222
		./
223
		
224
		| d e f
225
		/.$BeginAction
226
			$setResult($_def);
227
		  $EndAction
228
		./
229
		
230
		| d e r i v e
231
		/.$BeginAction
232
			$setResult($_derive);
233
		  $EndAction
234
		./
235
		
236
		| i n i t
237
		/.$BeginAction
238
			$setResult($_init);
239
		  $EndAction
240
		./
241
		
242
		| i f
243
		/.$BeginAction
244
			$setResult($_if);
245
		  $EndAction
246
		./
247
		
248
		| t h e n
249
		/.$BeginAction
250
			$setResult($_then);
251
		  $EndAction
252
		./
253
		
254
		| e l s e
255
		/.$BeginAction
256
			$setResult($_else);
257
		  $EndAction
258
		./
259
		
260
		| e n d i f
261
		/.$BeginAction
262
			$setResult($_endif);
263
		  $EndAction
264
		./
265
		
266
		| a n d
267
		/.$BeginAction
268
			$setResult($_and);
269
		  $EndAction
270
		./
271
		
272
		| o r
273
		/.$BeginAction
274
			$setResult($_or);
275
		  $EndAction
276
		./
277
		
278
		| x o r
279
		/.$BeginAction
280
			$setResult($_xor);
281
		  $EndAction
282
		./
283
		
284
		| n o t
285
		/.$BeginAction
286
			$setResult($_not);
287
		  $EndAction
288
		./
289
		
290
		| i m p l i e s
291
		/.$BeginAction
292
			$setResult($_implies);
293
		  $EndAction
294
		./
295
		
296
		| l e t
297
		/.$BeginAction
298
			$setResult($_let);
299
		  $EndAction
300
		./
301
		
302
		| i n
303
		/.$BeginAction
304
			$setResult($_in);
305
		  $EndAction
306
		./
307
		
308
		| t r u e
309
		/.$BeginAction
310
			$setResult($_true);
311
		  $EndAction
312
		./
313
		
314
		| f a l s e
315
		/.$BeginAction
316
			$setResult($_false);
317
		  $EndAction
318
		./
319
		
320
		| S e t
321
		/.$BeginAction
322
			$setResult($_Set);
323
		  $EndAction
324
		./
325
		
326
		| B a g
327
		/.$BeginAction
328
			$setResult($_Bag);
329
		  $EndAction
330
		./
331
		
332
		| S e q u e n c e
333
		/.$BeginAction
334
			$setResult($_Sequence);
335
		  $EndAction
336
		./
337
		
338
		| C o l l e c t i o n
339
		/.$BeginAction
340
			$setResult($_Collection);
341
		  $EndAction
342
		./
343
344
		| O r d e r e d S e t
345
		/.$BeginAction
346
			$setResult($_OrderedSet);
347
		  $EndAction
348
		./
349
350
		| i t e r a t e
351
		/.$BeginAction
352
			$setResult($_iterate);
353
		  $EndAction
354
		./
355
		
356
		| f o r A l l
357
		/.$BeginAction
358
			$setResult($_forAll);
359
		  $EndAction
360
		./
361
		
362
		| e x i s t s
363
		/.$BeginAction
364
			$setResult($_exists);
365
		  $EndAction
366
		./
367
		
368
		| i s U n i q u e
369
		/.$BeginAction
370
			$setResult($_isUnique);
371
		  $EndAction
372
		./
373
		
374
		| a n y
375
		/.$BeginAction
376
			$setResult($_any);
377
		  $EndAction
378
		./
379
		
380
		| o n e
381
		/.$BeginAction
382
			$setResult($_one);
383
		  $EndAction
384
		./
385
386
		| c o l l e c t
387
		/.$BeginAction
388
			$setResult($_collect);
389
		  $EndAction
390
		./
391
		
392
		| s e l e c t
393
		/.$BeginAction
394
			$setResult($_select);
395
		  $EndAction
396
		./
397
		
398
		| r e j e c t
399
		/.$BeginAction
400
			$setResult($_reject);
401
		  $EndAction
402
		./
403
		
404
		| c o l l e c t N e s t e d
405
		/.$BeginAction
406
			$setResult($_collectNested);
407
		  $EndAction
408
		./
409
		
410
		| s o r t e d B y
411
		/.$BeginAction
412
			$setResult($_sortedBy);
413
		  $EndAction
414
		./
415
416
		| c l o s u r e
417
		/.$BeginAction
418
			$setResult($_closure);
419
		  $EndAction
420
		./
421
		
422
		| o c l I s K i n d O f
423
		/.$BeginAction
424
			$setResult($_oclIsKindOf);
425
		  $EndAction
426
		./
427
428
		| o c l I s T y p e O f
429
		/.$BeginAction
430
			$setResult($_oclIsTypeOf);
431
		  $EndAction
432
		./
433
		
434
		| o c l A s T y p e
435
		/.$BeginAction
436
			$setResult($_oclAsType);
437
		  $EndAction
438
		./
439
		
440
		| o c l I s N e w
441
		/.$BeginAction
442
			$setResult($_oclIsNew);
443
		  $EndAction
444
		./
445
		
446
		| o c l I s U n d e f i n e d
447
		/.$BeginAction
448
			$setResult($_oclIsUndefined);
449
		  $EndAction
450
		./
451
		
452
		| o c l I s I n v a l i d
453
		/.$BeginAction
454
			$setResult($_oclIsInvalid);
455
		  $EndAction
456
		./
457
		
458
		| o c l I s I n S t a t e
459
		/.$BeginAction
460
			$setResult($_oclIsInState);
461
		  $EndAction
462
		./
463
		
464
		| a l l I n s t a n c e s
465
		/.$BeginAction
466
			$setResult($_allInstances);
467
		  $EndAction
468
		./
469
470
		| S t r i n g
471
		/.$BeginAction
472
			$setResult($_String);
473
		  $EndAction
474
		./
475
476
		| I n t e g e r
477
		/.$BeginAction
478
			$setResult($_Integer);
479
		  $EndAction
480
		./
481
		
482
		| U n l i m i t e d N a t u r a l
483
		/.$BeginAction
484
			$setResult($_UnlimitedNatural);
485
		  $EndAction
486
		./
487
		
488
		| R e a l
489
		/.$BeginAction
490
			$setResult($_Real);
491
		  $EndAction
492
		./
493
		
494
		| B o o l e a n
495
		/.$BeginAction
496
			$setResult($_Boolean);
497
		  $EndAction
498
		./
499
500
		| T u p l e
501
		/.$BeginAction
502
			$setResult($_Tuple);
503
		  $EndAction
504
		./
505
506
		| O c l A n y
507
		/.$BeginAction
508
			$setResult($_OclAny);
509
		  $EndAction
510
		./
511
512
		| O c l V o i d
513
		/.$BeginAction
514
			$setResult($_OclVoid);
515
		  $EndAction
516
		./
517
518
		| I n v a l i d
519
		/.$BeginAction
520
			$setResult($_Invalid);
521
		  $EndAction
522
		./
523
524
		| O c l M e s s a g e
525
		/.$BeginAction
526
			$setResult($_OclMessage);
527
		  $EndAction
528
		./
529
530
		| n u l l
531
		/.$BeginAction
532
			$setResult($_null);
533
		  $EndAction
534
		./
535
536
		| O c l I n v a l i d
537
		/.$BeginAction
538
			$setResult($_OclInvalid);
539
		  $EndAction
540
		./
541
542
		| a t t r
543
		/.$BeginAction
544
			$setResult($_attr);
545
		  $EndAction
546
		./
547
548
		| o p e r
549
		/.$BeginAction
550
			$setResult($_oper);
551
		  $EndAction
552
		./
553
%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=("*.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.getPrsStream().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/parser/EssentialOCL.gi (+1728 lines)
Added Link Here
1
--/**
2
-- * <copyright>
3
-- *
4
-- * Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., 
5
-- * Open Canarias S.L and others.
6
-- * All rights reserved.   This program and the accompanying materials
7
-- * are made available under the terms of the Eclipse Public License v1.0
8
-- * which accompanies this distribution, and is available at
9
-- * http://www.eclipse.org/legal/epl-v10.html
10
-- *
11
-- * Contributors:
12
-- *   IBM - Initial API and implementation
13
-- *   E.D.Willink - Elimination of some shift-reduce conflicts
14
-- *   E.D.Willink - Remove unnecessary warning suppression
15
-- *   E.D.Willink - Bugs 225493, 243976, 259818
16
-- *   Zeligsoft - Bug 243976
17
-- *   Borland - Bug 242880
18
-- *   Adolfo Sanchez-Barbudo Herrera - LPG v 2.0.17 adoption
19
-- *
20
-- * </copyright>
21
-- *
22
-- * $Id: EssentialOCL.gi,v 1.7 2009/03/05 14:12:14 cdamus Exp $
23
-- */
24
--
25
-- The EssentialOCL Parser
26
--
27
28
29
%Define
30
31
	-- Definition of macros used in the parser template
32
	--
33
	$prs_stream_class /.AbstractOCLParser./
34
	$prs_parser_class /.DeterministicParser./
35
	$prs_parser_exception /.NotDeterministicParseTableException./
36
	$prs_parser_throw /.throw new RuntimeException("****Error: Regenerate $prs_type.java with -NOBACKTRACK option")./
37
	$prs_parse_args /../
38
	$lex_stream_class /.AbstractLexer./
39
	$action_class /.$file_prefix./
40
	$copyright_contributions /.*./
41
42
	-- package namespace of the LPG Runtime API
43
	$lpg_ns /.lpg.runtime./
44
45
	$NewCase
46
	/. $Header
47
				case $rule_number:./
48
49
	-- From bt/dtParserTemplateD.g
50
	------------------------------------------------------
51
	$Header
52
	/.
53
				//
54
				// Rule $rule_number:  $rule_text
55
				//./
56
57
	$BeginAction
58
	/. $Header
59
				case $rule_number: {./
60
61
	$EndAction
62
	/.		  break;
63
				}./
64
65
	$BeginCode
66
	/.$BeginAction
67
					$symbol_declarations./
68
69
	$EndCode /.$EndAction./
70
71
	$NoAction
72
	/. $Header
73
				case $rule_number:
74
					break;./
75
76
	$NullAction
77
	/. $Header
78
				case $rule_number:
79
					$setResult(null);
80
					break;./
81
82
	$EmptyListAction
83
	/. $Header
84
				case $rule_number:
85
					$setResult(new BasicEList());
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
 * <copyright>
192
 *
193
 * Copyright (c) 2005, 2009 IBM Corporation, Zeligsoft Inc., Borland Software Corp., 
194
 * Open Canarias S.L. 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 225493, 243976, 259818
205
 *   Zeligsoft - Bug 243976
206
 *   Borland - Bug 242880
207
 *   Adolfo Sanchez- Barbudo Herrera - LPG v 2.0.17 adoption
208
$copyright_contributions
209
 * </copyright>
210
 *
211
 * $Id: EssentialOCL.g,v 1.7 2009/03/05 14:12:14 cdamus Exp $
212
 */
213
	./
214
%End
215
216
%Globals
217
	/.import org.eclipse.emf.common.util.BasicEList;
218
	import org.eclipse.emf.common.util.EList;
219
	import org.eclipse.ocl.cst.CSTNode;
220
	import org.eclipse.ocl.cst.CallExpCS;
221
	import org.eclipse.ocl.cst.CollectionTypeIdentifierEnum;
222
	import org.eclipse.ocl.cst.DotOrArrowEnum;
223
	import org.eclipse.ocl.cst.IntegerLiteralExpCS;
224
	import org.eclipse.ocl.cst.IsMarkedPreCS;
225
	import org.eclipse.ocl.cst.MessageExpCS;
226
	import org.eclipse.ocl.cst.OCLExpressionCS;
227
	import org.eclipse.ocl.cst.OCLMessageArgCS;
228
	import org.eclipse.ocl.cst.OperationCallExpCS;
229
	import org.eclipse.ocl.cst.PathNameCS;
230
	import org.eclipse.ocl.cst.SimpleNameCS;
231
	import org.eclipse.ocl.cst.SimpleTypeEnum;
232
	import org.eclipse.ocl.cst.StateExpCS;
233
	import org.eclipse.ocl.cst.StringLiteralExpCS;
234
	import org.eclipse.ocl.cst.TypeCS;
235
	import org.eclipse.ocl.cst.VariableCS;
236
	import org.eclipse.ocl.util.OCLStandardLibraryUtil;
237
	import org.eclipse.ocl.utilities.PredefinedType;
238
	
239
	import $lpg_ns.BadParseException;
240
	import $lpg_ns.BadParseSymFileException;
241
	import $lpg_ns.$prs_parser_class;
242
	import $lpg_ns.DiagnoseParser;
243
	import $lpg_ns.IToken;
244
	import $lpg_ns.Monitor;
245
	import $lpg_ns.$prs_parser_exception;
246
	import $lpg_ns.ParseTable;
247
	import $lpg_ns.RuleAction;
248
	./
249
%End
250
251
%KeyWords
252
	self
253
	inv
254
	pre
255
	post
256
	endpackage
257
	def
258
	if
259
	then
260
	else
261
	endif
262
	and
263
	or
264
	xor
265
	not
266
	implies
267
	let
268
	in
269
	true
270
	false
271
272
	--
273
	-- the following appear to have been omitted from the list of
274
	-- OCL reserved words in Section 7.4.9.  They will be treated 
275
	-- as unreserved for compliance
276
	--
277
	body
278
	derive
279
	init
280
	null
281
--  return  -- don't need a keyword for LPG purposes
282
283
	--
284
	-- the remainder of the LPG keywords are defined as such for the
285
	-- purpose of constructing the CST grammar.  They are not OCL
286
	-- reserved words
287
	--		
288
	Set
289
	Bag
290
	Sequence
291
	Collection
292
	OrderedSet
293
294
	iterate
295
	forAll
296
	exists
297
	isUnique
298
	any
299
	one
300
301
	collect
302
	select
303
	reject
304
	collectNested
305
	sortedBy
306
307
	closure
308
309
	oclIsKindOf
310
	oclIsTypeOf
311
	oclAsType
312
	oclIsNew
313
	oclIsUndefined
314
	oclIsInvalid
315
	oclIsInState
316
	allInstances
317
318
	String
319
	Integer
320
	UnlimitedNatural
321
	Real
322
	Boolean
323
	Tuple
324
	OclAny
325
	OclVoid
326
	Invalid
327
	OclMessage
328
	
329
	OclInvalid
330
%End
331
332
%Identifier
333
	IDENTIFIER
334
%End
335
336
%Terminals
337
	
338
	NUMERIC_OPERATION
339
340
	STRING_LITERAL
341
	INTEGER_LITERAL
342
	REAL_LITERAL
343
	
344
	PLUS     ::= '+'
345
	MINUS    ::= '-'
346
	MULTIPLY ::= '*'
347
	DIVIDE   ::= '/'
348
349
	GREATER       ::= '>'
350
	LESS          ::= '<'
351
	EQUAL         ::= '='
352
	GREATER_EQUAL ::= '>='
353
	LESS_EQUAL    ::= '<='
354
	NOT_EQUAL     ::= '<>'
355
356
	LPAREN   ::= '('
357
	RPAREN   ::= ')'
358
	LBRACE   ::= '{'
359
	RBRACE   ::= '}'
360
	LBRACKET ::= '['
361
	RBRACKET ::= ']'
362
363
	ARROW      ::= '->'
364
	BAR        ::= '|'
365
	COMMA      ::= ','
366
	COLON      ::= ':'
367
	COLONCOLON ::= '::'
368
	SEMICOLON  ::= ';'
369
	DOT        ::= '.'
370
	DOTDOT     ::= '..'
371
	ATPRE      ::= '@pre'
372
373
	CARET        ::= '^'
374
	CARETCARET   ::= '^^'
375
	QUESTIONMARK ::= '?'
376
377
%End
378
379
%EOF
380
    EOF_TOKEN
381
%End
382
383
%ERROR
384
    ERROR_TOKEN
385
%End
386
387
--$EOL
388
--	SEMICOLON
389
--$End
390
391
--$Start
392
--    goal
393
--$End
394
395
%Headers
396
	/.$parserCore
397
398
	./
399
%End
400
401
%Rules
402
	/.$BeginActions./
403
404
	-- opt = optional
405
	-- m = multiple
406
407
	--
408
	-- Define a group of names that we define as keywords for the purpose
409
	-- of constructing an LPG grammar, but that are not reserved by OCL
410
	-- and are commonly used in models such as the UML metamodel, itself
411
	--
412
	
413
	binaryIdentifier -> oclIsUndefined
414
	binaryIdentifier -> oclIsInvalid
415
	binaryIdentifier -> oclIsNew
416
	binaryIdentifier -> oclAsType
417
	binaryIdentifier -> oclIsKindOf
418
	binaryIdentifier -> oclIsTypeOf
419
	binaryIdentifier -> EQUAL
420
	binaryIdentifier -> NOT_EQUAL
421
	binaryIdentifier -> PLUS
422
	binaryIdentifier -> MULTIPLY
423
	binaryIdentifier -> DIVIDE
424
	binaryIdentifier -> GREATER
425
	binaryIdentifier -> LESS
426
	binaryIdentifier -> GREATER_EQUAL
427
	binaryIdentifier -> LESS_EQUAL
428
	binaryIdentifier -> and
429
	binaryIdentifier -> or
430
	binaryIdentifier -> xor
431
432
	unaryIdentifier -> MINUS
433
	unaryIdentifier -> not
434
435
	iteratorIdentifier -> forAll
436
	iteratorIdentifier -> exists
437
	iteratorIdentifier -> isUnique
438
	iteratorIdentifier -> any
439
	iteratorIdentifier -> one
440
	iteratorIdentifier -> collect
441
	iteratorIdentifier -> select
442
	iteratorIdentifier -> reject
443
	iteratorIdentifier -> collectNested
444
	iteratorIdentifier -> sortedBy
445
	iteratorIdentifier -> closure
446
447
	keywordAsIdentifier1 -> iterate
448
	keywordAsIdentifier1 -> iteratorIdentifier
449
	keywordAsIdentifier1 -> allInstances
450
	keywordAsIdentifier1 -> body
451
	keywordAsIdentifier1 -> derive
452
	keywordAsIdentifier1 -> init
453
	keywordAsIdentifier1 -> Set
454
	keywordAsIdentifier1 -> Bag
455
	keywordAsIdentifier1 -> Sequence
456
	keywordAsIdentifier1 -> Collection
457
	keywordAsIdentifier1 -> OrderedSet
458
	--------
459
	keywordAsIdentifier -> keywordAsIdentifier1
460
	keywordAsIdentifier -> null
461
462
	binaryName -> simpleNameCS
463
	binaryName ::= binaryIdentifier
464
		/.$NewCase./
465
	keywordAsName ::= keywordAsIdentifier
466
		/.$NewCase./
467
	keywordAsName1 ::= keywordAsIdentifier1
468
		/.$NewCase./
469
	unaryName ::= unaryIdentifier
470
		/.$BeginCode
471
					SimpleNameCS result = createSimpleNameCS(
472
								SimpleTypeEnum.IDENTIFIER_LITERAL,
473
								getTokenText($getToken(1))
474
							);
475
					setOffsets(result, getIToken($getToken(1)));
476
					$setResult(result);
477
		  $EndCode
478
		./
479
		
480
	iterateName ::= iterate
481
		/.$NewCase./
482
	iteratorName ::= iteratorIdentifier
483
		/.$NewCase./
484
	oclIsInStateName ::= oclIsInState
485
		/.$BeginCode
486
					SimpleNameCS result = createSimpleNameCS(
487
								SimpleTypeEnum.KEYWORD_LITERAL,
488
								getTokenText($getToken(1))
489
							);
490
					setOffsets(result, getIToken($getToken(1)));
491
					$setResult(result);
492
		  $EndCode
493
		./
494
495
	--
496
	-- the 'operationCS' non-terminal is not referenced in this grammar
497
	--
498
	operationCS -> operationCS1
499
	operationCS -> operationCS2
500
	operationCS1 ::= IDENTIFIER '(' parametersCSopt ')' ':' typeCSopt
501
		/.$BeginCode
502
					CSTNode result = createOperationCS(
503
							getTokenText($getToken(1)),
504
							(EList)$getSym(3),
505
							(TypeCS)$getSym(6)
506
						);
507
					if ($getSym(6) != null) {
508
						setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(6));
509
					} else {
510
						setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5)));
511
					}
512
					$setResult(result);
513
		  $EndCode
514
		./
515
	operationCS2 ::= pathNameCS '::' simpleNameCS '(' parametersCSopt ')' ':' typeCSopt
516
		/.$BeginCode
517
					CSTNode result = createOperationCS(
518
							(PathNameCS)$getSym(1),
519
							(SimpleNameCS)$getSym(3),
520
							(EList)$getSym(5),
521
							(TypeCS)$getSym(8)
522
						);
523
					if ($getSym(8) != null) {
524
						setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(8));
525
					} else {
526
						setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(7)));
527
					}
528
					$setResult(result);
529
		  $EndCode
530
		./
531
532
533
	parametersCSopt ::= %empty
534
		/.$EmptyListAction./
535
	parametersCSopt -> parametersCS
536
	parametersCS ::= variableCS
537
		/.$BeginCode
538
					EList result = new BasicEList();
539
					result.add($getSym(1));
540
					$setResult(result);
541
		  $EndCode
542
		./
543
	parametersCS ::= parametersCS ',' variableCS
544
		/.$BeginCode
545
					EList result = (EList)$getSym(1);
546
					result.add($getSym(3));
547
					$setResult(result);
548
		  $EndCode
549
		./
550
551
	simpleNameCSopt ::= %empty
552
		/.$NullAction./
553
	simpleNameCSopt -> simpleNameCS	
554
555
	oclExpressionCS -> impliesExpCS
556
	oclExpressionCS -> impliesWithLet
557
	
558
	impliesExpCS -> andOrXorExpCS
559
	impliesWithLet -> andOrXorWithLet
560
	impliesExpCS ::= impliesExpCS implies andOrXorExpCS
561
		/.$NewCase./
562
	impliesWithLet ::= impliesExpCS implies andOrXorWithLet
563
		/.$NewCase./
564
565
	andOrXorExpCS -> equalityExpCS
566
	andOrXorWithLet -> equalityWithLet
567
	andOrXorExpCS ::= andOrXorExpCS and equalityExpCS
568
		/.$NewCase./
569
	andOrXorExpCS ::= andOrXorExpCS or equalityExpCS
570
		/.$NewCase./
571
	andOrXorExpCS ::= andOrXorExpCS xor equalityExpCS
572
		/.$NewCase./
573
	andOrXorWithLet ::= andOrXorExpCS and equalityWithLet
574
		/.$NewCase./
575
	andOrXorWithLet ::= andOrXorExpCS or equalityWithLet
576
		/.$NewCase./
577
	andOrXorWithLet ::= andOrXorExpCS xor equalityWithLet
578
		/.$BeginCode
579
					SimpleNameCS simpleNameCS = createSimpleNameCS(
580
								SimpleTypeEnum.STRING_LITERAL,
581
								getTokenText($getToken(2))
582
							);
583
					setOffsets(simpleNameCS, getIToken($getToken(2)));
584
					EList args = new BasicEList();
585
					args.add($getSym(3));
586
					CSTNode result = createOperationCallExpCS(
587
							(OCLExpressionCS)$getSym(1),
588
							simpleNameCS,
589
							args
590
						);
591
					setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3));
592
					$setResult(result);
593
		  $EndCode
594
		./
595
596
	equalityExpCS -> relationalExpCS
597
	equalityWithLet -> relationalWithLet
598
	equalityExpCS ::= equalityExpCS '=' relationalExpCS
599
		/.$NewCase./
600
	equalityWithLet ::= equalityExpCS '=' relationalWithLet
601
		/.$BeginCode
602
					SimpleNameCS simpleNameCS = createSimpleNameCS(
603
								SimpleTypeEnum.STRING_LITERAL,
604
								OCLStandardLibraryUtil.getOperationName(PredefinedType.EQUAL)
605
							);
606
					setOffsets(simpleNameCS, getIToken($getToken(2)));
607
					EList args = new BasicEList();
608
					args.add($getSym(3));
609
					CSTNode result = createOperationCallExpCS(
610
							(OCLExpressionCS)$getSym(1),
611
							simpleNameCS,
612
							args
613
						);
614
					setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3));
615
					$setResult(result);
616
		  $EndCode
617
		./
618
	equalityExpCS ::= equalityExpCS '<>' relationalExpCS
619
		/.$NewCase./
620
	equalityWithLet ::= equalityExpCS '<>' relationalWithLet
621
		/.$BeginCode
622
					SimpleNameCS simpleNameCS = createSimpleNameCS(
623
								SimpleTypeEnum.STRING_LITERAL,
624
								OCLStandardLibraryUtil.getOperationName(PredefinedType.NOT_EQUAL)
625
							);
626
					setOffsets(simpleNameCS, getIToken($getToken(2)));
627
					EList args = new BasicEList();
628
					args.add($getSym(3));
629
					CSTNode result = createOperationCallExpCS(
630
							(OCLExpressionCS)$getSym(1),
631
							simpleNameCS,
632
							args
633
						);
634
					setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3));
635
					$setResult(result);
636
		  $EndCode
637
		./
638
	
639
	relationalExpCS -> ifExpCSPrec
640
	-- Note that ifExp already embeds let, so we needn't deal with it here
641
	relationalWithLet -> additiveWithLet
642
	relationalExpCS ::= relationalExpCS '>' ifExpCSPrec
643
		/.$NewCase./
644
	relationalWithLet ::= relationalExpCS '>' additiveWithLet
645
		/.$BeginCode
646
					SimpleNameCS simpleNameCS = createSimpleNameCS(
647
								SimpleTypeEnum.STRING_LITERAL,
648
								OCLStandardLibraryUtil.getOperationName(PredefinedType.GREATER_THAN)
649
							);
650
					setOffsets(simpleNameCS, getIToken($getToken(2)));
651
					EList args = new BasicEList();
652
					args.add($getSym(3));
653
					CSTNode result = createOperationCallExpCS(
654
							(OCLExpressionCS)$getSym(1),
655
							simpleNameCS,
656
							args
657
						);
658
					setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3));
659
					$setResult(result);
660
		  $EndCode
661
		./
662
	relationalExpCS ::= relationalExpCS '<' ifExpCSPrec
663
		/.$NewCase./
664
	relationalWithLet ::= relationalExpCS '<' additiveWithLet
665
		/.$BeginCode
666
					SimpleNameCS simpleNameCS = createSimpleNameCS(
667
								SimpleTypeEnum.STRING_LITERAL,
668
								OCLStandardLibraryUtil.getOperationName(PredefinedType.LESS_THAN)
669
							);
670
					setOffsets(simpleNameCS, getIToken($getToken(2)));
671
					EList args = new BasicEList();
672
					args.add($getSym(3));
673
					CSTNode result = createOperationCallExpCS(
674
							(OCLExpressionCS)$getSym(1),
675
							simpleNameCS,
676
							args
677
						);
678
					setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3));
679
					$setResult(result);
680
		  $EndCode
681
		./
682
	relationalExpCS ::= relationalExpCS '>=' ifExpCSPrec
683
		/.$NewCase./
684
	relationalWithLet ::= relationalExpCS '>=' additiveWithLet
685
		/.$BeginCode
686
					SimpleNameCS simpleNameCS = createSimpleNameCS(
687
								SimpleTypeEnum.STRING_LITERAL,
688
								OCLStandardLibraryUtil.getOperationName(PredefinedType.GREATER_THAN_EQUAL)
689
							);
690
					setOffsets(simpleNameCS, getIToken($getToken(2)));
691
					EList args = new BasicEList();
692
					args.add($getSym(3));
693
					CSTNode result = createOperationCallExpCS(
694
							(OCLExpressionCS)$getSym(1),
695
							simpleNameCS,
696
							args
697
						);
698
					setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3));
699
					$setResult(result);
700
		  $EndCode
701
		./
702
	relationalExpCS ::= relationalExpCS '<=' ifExpCSPrec
703
		/.$NewCase./
704
	relationalWithLet ::= relationalExpCS '<=' additiveWithLet
705
		/.$BeginCode
706
					SimpleNameCS simpleNameCS = createSimpleNameCS(
707
								SimpleTypeEnum.STRING_LITERAL,
708
								OCLStandardLibraryUtil.getOperationName(PredefinedType.LESS_THAN_EQUAL)
709
							);
710
					setOffsets(simpleNameCS, getIToken($getToken(2)));
711
					EList args = new BasicEList();
712
					args.add($getSym(3));
713
					CSTNode result = createOperationCallExpCS(
714
							(OCLExpressionCS)$getSym(1),
715
							simpleNameCS,
716
							args
717
						);
718
					setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3));
719
					$setResult(result);
720
		  $EndCode
721
		./
722
	
723
	ifExpCSPrec -> additiveExpCS
724
	ifExpCSPrec -> ifExpCS
725
726
	additiveExpCS -> multiplicativeExpCS
727
	additiveWithLet -> multiplicativeWithLet
728
	additiveExpCS ::= additiveExpCS '+' multiplicativeExpCS
729
		/.$NewCase./
730
	additiveWithLet ::= additiveExpCS '+' multiplicativeWithLet
731
		/.$BeginCode
732
					SimpleNameCS simpleNameCS = createSimpleNameCS(
733
								SimpleTypeEnum.STRING_LITERAL,
734
								OCLStandardLibraryUtil.getOperationName(PredefinedType.PLUS)
735
							);
736
					setOffsets(simpleNameCS, getIToken($getToken(2)));
737
					EList args = new BasicEList();
738
					args.add($getSym(3));
739
					CSTNode result = createOperationCallExpCS(
740
							(OCLExpressionCS)$getSym(1),
741
							simpleNameCS,
742
							args
743
						);
744
					setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3));
745
					$setResult(result);
746
		  $EndCode
747
		./
748
	additiveExpCS ::= additiveExpCS '-' multiplicativeExpCS
749
		/.$NewCase./
750
	additiveWithLet ::= additiveExpCS '-' multiplicativeWithLet
751
		/.$BeginCode
752
					SimpleNameCS simpleNameCS = createSimpleNameCS(
753
								SimpleTypeEnum.STRING_LITERAL,
754
								OCLStandardLibraryUtil.getOperationName(PredefinedType.MINUS)
755
							);
756
					setOffsets(simpleNameCS, getIToken($getToken(2)));
757
					EList args = new BasicEList();
758
					args.add($getSym(3));
759
					CSTNode result = createOperationCallExpCS(
760
							(OCLExpressionCS)$getSym(1),
761
							simpleNameCS,
762
							args
763
						);
764
					setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3));
765
					$setResult(result);
766
		  $EndCode
767
		./
768
	
769
	multiplicativeExpCS -> unaryExpCS
770
	multiplicativeWithLet -> unaryWithLet
771
	multiplicativeExpCS ::= multiplicativeExpCS '*' unaryExpCS
772
		/.$NewCase./
773
	multiplicativeWithLet ::= multiplicativeExpCS '*' unaryWithLet
774
		/.$BeginCode
775
					SimpleNameCS simpleNameCS = createSimpleNameCS(
776
								SimpleTypeEnum.STRING_LITERAL,
777
								OCLStandardLibraryUtil.getOperationName(PredefinedType.TIMES)
778
							);
779
					setOffsets(simpleNameCS, getIToken($getToken(2)));
780
					EList args = new BasicEList();
781
					args.add($getSym(3));
782
					CSTNode result = createOperationCallExpCS(
783
							(OCLExpressionCS)$getSym(1),
784
							simpleNameCS,
785
							args
786
						);
787
					setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3));
788
					$setResult(result);
789
		  $EndCode
790
		./
791
	multiplicativeExpCS ::= multiplicativeExpCS '/' unaryExpCS
792
		/.$NewCase./
793
	multiplicativeWithLet ::= multiplicativeExpCS '/' unaryWithLet
794
		/.$BeginCode
795
					SimpleNameCS simpleNameCS = createSimpleNameCS(
796
								SimpleTypeEnum.STRING_LITERAL,
797
								OCLStandardLibraryUtil.getOperationName(PredefinedType.DIVIDE)
798
							);
799
					setOffsets(simpleNameCS, getIToken($getToken(2)));
800
					EList args = new BasicEList();
801
					args.add($getSym(3));
802
					CSTNode result = createOperationCallExpCS(
803
							(OCLExpressionCS)$getSym(1),
804
							simpleNameCS,
805
							args
806
						);
807
					setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3));
808
					$setResult(result);
809
		  $EndCode
810
		./
811
	
812
	unaryExpCS -> dotArrowExpCS
813
	unaryWithLet -> letExpCS
814
	unaryExpCS ::= '-' unaryExpCS
815
		/.$BeginCode
816
					SimpleNameCS simpleNameCS = createSimpleNameCS(
817
								SimpleTypeEnum.STRING_LITERAL,
818
								OCLStandardLibraryUtil.getOperationName(PredefinedType.MINUS)
819
							);
820
					setOffsets(simpleNameCS, getIToken($getToken(1)));
821
					CSTNode result = createOperationCallExpCS(
822
							(OCLExpressionCS)$getSym(2),
823
							simpleNameCS,
824
							new BasicEList()
825
						);
826
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(2));
827
					$setResult(result);
828
		  $EndCode
829
		./
830
	unaryExpCS ::= not unaryExpCS
831
		/.$BeginCode
832
					SimpleNameCS simpleNameCS = createSimpleNameCS(
833
								SimpleTypeEnum.STRING_LITERAL,
834
								getTokenText($getToken(1))
835
							);
836
					setOffsets(simpleNameCS, getIToken($getToken(1)));
837
					CSTNode result = createOperationCallExpCS(
838
							(OCLExpressionCS)$getSym(2),
839
							simpleNameCS,
840
							new BasicEList()
841
						);
842
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(2));
843
					$setResult(result);
844
		  $EndCode
845
		./
846
847
	dotArrowExpCS -> oclExpCS
848
	dotArrowExpCS ::= dotArrowExpCS callExpCS
849
		/.$BeginCode
850
					CallExpCS result = (CallExpCS)$getSym(2);
851
					result.setSource((OCLExpressionCS)$getSym(1));
852
					setOffsets(result, (CSTNode)$getSym(1), result);
853
					$setResult(result);
854
		  $EndCode
855
		./
856
	dotArrowExpCS ::= dotArrowExpCS messageExpCS
857
		/.$BeginCode
858
					MessageExpCS result = (MessageExpCS)$getSym(2);
859
					result.setTarget((OCLExpressionCS)$getSym(1));
860
					setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(2));
861
					$setResult(result);
862
		  $EndCode
863
		./
864
	dotArrowExpCS ::= NUMERIC_OPERATION '(' argumentsCSopt ')'
865
		/.$BeginCode
866
					// NUMERIC_OPERATION -> Integer '.' Identifier
867
					String text = getTokenText(dtParser.getToken(1));
868
					int index = text.indexOf('.');
869
					String integer = text.substring(0, index);
870
					String simpleName = text.substring(index + 1);
871
872
					// create the IntegerLiteralExpCS
873
					IToken numericToken = getIToken($getToken(1));
874
					int startOffset = numericToken.getStartOffset();
875
					int endOffset = startOffset + integer.length() - 1; // inclusive
876
877
					IntegerLiteralExpCS integerLiteralExpCS = createIntegerLiteralExpCS(integer);
878
					integerLiteralExpCS.setStartOffset(startOffset);
879
					integerLiteralExpCS.setEndOffset(endOffset);
880
					integerLiteralExpCS.setStartToken(numericToken);
881
					integerLiteralExpCS.setEndToken(numericToken);
882
883
					startOffset = endOffset + 2; // end of integerLiteral + 1('.') + 1(start of simpleName)
884
					endOffset = getIToken($getToken(1)).getEndOffset();
885
886
					// create the SimpleNameCS
887
					SimpleNameCS simpleNameCS = createSimpleNameCS(
888
								SimpleTypeEnum.IDENTIFIER_LITERAL,
889
								simpleName
890
							);
891
					simpleNameCS.setStartOffset(startOffset);
892
					simpleNameCS.setEndOffset(endOffset);
893
					simpleNameCS.setStartToken(numericToken);
894
					simpleNameCS.setEndToken(numericToken);
895
896
					// create the OperationCallExpCS
897
					CSTNode result = createOperationCallExpCS(
898
							integerLiteralExpCS,
899
							simpleNameCS,
900
							(EList)$getSym(3)
901
						);
902
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4)));
903
					$setResult(result);
904
		  $EndCode
905
		./
906
907
    -- static operation call (@pre is not permitted in this context)
908
	dotArrowExpCS ::=  pathNameCS '::' simpleNameCS '(' argumentsCSopt ')'
909
		/.$BeginCode
910
					OperationCallExpCS result = createOperationCallExpCS(
911
							(PathNameCS)$getSym(1),
912
							(SimpleNameCS)$getSym(3),
913
							(EList)$getSym(5)
914
						);
915
					setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(6)));
916
					result.setAccessor(DotOrArrowEnum.DOT_LITERAL);
917
					$setResult(result);
918
		  $EndCode
919
		./
920
921
922
	oclExpCS -> variableExpCS
923
	oclExpCS -> literalExpCS
924
	oclExpCS -> operationCallExpCS
925
	oclExpCS -> keywordOperationCallExpCS
926
927
	oclExpCS ::= '(' oclExpressionCS ')'
928
		/.$BeginCode
929
					CSTNode result = (CSTNode)$getSym(2);
930
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
931
					$setResult(result);
932
		  $EndCode
933
		./
934
935
	variableExpCS ::= simpleNameCS isMarkedPreCS
936
		/.$NewCase./
937
	variableExpCS ::= keywordAsName1 isMarkedPreCS
938
		/.$BeginCode
939
					IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(2);
940
					CSTNode result = createVariableExpCS(
941
							(SimpleNameCS)$getSym(1),
942
							new BasicEList(),
943
							isMarkedPreCS
944
						);
945
					if (isMarkedPreCS.isPre()) {
946
						setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(2));
947
					} else {
948
						setOffsets(result, (CSTNode)$getSym(1));
949
					}
950
					$setResult(result);
951
		  $EndCode
952
		./
953
	variableExpCS ::= simpleNameCS '[' argumentsCS ']' isMarkedPreCS
954
		/.$NewCase./
955
	variableExpCS ::= keywordAsName1 '[' argumentsCS ']' isMarkedPreCS
956
		/.$BeginCode
957
					IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(5);
958
					CSTNode result = createVariableExpCS(
959
							(SimpleNameCS)$getSym(1),
960
							(EList)$getSym(3),
961
							isMarkedPreCS
962
						);
963
					if (isMarkedPreCS.isPre()) {
964
						setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(5));
965
					} else {
966
						setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(4)));
967
					}
968
					$setResult(result);
969
		  $EndCode
970
		./
971
972
973
	simpleNameCS -> primitiveTypeCS
974
	simpleNameCS ::= self
975
		/.$BeginCode
976
					CSTNode result = createSimpleNameCS(
977
							SimpleTypeEnum.SELF_LITERAL,
978
							getTokenText($getToken(1))
979
						);
980
					setOffsets(result, getIToken($getToken(1)));
981
					$setResult(result);
982
		  $EndCode
983
		./
984
	simpleNameCS ::= IDENTIFIER
985
		/.$BeginCode
986
					CSTNode result = createSimpleNameCS(
987
							SimpleTypeEnum.IDENTIFIER_LITERAL,
988
							getTokenText($getToken(1))
989
						);
990
					setOffsets(result, getIToken($getToken(1)));
991
					$setResult(result);
992
		  $EndCode
993
		./
994
995
	primitiveTypeCS ::= Integer
996
		/.$BeginCode
997
					CSTNode result = createPrimitiveTypeCS(
998
							SimpleTypeEnum.INTEGER_LITERAL,
999
							getTokenText($getToken(1))
1000
						);
1001
					setOffsets(result, getIToken($getToken(1)));
1002
					$setResult(result);
1003
		  $EndCode
1004
		./
1005
	primitiveTypeCS ::= UnlimitedNatural
1006
		/.$BeginCode
1007
					CSTNode result = createPrimitiveTypeCS(
1008
							SimpleTypeEnum.UNLIMITED_NATURAL_LITERAL,
1009
							getTokenText($getToken(1))
1010
						);
1011
					setOffsets(result, getIToken($getToken(1)));
1012
					$setResult(result);
1013
		  $EndCode
1014
		./
1015
	primitiveTypeCS ::= String
1016
		/.$BeginCode
1017
					CSTNode result = createPrimitiveTypeCS(
1018
							SimpleTypeEnum.STRING_LITERAL,
1019
							getTokenText($getToken(1))
1020
						);
1021
					setOffsets(result, getIToken($getToken(1)));
1022
					$setResult(result);
1023
		  $EndCode
1024
		./
1025
	primitiveTypeCS ::= Real
1026
		/.$BeginCode
1027
					CSTNode result = createPrimitiveTypeCS(
1028
							SimpleTypeEnum.REAL_LITERAL,
1029
							getTokenText($getToken(1))
1030
						);
1031
					setOffsets(result, getIToken($getToken(1)));
1032
					$setResult(result);
1033
		  $EndCode
1034
		./
1035
	primitiveTypeCS ::= Boolean
1036
		/.$BeginCode
1037
					CSTNode result = createPrimitiveTypeCS(
1038
							SimpleTypeEnum.BOOLEAN_LITERAL,
1039
							getTokenText($getToken(1))
1040
						);
1041
					setOffsets(result, getIToken($getToken(1)));
1042
					$setResult(result);
1043
		  $EndCode
1044
		./
1045
	primitiveTypeCS ::= OclAny
1046
		/.$BeginCode
1047
					CSTNode result = createPrimitiveTypeCS(
1048
							SimpleTypeEnum.OCL_ANY_LITERAL,
1049
							getTokenText($getToken(1))
1050
						);
1051
					setOffsets(result, getIToken($getToken(1)));
1052
					$setResult(result);
1053
		  $EndCode
1054
		./
1055
	primitiveTypeCS ::= OclVoid
1056
		/.$BeginCode
1057
					CSTNode result = createPrimitiveTypeCS(
1058
							SimpleTypeEnum.OCL_VOID_LITERAL,
1059
							getTokenText($getToken(1))
1060
						);
1061
					setOffsets(result, getIToken($getToken(1)));
1062
					$setResult(result);
1063
		  $EndCode
1064
		./
1065
	primitiveTypeCS ::= Invalid
1066
		/.$BeginCode
1067
					CSTNode result = createPrimitiveTypeCS(
1068
							SimpleTypeEnum.INVALID_LITERAL,
1069
							getTokenText($getToken(1))
1070
						);
1071
					setOffsets(result, getIToken($getToken(1)));
1072
					$setResult(result);
1073
		  $EndCode
1074
		./
1075
	primitiveTypeCS ::= OclMessage
1076
		/.$BeginCode
1077
					CSTNode result = createPrimitiveTypeCS(
1078
							SimpleTypeEnum.OCL_MESSAGE_LITERAL,
1079
							getTokenText($getToken(1))
1080
						);
1081
					setOffsets(result, getIToken($getToken(1)));
1082
					$setResult(result);
1083
		  $EndCode
1084
		./
1085
1086
	pathNameCS ::= IDENTIFIER
1087
		/.$BeginCode
1088
					CSTNode result = createPathNameCS(getTokenText($getToken(1)));
1089
					setOffsets(result, getIToken($getToken(1)));
1090
					$setResult(result);
1091
		  $EndCode
1092
		./
1093
	pathNameCS ::= pathNameCS '::' simpleNameCS
1094
		/.$BeginCode
1095
					PathNameCS result = (PathNameCS)$getSym(1);
1096
					result = extendPathNameCS(result, getTokenText(dtParser.getToken(3)));
1097
					setOffsets(result, result, (CSTNode)$getSym(3));
1098
					$setResult(result);
1099
		  $EndCode
1100
		./
1101
1102
	pathNameCSOpt ::= %empty
1103
		/.$BeginCode
1104
					CSTNode result = createPathNameCS();
1105
					$setResult(result);
1106
		  $EndCode
1107
		./
1108
	pathNameCSOpt -> pathNameCS
1109
1110
	literalExpCS -> enumLiteralExpCS
1111
	literalExpCS -> collectionLiteralExpCS
1112
	literalExpCS -> tupleLiteralExpCS
1113
	literalExpCS -> primitiveLiteralExpCS
1114
	literalExpCS -> nullLiteralExpCS
1115
	literalExpCS -> invalidLiteralExpCS
1116
1117
    -- also covers the case of static attribute call, in which
1118
    --    case @pre is not allowed anyway
1119
	enumLiteralExpCS ::= pathNameCS '::' keywordAsName
1120
		/.$NewCase./
1121
	enumLiteralExpCS ::= pathNameCS '::' simpleNameCS
1122
		/.$BeginCode
1123
					CSTNode result = createEnumLiteralExpCS(
1124
							(PathNameCS)$getSym(1),
1125
							(SimpleNameCS)$getSym(3)
1126
						);
1127
					setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3));
1128
					$setResult(result);
1129
		  $EndCode
1130
		./
1131
1132
	collectionLiteralExpCS ::= collectionTypeIdentifierCS '{' collectionLiteralPartsCSopt '}'
1133
		/.$BeginCode
1134
					Object[] objs = (Object[])$getSym(1);
1135
					CSTNode result = createCollectionLiteralExpCS(
1136
							(CollectionTypeIdentifierEnum)objs[1],
1137
							(EList)$getSym(3)
1138
						);
1139
					setOffsets(result, (IToken)objs[0], getIToken($getToken(4)));
1140
					$setResult(result);
1141
		  $EndCode
1142
		./
1143
1144
	collectionTypeIdentifierCS ::= Set
1145
		/.$BeginCode
1146
					$setResult(new Object[]{getIToken($getToken(1)), CollectionTypeIdentifierEnum.SET_LITERAL});
1147
		  $EndCode
1148
		./
1149
	collectionTypeIdentifierCS ::= Bag
1150
		/.$BeginCode
1151
					$setResult(new Object[]{getIToken($getToken(1)), CollectionTypeIdentifierEnum.BAG_LITERAL});
1152
		  $EndCode
1153
		./
1154
	collectionTypeIdentifierCS ::= Sequence
1155
		/.$BeginCode
1156
					$setResult(new Object[]{getIToken($getToken(1)), CollectionTypeIdentifierEnum.SEQUENCE_LITERAL});
1157
		  $EndCode
1158
		./
1159
	collectionTypeIdentifierCS ::= Collection
1160
		/.$BeginCode
1161
					$setResult(new Object[]{getIToken($getToken(1)), CollectionTypeIdentifierEnum.COLLECTION_LITERAL});
1162
		  $EndCode
1163
		./
1164
	collectionTypeIdentifierCS ::= OrderedSet
1165
		/.$BeginCode
1166
					$setResult(new Object[]{getIToken($getToken(1)), CollectionTypeIdentifierEnum.ORDERED_SET_LITERAL});
1167
		  $EndCode
1168
		./
1169
1170
	collectionLiteralPartsCSopt ::= %empty
1171
		/.$EmptyListAction./
1172
	collectionLiteralPartsCSopt -> collectionLiteralPartsCS
1173
1174
	collectionLiteralPartsCS ::= collectionLiteralPartCS
1175
		/.$BeginCode
1176
					EList result = new BasicEList();
1177
					result.add($getSym(1));
1178
					$setResult(result);
1179
		  $EndCode
1180
		./
1181
	collectionLiteralPartsCS ::= collectionLiteralPartsCS ',' collectionLiteralPartCS
1182
		/.$BeginCode
1183
					EList result = (EList)$getSym(1);
1184
					result.add($getSym(3));
1185
					$setResult(result);
1186
		  $EndCode
1187
		./
1188
1189
	collectionLiteralPartCS -> collectionRangeCS
1190
	collectionLiteralPartCS ::= oclExpressionCS
1191
		/.$BeginCode
1192
					CSTNode result = createCollectionLiteralPartCS(
1193
							(OCLExpressionCS)$getSym(1)
1194
						);
1195
					setOffsets(result, (CSTNode)$getSym(1));
1196
					$setResult(result);
1197
		  $EndCode
1198
		./
1199
1200
	collectionRangeCS ::= '-' INTEGER_RANGE_START oclExpressionCS
1201
		/.$BeginCode
1202
					OCLExpressionCS rangeStart = createRangeStart(
1203
							getTokenText($getToken(2)), true);
1204
					CSTNode result = createCollectionRangeCS(
1205
							rangeStart,
1206
							(OCLExpressionCS)$getSym(3)
1207
						);
1208
					setOffsets(result, rangeStart, (CSTNode)$getSym(3));
1209
					$setResult(result);
1210
		  $EndCode
1211
		./
1212
	collectionRangeCS ::= INTEGER_RANGE_START oclExpressionCS
1213
		/.$BeginCode
1214
					OCLExpressionCS rangeStart = createRangeStart(
1215
							getTokenText($getToken(1)), false);
1216
					CSTNode result = createCollectionRangeCS(
1217
							rangeStart,
1218
							(OCLExpressionCS)$getSym(2)
1219
						);
1220
					setOffsets(result, rangeStart, (CSTNode)$getSym(2));
1221
					$setResult(result);
1222
		  $EndCode
1223
		./
1224
	collectionRangeCS ::= oclExpressionCS '..' oclExpressionCS
1225
		/.$BeginCode
1226
					CSTNode result = createCollectionRangeCS(
1227
							(OCLExpressionCS)$getSym(1),
1228
							(OCLExpressionCS)$getSym(3)
1229
						);
1230
					setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(3));
1231
					$setResult(result);
1232
		  $EndCode
1233
		./
1234
1235
	primitiveLiteralExpCS -> integerLiteralExpCS
1236
	primitiveLiteralExpCS -> unlimitedNaturalLiteralExpCS
1237
	primitiveLiteralExpCS -> realLiteralExpCS
1238
	primitiveLiteralExpCS -> stringLiteralExpCS
1239
	primitiveLiteralExpCS -> booleanLiteralExpCS
1240
1241
	tupleLiteralExpCS ::= Tuple '{' variableListCS2 '}'
1242
		/.$BeginCode
1243
					CSTNode result = createTupleLiteralExpCS((EList)$getSym(3));
1244
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4)));
1245
					$setResult(result);
1246
		  $EndCode
1247
		./
1248
	integerLiteralExpCS ::= INTEGER_LITERAL
1249
		/.$BeginCode
1250
					CSTNode result = createIntegerLiteralExpCS(getTokenText($getToken(1)));
1251
					setOffsets(result, getIToken($getToken(1)));
1252
					$setResult(result);
1253
		  $EndCode
1254
		./
1255
	unlimitedNaturalLiteralExpCS ::= '*'
1256
		/.$BeginCode
1257
					CSTNode result = createUnlimitedNaturalLiteralExpCS(getTokenText($getToken(1)));
1258
					setOffsets(result, getIToken($getToken(1)));
1259
					$setResult(result);
1260
		  $EndCode
1261
		./
1262
	realLiteralExpCS ::= REAL_LITERAL
1263
		/.$BeginCode
1264
					CSTNode result = createRealLiteralExpCS(getTokenText($getToken(1)));
1265
					setOffsets(result, getIToken($getToken(1)));
1266
					$setResult(result);
1267
		  $EndCode
1268
		./
1269
	stringLiteralExpCS ::= STRING_LITERAL
1270
		/.$BeginCode
1271
					IToken literalToken = getIToken($getToken(1));
1272
					StringLiteralExpCS result = createStringLiteralExpCS(literalToken.toString());
1273
					result.setUnescapedStringSymbol(unescape(literalToken));
1274
					setOffsets(result, literalToken);
1275
					$setResult(result);
1276
		  $EndCode
1277
		./
1278
	booleanLiteralExpCS ::= true
1279
		/.$BeginCode
1280
					CSTNode result = createBooleanLiteralExpCS(getTokenText($getToken(1)));
1281
					setOffsets(result, getIToken($getToken(1)));
1282
					$setResult(result);
1283
		  $EndCode
1284
		./
1285
	booleanLiteralExpCS ::= false
1286
		/.$BeginCode
1287
					CSTNode result = createBooleanLiteralExpCS(getTokenText($getToken(1)));
1288
					setOffsets(result, getIToken($getToken(1)));
1289
					$setResult(result);
1290
		  $EndCode
1291
		./
1292
1293
	nullLiteralExpCS ::= null
1294
		/.$BeginCode
1295
					CSTNode result = createNullLiteralExpCS(getTokenText($getToken(1)));
1296
					setOffsets(result, getIToken($getToken(1)));
1297
					$setResult(result);
1298
		  $EndCode
1299
		./
1300
1301
	invalidLiteralExpCS ::= OclInvalid
1302
		/.$BeginCode
1303
					CSTNode result = createInvalidLiteralExpCS(getTokenText($getToken(1)));
1304
					setOffsets(result, getIToken($getToken(1)));
1305
					$setResult(result);
1306
		  $EndCode
1307
		./
1308
1309
1310
	callExpCS ::= '->' featureCallExpCS
1311
		/.$NewCase./
1312
	callExpCS ::= '->' loopExpCS
1313
		/.$BeginCode
1314
					CallExpCS result = (CallExpCS)$getSym(2);
1315
					result.setAccessor(DotOrArrowEnum.ARROW_LITERAL);
1316
					$setResult(result);
1317
		  $EndCode
1318
		./
1319
	callExpCS ::= '.' keywordOperationCallExpCS
1320
		/.$NewCase./
1321
	callExpCS ::= '.' featureCallExpCS
1322
		/.$BeginCode
1323
					CallExpCS result = (CallExpCS)$getSym(2);
1324
					result.setAccessor(DotOrArrowEnum.DOT_LITERAL);
1325
					$setResult(result);
1326
		  $EndCode
1327
		./
1328
1329
	loopExpCS -> iteratorExpCS
1330
	loopExpCS -> iterateExpCS
1331
1332
	iteratorExpCS ::= iteratorName '(' oclExpressionCS ')'
1333
		/.$BeginCode
1334
					SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1);
1335
					CSTNode result = createIteratorExpCS(
1336
							simpleNameCS,
1337
							null,
1338
							null,
1339
							(OCLExpressionCS)$getSym(3)
1340
						);
1341
					setOffsets(result, simpleNameCS, getIToken($getToken(4)));
1342
					$setResult(result);
1343
		  $EndCode
1344
		./
1345
	iteratorExpCS ::= iteratorName '(' variableCS '|' oclExpressionCS ')'
1346
		/.$BeginCode
1347
					SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1);
1348
					CSTNode result = createIteratorExpCS(
1349
							simpleNameCS,
1350
							(VariableCS)$getSym(3),
1351
							null,
1352
							(OCLExpressionCS)$getSym(5)
1353
						);
1354
					setOffsets(result, simpleNameCS, getIToken($getToken(6)));
1355
					$setResult(result);
1356
		  $EndCode
1357
		./
1358
	iteratorExpCS ::= iteratorName '(' variableCS ',' variableCS '|' oclExpressionCS ')'
1359
		/.$BeginCode
1360
					SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1);
1361
					CSTNode result = createIteratorExpCS(
1362
							simpleNameCS,
1363
							(VariableCS)$getSym(3),
1364
							(VariableCS)$getSym(5),
1365
							(OCLExpressionCS)$getSym(7)
1366
						);
1367
					setOffsets(result, simpleNameCS, getIToken($getToken(8)));
1368
					$setResult(result);
1369
		  $EndCode
1370
		./
1371
1372
	iterateExpCS ::= iterateName '(' variableCS '|' oclExpressionCS ')'
1373
		/.$BeginCode
1374
					SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1);
1375
					CSTNode result = createIterateExpCS(
1376
							simpleNameCS,
1377
							(VariableCS)$getSym(3),
1378
							null,
1379
							(OCLExpressionCS)$getSym(5)
1380
						);
1381
					setOffsets(result, simpleNameCS, getIToken($getToken(6)));
1382
					$setResult(result);
1383
		  $EndCode
1384
		./
1385
	iterateExpCS ::= iterateName '(' variableCS ';' variableCS '|' oclExpressionCS ')'
1386
		/.$BeginCode
1387
					SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1);
1388
					CSTNode result = createIterateExpCS(
1389
							simpleNameCS,
1390
							(VariableCS)$getSym(3),
1391
							(VariableCS)$getSym(5),
1392
							(OCLExpressionCS)$getSym(7)
1393
						);
1394
					setOffsets(result, simpleNameCS, getIToken($getToken(8)));
1395
					$setResult(result);
1396
		  $EndCode
1397
		./
1398
1399
	variableCS ::= IDENTIFIER
1400
		/.$BeginCode
1401
					CSTNode result = createVariableCS(
1402
							getTokenText($getToken(1)),
1403
							null,
1404
							null
1405
						);
1406
					setOffsets(result, getIToken($getToken(1)));
1407
					$setResult(result);
1408
		  $EndCode
1409
		./
1410
	typedVariableCS ::= IDENTIFIER ':' typeCS
1411
		/.$BeginCode
1412
					CSTNode result = createVariableCS(
1413
							getTokenText($getToken(1)),
1414
							(TypeCS)$getSym(3),
1415
							null
1416
						);
1417
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(3));
1418
					$setResult(result);
1419
		  $EndCode
1420
		./
1421
	variableCS -> typedVariableCS
1422
	variableCS ::= IDENTIFIER ':' typeCS '=' oclExpressionCS
1423
		/.$BeginCode
1424
					CSTNode result = createVariableCS(
1425
							getTokenText($getToken(1)),
1426
							(TypeCS)$getSym(3),
1427
							(OCLExpressionCS)$getSym(5)
1428
						);
1429
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(5));
1430
					$setResult(result);
1431
		  $EndCode
1432
		./
1433
1434
	-- this form of variable declaration is only used in tuple literals
1435
	variableCS2 ::= IDENTIFIER '=' oclExpressionCS
1436
		/.$BeginCode
1437
					CSTNode result = createVariableCS(
1438
							getTokenText($getToken(1)),
1439
							null,
1440
							(OCLExpressionCS)$getSym(3)
1441
						);
1442
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(3));
1443
					$setResult(result);
1444
		  $EndCode
1445
		./
1446
1447
	typeCSopt ::= %empty
1448
		/.$NullAction./
1449
	typeCSopt -> typeCS
1450
1451
	-- the order of these rules is important!  Try to match primitives
1452
	--   first, then tuples (more complex), and finally collections.
1453
	--   Looking for type names in the Ecore model is a last resort
1454
	typeCS -> primitiveTypeCS
1455
	typeCS -> tupleTypeCS
1456
	typeCS -> collectionTypeCS
1457
	typeCS -> pathNameCS
1458
1459
	collectionTypeCS ::= collectionTypeIdentifierCS '(' typeCS ')'
1460
		/.$BeginCode
1461
					Object[] objs = (Object[])$getSym(1);
1462
					CSTNode result = createCollectionTypeCS(
1463
							(CollectionTypeIdentifierEnum)objs[1],
1464
							(TypeCS)$getSym(3)
1465
						);
1466
					setOffsets(result, (IToken)objs[0], getIToken($getToken(4)));
1467
					$setResult(result);
1468
		  $EndCode
1469
		./
1470
1471
	tupleTypeCS ::= Tuple '(' variableListCSopt ')'
1472
		/.$BeginCode
1473
					CSTNode result = createTupleTypeCS((EList)$getSym(3));
1474
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4)));
1475
					$setResult(result);
1476
		  $EndCode
1477
		./
1478
1479
	
1480
	variableListCSopt ::= %empty
1481
		/.$EmptyListAction./
1482
	variableListCSopt -> variableListCS
1483
	variableListCS ::= variableCS 
1484
		/.$BeginCode
1485
					EList result = new BasicEList();
1486
					result.add($getSym(1));
1487
					$setResult(result);
1488
		  $EndCode
1489
		./
1490
	variableListCS ::= variableListCS ',' variableCS
1491
		/.$BeginCode
1492
					EList result = (EList)$getSym(1);
1493
					result.add($getSym(3));
1494
					$setResult(result);
1495
		  $EndCode
1496
		./
1497
	
1498
	-- this form of variable declaration list is only used in tuple literals
1499
	variableListCS2 ::= variableCS2
1500
		/.$NewCase./
1501
	variableListCS2 ::= variableCS
1502
		/.$BeginCode
1503
					EList result = new BasicEList();
1504
					result.add($getSym(1));
1505
					$setResult(result);
1506
		  $EndCode
1507
		./
1508
	variableListCS2 ::= variableListCS2 ',' variableCS2
1509
		/.$NewCase./
1510
	variableListCS2 ::= variableListCS2 ',' variableCS
1511
		/.$BeginCode
1512
					EList result = (EList)$getSym(1);
1513
					result.add($getSym(3));
1514
					$setResult(result);
1515
		  $EndCode
1516
		./
1517
	
1518
	-- covers attributeCallExpCS and navigationCallExpCS
1519
	featureCallExpCS -> attrOrNavCallExpCS
1520
1521
	featureCallExpCS -> operationCallExpCS
1522
	featureCallExpCS ::= unaryName isMarkedPreCS '(' argumentsCSopt ')'
1523
		/.$NewCase./
1524
	-- even though these operations do not use @pre or do not accept multiple arguments
1525
	-- in order to get better error reporting, the rule signature must comply with
1526
	-- the full rule of an operationCallExpCS
1527
	-- the alternative would be to remove these as keywords, but then the parser
1528
	-- would accept variable declarations where the var can be named "oclIsNew" for example
1529
	operationCallExpCS ::= binaryName isMarkedPreCS '(' argumentsCSopt ')'
1530
		/.$NewCase./
1531
	keywordOperationCallExpCS ::= keywordAsName isMarkedPreCS '(' argumentsCSopt ')'
1532
		/.$BeginCode
1533
					CSTNode result = createOperationCallExpCS(
1534
							(SimpleNameCS)$getSym(1),
1535
							(IsMarkedPreCS)$getSym(2),
1536
							(EList)$getSym(4)
1537
						);
1538
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5)));
1539
					$setResult(result);
1540
		  $EndCode
1541
		./
1542
1543
	stateExpCS ::= pathNameCSOpt
1544
		/.$BeginCode
1545
					PathNameCS pathNameCS = (PathNameCS)$getSym(1);
1546
					StateExpCS result = createStateExpCS(pathNameCS);
1547
					setOffsets(result, pathNameCS);
1548
					$setResult(result);
1549
		  $EndCode
1550
		./
1551
	-- FIXME StateExpCS creates a needless irregularity; unwrap its content as an argument list
1552
	operationCallExpCS ::= oclIsInStateName isMarkedPreCS '(' stateExpCS ')'
1553
		/.$BeginCode
1554
					SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1);
1555
					CSTNode result = createOperationCallExpCS(
1556
							simpleNameCS,
1557
							(IsMarkedPreCS)$getSym(2),
1558
							(StateExpCS)$getSym(4)
1559
						);
1560
					setOffsets(result, simpleNameCS, getIToken($getToken(5)));
1561
					$setResult(result);
1562
		  $EndCode
1563
		./
1564
1565
	attrOrNavCallExpCS ::= simpleNameCS isMarkedPreCS
1566
		/.$NewCase./
1567
	attrOrNavCallExpCS ::= keywordAsName isMarkedPreCS
1568
		/.$BeginCode
1569
					IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(2);
1570
					CSTNode result = createFeatureCallExpCS(
1571
							(SimpleNameCS)$getSym(1),
1572
							new BasicEList(),
1573
							isMarkedPreCS
1574
						);
1575
					if (isMarkedPreCS.isPre()) {
1576
						setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(2));
1577
					} else {
1578
						setOffsets(result, (CSTNode)$getSym(1));
1579
					}
1580
					$setResult(result);
1581
		  $EndCode
1582
		./
1583
	attrOrNavCallExpCS ::= simpleNameCS '[' argumentsCS ']' isMarkedPreCS
1584
		/.$BeginCode
1585
					IsMarkedPreCS isMarkedPreCS = (IsMarkedPreCS)$getSym(5);
1586
					CSTNode result = createFeatureCallExpCS(
1587
							(SimpleNameCS)$getSym(1),
1588
							(EList)$getSym(3),
1589
							isMarkedPreCS
1590
						);
1591
					if (isMarkedPreCS.isPre()) {
1592
						setOffsets(result, (CSTNode)$getSym(1), (CSTNode)$getSym(5));
1593
					} else {
1594
						setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(4)));
1595
					}
1596
					$setResult(result);
1597
		  $EndCode
1598
		./
1599
1600
	isMarkedPreCS ::= %empty
1601
		/.$BeginCode
1602
					CSTNode result = createIsMarkedPreCS(false);
1603
					setOffsets(result, getIToken($getToken(1)));
1604
					$setResult(result);
1605
		  $EndCode
1606
		./
1607
	isMarkedPreCS ::= '@pre'
1608
		/.$BeginCode
1609
					CSTNode result = createIsMarkedPreCS(true);
1610
					setOffsets(result, getIToken($getToken(1)));
1611
					$setResult(result);
1612
		  $EndCode
1613
		./
1614
1615
	argumentsCSopt ::= %empty
1616
		/.$EmptyListAction./
1617
	argumentsCSopt -> argumentsCS
1618
1619
	argumentsCS ::= oclExpressionCS
1620
		/.$BeginCode
1621
					EList result = new BasicEList();
1622
					result.add($getSym(1));
1623
					$setResult(result);
1624
		  $EndCode
1625
		./
1626
	argumentsCS ::= argumentsCS ',' oclExpressionCS
1627
		/.$BeginCode
1628
					EList result = (EList)$getSym(1);
1629
					result.add($getSym(3));
1630
					$setResult(result);
1631
		  $EndCode
1632
		./
1633
1634
	letExpCS ::= let variableListCS in oclExpressionCS
1635
		/.$BeginCode
1636
					CSTNode result = createLetExpCS(
1637
							(EList)$getSym(2),
1638
							(OCLExpressionCS)$getSym(4)
1639
						);
1640
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(4));
1641
					$setResult(result);
1642
		  $EndCode
1643
		./
1644
1645
	ifExpCS ::= if oclExpressionCS then oclExpressionCS else oclExpressionCS endif
1646
		/.$BeginCode
1647
					CSTNode result = createIfExpCS(
1648
							(OCLExpressionCS)$getSym(2),
1649
							(OCLExpressionCS)$getSym(4),
1650
							(OCLExpressionCS)$getSym(6)
1651
						);
1652
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(7)));
1653
					$setResult(result);
1654
		  $EndCode
1655
		./
1656
1657
	messageExpCS ::= '^' simpleNameCS '(' oclMessageArgumentsCSopt ')'
1658
		/.$NewCase./
1659
	messageExpCS ::= '^^' simpleNameCS '(' oclMessageArgumentsCSopt ')'
1660
		/.$BeginCode
1661
					CSTNode result = createMessageExpCS(
1662
							getIToken($getToken(1)).getKind() == $sym_type.TK_CARET,
1663
							(SimpleNameCS)$getSym(2),
1664
							(EList<OCLMessageArgCS>)$getSym(4)
1665
						);
1666
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5)));
1667
					$setResult(result);
1668
		  $EndCode
1669
		./
1670
1671
	oclMessageArgumentsCSopt ::= %empty
1672
		/.$EmptyListAction./
1673
	oclMessageArgumentsCSopt -> oclMessageArgumentsCS
1674
1675
	oclMessageArgumentsCS ::= oclMessageArgCS
1676
		/.$BeginCode
1677
					EList result = new BasicEList();
1678
					result.add($getSym(1));
1679
					$setResult(result);
1680
		  $EndCode
1681
		./
1682
	oclMessageArgumentsCS ::= oclMessageArgumentsCS ',' oclMessageArgCS
1683
		/.$BeginCode
1684
					EList result = (EList)$getSym(1);
1685
					result.add($getSym(3));
1686
					$setResult(result);
1687
		  $EndCode
1688
		./
1689
1690
	oclMessageArgCS ::= oclExpressionCS
1691
		/.$BeginCode
1692
					CSTNode result = createOCLMessageArgCS(
1693
							null,
1694
							(OCLExpressionCS)$getSym(1)
1695
						);
1696
					setOffsets(result, (CSTNode)$getSym(1));
1697
					$setResult(result);
1698
		  $EndCode
1699
		./
1700
	oclMessageArgCS ::= '?'
1701
		/.$BeginCode
1702
					CSTNode result = createOCLMessageArgCS(
1703
							null,
1704
							null
1705
						);
1706
					setOffsets(result, getIToken($getToken(1)));
1707
					$setResult(result);
1708
		  $EndCode
1709
		./
1710
	oclMessageArgCS ::= '?' ':' typeCS
1711
		/.$BeginCode
1712
					CSTNode result = createOCLMessageArgCS(
1713
							(TypeCS)$getSym(3),
1714
							null
1715
						);
1716
					setOffsets(result, getIToken($getToken(1)), (CSTNode)$getSym(3));
1717
					$setResult(result);
1718
		  $EndCode
1719
		./
1720
1721
%End
1722
1723
%Trailers
1724
	/.
1725
		$EndActions
1726
	}
1727
	./
1728
%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, Open Canarias S.L., 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 - LPG v2.0.17 adoption
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 (+419 lines)
Added Link Here
1
--/**
2
-- * <copyright>
3
-- *
4
-- * Copyright (c) 2008, 2009 Eclipse.org, Open Canarias S.L, 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 - LPG v2.0.17 adoption
13
-- *
14
-- * </copyright>
15
-- *
16
-- * $Id: EssentialOCLErrors.g,v 1.1 2009/01/13 20:31:30 cdamus 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
	ERROR_IsMarkedPreCS ::= ERROR_TOKEN
34
		/.$BeginCode
35
					reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_AT_PRE);
36
					IsMarkedPreCS result = createIsMarkedPreCS(false);
37
					setOffsets(result, getIToken($getToken(1)));
38
					$setResult(result);
39
		  $EndCode
40
		./
41
42
	ERROR_PathNameCS ::= ERROR_TOKEN
43
		/.$BeginCode
44
					reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_PATH_NAME);
45
					CSTNode result = createPathNameCS(getTokenText($getToken(1)));
46
					setOffsets(result, getIToken($getToken(1)));
47
					$setResult(result);
48
		  $EndCode
49
		./
50
		
51
	ERROR_SimpleNameCS ::= ERROR_TOKEN
52
		/.$BeginCode
53
					reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_SIMPLE_NAME);
54
					SimpleNameCS result = createSimpleNameCS(
55
							SimpleTypeEnum.IDENTIFIER_LITERAL,
56
							getTokenText($getToken(1))
57
						);
58
					setOffsets(result, getIToken($getToken(1)));
59
					$setResult(result);
60
		  $EndCode
61
		./
62
63
	attrOrNavCallExpCS ::= simpleNameCS '[' argumentsCS ERROR_TOKEN
64
		/.$BeginCode
65
					reportErrorTokenMessage($getToken(4), OCLParserErrors.MISSING_RBRACK);
66
					CSTNode result = createFeatureCallExpCS(
67
							(SimpleNameCS)$getSym(1),
68
							(EList)$getSym(3),
69
							createIsMarkedPreCS(false)
70
						);
71
					setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(4)));
72
					$setResult(result);
73
		  $EndCode
74
		./
75
		
76
	collectionTypeCS ::= collectionTypeIdentifierCS '(' typeCS ERROR_TOKEN
77
		/.$BeginCode
78
					reportErrorTokenMessage($getToken(4), OCLParserErrors.MISSING_RPAREN);
79
					Object[] objs = (Object[])$getSym(1);
80
					CSTNode result = createCollectionTypeCS(
81
							(CollectionTypeIdentifierEnum)objs[1],
82
							(TypeCS)$getSym(3)
83
						);
84
					setOffsets(result, (IToken)objs[0], getIToken($getToken(4)));
85
					$setResult(result);
86
		  $EndCode
87
		./
88
	collectionTypeCS ::= collectionTypeIdentifierCS ERROR_TOKEN
89
		/.$BeginCode
90
					reportErrorTokenMessage($getToken(2), OCLParserErrors.MISSING_LPAREN);
91
					Object[] objs = (Object[])$getSym(1);
92
					CSTNode result = createCollectionTypeCS(
93
							(CollectionTypeIdentifierEnum)objs[1],
94
							null
95
						);
96
					setOffsets(result, (IToken)objs[0], getIToken($getToken(2)));
97
					$setResult(result);
98
		  $EndCode
99
		./
100
101
	dotArrowExpCS ::=  pathNameCS '::' ERROR_SimpleNameCS '(' argumentsCSopt ')'
102
		/.$BeginCode
103
					OperationCallExpCS result = createOperationCallExpCS(
104
							(PathNameCS)$getSym(1),
105
							(SimpleNameCS)$getSym(3),
106
							(EList)$getSym(5)
107
						);
108
					setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(6)));
109
					result.setAccessor(DotOrArrowEnum.DOT_LITERAL);
110
					$setResult(result);
111
		  $EndCode
112
		./
113
-- FIXME	dotArrowExpCS ::= NUMERIC_OPERATION ERROR_SimpleNameCS
114
115
	enumLiteralExpCS ::= pathNameCS '::' ERROR_SimpleNameCS
116
		/.$BeginCode
117
					PathNameCS pathNameCS = (PathNameCS)$getSym(1);
118
					SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3);
119
					CSTNode result = createEnumLiteralExpCS(
120
							pathNameCS,
121
							simpleNameCS
122
						);
123
					setOffsets(result, pathNameCS, simpleNameCS);
124
					$setResult(result);
125
		  $EndCode
126
		./
127
		
128
	featureCallExpCS ::= unaryName ERROR_IsMarkedPreCS '(' argumentsCSopt ')'
129
		/.$NewCase./
130
	keywordOperationCallExpCS ::= keywordAsName ERROR_IsMarkedPreCS '(' argumentsCSopt ')'
131
		/.$NewCase./
132
	operationCallExpCS ::= binaryName ERROR_IsMarkedPreCS '(' argumentsCSopt ')'
133
		/.$BeginCode
134
					SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1);
135
					CSTNode result = createOperationCallExpCS(
136
							simpleNameCS,
137
							(IsMarkedPreCS)$getSym(2),
138
							(EList)$getSym(4)
139
						);
140
					setOffsets(result, simpleNameCS, getIToken($getToken(5)));
141
					$setResult(result);
142
		  $EndCode
143
		./
144
	operationCallExpCS ::= oclIsInStateName ERROR_IsMarkedPreCS '(' stateExpCS ')'
145
		/.$BeginCode
146
					SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(1);
147
					CSTNode result = createOperationCallExpCS(
148
							simpleNameCS,
149
							(IsMarkedPreCS)$getSym(2),
150
							(StateExpCS)$getSym(4)
151
						);
152
					setOffsets(result, simpleNameCS, getIToken($getToken(5)));
153
					$setResult(result);
154
		  $EndCode
155
		./
156
157
	ifExpCS ::= if oclExpressionCS then oclExpressionCS else oclExpressionCS ERROR_TOKEN
158
		/.$BeginCode
159
					reportErrorTokenMessage($getToken(7), OCLParserErrors.MISSING_ENDIF);
160
					CSTNode result = createIfExpCS(
161
							(OCLExpressionCS)$getSym(2),
162
							(OCLExpressionCS)$getSym(4),
163
							(OCLExpressionCS)$getSym(6)
164
						);
165
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(7)));
166
					$setResult(result);
167
		  $EndCode
168
		./
169
	ifExpCS ::= if oclExpressionCS then oclExpressionCS ERROR_TOKEN
170
		/.$BeginCode
171
					reportErrorTokenMessage($getToken(5), OCLParserErrors.MISSING_ELSE_ENDIF);
172
					CSTNode result = createIfExpCS(
173
							(OCLExpressionCS)$getSym(2),
174
							(OCLExpressionCS)$getSym(4),
175
							createInvalidLiteralExpCS(getTokenText($getToken(5)))
176
						);
177
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5)));
178
					$setResult(result);
179
		  $EndCode
180
		./
181
	ifExpCS ::= if oclExpressionCS ERROR_TOKEN
182
		/.$BeginCode
183
					reportErrorTokenMessage($getToken(3), OCLParserErrors.MISSING_THEN_ELSE_ENDIF);
184
					CSTNode result = createIfExpCS(
185
							(OCLExpressionCS)$getSym(2),
186
							createInvalidLiteralExpCS(getTokenText($getToken(3))),
187
							createInvalidLiteralExpCS(getTokenText($getToken(3)))
188
						);
189
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
190
					$setResult(result);
191
		  $EndCode
192
		./
193
	ifExpCS ::= if ERROR_TOKEN endif
194
		/.$BeginCode
195
					reportErrorTokenMessage($getToken(3), OCLParserErrors.MISSING_THEN_ELSE);
196
					CSTNode result = createIfExpCS(
197
							createInvalidLiteralExpCS(getTokenText($getToken(2))),
198
							createInvalidLiteralExpCS(getTokenText($getToken(2))),
199
							createInvalidLiteralExpCS(getTokenText($getToken(2)))
200
						);
201
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
202
					$setResult(result);
203
		  $EndCode
204
		./
205
		
206
	messageExpCS ::= '^' simpleNameCS ERROR_TOKEN
207
		/.$NewCase./
208
	messageExpCS ::= '^^' simpleNameCS ERROR_TOKEN
209
		/.$BeginCode
210
					reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_MESSAGE_ARGUMENTS);
211
					CSTNode result = createMessageExpCS(
212
							getIToken($getToken(1)).getKind() == $sym_type.TK_CARET,
213
							(SimpleNameCS)$getSym(2),
214
							new BasicEList<OCLMessageArgCS>()
215
						);
216
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
217
					$setResult(result);
218
		  $EndCode
219
		./
220
	messageExpCS ::= '^' ERROR_SimpleNameCS
221
		/.$NewCase./
222
	messageExpCS ::= '^^' ERROR_SimpleNameCS
223
		/.$BeginCode
224
					SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(2);
225
					CSTNode result = createMessageExpCS(
226
							getIToken($getToken(1)).getKind() == $sym_type.TK_CARET,
227
							simpleNameCS,
228
							new BasicEList<OCLMessageArgCS>()
229
						);
230
					setOffsets(result, getIToken($getToken(1)), simpleNameCS);
231
					$setResult(result);
232
		  $EndCode
233
		./
234
235
	oclExpCS ::= ERROR_TOKEN
236
		/.$BeginCode
237
					reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_EXPR);
238
					CSTNode result = createInvalidLiteralExpCS(getTokenText($getToken(1)));
239
					setOffsets(result, getIToken($getToken(1)));
240
					$setResult(result);
241
		  $EndCode
242
		./
243
	oclExpCS ::= '(' oclExpressionCS ERROR_TOKEN
244
		/.$BeginCode
245
					reportErrorTokenMessage($getToken(3), OCLParserErrors.MISSING_RPAREN);
246
					CSTNode result = (CSTNode)$getSym(2);
247
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
248
					$setResult(result);
249
		  $EndCode
250
		./
251
252
	operationCS1 ::= IDENTIFIER '(' parametersCSopt ')' ERROR_Colon
253
		/.$BeginCode
254
					CSTNode result = createOperationCS(
255
							getTokenText($getToken(1)),
256
							(EList)$getSym(3),
257
							null
258
						);
259
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(5)));
260
					$setResult(result);
261
		  $EndCode
262
		./
263
	operationCS1 ::= IDENTIFIER '(' parametersCSopt ERROR_TOKEN
264
		/.$BeginCode
265
					reportErrorTokenMessage($getToken(4), OCLParserErrors.MISSING_RPAREN);
266
					CSTNode result = createOperationCS(
267
							getTokenText($getToken(1)),
268
							(EList)$getSym(3),
269
							null
270
						);
271
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4)));
272
					$setResult(result);
273
		  $EndCode
274
		./
275
	operationCS1 ::= IDENTIFIER ERROR_TOKEN
276
		/.$BeginCode
277
					reportErrorTokenMessage($getToken(2), OCLParserErrors.MISSING_LPAREN);
278
					CSTNode result = createOperationCS(
279
							getTokenText($getToken(1)),
280
							new BasicEList(),
281
							null
282
						);
283
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(2)));
284
					$setResult(result);
285
		  $EndCode
286
		./
287
	operationCS1 ::= ERROR_TOKEN
288
		/.$BeginCode
289
					reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_IDENTIFIER);
290
					CSTNode result = createOperationCS(
291
							getTokenText($getToken(1)),
292
							new BasicEList(),
293
							null
294
						);
295
					setOffsets(result, getIToken($getToken(1)));
296
					$setResult(result);
297
		  $EndCode
298
		./
299
	operationCS2 ::= pathNameCS '::' simpleNameCS '(' parametersCSopt ')' ERROR_Colon
300
		/.$BeginCode
301
					PathNameCS pathNameCS = (PathNameCS)$getSym(1);
302
					CSTNode result = createOperationCS(
303
							pathNameCS,
304
							(SimpleNameCS)$getSym(3),
305
							(EList)$getSym(5),
306
							(TypeCS)$getSym(8)
307
						);
308
					setOffsets(result, pathNameCS, getIToken($getToken(7)));
309
					$setResult(result);
310
		  $EndCode
311
		./
312
	operationCS2 ::= pathNameCS '::' simpleNameCS '(' parametersCSopt ERROR_TOKEN
313
		/.$BeginCode
314
					reportErrorTokenMessage($getToken(6), OCLParserErrors.MISSING_RPAREN);
315
					PathNameCS pathNameCS = (PathNameCS)$getSym(1);
316
					CSTNode result = createOperationCS(
317
							pathNameCS,
318
							(SimpleNameCS)$getSym(3),
319
							(EList)$getSym(5),
320
							null
321
						);
322
					setOffsets(result, pathNameCS, getIToken($getToken(7)));
323
					$setResult(result);
324
		  $EndCode
325
		./
326
	operationCS2 ::= pathNameCS '::' simpleNameCS ERROR_TOKEN
327
		/.$BeginCode
328
					reportErrorTokenMessage($getToken(4), OCLParserErrors.MISSING_LPAREN);
329
					PathNameCS pathNameCS = (PathNameCS)$getSym(1);
330
					CSTNode result = createOperationCS(
331
							pathNameCS,
332
							(SimpleNameCS)$getSym(3),
333
							new BasicEList(),
334
							null
335
						);
336
					setOffsets(result, pathNameCS, getIToken($getToken(4)));
337
					$setResult(result);
338
		  $EndCode
339
		./
340
	operationCS2 ::= pathNameCS '::' ERROR_SimpleNameCS
341
		/.$BeginCode
342
					PathNameCS pathNameCS = (PathNameCS)$getSym(1);
343
					SimpleNameCS simpleNameCS = (SimpleNameCS)$getSym(3);
344
					CSTNode result = createOperationCS(
345
							pathNameCS,
346
							simpleNameCS,
347
							new BasicEList(),
348
							null
349
						);
350
					setOffsets(result, pathNameCS, simpleNameCS);
351
					$setResult(result);
352
		  $EndCode
353
		./
354
355
	parametersCS ::= ERROR_TOKEN
356
		/.$BeginCode
357
					reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_PARAMETERS);
358
					EList result = new BasicEList();
359
					$setResult(result);
360
		  $EndCode
361
		./
362
	parametersCS ::= parametersCS ',' ERROR_TOKEN
363
		/.$BeginCode
364
					reportErrorTokenMessage($getToken(3), OCLParserErrors.MISSING_PARAMETER);
365
		  $EndCode
366
		./
367
368
	pathNameCS -> ERROR_PathNameCS
369
		
370
	simpleNameCSopt -> ERROR_SimpleNameCS
371
372
	tupleLiteralExpCS ::= Tuple ERROR_TOKEN
373
		/.$BeginCode
374
					reportErrorTokenMessage($getToken(7), OCLParserErrors.MISSING_LBRACE);
375
					CSTNode result = createTupleLiteralExpCS((EList)$getSym(3));
376
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(4)));
377
					$setResult(result);
378
		  $EndCode
379
		./
380
381
	variableCS ::= IDENTIFIER ERROR_TOKEN
382
		/.$BeginCode
383
					reportErrorTokenMessage($getToken(2), OCLParserErrors.MISSING_VARIABLE_TYPE);
384
					CSTNode result = createVariableCS(
385
							getTokenText($getToken(1)),
386
							null,
387
							null
388
						);
389
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(2)));
390
					$setResult(result);
391
		  $EndCode
392
		./
393
394
	variableExpCS ::= simpleNameCS '[' argumentsCS ERROR_TOKEN
395
		/.$NewCase./
396
	variableExpCS ::= keywordAsName1 '[' argumentsCS ERROR_TOKEN
397
		/.$BeginCode
398
					reportErrorTokenMessage($getToken(4), OCLParserErrors.MISSING_RBRACK);
399
					CSTNode result = createVariableExpCS(
400
							(SimpleNameCS)$getSym(1),
401
							(EList)$getSym(3),
402
							createIsMarkedPreCS(false)
403
						);
404
					setOffsets(result, (CSTNode)$getSym(1), getIToken($getToken(4)));
405
					$setResult(result);
406
		  $EndCode
407
		./
408
409
	variableListCS ::= ERROR_TOKEN
410
		/.$NewCase./
411
	variableListCS2 ::= ERROR_TOKEN
412
		/.$BeginCode
413
					reportErrorTokenMessage($getToken(1), OCLParserErrors.MISSING_VARIABLES);
414
					EList result = new BasicEList();
415
					$setResult(result);
416
		  $EndCode
417
		./
418
419
%End
(-)src/org/eclipse/ocl/lpg/KeywordTemplateD.gi (+119 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
            for (int i = 0; i < keywordKind.length; i++)
108
            {
109
                if (keywordKind[i] == 0)
110
                    keywordKind[i] = identifierKind;
111
            }
112
        }
113
    }
114
    ./
115
%End
116
117
--
118
-- E N D   O F   T E M P L A T E
119
--
(-)src/org/eclipse/ocl/parser/OCLLexer.gi (+614 lines)
Added Link Here
1
--/**
2
-- * <copyright>
3
-- *
4
-- * Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., Open Canarias S.L. 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
-- *               - Bug 259818
14
-- *   Borland - Bug 242880
15
-- *   Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption
16
-- *   
17
-- * </copyright>
18
-- *
19
-- * $Id: OCLLexer.g,v 1.2 2009/02/12 00:04:09 cdamus Exp $
20
-- */
21
--
22
-- The OCL Lexer
23
--
24
25
%options escape=$
26
%options la=2
27
%options fp=OCLLexer,prefix=Char_
28
%options single-productions
29
%options noserialize
30
%options package=org.eclipse.ocl.parser
31
%options template=../lpg/LexerTemplateD.gi
32
%options filter=OCLKWLexer.gi
33
%options export_terminals=("OCLParsersym.java", "TK_")
34
%options include_directory="../lpg"
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 /.OCLKWLexer./
51
	$copyright_contributions /.*./
52
53
%End
54
55
%Notice
56
	/./**
57
 * <copyright>
58
 *
59
 * Copyright (c) 2005, 2009 IBM Corporation, Borland Software Corp., Open Canarias S.L. and others.
60
 * All rights reserved.   This program and the accompanying materials
61
 * are made available under the terms of the Eclipse Public License v1.0
62
 * which accompanies this distribution, and is available at
63
 * http://www.eclipse.org/legal/epl-v10.html
64
 *
65
 * Contributors:
66
 *   IBM - Initial API and implementation
67
 *   E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
68
 *               - Bug 259818
69
 *   Borland - Bug 242880
70
 *   Adolfo Sanchez-Barbudo Herrera - LPG v2.0.17 adoption
71
 $copyright_contributions
72
 * </copyright>
73
 *
74
 * $Id$
75
 */
76
	./
77
%End
78
79
%Include
80
	LexerBasicMap.gi
81
%End
82
83
%Globals
84
    /.import $environment_import;
85
    import org.eclipse.ocl.lpg.BasicEnvironment;
86
    import org.eclipse.ocl.util.OCLUtil;
87
    ./
88
%End
89
90
%Export
91
92
	IDENTIFIER
93
	STRING_LITERAL
94
	INTEGER_LITERAL
95
	REAL_LITERAL
96
	NUMERIC_OPERATION
97
	INTEGER_RANGE_START
98
	
99
	PLUS
100
	MINUS
101
	MULTIPLY
102
	DIVIDE
103
104
	GREATER
105
	LESS
106
	EQUAL
107
	GREATER_EQUAL
108
	LESS_EQUAL
109
	NOT_EQUAL
110
111
	LPAREN
112
	RPAREN
113
	LBRACE
114
	RBRACE
115
	LBRACKET
116
	RBRACKET
117
118
	ARROW
119
	BAR
120
	COMMA
121
	COLON
122
	COLONCOLON
123
	SEMICOLON
124
	DOT
125
	DOTDOT
126
	ATPRE
127
	
128
	CARET
129
	CARETCARET
130
	QUESTIONMARK
131
132
%End
133
134
%Terminals
135
	CtlCharNotWS
136
137
	LF   CR   HT   FF
138
139
	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
140
	_
141
142
	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
143
144
	0 1 2 3 4 5 6 7 8 9
145
146
	AfterASCIINotAcute
147
	Space        ::= ' '
148
	LF           ::= NewLine
149
	CR           ::= Return
150
	HT           ::= HorizontalTab
151
	FF           ::= FormFeed
152
	DoubleQuote  ::= '"'
153
	SingleQuote  ::= "'"
154
	Percent      ::= '%'
155
	VerticalBar  ::= '|'
156
	Exclamation  ::= '!'
157
	AtSign       ::= '@'
158
	BackQuote    ::= '`'
159
	Acute        ::= '�'
160
	Tilde        ::= '~'
161
	Sharp        ::= '#'
162
	DollarSign   ::= '$'
163
	Ampersand    ::= '&'
164
	Caret        ::= '^'
165
	Colon        ::= ':'
166
	SemiColon    ::= ';'
167
	BackSlash    ::= '\'
168
	LeftBrace    ::= '{'
169
	RightBrace   ::= '}'
170
	LeftBracket  ::= '['
171
	RightBracket ::= ']'
172
	QuestionMark ::= '?'
173
	Comma        ::= ','
174
	Dot          ::= '.'
175
	LessThan     ::= '<'
176
	GreaterThan  ::= '>'
177
	Plus         ::= '+'
178
	Minus        ::= '-'
179
	Slash        ::= '/'
180
	Star         ::= '*'
181
	LeftParen    ::= '('
182
	RightParen   ::= ')'
183
	Equal        ::= '='
184
185
%End
186
187
%Start
188
	Token
189
%End
190
191
%Rules
192
193
	---------------------  Rules for Scanned Tokens --------------------------------
194
	-- The lexer creates an array list of tokens which is defined in the PrsStream class.
195
	-- A token has three attributes: a start offset, an end offset and a kind.
196
	-- 
197
	-- Only rules that produce complete tokens have actions to create token objects.
198
	-- When making a token, calls to the methods, $getToken(1) and $getRightSpan(), 
199
	-- provide the offsets (i.e. the span) of a rule's right hand side (rhs) and thus of the token.
200
	-- For a rule of the form A ::= A1 A2 ... An, the start offset of the rhs of A is given by
201
	-- $getToken(1) or by $getLeftSpan() and the end offset by $getRightSpan().
202
	--  
203
	-- Regarding rules for parsing in general, note that for a rhs symbol Ai, the 
204
	-- method $getToken(i) returns the location of the leftmost character derived from Ai.  
205
	-- The method $getLeftSpan(i) returns the same location unless Ai produces %empty in which case
206
	-- it returns the location of the last character derived before reducing Ai to %empty. 
207
	-- The method $getRightSpan(i) returns the location of the rightmost character derived from Ai 
208
	-- unless Ai produces %empty in which case it returns the location of the last character 
209
	-- derived before reducing Ai to %empty.
210
	--------------------------------------------------------------------------------
211
	Token ::= Identifier
212
		/.$BeginAction
213
					checkForKeyWord();
214
		  $EndAction
215
		./
216
217
	-- an empty String literal looks just like an escaped single-quote
218
	Token ::= EscapedSQ
219
		/.$BeginAction
220
					makeToken($_STRING_LITERAL);
221
		  $EndAction
222
		./
223
224
	Token ::= SingleQuote SLNotSQ SingleQuote
225
		/.$BeginAction
226
					makeToken($_STRING_LITERAL);
227
		  $EndAction
228
		./
229
230
	Token ::= Acute SLNotSQOpt Acute
231
		/.$BeginAction
232
					makeToken($_STRING_LITERAL);
233
		  $EndAction
234
		./
235
236
	Token ::= BackQuote SLNotSQOpt Acute
237
		/.$BeginAction
238
					makeToken($_STRING_LITERAL);
239
		  $EndAction
240
		./
241
242
	Token ::= IntegerLiteral
243
		/.$BeginAction
244
					makeToken($_INTEGER_LITERAL);
245
		  $EndAction
246
		./
247
248
	Token ::= RealLiteral
249
		/.$BeginAction
250
					makeToken($_REAL_LITERAL);
251
		  $EndAction
252
		./
253
254
	Token ::= NumericOperation
255
		/.$BeginAction
256
					makeToken($_NUMERIC_OPERATION);
257
		  $EndAction
258
		./
259
260
	Token ::= IntegerRangeStart
261
		/.$BeginAction
262
					makeToken($_INTEGER_RANGE_START);
263
		  $EndAction
264
		./
265
266
	Token ::= SLC
267
		/.$BeginAction
268
					skipToken();
269
		  $EndAction
270
		./
271
272
    Token ::= '/' '*' Inside Stars '/'
273
        /.$BeginAction
274
                    skipToken();
275
          $EndAction
276
        ./
277
278
	Token ::= WS -- White Space is scanned but not added to output vector
279
		/.$BeginAction
280
					skipToken();
281
		  $EndAction
282
		./
283
284
	Token ::= '+'
285
		/.$BeginAction
286
					makeToken($_PLUS);
287
		  $EndAction
288
		./
289
290
	Token ::= '-'
291
		/.$BeginAction
292
					makeToken($_MINUS);
293
		  $EndAction
294
		./
295
296
	Token ::= '*'
297
		/.$BeginAction
298
					makeToken($_MULTIPLY);
299
		  $EndAction
300
		./
301
302
	Token ::= '/'
303
		/.$BeginAction
304
					makeToken($_DIVIDE);
305
		  $EndAction
306
		./
307
308
	Token ::= '('
309
		/.$BeginAction
310
					makeToken($_LPAREN);
311
		  $EndAction
312
		./
313
314
	Token ::= ')'
315
		/.$BeginAction
316
					makeToken($_RPAREN);
317
		  $EndAction
318
		./
319
320
	Token ::= '>'
321
		/.$BeginAction
322
					makeToken($_GREATER);
323
		  $EndAction
324
		./
325
		
326
	Token ::= '<'
327
		/.$BeginAction
328
					makeToken($_LESS);
329
		  $EndAction
330
		./
331
332
	Token ::= '='
333
		/.$BeginAction
334
					makeToken($_EQUAL);
335
		  $EndAction
336
		./
337
338
	Token ::= '>' '='
339
		/.$BeginAction
340
					makeToken($_GREATER_EQUAL);
341
		  $EndAction
342
		./
343
344
	Token ::= '<' '='
345
		/.$BeginAction
346
					makeToken($_LESS_EQUAL);
347
		  $EndAction
348
		./
349
350
	Token ::= '<' '>'
351
		/.$BeginAction
352
					makeToken($_NOT_EQUAL);
353
		  $EndAction
354
		./
355
356
	Token ::= '['
357
		/.$BeginAction
358
					makeToken($_LBRACKET);
359
		  $EndAction
360
		./
361
362
	Token ::= ']'
363
		/.$BeginAction
364
					makeToken($_RBRACKET);
365
		  $EndAction
366
		./
367
368
	Token ::= '{'
369
		/.$BeginAction
370
					makeToken($_LBRACE);
371
		  $EndAction
372
		./
373
374
	Token ::= '}'
375
		/.$BeginAction
376
					makeToken($_RBRACE);
377
		  $EndAction
378
		./
379
380
	Token ::= '-' '>'
381
		/.$BeginAction
382
					makeToken($_ARROW);
383
		  $EndAction
384
		./
385
386
	Token ::= '|'
387
		/.$BeginAction
388
					makeToken($_BAR);
389
		  $EndAction
390
		./
391
392
	Token ::= ','
393
		/.$BeginAction
394
					makeToken($_COMMA);
395
		  $EndAction
396
		./
397
398
	Token ::= ':'
399
		/.$BeginAction
400
					makeToken($_COLON);
401
		  $EndAction
402
		./
403
404
	Token ::= ':' ':'
405
		/.$BeginAction
406
					makeToken($_COLONCOLON);
407
		  $EndAction
408
		./
409
410
	Token ::= ';'
411
		/.$BeginAction
412
					makeToken($_SEMICOLON);
413
		  $EndAction
414
		./
415
416
	Token ::= '.'
417
		/.$BeginAction
418
					makeToken($_DOT);
419
		  $EndAction
420
		./
421
422
	Token ::= '.' '.'
423
		/.$BeginAction
424
					makeToken($_DOTDOT);
425
		  $EndAction
426
		./
427
428
	Token ::= '@' p r e
429
		/.$BeginAction
430
					makeToken($_ATPRE);
431
		  $EndAction
432
		./
433
434
435
	Token ::= '^'
436
		/.$BeginAction
437
					makeToken($_CARET);
438
		  $EndAction
439
		./
440
441
	Token ::= '^' '^'
442
		/.$BeginAction
443
					makeToken($_CARETCARET);
444
		  $EndAction
445
		./
446
		
447
	Token ::= '?'
448
		/.$BeginAction
449
					makeToken($_QUESTIONMARK);
450
		  $EndAction
451
		./
452
453
454
    IntegerLiteral -> Integer
455
    --                | '0' LetterXx HexDigits
456
457
    RealLiteral -> Decimal
458
                 | Decimal Exponent
459
                 | Integer Exponent
460
461
    Inside ::= Inside Stars NotSlashOrStar
462
             | Inside '/'
463
             | Inside NotSlashOrStar
464
             | %empty
465
466
    Stars -> '*'
467
           | Stars '*'
468
469
    SLC -> '-' '-'
470
         | SLC NotEol
471
472
    Integer -> Digit
473
             | Integer Digit
474
475
    HexDigits -> HexDigit
476
               | HexDigits HexDigit
477
478
    Decimal -> Integer '.' Integer
479
480
    Exponent -> LetterEe Integer
481
              | LetterEe '-' Integer
482
              | LetterEe '+' Integer
483
484
    WSChar -> Space
485
            | LF
486
            | CR
487
            | HT
488
            | FF
489
490
    Letter -> LowerCaseLetter
491
            | UpperCaseLetter
492
            | _
493
            | AfterASCIINotAcute
494
495
    LowerCaseLetter -> a | b | c | d | e | f | g | h | i | j | k | l | m |
496
                       n | o | p | q | r | s | t | u | v | w | x | y | z
497
498
    UpperCaseLetter -> A | B | C | D | E | F | G | H | I | J | K | L | M |
499
                       N | O | P | Q | R | S | T | U | V | W | X | Y | Z
500
501
    Digit -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
502
503
    OctalDigit -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
504
505
    a..fA..F -> a | b | c | d | e | f | A | B | C | D | E | F
506
507
    HexDigit -> Digit
508
              | a..fA..F
509
510
    OctalDigits3 -> OctalDigit
511
                  | OctalDigit OctalDigit
512
                  | OctalDigit OctalDigit OctalDigit
513
514
    LetterEe -> 'E'
515
              | 'e'
516
517
    LetterXx -> 'X'
518
              | 'x'
519
520
    WS -> WSChar
521
        | WS WSChar
522
523
    Identifier -> Letter
524
                | Identifier Letter
525
                | Identifier Digit
526
                | Identifier DollarSign
527
                | QuotedName
528
529
    SpecialNotStar -> '+' | '-' | '/' | '(' | ')' | '"' | '!' | '@' | '`' | '~' |
530
                      '%' | '&' | '^' | ':' | ';' | "'" | '\' | '|' | '{' | '}' |
531
                      '[' | ']' | '?' | ',' | '.' | '<' | '>' | '=' | '#' | DollarSign
532
533
    SpecialNotSlash -> '+' | '-' | -- exclude the star as well
534
                       '(' | ')' | '"' | '!' | '@' | '`' | '~' |
535
                       '%' | '&' | '^' | ':' | ';' | "'" | '\' | '|' | '{' | '}' |
536
                       '[' | ']' | '?' | ',' | '.' | '<' | '>' | '=' | '#' | DollarSign
537
538
    SpecialNotSQNotDQ -> '+' | '-' | '/' | '(' | ')' | '*' | '!' | '@' | '`' | '~' |
539
                         '%' | '&' | '^' | ':' | ';' | '|' | '{' | '}' |
540
                         '[' | ']' | '?' | ',' | '.' | '<' | '>' | '=' | '#' | DollarSign
541
542
    
543
    SpecialNotDQ -> SpecialNotSQNotDQ | "'"
544
    SpecialNotSQ -> SpecialNotSQNotDQ | '"'
545
546
    EscapedSymbols -> NotSQNotDQ | '"' | "'" | '\'
547
    BackslashEscapedSymbol -> '\' EscapedSymbols
548
549
    NotSlashOrStar -> Letter
550
                    | Digit
551
                    | SpecialNotSlash
552
                    | WSChar
553
554
    NotEol -> Letter
555
            | Digit
556
            | Space
557
            | '*'
558
            | SpecialNotStar
559
            | HT
560
            | FF
561
            | CtlCharNotWS
562
563
    NotSQNotDQ -> Letter
564
           | Digit
565
           | SpecialNotSQNotDQ
566
           | Space
567
568
    NotDQ -> Letter
569
           | Digit
570
           | SpecialNotDQ
571
           | Space
572
           | EscapedDQ
573
           --| '\' u HexDigit HexDigit HexDigit HexDigit
574
           --| '\' OctalDigit
575
576
    NotSQ -> Letter
577
           | Digit
578
           | SpecialNotSQ
579
           | Space
580
           | EscapedSQ
581
           | BackslashEscapedSymbol
582
           --| '\' u HexDigit HexDigit HexDigit HexDigit
583
           --| '\' OctalDigit
584
585
	EscapedSQ -> SingleQuote SingleQuote
586
587
	-- maintain this for compatibility with the "...\"..." escapes in an
588
	-- escape mechanism (double-quotes) that isn't compliant, anyway
589
	EscapedDQ -> '\' DoubleQuote
590
591
	SLNotDQ -> NotDQ
592
	         | SLNotDQ NotDQ
593
594
	SLNotSQ -> NotSQ
595
	         | SLNotSQ NotSQ
596
597
	SLNotSQOpt -> %empty
598
	            | SLNotSQ
599
600
	QuotedName -> '"' SLNotDQ '"'
601
602
	NumericOperation -> Integer '.' Identifier
603
	NumericOperation -> Integer '.' '+'
604
	NumericOperation -> Integer '.' '-'
605
	NumericOperation -> Integer '.' '*'
606
	NumericOperation -> Integer '.' '/'
607
	NumericOperation -> Integer '.' '<'
608
	NumericOperation -> Integer '.' '<' '='
609
	NumericOperation -> Integer '.' '>' '='
610
	NumericOperation -> Integer '.' '>'
611
612
	IntegerRangeStart -> Integer '.' '.'
613
614
%End
(-)src/org/eclipse/ocl/lpg/KWLexerMap.gi (+80 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
79
80

Return to bug 242153