Project

General

Profile

root / branches / compiler / cSharp / ooasCompiler / src / ooaParser.cs @ 3

1
// $ANTLR 3.2 Sep 23, 2009 12:02:23 ooa.g 2013-10-10 13:45:31
2

    
3
// The variable 'variable' is assigned but its value is never used.
4
#pragma warning disable 168, 219
5
// Unreachable code detected.
6
#pragma warning disable 162
7

    
8

    
9
/*
10
    Ulysses OO-Action System Parser
11

    
12
    Copyright Willibald Krenn 2009
13

    
14
 */
15

    
16

    
17
using System;
18
using Antlr.Runtime;
19
using IList 		= System.Collections.IList;
20
using ArrayList 	= System.Collections.ArrayList;
21
using Stack 		= Antlr.Runtime.Collections.StackList;
22

    
23

    
24
namespace  TUG.Mogentes 
25
{
26
public partial class ooaParser : Parser
27
{
28
    public static readonly string[] tokenNames = new string[] 
29
	{
30
        "<invalid>", 
31
		"<EOR>", 
32
		"<DOWN>", 
33
		"<UP>", 
34
		"T_CONSTS", 
35
		"T_TYPES", 
36
		"T_SYSTEM", 
37
		"T_SEMICOLON", 
38
		"T_IDENTIFIER", 
39
		"T_EQUAL", 
40
		"T_PRIO", 
41
		"T_NONDET", 
42
		"T_LPAREN", 
43
		"T_RPAREN", 
44
		"T_LIST", 
45
		"T_LSQPAREN", 
46
		"T_INTNUMBER", 
47
		"T_RSQPAREN", 
48
		"T_OF", 
49
		"T_COMMA", 
50
		"T_MAP", 
51
		"T_TO", 
52
		"T_QUANTITY", 
53
		"T_MINUS", 
54
		"T_INFTY", 
55
		"T_BOOL", 
56
		"T_INT", 
57
		"T_RANGETO", 
58
		"T_FLOAT", 
59
		"T_FLOATNUMBER", 
60
		"T_CHAR", 
61
		"T_CBRL", 
62
		"T_CBRR", 
63
		"T_AUTOCONS", 
64
		"T_VAR", 
65
		"T_METHODS", 
66
		"T_ACTIONS", 
67
		"T_DO", 
68
		"T_OD", 
69
		"T_STATIC", 
70
		"T_OBS", 
71
		"T_CTRL", 
72
		"T_COLON", 
73
		"T_END", 
74
		"T_CONT", 
75
		"T_REQUIRES", 
76
		"T_DERIV", 
77
		"T_SUM", 
78
		"T_DIFF", 
79
		"T_PROD", 
80
		"T_FOLDLR", 
81
		"T_FOLDRL", 
82
		"T_SKIP", 
83
		"T_ABORT", 
84
		"T_KILL", 
85
		"T_SELF", 
86
		"T_ASSIGNMENT", 
87
		"T_WITH", 
88
		"T_BIIMPLIES", 
89
		"T_GREATER", 
90
		"T_GREATEREQUAL", 
91
		"T_LESS", 
92
		"T_LESSEQUAL", 
93
		"T_NOTEQUAL", 
94
		"T_IMPLIES", 
95
		"T_IN", 
96
		"T_SET", 
97
		"T_NOT", 
98
		"T_SUBSET", 
99
		"T_OR", 
100
		"T_DIV", 
101
		"T_IDIV", 
102
		"T_MOD", 
103
		"T_UNION", 
104
		"T_INTER", 
105
		"T_AND", 
106
		"T_POW", 
107
		"T_CONC", 
108
		"T_DOMRESBY", 
109
		"T_DOMRESTO", 
110
		"T_RNGRESBY", 
111
		"T_RNGRESTO", 
112
		"T_MUNION", 
113
		"T_SEQMOD_MAPOVERRIDE", 
114
		"T_POINT", 
115
		"T_IF", 
116
		"T_THEN", 
117
		"T_ELSE", 
118
		"T_FORALL", 
119
		"T_EXISTS", 
120
		"T_TRUE", 
121
		"T_FALSE", 
122
		"T_NIL", 
123
		"T_STRINGLITERAL", 
124
		"T_NEW", 
125
		"T_BAR", 
126
		"T_MAPS", 
127
		"T_PRIMED", 
128
		"T_ABS", 
129
		"T_CARD", 
130
		"T_DCONC", 
131
		"T_DINTER", 
132
		"T_DUNION", 
133
		"T_ELEMS", 
134
		"T_HEAD", 
135
		"T_INDS", 
136
		"T_LEN", 
137
		"T_TAIL", 
138
		"T_DOM", 
139
		"T_RNG", 
140
		"T_MERGE", 
141
		"T_WS", 
142
		"T_COMMENT", 
143
		"LINE_COMMENT", 
144
		"T_DIGIT", 
145
		"FLOAT_OR_INT_OR_RANGE", 
146
		"T_LETTER", 
147
		"'|['", 
148
		"']|'", 
149
		"'begin'", 
150
		"'&'", 
151
		"'as'", 
152
		"'qval'", 
153
		"'steady'", 
154
		"'inc'", 
155
		"'dec'", 
156
		"'::'"
157
    };
158

    
159
    public const int T_FLOATNUMBER = 29;
160
    public const int T_SYSTEM = 6;
161
    public const int T_ELSE = 87;
162
    public const int T_LPAREN = 12;
163
    public const int T_DUNION = 102;
164
    public const int T_BOOL = 25;
165
    public const int T_METHODS = 35;
166
    public const int T_INDS = 105;
167
    public const int T_OR = 69;
168
    public const int EOF = -1;
169
    public const int T_OD = 38;
170
    public const int T_AND = 75;
171
    public const int T_OF = 18;
172
    public const int T_STRINGLITERAL = 93;
173
    public const int T_SET = 66;
174
    public const int T_SKIP = 52;
175
    public const int T_WITH = 57;
176
    public const int T_DOM = 108;
177
    public const int T_WS = 111;
178
    public const int T_VAR = 34;
179
    public const int T_SUM = 47;
180
    public const int T_REQUIRES = 45;
181
    public const int T_DINTER = 101;
182
    public const int T_HEAD = 104;
183
    public const int T_AUTOCONS = 33;
184
    public const int T_END = 43;
185
    public const int T_TRUE = 90;
186
    public const int T_LSQPAREN = 15;
187
    public const int T_PRIMED = 97;
188
    public const int T_MAPS = 96;
189
    public const int T_NIL = 92;
190
    public const int T_INFTY = 24;
191
    public const int T_IF = 85;
192
    public const int LINE_COMMENT = 113;
193
    public const int T_THEN = 86;
194
    public const int T_FLOAT = 28;
195
    public const int T_TAIL = 107;
196
    public const int T_SELF = 55;
197
    public const int T_MERGE = 110;
198
    public const int T_DIFF = 48;
199
    public const int T_FOLDRL = 51;
200
    public const int T_QUANTITY = 22;
201
    public const int T_IN = 65;
202
    public const int T_MUNION = 82;
203
    public const int T__126 = 126;
204
    public const int T__125 = 125;
205
    public const int T_INTER = 74;
206
    public const int T_SEMICOLON = 7;
207
    public const int T_FOLDLR = 50;
208
    public const int T_CARD = 99;
209
    public const int T_FALSE = 91;
210
    public const int T_CONT = 44;
211
    public const int T_SUBSET = 68;
212
    public const int T_COMMA = 19;
213
    public const int T_RANGETO = 27;
214
    public const int T_MINUS = 23;
215
    public const int T_CONC = 77;
216
    public const int T_IDIV = 71;
217
    public const int T_FORALL = 88;
218
    public const int T_DERIV = 46;
219
    public const int T_CONSTS = 4;
220
    public const int T_TYPES = 5;
221
    public const int T_GREATEREQUAL = 60;
222
    public const int T__118 = 118;
223
    public const int T_RNG = 109;
224
    public const int T__119 = 119;
225
    public const int T_MOD = 72;
226
    public const int T__117 = 117;
227
    public const int T_SEQMOD_MAPOVERRIDE = 83;
228
    public const int T__124 = 124;
229
    public const int T__123 = 123;
230
    public const int T_ELEMS = 103;
231
    public const int T__122 = 122;
232
    public const int T__121 = 121;
233
    public const int T_IMPLIES = 64;
234
    public const int T__120 = 120;
235
    public const int T_EXISTS = 89;
236
    public const int T_POW = 76;
237
    public const int T_COMMENT = 112;
238
    public const int T_RPAREN = 13;
239
    public const int T_PRIO = 10;
240
    public const int T_RNGRESBY = 80;
241
    public const int T_ABS = 98;
242
    public const int T_DIV = 70;
243
    public const int T_LIST = 14;
244
    public const int T_CBRL = 31;
245
    public const int T_DCONC = 100;
246
    public const int T_ABORT = 53;
247
    public const int T_CHAR = 30;
248
    public const int T_POINT = 84;
249
    public const int T_STATIC = 39;
250
    public const int T_CBRR = 32;
251
    public const int T_INT = 26;
252
    public const int T_COLON = 42;
253
    public const int T_PROD = 49;
254
    public const int T_ACTIONS = 36;
255
    public const int T_DIGIT = 114;
256
    public const int T_LESS = 61;
257
    public const int T_BAR = 95;
258
    public const int T_TO = 21;
259
    public const int T_NONDET = 11;
260
    public const int T_DOMRESBY = 78;
261
    public const int T_DOMRESTO = 79;
262
    public const int T_EQUAL = 9;
263
    public const int T_GREATER = 59;
264
    public const int T_KILL = 54;
265
    public const int T_RNGRESTO = 81;
266
    public const int T_RSQPAREN = 17;
267
    public const int T_NEW = 94;
268
    public const int T_INTNUMBER = 16;
269
    public const int T_UNION = 73;
270
    public const int T_OBS = 40;
271
    public const int T_BIIMPLIES = 58;
272
    public const int T_NOTEQUAL = 63;
273
    public const int T_IDENTIFIER = 8;
274
    public const int T_DO = 37;
275
    public const int FLOAT_OR_INT_OR_RANGE = 115;
276
    public const int T_LEN = 106;
277
    public const int T_NOT = 67;
278
    public const int T_ASSIGNMENT = 56;
279
    public const int T_LETTER = 116;
280
    public const int T_MAP = 20;
281
    public const int T_LESSEQUAL = 62;
282
    public const int T_CTRL = 41;
283

    
284
    // delegates
285
    // delegators
286

    
287

    
288

    
289
        public ooaParser(ITokenStream input)
290
    		: this(input, new RecognizerSharedState()) {
291
        }
292

    
293
        public ooaParser(ITokenStream input, RecognizerSharedState state)
294
    		: base(input, state) {
295
            InitializeCyclicDFAs();
296

    
297
             
298
        }
299
        
300

    
301
    override public string[] TokenNames {
302
		get { return ooaParser.tokenNames; }
303
    }
304

    
305
    override public string GrammarFileName {
306
		get { return "ooa.g"; }
307
    }
308

    
309

    
310

    
311
    // $ANTLR start "ooActionSystems"
312
    // ooa.g:137:1: ooActionSystems : ( T_CONSTS namedConstList )? T_TYPES namedTypeList T_SYSTEM comp= asTypeComposition[null] ;
313
    public void ooActionSystems() // throws RecognitionException [1]
314
    {   
315
        IdentifierList comp = default(IdentifierList);
316

    
317

    
318
        try 
319
    	{
320
            // ooa.g:138:2: ( ( T_CONSTS namedConstList )? T_TYPES namedTypeList T_SYSTEM comp= asTypeComposition[null] )
321
            // ooa.g:138:4: ( T_CONSTS namedConstList )? T_TYPES namedTypeList T_SYSTEM comp= asTypeComposition[null]
322
            {
323
            	initializeTopLevelParserState();
324
            	// ooa.g:140:11: ( T_CONSTS namedConstList )?
325
            	int alt1 = 2;
326
            	int LA1_0 = input.LA(1);
327

    
328
            	if ( (LA1_0 == T_CONSTS) )
329
            	{
330
            	    alt1 = 1;
331
            	}
332
            	switch (alt1) 
333
            	{
334
            	    case 1 :
335
            	        // ooa.g:140:12: T_CONSTS namedConstList
336
            	        {
337
            	        	Match(input,T_CONSTS,FOLLOW_T_CONSTS_in_ooActionSystems93); 
338
            	        	PushFollow(FOLLOW_namedConstList_in_ooActionSystems95);
339
            	        	namedConstList();
340
            	        	state.followingStackPointer--;
341

    
342

    
343
            	        }
344
            	        break;
345

    
346
            	}
347

    
348
            	Match(input,T_TYPES,FOLLOW_T_TYPES_in_ooActionSystems105); 
349
            	PushFollow(FOLLOW_namedTypeList_in_ooActionSystems113);
350
            	namedTypeList();
351
            	state.followingStackPointer--;
352

    
353
            	Match(input,T_SYSTEM,FOLLOW_T_SYSTEM_in_ooActionSystems118); 
354
            	PushFollow(FOLLOW_asTypeComposition_in_ooActionSystems125);
355
            	comp = asTypeComposition(null);
356
            	state.followingStackPointer--;
357

    
358
            	fixUpRun(comp);
359

    
360
            }
361

    
362
        }
363
        catch (RecognitionException re) 
364
    	{
365
            ReportError(re);
366
            Recover(input,re);
367
        }
368
        finally 
369
    	{
370
        }
371
        return ;
372
    }
373
    // $ANTLR end "ooActionSystems"
374

    
375

    
376
    // $ANTLR start "namedConstList"
377
    // ooa.g:155:1: namedConstList : namedConst ( T_SEMICOLON namedConst )* ;
378
    public void namedConstList() // throws RecognitionException [1]
379
    {   
380
        try 
381
    	{
382
            // ooa.g:156:2: ( namedConst ( T_SEMICOLON namedConst )* )
383
            // ooa.g:156:4: namedConst ( T_SEMICOLON namedConst )*
384
            {
385
            	PushFollow(FOLLOW_namedConst_in_namedConstList148);
386
            	namedConst();
387
            	state.followingStackPointer--;
388

    
389
            	// ooa.g:156:15: ( T_SEMICOLON namedConst )*
390
            	do 
391
            	{
392
            	    int alt2 = 2;
393
            	    int LA2_0 = input.LA(1);
394

    
395
            	    if ( (LA2_0 == T_SEMICOLON) )
396
            	    {
397
            	        alt2 = 1;
398
            	    }
399

    
400

    
401
            	    switch (alt2) 
402
            		{
403
            			case 1 :
404
            			    // ooa.g:156:16: T_SEMICOLON namedConst
405
            			    {
406
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_namedConstList151); 
407
            			    	PushFollow(FOLLOW_namedConst_in_namedConstList153);
408
            			    	namedConst();
409
            			    	state.followingStackPointer--;
410

    
411

    
412
            			    }
413
            			    break;
414

    
415
            			default:
416
            			    goto loop2;
417
            	    }
418
            	} while (true);
419

    
420
            	loop2:
421
            		;	// Stops C# compiler whining that label 'loop2' has no statements
422

    
423

    
424
            }
425

    
426
        }
427
        catch (RecognitionException re) 
428
    	{
429
            ReportError(re);
430
            Recover(input,re);
431
        }
432
        finally 
433
    	{
434
        }
435
        return ;
436
    }
437
    // $ANTLR end "namedConstList"
438

    
439

    
440
    // $ANTLR start "namedConst"
441
    // ooa.g:159:1: namedConst : aName= T_IDENTIFIER T_EQUAL anExpr= expression ;
442
    public void namedConst() // throws RecognitionException [1]
443
    {   
444
        IToken aName = null;
445
        Expression anExpr = default(Expression);
446

    
447

    
448
        try 
449
    	{
450
            // ooa.g:160:2: (aName= T_IDENTIFIER T_EQUAL anExpr= expression )
451
            // ooa.g:160:4: aName= T_IDENTIFIER T_EQUAL anExpr= expression
452
            {
453
            	aName=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_namedConst169); 
454
            	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_namedConst173); 
455
            	PushFollow(FOLLOW_expression_in_namedConst179);
456
            	anExpr = expression();
457
            	state.followingStackPointer--;
458

    
459
            	addNamedConst(aName,anExpr);
460

    
461
            }
462

    
463
        }
464
        catch (RecognitionException re) 
465
    	{
466
            ReportError(re);
467
            Recover(input,re);
468
        }
469
        finally 
470
    	{
471
        }
472
        return ;
473
    }
474
    // $ANTLR end "namedConst"
475

    
476

    
477
    // $ANTLR start "namedTypeList"
478
    // ooa.g:170:1: namedTypeList : namedType ( T_SEMICOLON namedType )* ;
479
    public void namedTypeList() // throws RecognitionException [1]
480
    {   
481
        try 
482
    	{
483
            // ooa.g:171:2: ( namedType ( T_SEMICOLON namedType )* )
484
            // ooa.g:171:4: namedType ( T_SEMICOLON namedType )*
485
            {
486
            	PushFollow(FOLLOW_namedType_in_namedTypeList199);
487
            	namedType();
488
            	state.followingStackPointer--;
489

    
490
            	// ooa.g:171:14: ( T_SEMICOLON namedType )*
491
            	do 
492
            	{
493
            	    int alt3 = 2;
494
            	    int LA3_0 = input.LA(1);
495

    
496
            	    if ( (LA3_0 == T_SEMICOLON) )
497
            	    {
498
            	        alt3 = 1;
499
            	    }
500

    
501

    
502
            	    switch (alt3) 
503
            		{
504
            			case 1 :
505
            			    // ooa.g:171:15: T_SEMICOLON namedType
506
            			    {
507
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_namedTypeList202); 
508
            			    	PushFollow(FOLLOW_namedType_in_namedTypeList204);
509
            			    	namedType();
510
            			    	state.followingStackPointer--;
511

    
512

    
513
            			    }
514
            			    break;
515

    
516
            			default:
517
            			    goto loop3;
518
            	    }
519
            	} while (true);
520

    
521
            	loop3:
522
            		;	// Stops C# compiler whining that label 'loop3' has no statements
523

    
524

    
525
            }
526

    
527
        }
528
        catch (RecognitionException re) 
529
    	{
530
            ReportError(re);
531
            Recover(input,re);
532
        }
533
        finally 
534
    	{
535
        }
536
        return ;
537
    }
538
    // $ANTLR end "namedTypeList"
539

    
540

    
541
    // $ANTLR start "namedType"
542
    // ooa.g:174:1: namedType : aName= T_IDENTIFIER T_EQUAL (aType= complexType | anOoaType= ooActionSystem ) ;
543
    public void namedType() // throws RecognitionException [1]
544
    {   
545
        IToken aName = null;
546
        UlyssesType aType = default(UlyssesType);
547

    
548
        OoActionSystemType anOoaType = default(OoActionSystemType);
549

    
550

    
551
        try 
552
    	{
553
            // ooa.g:175:2: (aName= T_IDENTIFIER T_EQUAL (aType= complexType | anOoaType= ooActionSystem ) )
554
            // ooa.g:175:4: aName= T_IDENTIFIER T_EQUAL (aType= complexType | anOoaType= ooActionSystem )
555
            {
556
            	aName=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_namedType220); 
557
            	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_namedType225); 
558
            	// ooa.g:177:3: (aType= complexType | anOoaType= ooActionSystem )
559
            	int alt4 = 2;
560
            	alt4 = dfa4.Predict(input);
561
            	switch (alt4) 
562
            	{
563
            	    case 1 :
564
            	        // ooa.g:178:4: aType= complexType
565
            	        {
566
            	        	PushFollow(FOLLOW_complexType_in_namedType237);
567
            	        	aType = complexType();
568
            	        	state.followingStackPointer--;
569

    
570
            	        	createNamedType(aName,aType);
571

    
572
            	        }
573
            	        break;
574
            	    case 2 :
575
            	        // ooa.g:179:5: anOoaType= ooActionSystem
576
            	        {
577
            	        	PushFollow(FOLLOW_ooActionSystem_in_namedType249);
578
            	        	anOoaType = ooActionSystem();
579
            	        	state.followingStackPointer--;
580

    
581
            	        	createNamedType(aName,anOoaType);
582

    
583
            	        }
584
            	        break;
585

    
586
            	}
587

    
588

    
589
            }
590

    
591
        }
592
        catch (RecognitionException re) 
593
    	{
594
            ReportError(re);
595
            Recover(input,re);
596
        }
597
        finally 
598
    	{
599
        }
600
        return ;
601
    }
602
    // $ANTLR end "namedType"
603

    
604

    
605
    // $ANTLR start "asTypeComposition"
606
    // ooa.g:185:1: asTypeComposition[IdentifierList top] returns [IdentifierList prioList] : asTypeCompositionParallel[prioList] ( T_PRIO asTypeCompositionParallel[prioList] )* ;
607
    public IdentifierList asTypeComposition(IdentifierList top) // throws RecognitionException [1]
608
    {   
609
        IdentifierList prioList = default(IdentifierList);
610

    
611
        try 
612
    	{
613
            // ooa.g:187:2: ( asTypeCompositionParallel[prioList] ( T_PRIO asTypeCompositionParallel[prioList] )* )
614
            // ooa.g:187:6: asTypeCompositionParallel[prioList] ( T_PRIO asTypeCompositionParallel[prioList] )*
615
            {
616
            	prioList = new PrioIdentifierList(top);
617
            	PushFollow(FOLLOW_asTypeCompositionParallel_in_asTypeComposition285);
618
            	asTypeCompositionParallel(prioList);
619
            	state.followingStackPointer--;
620

    
621
            	// ooa.g:188:40: ( T_PRIO asTypeCompositionParallel[prioList] )*
622
            	do 
623
            	{
624
            	    int alt5 = 2;
625
            	    int LA5_0 = input.LA(1);
626

    
627
            	    if ( (LA5_0 == T_PRIO) )
628
            	    {
629
            	        alt5 = 1;
630
            	    }
631

    
632

    
633
            	    switch (alt5) 
634
            		{
635
            			case 1 :
636
            			    // ooa.g:188:41: T_PRIO asTypeCompositionParallel[prioList]
637
            			    {
638
            			    	Match(input,T_PRIO,FOLLOW_T_PRIO_in_asTypeComposition290); 
639
            			    	PushFollow(FOLLOW_asTypeCompositionParallel_in_asTypeComposition292);
640
            			    	asTypeCompositionParallel(prioList);
641
            			    	state.followingStackPointer--;
642

    
643

    
644
            			    }
645
            			    break;
646

    
647
            			default:
648
            			    goto loop5;
649
            	    }
650
            	} while (true);
651

    
652
            	loop5:
653
            		;	// Stops C# compiler whining that label 'loop5' has no statements
654

    
655

    
656
            }
657

    
658
        }
659
        catch (RecognitionException re) 
660
    	{
661
            ReportError(re);
662
            Recover(input,re);
663
        }
664
        finally 
665
    	{
666
        }
667
        return prioList;
668
    }
669
    // $ANTLR end "asTypeComposition"
670

    
671

    
672
    // $ANTLR start "asTypeCompositionParallel"
673
    // ooa.g:191:1: asTypeCompositionParallel[IdentifierList top] : asTypeCompositionSequential[parList] ( T_NONDET asTypeCompositionSequential[parList] )* ;
674
    public void asTypeCompositionParallel(IdentifierList top) // throws RecognitionException [1]
675
    {   
676
        try 
677
    	{
678
            // ooa.g:192:2: ( asTypeCompositionSequential[parList] ( T_NONDET asTypeCompositionSequential[parList] )* )
679
            // ooa.g:192:6: asTypeCompositionSequential[parList] ( T_NONDET asTypeCompositionSequential[parList] )*
680
            {
681
            	IdentifierList parList = new NondetIdentifierList(top);
682
            	PushFollow(FOLLOW_asTypeCompositionSequential_in_asTypeCompositionParallel315);
683
            	asTypeCompositionSequential(parList);
684
            	state.followingStackPointer--;
685

    
686
            	// ooa.g:193:40: ( T_NONDET asTypeCompositionSequential[parList] )*
687
            	do 
688
            	{
689
            	    int alt6 = 2;
690
            	    int LA6_0 = input.LA(1);
691

    
692
            	    if ( (LA6_0 == T_NONDET) )
693
            	    {
694
            	        alt6 = 1;
695
            	    }
696

    
697

    
698
            	    switch (alt6) 
699
            		{
700
            			case 1 :
701
            			    // ooa.g:193:41: T_NONDET asTypeCompositionSequential[parList]
702
            			    {
703
            			    	Match(input,T_NONDET,FOLLOW_T_NONDET_in_asTypeCompositionParallel319); 
704
            			    	PushFollow(FOLLOW_asTypeCompositionSequential_in_asTypeCompositionParallel321);
705
            			    	asTypeCompositionSequential(parList);
706
            			    	state.followingStackPointer--;
707

    
708

    
709
            			    }
710
            			    break;
711

    
712
            			default:
713
            			    goto loop6;
714
            	    }
715
            	} while (true);
716

    
717
            	loop6:
718
            		;	// Stops C# compiler whining that label 'loop6' has no statements
719

    
720

    
721
            }
722

    
723
        }
724
        catch (RecognitionException re) 
725
    	{
726
            ReportError(re);
727
            Recover(input,re);
728
        }
729
        finally 
730
    	{
731
        }
732
        return ;
733
    }
734
    // $ANTLR end "asTypeCompositionParallel"
735

    
736

    
737
    // $ANTLR start "asTypeCompositionSequential"
738
    // ooa.g:196:1: asTypeCompositionSequential[IdentifierList top] : asTypeCompositionBlockParen[seqList] ;
739
    public void asTypeCompositionSequential(IdentifierList top) // throws RecognitionException [1]
740
    {   
741
        try 
742
    	{
743
            // ooa.g:197:2: ( asTypeCompositionBlockParen[seqList] )
744
            // ooa.g:197:6: asTypeCompositionBlockParen[seqList]
745
            {
746
            	IdentifierList seqList = new SeqIdentifierList(top);
747
            	PushFollow(FOLLOW_asTypeCompositionBlockParen_in_asTypeCompositionSequential343);
748
            	asTypeCompositionBlockParen(seqList);
749
            	state.followingStackPointer--;
750

    
751

    
752
            }
753

    
754
        }
755
        catch (RecognitionException re) 
756
    	{
757
            ReportError(re);
758
            Recover(input,re);
759
        }
760
        finally 
761
    	{
762
        }
763
        return ;
764
    }
765
    // $ANTLR end "asTypeCompositionSequential"
766

    
767

    
768
    // $ANTLR start "asTypeCompositionBlockParen"
769
    // ooa.g:201:1: asTypeCompositionBlockParen[IdentifierList top] : ( T_LPAREN asTypeComposition[top] T_RPAREN | aName= T_IDENTIFIER );
770
    public void asTypeCompositionBlockParen(IdentifierList top) // throws RecognitionException [1]
771
    {   
772
        IToken aName = null;
773

    
774
        try 
775
    	{
776
            // ooa.g:202:2: ( T_LPAREN asTypeComposition[top] T_RPAREN | aName= T_IDENTIFIER )
777
            int alt7 = 2;
778
            int LA7_0 = input.LA(1);
779

    
780
            if ( (LA7_0 == T_LPAREN) )
781
            {
782
                alt7 = 1;
783
            }
784
            else if ( (LA7_0 == T_IDENTIFIER) )
785
            {
786
                alt7 = 2;
787
            }
788
            else 
789
            {
790
                NoViableAltException nvae_d7s0 =
791
                    new NoViableAltException("", 7, 0, input);
792

    
793
                throw nvae_d7s0;
794
            }
795
            switch (alt7) 
796
            {
797
                case 1 :
798
                    // ooa.g:202:4: T_LPAREN asTypeComposition[top] T_RPAREN
799
                    {
800
                    	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_asTypeCompositionBlockParen358); 
801
                    	PushFollow(FOLLOW_asTypeComposition_in_asTypeCompositionBlockParen360);
802
                    	asTypeComposition(top);
803
                    	state.followingStackPointer--;
804

    
805
                    	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_asTypeCompositionBlockParen363); 
806

    
807
                    }
808
                    break;
809
                case 2 :
810
                    // ooa.g:203:4: aName= T_IDENTIFIER
811
                    {
812
                    	aName=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_asTypeCompositionBlockParen370); 
813
                    	addToIdentifierList(top,aName);
814

    
815
                    }
816
                    break;
817

    
818
            }
819
        }
820
        catch (RecognitionException re) 
821
    	{
822
            ReportError(re);
823
            Recover(input,re);
824
        }
825
        finally 
826
    	{
827
        }
828
        return ;
829
    }
830
    // $ANTLR end "asTypeCompositionBlockParen"
831

    
832

    
833
    // $ANTLR start "complexType"
834
    // ooa.g:211:1: complexType returns [UlyssesType aTypeSymbol] : ( T_LIST T_LSQPAREN numOfElements= ( T_INTNUMBER | T_IDENTIFIER ) T_RSQPAREN T_OF innertype= complexType | T_LSQPAREN alistelem= T_IDENTIFIER ( T_COMMA otherlistelem= T_IDENTIFIER )* T_RSQPAREN | T_MAP ( T_LSQPAREN numOfElements= ( T_INTNUMBER | T_IDENTIFIER ) T_RSQPAREN )? mapfromtype= simpleType T_TO maptotype= complexType | T_QUANTITY T_OF T_LSQPAREN (alandmark= T_IDENTIFIER | alandmark= T_MINUS T_INFTY ) ( T_COMMA (otherlandmark= T_IDENTIFIER | otherlandmark= T_INFTY ) )* T_RSQPAREN | T_LPAREN aType= complexType ( T_COMMA anotherType= complexType )* T_RPAREN | r= simpleType );
835
    public UlyssesType complexType() // throws RecognitionException [1]
836
    {   
837
        UlyssesType aTypeSymbol = default(UlyssesType);
838

    
839
        IToken numOfElements = null;
840
        IToken alistelem = null;
841
        IToken otherlistelem = null;
842
        IToken alandmark = null;
843
        IToken otherlandmark = null;
844
        UlyssesType innertype = default(UlyssesType);
845

    
846
        UlyssesType mapfromtype = default(UlyssesType);
847

    
848
        UlyssesType maptotype = default(UlyssesType);
849

    
850
        UlyssesType aType = default(UlyssesType);
851

    
852
        UlyssesType anotherType = default(UlyssesType);
853

    
854
        UlyssesType r = default(UlyssesType);
855

    
856

    
857
         
858
        		aTypeSymbol = null;
859
        		alandmark = null;
860
        	
861
        try 
862
    	{
863
            // ooa.g:217:2: ( T_LIST T_LSQPAREN numOfElements= ( T_INTNUMBER | T_IDENTIFIER ) T_RSQPAREN T_OF innertype= complexType | T_LSQPAREN alistelem= T_IDENTIFIER ( T_COMMA otherlistelem= T_IDENTIFIER )* T_RSQPAREN | T_MAP ( T_LSQPAREN numOfElements= ( T_INTNUMBER | T_IDENTIFIER ) T_RSQPAREN )? mapfromtype= simpleType T_TO maptotype= complexType | T_QUANTITY T_OF T_LSQPAREN (alandmark= T_IDENTIFIER | alandmark= T_MINUS T_INFTY ) ( T_COMMA (otherlandmark= T_IDENTIFIER | otherlandmark= T_INFTY ) )* T_RSQPAREN | T_LPAREN aType= complexType ( T_COMMA anotherType= complexType )* T_RPAREN | r= simpleType )
864
            int alt14 = 6;
865
            alt14 = dfa14.Predict(input);
866
            switch (alt14) 
867
            {
868
                case 1 :
869
                    // ooa.g:217:4: T_LIST T_LSQPAREN numOfElements= ( T_INTNUMBER | T_IDENTIFIER ) T_RSQPAREN T_OF innertype= complexType
870
                    {
871
                    	Match(input,T_LIST,FOLLOW_T_LIST_in_complexType401); 
872
                    	Match(input,T_LSQPAREN,FOLLOW_T_LSQPAREN_in_complexType404); 
873
                    	numOfElements = (IToken)input.LT(1);
874
                    	if ( input.LA(1) == T_IDENTIFIER || input.LA(1) == T_INTNUMBER ) 
875
                    	{
876
                    	    input.Consume();
877
                    	    state.errorRecovery = false;
878
                    	}
879
                    	else 
880
                    	{
881
                    	    MismatchedSetException mse = new MismatchedSetException(null,input);
882
                    	    throw mse;
883
                    	}
884

    
885
                    	Match(input,T_RSQPAREN,FOLLOW_T_RSQPAREN_in_complexType414); 
886
                    	Match(input,T_OF,FOLLOW_T_OF_in_complexType416); 
887
                    	PushFollow(FOLLOW_complexType_in_complexType421);
888
                    	innertype = complexType();
889
                    	state.followingStackPointer--;
890

    
891
                    	aTypeSymbol = createListType(numOfElements,innertype);
892

    
893
                    }
894
                    break;
895
                case 2 :
896
                    // ooa.g:221:4: T_LSQPAREN alistelem= T_IDENTIFIER ( T_COMMA otherlistelem= T_IDENTIFIER )* T_RSQPAREN
897
                    {
898
                    	Match(input,T_LSQPAREN,FOLLOW_T_LSQPAREN_in_complexType436); 
899
                    	alistelem=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_complexType440); 
900
                    	aTypeSymbol = createListEnumType(alistelem);
901
                    	// ooa.g:222:4: ( T_COMMA otherlistelem= T_IDENTIFIER )*
902
                    	do 
903
                    	{
904
                    	    int alt8 = 2;
905
                    	    int LA8_0 = input.LA(1);
906

    
907
                    	    if ( (LA8_0 == T_COMMA) )
908
                    	    {
909
                    	        alt8 = 1;
910
                    	    }
911

    
912

    
913
                    	    switch (alt8) 
914
                    		{
915
                    			case 1 :
916
                    			    // ooa.g:222:5: T_COMMA otherlistelem= T_IDENTIFIER
917
                    			    {
918
                    			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_complexType449); 
919
                    			    	otherlistelem=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_complexType453); 
920
                    			    	addToListEnumType(aTypeSymbol,otherlistelem);
921

    
922
                    			    }
923
                    			    break;
924

    
925
                    			default:
926
                    			    goto loop8;
927
                    	    }
928
                    	} while (true);
929

    
930
                    	loop8:
931
                    		;	// Stops C# compiler whining that label 'loop8' has no statements
932

    
933
                    	Match(input,T_RSQPAREN,FOLLOW_T_RSQPAREN_in_complexType459); 
934

    
935
                    }
936
                    break;
937
                case 3 :
938
                    // ooa.g:225:4: T_MAP ( T_LSQPAREN numOfElements= ( T_INTNUMBER | T_IDENTIFIER ) T_RSQPAREN )? mapfromtype= simpleType T_TO maptotype= complexType
939
                    {
940
                    	Match(input,T_MAP,FOLLOW_T_MAP_in_complexType469); 
941
                    	// ooa.g:225:12: ( T_LSQPAREN numOfElements= ( T_INTNUMBER | T_IDENTIFIER ) T_RSQPAREN )?
942
                    	int alt9 = 2;
943
                    	int LA9_0 = input.LA(1);
944

    
945
                    	if ( (LA9_0 == T_LSQPAREN) )
946
                    	{
947
                    	    alt9 = 1;
948
                    	}
949
                    	switch (alt9) 
950
                    	{
951
                    	    case 1 :
952
                    	        // ooa.g:225:13: T_LSQPAREN numOfElements= ( T_INTNUMBER | T_IDENTIFIER ) T_RSQPAREN
953
                    	        {
954
                    	        	Match(input,T_LSQPAREN,FOLLOW_T_LSQPAREN_in_complexType474); 
955
                    	        	numOfElements = (IToken)input.LT(1);
956
                    	        	if ( input.LA(1) == T_IDENTIFIER || input.LA(1) == T_INTNUMBER ) 
957
                    	        	{
958
                    	        	    input.Consume();
959
                    	        	    state.errorRecovery = false;
960
                    	        	}
961
                    	        	else 
962
                    	        	{
963
                    	        	    MismatchedSetException mse = new MismatchedSetException(null,input);
964
                    	        	    throw mse;
965
                    	        	}
966

    
967
                    	        	Match(input,T_RSQPAREN,FOLLOW_T_RSQPAREN_in_complexType484); 
968

    
969
                    	        }
970
                    	        break;
971

    
972
                    	}
973

    
974
                    	PushFollow(FOLLOW_simpleType_in_complexType490);
975
                    	mapfromtype = simpleType();
976
                    	state.followingStackPointer--;
977

    
978
                    	Match(input,T_TO,FOLLOW_T_TO_in_complexType492); 
979
                    	PushFollow(FOLLOW_complexType_in_complexType496);
980
                    	maptotype = complexType();
981
                    	state.followingStackPointer--;
982

    
983
                    	aTypeSymbol = createMapType(numOfElements,mapfromtype,maptotype);
984

    
985
                    }
986
                    break;
987
                case 4 :
988
                    // ooa.g:228:4: T_QUANTITY T_OF T_LSQPAREN (alandmark= T_IDENTIFIER | alandmark= T_MINUS T_INFTY ) ( T_COMMA (otherlandmark= T_IDENTIFIER | otherlandmark= T_INFTY ) )* T_RSQPAREN
989
                    {
990
                    	Match(input,T_QUANTITY,FOLLOW_T_QUANTITY_in_complexType510); 
991
                    	Match(input,T_OF,FOLLOW_T_OF_in_complexType512); 
992
                    	Match(input,T_LSQPAREN,FOLLOW_T_LSQPAREN_in_complexType514); 
993
                    	// ooa.g:228:31: (alandmark= T_IDENTIFIER | alandmark= T_MINUS T_INFTY )
994
                    	int alt10 = 2;
995
                    	int LA10_0 = input.LA(1);
996

    
997
                    	if ( (LA10_0 == T_IDENTIFIER) )
998
                    	{
999
                    	    alt10 = 1;
1000
                    	}
1001
                    	else if ( (LA10_0 == T_MINUS) )
1002
                    	{
1003
                    	    alt10 = 2;
1004
                    	}
1005
                    	else 
1006
                    	{
1007
                    	    NoViableAltException nvae_d10s0 =
1008
                    	        new NoViableAltException("", 10, 0, input);
1009

    
1010
                    	    throw nvae_d10s0;
1011
                    	}
1012
                    	switch (alt10) 
1013
                    	{
1014
                    	    case 1 :
1015
                    	        // ooa.g:228:32: alandmark= T_IDENTIFIER
1016
                    	        {
1017
                    	        	alandmark=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_complexType519); 
1018

    
1019
                    	        }
1020
                    	        break;
1021
                    	    case 2 :
1022
                    	        // ooa.g:228:56: alandmark= T_MINUS T_INFTY
1023
                    	        {
1024
                    	        	alandmark=(IToken)Match(input,T_MINUS,FOLLOW_T_MINUS_in_complexType524); 
1025
                    	        	Match(input,T_INFTY,FOLLOW_T_INFTY_in_complexType526); 
1026

    
1027
                    	        }
1028
                    	        break;
1029

    
1030
                    	}
1031

    
1032
                    	aTypeSymbol = createQrType(alandmark);
1033
                    	// ooa.g:229:4: ( T_COMMA (otherlandmark= T_IDENTIFIER | otherlandmark= T_INFTY ) )*
1034
                    	do 
1035
                    	{
1036
                    	    int alt12 = 2;
1037
                    	    int LA12_0 = input.LA(1);
1038

    
1039
                    	    if ( (LA12_0 == T_COMMA) )
1040
                    	    {
1041
                    	        alt12 = 1;
1042
                    	    }
1043

    
1044

    
1045
                    	    switch (alt12) 
1046
                    		{
1047
                    			case 1 :
1048
                    			    // ooa.g:229:5: T_COMMA (otherlandmark= T_IDENTIFIER | otherlandmark= T_INFTY )
1049
                    			    {
1050
                    			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_complexType536); 
1051
                    			    	// ooa.g:229:13: (otherlandmark= T_IDENTIFIER | otherlandmark= T_INFTY )
1052
                    			    	int alt11 = 2;
1053
                    			    	int LA11_0 = input.LA(1);
1054

    
1055
                    			    	if ( (LA11_0 == T_IDENTIFIER) )
1056
                    			    	{
1057
                    			    	    alt11 = 1;
1058
                    			    	}
1059
                    			    	else if ( (LA11_0 == T_INFTY) )
1060
                    			    	{
1061
                    			    	    alt11 = 2;
1062
                    			    	}
1063
                    			    	else 
1064
                    			    	{
1065
                    			    	    NoViableAltException nvae_d11s0 =
1066
                    			    	        new NoViableAltException("", 11, 0, input);
1067

    
1068
                    			    	    throw nvae_d11s0;
1069
                    			    	}
1070
                    			    	switch (alt11) 
1071
                    			    	{
1072
                    			    	    case 1 :
1073
                    			    	        // ooa.g:229:14: otherlandmark= T_IDENTIFIER
1074
                    			    	        {
1075
                    			    	        	otherlandmark=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_complexType541); 
1076

    
1077
                    			    	        }
1078
                    			    	        break;
1079
                    			    	    case 2 :
1080
                    			    	        // ooa.g:229:41: otherlandmark= T_INFTY
1081
                    			    	        {
1082
                    			    	        	otherlandmark=(IToken)Match(input,T_INFTY,FOLLOW_T_INFTY_in_complexType545); 
1083

    
1084
                    			    	        }
1085
                    			    	        break;
1086

    
1087
                    			    	}
1088

    
1089
                    			    	addToQrType(aTypeSymbol,otherlandmark);
1090

    
1091
                    			    }
1092
                    			    break;
1093

    
1094
                    			default:
1095
                    			    goto loop12;
1096
                    	    }
1097
                    	} while (true);
1098

    
1099
                    	loop12:
1100
                    		;	// Stops C# compiler whining that label 'loop12' has no statements
1101

    
1102
                    	Match(input,T_RSQPAREN,FOLLOW_T_RSQPAREN_in_complexType552); 
1103

    
1104
                    }
1105
                    break;
1106
                case 5 :
1107
                    // ooa.g:231:5: T_LPAREN aType= complexType ( T_COMMA anotherType= complexType )* T_RPAREN
1108
                    {
1109
                    	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_complexType562); 
1110
                    	PushFollow(FOLLOW_complexType_in_complexType566);
1111
                    	aType = complexType();
1112
                    	state.followingStackPointer--;
1113

    
1114
                    	aTypeSymbol = createTupleType(aType);
1115
                    	// ooa.g:232:4: ( T_COMMA anotherType= complexType )*
1116
                    	do 
1117
                    	{
1118
                    	    int alt13 = 2;
1119
                    	    int LA13_0 = input.LA(1);
1120

    
1121
                    	    if ( (LA13_0 == T_COMMA) )
1122
                    	    {
1123
                    	        alt13 = 1;
1124
                    	    }
1125

    
1126

    
1127
                    	    switch (alt13) 
1128
                    		{
1129
                    			case 1 :
1130
                    			    // ooa.g:232:5: T_COMMA anotherType= complexType
1131
                    			    {
1132
                    			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_complexType575); 
1133
                    			    	PushFollow(FOLLOW_complexType_in_complexType579);
1134
                    			    	anotherType = complexType();
1135
                    			    	state.followingStackPointer--;
1136

    
1137
                    			    	addToTupleType(aTypeSymbol,anotherType);
1138

    
1139
                    			    }
1140
                    			    break;
1141

    
1142
                    			default:
1143
                    			    goto loop13;
1144
                    	    }
1145
                    	} while (true);
1146

    
1147
                    	loop13:
1148
                    		;	// Stops C# compiler whining that label 'loop13' has no statements
1149

    
1150
                    	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_complexType586); 
1151

    
1152
                    }
1153
                    break;
1154
                case 6 :
1155
                    // ooa.g:235:4: r= simpleType
1156
                    {
1157
                    	PushFollow(FOLLOW_simpleType_in_complexType599);
1158
                    	r = simpleType();
1159
                    	state.followingStackPointer--;
1160

    
1161
                    	aTypeSymbol = r;
1162

    
1163
                    }
1164
                    break;
1165

    
1166
            }
1167
        }
1168
        catch (RecognitionException re) 
1169
    	{
1170
            ReportError(re);
1171
            Recover(input,re);
1172
        }
1173
        finally 
1174
    	{
1175
            fixupComplexType(aTypeSymbol);
1176
        }
1177
        return aTypeSymbol;
1178
    }
1179
    // $ANTLR end "complexType"
1180

    
1181

    
1182
    // $ANTLR start "simpleType"
1183
    // ooa.g:241:1: simpleType returns [UlyssesType aTypeSymbol] : ( T_BOOL | T_INT T_LSQPAREN rangeLow= ( T_INTNUMBER | T_INFTY | T_IDENTIFIER ) T_RANGETO rangeHigh= ( T_INTNUMBER | T_INFTY | T_IDENTIFIER ) T_RSQPAREN | T_FLOAT T_LSQPAREN rangeLow= ( T_FLOATNUMBER | T_INFTY | T_IDENTIFIER ) T_RANGETO rangeHigh= ( T_FLOATNUMBER | T_INFTY | T_IDENTIFIER ) T_RSQPAREN | T_CHAR | T_CBRL aRangeValue= T_IDENTIFIER ( T_EQUAL optVal= T_INTNUMBER )? ( T_COMMA otherRangeValue= T_IDENTIFIER ( T_EQUAL otherOptVal= T_INTNUMBER )? )* T_CBRR | aType= T_IDENTIFIER );
1184
    public UlyssesType simpleType() // throws RecognitionException [1]
1185
    {   
1186
        UlyssesType aTypeSymbol = default(UlyssesType);
1187

    
1188
        IToken rangeLow = null;
1189
        IToken rangeHigh = null;
1190
        IToken aRangeValue = null;
1191
        IToken optVal = null;
1192
        IToken otherRangeValue = null;
1193
        IToken otherOptVal = null;
1194
        IToken aType = null;
1195

    
1196
         
1197
        		aTypeSymbol = null;
1198
        	
1199
        try 
1200
    	{
1201
            // ooa.g:246:2: ( T_BOOL | T_INT T_LSQPAREN rangeLow= ( T_INTNUMBER | T_INFTY | T_IDENTIFIER ) T_RANGETO rangeHigh= ( T_INTNUMBER | T_INFTY | T_IDENTIFIER ) T_RSQPAREN | T_FLOAT T_LSQPAREN rangeLow= ( T_FLOATNUMBER | T_INFTY | T_IDENTIFIER ) T_RANGETO rangeHigh= ( T_FLOATNUMBER | T_INFTY | T_IDENTIFIER ) T_RSQPAREN | T_CHAR | T_CBRL aRangeValue= T_IDENTIFIER ( T_EQUAL optVal= T_INTNUMBER )? ( T_COMMA otherRangeValue= T_IDENTIFIER ( T_EQUAL otherOptVal= T_INTNUMBER )? )* T_CBRR | aType= T_IDENTIFIER )
1202
            int alt18 = 6;
1203
            switch ( input.LA(1) ) 
1204
            {
1205
            case T_BOOL:
1206
            	{
1207
                alt18 = 1;
1208
                }
1209
                break;
1210
            case T_INT:
1211
            	{
1212
                alt18 = 2;
1213
                }
1214
                break;
1215
            case T_FLOAT:
1216
            	{
1217
                alt18 = 3;
1218
                }
1219
                break;
1220
            case T_CHAR:
1221
            	{
1222
                alt18 = 4;
1223
                }
1224
                break;
1225
            case T_CBRL:
1226
            	{
1227
                alt18 = 5;
1228
                }
1229
                break;
1230
            case T_IDENTIFIER:
1231
            	{
1232
                alt18 = 6;
1233
                }
1234
                break;
1235
            	default:
1236
            	    NoViableAltException nvae_d18s0 =
1237
            	        new NoViableAltException("", 18, 0, input);
1238

    
1239
            	    throw nvae_d18s0;
1240
            }
1241

    
1242
            switch (alt18) 
1243
            {
1244
                case 1 :
1245
                    // ooa.g:246:4: T_BOOL
1246
                    {
1247
                    	Match(input,T_BOOL,FOLLOW_T_BOOL_in_simpleType632); 
1248
                    	aTypeSymbol = createBoolType();
1249

    
1250
                    }
1251
                    break;
1252
                case 2 :
1253
                    // ooa.g:249:4: T_INT T_LSQPAREN rangeLow= ( T_INTNUMBER | T_INFTY | T_IDENTIFIER ) T_RANGETO rangeHigh= ( T_INTNUMBER | T_INFTY | T_IDENTIFIER ) T_RSQPAREN
1254
                    {
1255
                    	Match(input,T_INT,FOLLOW_T_INT_in_simpleType645); 
1256
                    	Match(input,T_LSQPAREN,FOLLOW_T_LSQPAREN_in_simpleType647); 
1257
                    	rangeLow = (IToken)input.LT(1);
1258
                    	if ( input.LA(1) == T_IDENTIFIER || input.LA(1) == T_INTNUMBER || input.LA(1) == T_INFTY ) 
1259
                    	{
1260
                    	    input.Consume();
1261
                    	    state.errorRecovery = false;
1262
                    	}
1263
                    	else 
1264
                    	{
1265
                    	    MismatchedSetException mse = new MismatchedSetException(null,input);
1266
                    	    throw mse;
1267
                    	}
1268

    
1269
                    	Match(input,T_RANGETO,FOLLOW_T_RANGETO_in_simpleType659); 
1270
                    	rangeHigh = (IToken)input.LT(1);
1271
                    	if ( input.LA(1) == T_IDENTIFIER || input.LA(1) == T_INTNUMBER || input.LA(1) == T_INFTY ) 
1272
                    	{
1273
                    	    input.Consume();
1274
                    	    state.errorRecovery = false;
1275
                    	}
1276
                    	else 
1277
                    	{
1278
                    	    MismatchedSetException mse = new MismatchedSetException(null,input);
1279
                    	    throw mse;
1280
                    	}
1281

    
1282
                    	Match(input,T_RSQPAREN,FOLLOW_T_RSQPAREN_in_simpleType671); 
1283
                    	aTypeSymbol = createIntType(rangeLow,rangeHigh);
1284

    
1285
                    }
1286
                    break;
1287
                case 3 :
1288
                    // ooa.g:253:4: T_FLOAT T_LSQPAREN rangeLow= ( T_FLOATNUMBER | T_INFTY | T_IDENTIFIER ) T_RANGETO rangeHigh= ( T_FLOATNUMBER | T_INFTY | T_IDENTIFIER ) T_RSQPAREN
1289
                    {
1290
                    	Match(input,T_FLOAT,FOLLOW_T_FLOAT_in_simpleType690); 
1291
                    	Match(input,T_LSQPAREN,FOLLOW_T_LSQPAREN_in_simpleType693); 
1292
                    	rangeLow = (IToken)input.LT(1);
1293
                    	if ( input.LA(1) == T_IDENTIFIER || input.LA(1) == T_INFTY || input.LA(1) == T_FLOATNUMBER ) 
1294
                    	{
1295
                    	    input.Consume();
1296
                    	    state.errorRecovery = false;
1297
                    	}
1298
                    	else 
1299
                    	{
1300
                    	    MismatchedSetException mse = new MismatchedSetException(null,input);
1301
                    	    throw mse;
1302
                    	}
1303

    
1304
                    	Match(input,T_RANGETO,FOLLOW_T_RANGETO_in_simpleType705); 
1305
                    	rangeHigh = (IToken)input.LT(1);
1306
                    	if ( input.LA(1) == T_IDENTIFIER || input.LA(1) == T_INFTY || input.LA(1) == T_FLOATNUMBER ) 
1307
                    	{
1308
                    	    input.Consume();
1309
                    	    state.errorRecovery = false;
1310
                    	}
1311
                    	else 
1312
                    	{
1313
                    	    MismatchedSetException mse = new MismatchedSetException(null,input);
1314
                    	    throw mse;
1315
                    	}
1316

    
1317
                    	Match(input,T_RSQPAREN,FOLLOW_T_RSQPAREN_in_simpleType717); 
1318
                    	aTypeSymbol = createFloatType(rangeLow,rangeHigh);
1319

    
1320
                    }
1321
                    break;
1322
                case 4 :
1323
                    // ooa.g:257:4: T_CHAR
1324
                    {
1325
                    	Match(input,T_CHAR,FOLLOW_T_CHAR_in_simpleType735); 
1326
                    	aTypeSymbol = createCharType();
1327

    
1328
                    }
1329
                    break;
1330
                case 5 :
1331
                    // ooa.g:261:4: T_CBRL aRangeValue= T_IDENTIFIER ( T_EQUAL optVal= T_INTNUMBER )? ( T_COMMA otherRangeValue= T_IDENTIFIER ( T_EQUAL otherOptVal= T_INTNUMBER )? )* T_CBRR
1332
                    {
1333
                    	Match(input,T_CBRL,FOLLOW_T_CBRL_in_simpleType751); 
1334
                    	aRangeValue=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_simpleType755); 
1335
                    	// ooa.g:261:36: ( T_EQUAL optVal= T_INTNUMBER )?
1336
                    	int alt15 = 2;
1337
                    	int LA15_0 = input.LA(1);
1338

    
1339
                    	if ( (LA15_0 == T_EQUAL) )
1340
                    	{
1341
                    	    alt15 = 1;
1342
                    	}
1343
                    	switch (alt15) 
1344
                    	{
1345
                    	    case 1 :
1346
                    	        // ooa.g:261:37: T_EQUAL optVal= T_INTNUMBER
1347
                    	        {
1348
                    	        	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_simpleType758); 
1349
                    	        	optVal=(IToken)Match(input,T_INTNUMBER,FOLLOW_T_INTNUMBER_in_simpleType762); 
1350

    
1351
                    	        }
1352
                    	        break;
1353

    
1354
                    	}
1355

    
1356
                    	aTypeSymbol = createEnumType(aRangeValue, optVal);
1357
                    	// ooa.g:262:4: ( T_COMMA otherRangeValue= T_IDENTIFIER ( T_EQUAL otherOptVal= T_INTNUMBER )? )*
1358
                    	do 
1359
                    	{
1360
                    	    int alt17 = 2;
1361
                    	    int LA17_0 = input.LA(1);
1362

    
1363
                    	    if ( (LA17_0 == T_COMMA) )
1364
                    	    {
1365
                    	        alt17 = 1;
1366
                    	    }
1367

    
1368

    
1369
                    	    switch (alt17) 
1370
                    		{
1371
                    			case 1 :
1372
                    			    // ooa.g:262:5: T_COMMA otherRangeValue= T_IDENTIFIER ( T_EQUAL otherOptVal= T_INTNUMBER )?
1373
                    			    {
1374
                    			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_simpleType773); 
1375
                    			    	otherRangeValue=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_simpleType777); 
1376
                    			    	// ooa.g:262:42: ( T_EQUAL otherOptVal= T_INTNUMBER )?
1377
                    			    	int alt16 = 2;
1378
                    			    	int LA16_0 = input.LA(1);
1379

    
1380
                    			    	if ( (LA16_0 == T_EQUAL) )
1381
                    			    	{
1382
                    			    	    alt16 = 1;
1383
                    			    	}
1384
                    			    	switch (alt16) 
1385
                    			    	{
1386
                    			    	    case 1 :
1387
                    			    	        // ooa.g:262:43: T_EQUAL otherOptVal= T_INTNUMBER
1388
                    			    	        {
1389
                    			    	        	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_simpleType780); 
1390
                    			    	        	otherOptVal=(IToken)Match(input,T_INTNUMBER,FOLLOW_T_INTNUMBER_in_simpleType784); 
1391

    
1392
                    			    	        }
1393
                    			    	        break;
1394

    
1395
                    			    	}
1396

    
1397
                    			    	addToEnumType(aTypeSymbol,otherRangeValue,otherOptVal); otherOptVal=null;
1398

    
1399
                    			    }
1400
                    			    break;
1401

    
1402
                    			default:
1403
                    			    goto loop17;
1404
                    	    }
1405
                    	} while (true);
1406

    
1407
                    	loop17:
1408
                    		;	// Stops C# compiler whining that label 'loop17' has no statements
1409

    
1410
                    	Match(input,T_CBRR,FOLLOW_T_CBRR_in_simpleType792); 
1411

    
1412
                    }
1413
                    break;
1414
                case 6 :
1415
                    // ooa.g:264:4: aType= T_IDENTIFIER
1416
                    {
1417
                    	aType=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_simpleType803); 
1418
                    	aTypeSymbol = getNamedType(aType);
1419

    
1420
                    }
1421
                    break;
1422

    
1423
            }
1424
        }
1425
        catch (RecognitionException re) 
1426
    	{
1427
            ReportError(re);
1428
            Recover(input,re);
1429
        }
1430
        finally 
1431
    	{
1432
            fixupSimpleType(aTypeSymbol);
1433
        }
1434
        return aTypeSymbol;
1435
    }
1436
    // $ANTLR end "simpleType"
1437

    
1438

    
1439
    // $ANTLR start "ooActionSystem"
1440
    // ooa.g:274:1: ooActionSystem returns [OoActionSystemType aTypeSymbol] : ( T_AUTOCONS )? T_SYSTEM ( T_LPAREN refinesSystemName= T_IDENTIFIER T_RPAREN )? '|[' ( T_VAR attrList )? ( T_METHODS methodList )? ( T_ACTIONS namedActionList )? ( T_DO (bl= actionBlock[null] )? T_OD )? ']|' ;
1441
    public OoActionSystemType ooActionSystem() // throws RecognitionException [1]
1442
    {   
1443
        OoActionSystemType aTypeSymbol = default(OoActionSystemType);
1444

    
1445
        IToken refinesSystemName = null;
1446
        Block bl = default(Block);
1447

    
1448

    
1449
         
1450
        		bool autoCons = false; 
1451
        		aTypeSymbol = null;
1452
        		refinesSystemName = null;
1453
        	
1454
        try 
1455
    	{
1456
            // ooa.g:281:2: ( ( T_AUTOCONS )? T_SYSTEM ( T_LPAREN refinesSystemName= T_IDENTIFIER T_RPAREN )? '|[' ( T_VAR attrList )? ( T_METHODS methodList )? ( T_ACTIONS namedActionList )? ( T_DO (bl= actionBlock[null] )? T_OD )? ']|' )
1457
            // ooa.g:281:9: ( T_AUTOCONS )? T_SYSTEM ( T_LPAREN refinesSystemName= T_IDENTIFIER T_RPAREN )? '|[' ( T_VAR attrList )? ( T_METHODS methodList )? ( T_ACTIONS namedActionList )? ( T_DO (bl= actionBlock[null] )? T_OD )? ']|'
1458
            {
1459
            	// ooa.g:281:9: ( T_AUTOCONS )?
1460
            	int alt19 = 2;
1461
            	int LA19_0 = input.LA(1);
1462

    
1463
            	if ( (LA19_0 == T_AUTOCONS) )
1464
            	{
1465
            	    alt19 = 1;
1466
            	}
1467
            	switch (alt19) 
1468
            	{
1469
            	    case 1 :
1470
            	        // ooa.g:281:10: T_AUTOCONS
1471
            	        {
1472
            	        	Match(input,T_AUTOCONS,FOLLOW_T_AUTOCONS_in_ooActionSystem846); 
1473
            	        	autoCons = true;
1474

    
1475
            	        }
1476
            	        break;
1477

    
1478
            	}
1479

    
1480
            	Match(input,T_SYSTEM,FOLLOW_T_SYSTEM_in_ooActionSystem855); 
1481
            	// ooa.g:282:12: ( T_LPAREN refinesSystemName= T_IDENTIFIER T_RPAREN )?
1482
            	int alt20 = 2;
1483
            	int LA20_0 = input.LA(1);
1484

    
1485
            	if ( (LA20_0 == T_LPAREN) )
1486
            	{
1487
            	    alt20 = 1;
1488
            	}
1489
            	switch (alt20) 
1490
            	{
1491
            	    case 1 :
1492
            	        // ooa.g:282:13: T_LPAREN refinesSystemName= T_IDENTIFIER T_RPAREN
1493
            	        {
1494
            	        	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_ooActionSystem858); 
1495
            	        	refinesSystemName=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_ooActionSystem862); 
1496
            	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_ooActionSystem864); 
1497

    
1498
            	        }
1499
            	        break;
1500

    
1501
            	}
1502

    
1503
            	aTypeSymbol = createOoaType(refinesSystemName,autoCons);
1504
            	Match(input,117,FOLLOW_117_in_ooActionSystem877); 
1505
            	// ooa.g:285:4: ( T_VAR attrList )?
1506
            	int alt21 = 2;
1507
            	int LA21_0 = input.LA(1);
1508

    
1509
            	if ( (LA21_0 == T_VAR) )
1510
            	{
1511
            	    alt21 = 1;
1512
            	}
1513
            	switch (alt21) 
1514
            	{
1515
            	    case 1 :
1516
            	        // ooa.g:285:5: T_VAR attrList
1517
            	        {
1518
            	        	Match(input,T_VAR,FOLLOW_T_VAR_in_ooActionSystem883); 
1519
            	        	PushFollow(FOLLOW_attrList_in_ooActionSystem885);
1520
            	        	attrList();
1521
            	        	state.followingStackPointer--;
1522

    
1523

    
1524
            	        }
1525
            	        break;
1526

    
1527
            	}
1528

    
1529
            	// ooa.g:286:4: ( T_METHODS methodList )?
1530
            	int alt22 = 2;
1531
            	int LA22_0 = input.LA(1);
1532

    
1533
            	if ( (LA22_0 == T_METHODS) )
1534
            	{
1535
            	    alt22 = 1;
1536
            	}
1537
            	switch (alt22) 
1538
            	{
1539
            	    case 1 :
1540
            	        // ooa.g:286:5: T_METHODS methodList
1541
            	        {
1542
            	        	Match(input,T_METHODS,FOLLOW_T_METHODS_in_ooActionSystem893); 
1543
            	        	PushFollow(FOLLOW_methodList_in_ooActionSystem895);
1544
            	        	methodList();
1545
            	        	state.followingStackPointer--;
1546

    
1547

    
1548
            	        }
1549
            	        break;
1550

    
1551
            	}
1552

    
1553
            	// ooa.g:287:4: ( T_ACTIONS namedActionList )?
1554
            	int alt23 = 2;
1555
            	int LA23_0 = input.LA(1);
1556

    
1557
            	if ( (LA23_0 == T_ACTIONS) )
1558
            	{
1559
            	    alt23 = 1;
1560
            	}
1561
            	switch (alt23) 
1562
            	{
1563
            	    case 1 :
1564
            	        // ooa.g:287:5: T_ACTIONS namedActionList
1565
            	        {
1566
            	        	Match(input,T_ACTIONS,FOLLOW_T_ACTIONS_in_ooActionSystem903); 
1567
            	        	PushFollow(FOLLOW_namedActionList_in_ooActionSystem905);
1568
            	        	namedActionList();
1569
            	        	state.followingStackPointer--;
1570

    
1571

    
1572
            	        }
1573
            	        break;
1574

    
1575
            	}
1576

    
1577
            	// ooa.g:288:4: ( T_DO (bl= actionBlock[null] )? T_OD )?
1578
            	int alt25 = 2;
1579
            	int LA25_0 = input.LA(1);
1580

    
1581
            	if ( (LA25_0 == T_DO) )
1582
            	{
1583
            	    alt25 = 1;
1584
            	}
1585
            	switch (alt25) 
1586
            	{
1587
            	    case 1 :
1588
            	        // ooa.g:288:5: T_DO (bl= actionBlock[null] )? T_OD
1589
            	        {
1590
            	        	Match(input,T_DO,FOLLOW_T_DO_in_ooActionSystem913); 
1591
            	        	// ooa.g:288:10: (bl= actionBlock[null] )?
1592
            	        	int alt24 = 2;
1593
            	        	int LA24_0 = input.LA(1);
1594

    
1595
            	        	if ( (LA24_0 == T_IDENTIFIER || LA24_0 == T_LPAREN || LA24_0 == T_VAR || (LA24_0 >= T_CONT && LA24_0 <= T_REQUIRES) || LA24_0 == T_SKIP) )
1596
            	        	{
1597
            	        	    alt24 = 1;
1598
            	        	}
1599
            	        	switch (alt24) 
1600
            	        	{
1601
            	        	    case 1 :
1602
            	        	        // ooa.g:288:11: bl= actionBlock[null]
1603
            	        	        {
1604
            	        	        	PushFollow(FOLLOW_actionBlock_in_ooActionSystem918);
1605
            	        	        	bl = actionBlock(null);
1606
            	        	        	state.followingStackPointer--;
1607

    
1608
            	        	        	addActionBlock(aTypeSymbol,bl);
1609

    
1610
            	        	        }
1611
            	        	        break;
1612

    
1613
            	        	}
1614

    
1615
            	        	Match(input,T_OD,FOLLOW_T_OD_in_ooActionSystem925); 
1616

    
1617
            	        }
1618
            	        break;
1619

    
1620
            	}
1621

    
1622
            	Match(input,118,FOLLOW_118_in_ooActionSystem931); 
1623

    
1624
            }
1625

    
1626
        }
1627
        catch (RecognitionException re) 
1628
    	{
1629
            ReportError(re);
1630
            Recover(input,re);
1631
        }
1632
        finally 
1633
    	{
1634
            fixupOoaType(aTypeSymbol);
1635
        }
1636
        return aTypeSymbol;
1637
    }
1638
    // $ANTLR end "ooActionSystem"
1639

    
1640

    
1641
    // $ANTLR start "attrList"
1642
    // ooa.g:300:1: attrList : attr ( T_SEMICOLON attr )* ;
1643
    public void attrList() // throws RecognitionException [1]
1644
    {   
1645
        try 
1646
    	{
1647
            // ooa.g:301:2: ( attr ( T_SEMICOLON attr )* )
1648
            // ooa.g:301:4: attr ( T_SEMICOLON attr )*
1649
            {
1650
            	BeginParsingAttributes();
1651
            	PushFollow(FOLLOW_attr_in_attrList962);
1652
            	attr();
1653
            	state.followingStackPointer--;
1654

    
1655
            	// ooa.g:302:9: ( T_SEMICOLON attr )*
1656
            	do 
1657
            	{
1658
            	    int alt26 = 2;
1659
            	    int LA26_0 = input.LA(1);
1660

    
1661
            	    if ( (LA26_0 == T_SEMICOLON) )
1662
            	    {
1663
            	        alt26 = 1;
1664
            	    }
1665

    
1666

    
1667
            	    switch (alt26) 
1668
            		{
1669
            			case 1 :
1670
            			    // ooa.g:302:10: T_SEMICOLON attr
1671
            			    {
1672
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_attrList965); 
1673
            			    	PushFollow(FOLLOW_attr_in_attrList967);
1674
            			    	attr();
1675
            			    	state.followingStackPointer--;
1676

    
1677

    
1678
            			    }
1679
            			    break;
1680

    
1681
            			default:
1682
            			    goto loop26;
1683
            	    }
1684
            	} while (true);
1685

    
1686
            	loop26:
1687
            		;	// Stops C# compiler whining that label 'loop26' has no statements
1688

    
1689

    
1690
            }
1691

    
1692
        }
1693
        catch (RecognitionException re) 
1694
    	{
1695
            ReportError(re);
1696
            Recover(input,re);
1697
        }
1698
        finally 
1699
    	{
1700

    
1701
            		EndParsingAttributes();
1702
            	
1703
        }
1704
        return ;
1705
    }
1706
    // $ANTLR end "attrList"
1707

    
1708

    
1709
    // $ANTLR start "attr"
1710
    // ooa.g:308:1: attr : ( T_STATIC )? ( T_OBS | T_CTRL )? varname= T_IDENTIFIER T_COLON aType= complexType ( T_EQUAL anExpr= expression )? ;
1711
    public void attr() // throws RecognitionException [1]
1712
    {   
1713
        IToken varname = null;
1714
        UlyssesType aType = default(UlyssesType);
1715

    
1716
        Expression anExpr = default(Expression);
1717

    
1718

    
1719
         
1720
        		bool isStatic = false; 
1721
        		bool isCtr = false;
1722
        		bool isObs = false;				
1723
        		
1724
        	
1725
        try 
1726
    	{
1727
            // ooa.g:315:2: ( ( T_STATIC )? ( T_OBS | T_CTRL )? varname= T_IDENTIFIER T_COLON aType= complexType ( T_EQUAL anExpr= expression )? )
1728
            // ooa.g:315:5: ( T_STATIC )? ( T_OBS | T_CTRL )? varname= T_IDENTIFIER T_COLON aType= complexType ( T_EQUAL anExpr= expression )?
1729
            {
1730
            	// ooa.g:315:5: ( T_STATIC )?
1731
            	int alt27 = 2;
1732
            	int LA27_0 = input.LA(1);
1733

    
1734
            	if ( (LA27_0 == T_STATIC) )
1735
            	{
1736
            	    alt27 = 1;
1737
            	}
1738
            	switch (alt27) 
1739
            	{
1740
            	    case 1 :
1741
            	        // ooa.g:315:6: T_STATIC
1742
            	        {
1743
            	        	Match(input,T_STATIC,FOLLOW_T_STATIC_in_attr992); 
1744
            	        	isStatic = true;
1745

    
1746
            	        }
1747
            	        break;
1748

    
1749
            	}
1750

    
1751
            	// ooa.g:315:36: ( T_OBS | T_CTRL )?
1752
            	int alt28 = 3;
1753
            	int LA28_0 = input.LA(1);
1754

    
1755
            	if ( (LA28_0 == T_OBS) )
1756
            	{
1757
            	    alt28 = 1;
1758
            	}
1759
            	else if ( (LA28_0 == T_CTRL) )
1760
            	{
1761
            	    alt28 = 2;
1762
            	}
1763
            	switch (alt28) 
1764
            	{
1765
            	    case 1 :
1766
            	        // ooa.g:315:37: T_OBS
1767
            	        {
1768
            	        	Match(input,T_OBS,FOLLOW_T_OBS_in_attr999); 
1769
            	        	isObs = true;
1770

    
1771
            	        }
1772
            	        break;
1773
            	    case 2 :
1774
            	        // ooa.g:315:61: T_CTRL
1775
            	        {
1776
            	        	Match(input,T_CTRL,FOLLOW_T_CTRL_in_attr1005); 
1777
            	        	isCtr = true;
1778

    
1779
            	        }
1780
            	        break;
1781

    
1782
            	}
1783

    
1784
            	varname=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_attr1016); 
1785
            	Match(input,T_COLON,FOLLOW_T_COLON_in_attr1019); 
1786
            	PushFollow(FOLLOW_complexType_in_attr1023);
1787
            	aType = complexType();
1788
            	state.followingStackPointer--;
1789

    
1790
            	// ooa.g:316:51: ( T_EQUAL anExpr= expression )?
1791
            	int alt29 = 2;
1792
            	int LA29_0 = input.LA(1);
1793

    
1794
            	if ( (LA29_0 == T_EQUAL) )
1795
            	{
1796
            	    alt29 = 1;
1797
            	}
1798
            	switch (alt29) 
1799
            	{
1800
            	    case 1 :
1801
            	        // ooa.g:316:52: T_EQUAL anExpr= expression
1802
            	        {
1803
            	        	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_attr1026); 
1804
            	        	PushFollow(FOLLOW_expression_in_attr1030);
1805
            	        	anExpr = expression();
1806
            	        	state.followingStackPointer--;
1807

    
1808

    
1809
            	        }
1810
            	        break;
1811

    
1812
            	}
1813

    
1814
            	createAttribute(varname, isStatic, isObs, isCtr, aType, anExpr);
1815

    
1816
            }
1817

    
1818
        }
1819
        catch (RecognitionException re) 
1820
    	{
1821
            ReportError(re);
1822
            Recover(input,re);
1823
        }
1824
        finally 
1825
    	{
1826
        }
1827
        return ;
1828
    }
1829
    // $ANTLR end "attr"
1830

    
1831

    
1832
    // $ANTLR start "methodList"
1833
    // ooa.g:323:1: methodList : method ( T_SEMICOLON method )* ;
1834
    public void methodList() // throws RecognitionException [1]
1835
    {   
1836
        try 
1837
    	{
1838
            // ooa.g:324:2: ( method ( T_SEMICOLON method )* )
1839
            // ooa.g:324:5: method ( T_SEMICOLON method )*
1840
            {
1841
            	PushFollow(FOLLOW_method_in_methodList1052);
1842
            	method();
1843
            	state.followingStackPointer--;
1844

    
1845
            	// ooa.g:324:12: ( T_SEMICOLON method )*
1846
            	do 
1847
            	{
1848
            	    int alt30 = 2;
1849
            	    int LA30_0 = input.LA(1);
1850

    
1851
            	    if ( (LA30_0 == T_SEMICOLON) )
1852
            	    {
1853
            	        alt30 = 1;
1854
            	    }
1855

    
1856

    
1857
            	    switch (alt30) 
1858
            		{
1859
            			case 1 :
1860
            			    // ooa.g:324:13: T_SEMICOLON method
1861
            			    {
1862
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_methodList1055); 
1863
            			    	PushFollow(FOLLOW_method_in_methodList1057);
1864
            			    	method();
1865
            			    	state.followingStackPointer--;
1866

    
1867

    
1868
            			    }
1869
            			    break;
1870

    
1871
            			default:
1872
            			    goto loop30;
1873
            	    }
1874
            	} while (true);
1875

    
1876
            	loop30:
1877
            		;	// Stops C# compiler whining that label 'loop30' has no statements
1878

    
1879

    
1880
            }
1881

    
1882
        }
1883
        catch (RecognitionException re) 
1884
    	{
1885
            ReportError(re);
1886
            Recover(input,re);
1887
        }
1888
        finally 
1889
    	{
1890
        }
1891
        return ;
1892
    }
1893
    // $ANTLR end "methodList"
1894

    
1895

    
1896
    // $ANTLR start "method"
1897
    // ooa.g:327:1: method : mname= T_IDENTIFIER ( T_LPAREN methodParameterList[newMethod] T_RPAREN )? ( T_COLON rt= complexType )? T_EQUAL ( T_VAR localActionVars[newMethod] 'begin' )? statements= actionBody[null] T_END ;
1898
    public void method() // throws RecognitionException [1]
1899
    {   
1900
        IToken mname = null;
1901
        UlyssesType rt = default(UlyssesType);
1902

    
1903
        Block statements = default(Block);
1904

    
1905

    
1906
        	
1907
        		FunctionIdentifier newMethod = null;
1908
        	
1909
        try 
1910
    	{
1911
            // ooa.g:331:2: (mname= T_IDENTIFIER ( T_LPAREN methodParameterList[newMethod] T_RPAREN )? ( T_COLON rt= complexType )? T_EQUAL ( T_VAR localActionVars[newMethod] 'begin' )? statements= actionBody[null] T_END )
1912
            // ooa.g:331:4: mname= T_IDENTIFIER ( T_LPAREN methodParameterList[newMethod] T_RPAREN )? ( T_COLON rt= complexType )? T_EQUAL ( T_VAR localActionVars[newMethod] 'begin' )? statements= actionBody[null] T_END
1913
            {
1914
            	mname=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_method1079); 
1915
            	newMethod = createMethodSymbol(mname);
1916
            	// ooa.g:332:3: ( T_LPAREN methodParameterList[newMethod] T_RPAREN )?
1917
            	int alt31 = 2;
1918
            	int LA31_0 = input.LA(1);
1919

    
1920
            	if ( (LA31_0 == T_LPAREN) )
1921
            	{
1922
            	    alt31 = 1;
1923
            	}
1924
            	switch (alt31) 
1925
            	{
1926
            	    case 1 :
1927
            	        // ooa.g:332:4: T_LPAREN methodParameterList[newMethod] T_RPAREN
1928
            	        {
1929
            	        	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_method1087); 
1930
            	        	PushFollow(FOLLOW_methodParameterList_in_method1089);
1931
            	        	methodParameterList(newMethod);
1932
            	        	state.followingStackPointer--;
1933

    
1934
            	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_method1093); 
1935

    
1936
            	        }
1937
            	        break;
1938

    
1939
            	}
1940

    
1941
            	// ooa.g:333:3: ( T_COLON rt= complexType )?
1942
            	int alt32 = 2;
1943
            	int LA32_0 = input.LA(1);
1944

    
1945
            	if ( (LA32_0 == T_COLON) )
1946
            	{
1947
            	    alt32 = 1;
1948
            	}
1949
            	switch (alt32) 
1950
            	{
1951
            	    case 1 :
1952
            	        // ooa.g:333:4: T_COLON rt= complexType
1953
            	        {
1954
            	        	Match(input,T_COLON,FOLLOW_T_COLON_in_method1101); 
1955
            	        	PushFollow(FOLLOW_complexType_in_method1105);
1956
            	        	rt = complexType();
1957
            	        	state.followingStackPointer--;
1958

    
1959
            	        	setMethodReturnType(newMethod,rt);
1960

    
1961
            	        }
1962
            	        break;
1963

    
1964
            	}
1965

    
1966
            	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_method1115); 
1967
            	// ooa.g:335:4: ( T_VAR localActionVars[newMethod] 'begin' )?
1968
            	int alt33 = 2;
1969
            	int LA33_0 = input.LA(1);
1970

    
1971
            	if ( (LA33_0 == T_VAR) )
1972
            	{
1973
            	    alt33 = 1;
1974
            	}
1975
            	switch (alt33) 
1976
            	{
1977
            	    case 1 :
1978
            	        // ooa.g:335:5: T_VAR localActionVars[newMethod] 'begin'
1979
            	        {
1980
            	        	Match(input,T_VAR,FOLLOW_T_VAR_in_method1122); 
1981
            	        	PushFollow(FOLLOW_localActionVars_in_method1124);
1982
            	        	localActionVars(newMethod);
1983
            	        	state.followingStackPointer--;
1984

    
1985
            	        	Match(input,119,FOLLOW_119_in_method1127); 
1986

    
1987
            	        }
1988
            	        break;
1989

    
1990
            	}
1991

    
1992
            	PushFollow(FOLLOW_actionBody_in_method1136);
1993
            	statements = actionBody(null);
1994
            	state.followingStackPointer--;
1995

    
1996
            	addMethodBody(newMethod,statements);
1997
            	Match(input,T_END,FOLLOW_T_END_in_method1144); 
1998

    
1999
            }
2000

    
2001
        }
2002
        catch (RecognitionException re) 
2003
    	{
2004
            ReportError(re);
2005
            Recover(input,re);
2006
        }
2007
        finally 
2008
    	{
2009
            popResolveStack(newMethod);
2010
        }
2011
        return ;
2012
    }
2013
    // $ANTLR end "method"
2014

    
2015

    
2016
    // $ANTLR start "methodParameterList"
2017
    // ooa.g:342:1: methodParameterList[FunctionIdentifier newMethod] : paramName= T_IDENTIFIER T_COLON atype= complexType ( T_COMMA otherparam= T_IDENTIFIER T_COLON othertype= complexType )* ;
2018
    public void methodParameterList(FunctionIdentifier newMethod) // throws RecognitionException [1]
2019
    {   
2020
        IToken paramName = null;
2021
        IToken otherparam = null;
2022
        UlyssesType atype = default(UlyssesType);
2023

    
2024
        UlyssesType othertype = default(UlyssesType);
2025

    
2026

    
2027
        try 
2028
    	{
2029
            // ooa.g:343:2: (paramName= T_IDENTIFIER T_COLON atype= complexType ( T_COMMA otherparam= T_IDENTIFIER T_COLON othertype= complexType )* )
2030
            // ooa.g:343:5: paramName= T_IDENTIFIER T_COLON atype= complexType ( T_COMMA otherparam= T_IDENTIFIER T_COLON othertype= complexType )*
2031
            {
2032
            	paramName=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_methodParameterList1168); 
2033
            	Match(input,T_COLON,FOLLOW_T_COLON_in_methodParameterList1170); 
2034
            	PushFollow(FOLLOW_complexType_in_methodParameterList1174);
2035
            	atype = complexType();
2036
            	state.followingStackPointer--;
2037

    
2038
            	addMethodParameter(newMethod,paramName,atype);
2039
            	// ooa.g:344:4: ( T_COMMA otherparam= T_IDENTIFIER T_COLON othertype= complexType )*
2040
            	do 
2041
            	{
2042
            	    int alt34 = 2;
2043
            	    int LA34_0 = input.LA(1);
2044

    
2045
            	    if ( (LA34_0 == T_COMMA) )
2046
            	    {
2047
            	        alt34 = 1;
2048
            	    }
2049

    
2050

    
2051
            	    switch (alt34) 
2052
            		{
2053
            			case 1 :
2054
            			    // ooa.g:344:5: T_COMMA otherparam= T_IDENTIFIER T_COLON othertype= complexType
2055
            			    {
2056
            			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_methodParameterList1182); 
2057
            			    	otherparam=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_methodParameterList1186); 
2058
            			    	Match(input,T_COLON,FOLLOW_T_COLON_in_methodParameterList1188); 
2059
            			    	PushFollow(FOLLOW_complexType_in_methodParameterList1192);
2060
            			    	othertype = complexType();
2061
            			    	state.followingStackPointer--;
2062

    
2063
            			    	addMethodParameter(newMethod,otherparam,othertype);
2064

    
2065
            			    }
2066
            			    break;
2067

    
2068
            			default:
2069
            			    goto loop34;
2070
            	    }
2071
            	} while (true);
2072

    
2073
            	loop34:
2074
            		;	// Stops C# compiler whining that label 'loop34' has no statements
2075

    
2076

    
2077
            }
2078

    
2079
        }
2080
        catch (RecognitionException re) 
2081
    	{
2082
            ReportError(re);
2083
            Recover(input,re);
2084
        }
2085
        finally 
2086
    	{
2087
        }
2088
        return ;
2089
    }
2090
    // $ANTLR end "methodParameterList"
2091

    
2092

    
2093
    // $ANTLR start "namedActionList"
2094
    // ooa.g:353:1: namedActionList : namedAction ( T_SEMICOLON namedAction )* ;
2095
    public void namedActionList() // throws RecognitionException [1]
2096
    {   
2097
        try 
2098
    	{
2099
            // ooa.g:354:2: ( namedAction ( T_SEMICOLON namedAction )* )
2100
            // ooa.g:354:4: namedAction ( T_SEMICOLON namedAction )*
2101
            {
2102
            	PushFollow(FOLLOW_namedAction_in_namedActionList1219);
2103
            	namedAction();
2104
            	state.followingStackPointer--;
2105

    
2106
            	// ooa.g:354:16: ( T_SEMICOLON namedAction )*
2107
            	do 
2108
            	{
2109
            	    int alt35 = 2;
2110
            	    int LA35_0 = input.LA(1);
2111

    
2112
            	    if ( (LA35_0 == T_SEMICOLON) )
2113
            	    {
2114
            	        alt35 = 1;
2115
            	    }
2116

    
2117

    
2118
            	    switch (alt35) 
2119
            		{
2120
            			case 1 :
2121
            			    // ooa.g:354:17: T_SEMICOLON namedAction
2122
            			    {
2123
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_namedActionList1222); 
2124
            			    	PushFollow(FOLLOW_namedAction_in_namedActionList1224);
2125
            			    	namedAction();
2126
            			    	state.followingStackPointer--;
2127

    
2128

    
2129
            			    }
2130
            			    break;
2131

    
2132
            			default:
2133
            			    goto loop35;
2134
            	    }
2135
            	} while (true);
2136

    
2137
            	loop35:
2138
            		;	// Stops C# compiler whining that label 'loop35' has no statements
2139

    
2140

    
2141
            }
2142

    
2143
        }
2144
        catch (RecognitionException re) 
2145
    	{
2146
            ReportError(re);
2147
            Recover(input,re);
2148
        }
2149
        finally 
2150
    	{
2151
        }
2152
        return ;
2153
    }
2154
    // $ANTLR end "namedActionList"
2155

    
2156

    
2157
    // $ANTLR start "namedAction"
2158
    // ooa.g:357:1: namedAction : ( T_CONT cactionname= T_IDENTIFIER ( T_LPAREN methodParameterList[newAction] T_RPAREN )? T_EQUAL constraints= continuousActionBody | ( T_CTRL | T_OBS | ) actionname= T_IDENTIFIER ( T_LPAREN methodParameterList[newAction] T_RPAREN )? T_EQUAL ( T_VAR localActionVars[newAction] )? body= discreteActionBody );
2159
    public void namedAction() // throws RecognitionException [1]
2160
    {   
2161
        IToken cactionname = null;
2162
        IToken actionname = null;
2163
        GuardedCommand constraints = default(GuardedCommand);
2164

    
2165
        GuardedCommand body = default(GuardedCommand);
2166

    
2167

    
2168

    
2169
        		FunctionTypeEnum actionType;
2170
        		FunctionIdentifier newAction = null;
2171
        	
2172
        try 
2173
    	{
2174
            // ooa.g:362:2: ( T_CONT cactionname= T_IDENTIFIER ( T_LPAREN methodParameterList[newAction] T_RPAREN )? T_EQUAL constraints= continuousActionBody | ( T_CTRL | T_OBS | ) actionname= T_IDENTIFIER ( T_LPAREN methodParameterList[newAction] T_RPAREN )? T_EQUAL ( T_VAR localActionVars[newAction] )? body= discreteActionBody )
2175
            int alt40 = 2;
2176
            int LA40_0 = input.LA(1);
2177

    
2178
            if ( (LA40_0 == T_CONT) )
2179
            {
2180
                alt40 = 1;
2181
            }
2182
            else if ( (LA40_0 == T_IDENTIFIER || (LA40_0 >= T_OBS && LA40_0 <= T_CTRL)) )
2183
            {
2184
                alt40 = 2;
2185
            }
2186
            else 
2187
            {
2188
                NoViableAltException nvae_d40s0 =
2189
                    new NoViableAltException("", 40, 0, input);
2190

    
2191
                throw nvae_d40s0;
2192
            }
2193
            switch (alt40) 
2194
            {
2195
                case 1 :
2196
                    // ooa.g:362:4: T_CONT cactionname= T_IDENTIFIER ( T_LPAREN methodParameterList[newAction] T_RPAREN )? T_EQUAL constraints= continuousActionBody
2197
                    {
2198
                    	Match(input,T_CONT,FOLLOW_T_CONT_in_namedAction1244); 
2199
                    	cactionname=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_namedAction1248); 
2200
                    	newAction = createNamedContinuousAction(cactionname, FunctionTypeEnum.Continuous);
2201
                    	// ooa.g:363:3: ( T_LPAREN methodParameterList[newAction] T_RPAREN )?
2202
                    	int alt36 = 2;
2203
                    	int LA36_0 = input.LA(1);
2204

    
2205
                    	if ( (LA36_0 == T_LPAREN) )
2206
                    	{
2207
                    	    alt36 = 1;
2208
                    	}
2209
                    	switch (alt36) 
2210
                    	{
2211
                    	    case 1 :
2212
                    	        // ooa.g:363:4: T_LPAREN methodParameterList[newAction] T_RPAREN
2213
                    	        {
2214
                    	        	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_namedAction1256); 
2215
                    	        	PushFollow(FOLLOW_methodParameterList_in_namedAction1258);
2216
                    	        	methodParameterList(newAction);
2217
                    	        	state.followingStackPointer--;
2218

    
2219
                    	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_namedAction1262); 
2220

    
2221
                    	        }
2222
                    	        break;
2223

    
2224
                    	}
2225

    
2226
                    	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_namedAction1269); 
2227
                    	PushFollow(FOLLOW_continuousActionBody_in_namedAction1273);
2228
                    	constraints = continuousActionBody();
2229
                    	state.followingStackPointer--;
2230

    
2231
                    	addContinuousActionBody(newAction,constraints);
2232

    
2233
                    }
2234
                    break;
2235
                case 2 :
2236
                    // ooa.g:366:4: ( T_CTRL | T_OBS | ) actionname= T_IDENTIFIER ( T_LPAREN methodParameterList[newAction] T_RPAREN )? T_EQUAL ( T_VAR localActionVars[newAction] )? body= discreteActionBody
2237
                    {
2238
                    	actionType = FunctionTypeEnum.Internal;
2239
                    	// ooa.g:367:3: ( T_CTRL | T_OBS | )
2240
                    	int alt37 = 3;
2241
                    	switch ( input.LA(1) ) 
2242
                    	{
2243
                    	case T_CTRL:
2244
                    		{
2245
                    	    alt37 = 1;
2246
                    	    }
2247
                    	    break;
2248
                    	case T_OBS:
2249
                    		{
2250
                    	    alt37 = 2;
2251
                    	    }
2252
                    	    break;
2253
                    	case T_IDENTIFIER:
2254
                    		{
2255
                    	    alt37 = 3;
2256
                    	    }
2257
                    	    break;
2258
                    		default:
2259
                    		    NoViableAltException nvae_d37s0 =
2260
                    		        new NoViableAltException("", 37, 0, input);
2261

    
2262
                    		    throw nvae_d37s0;
2263
                    	}
2264

    
2265
                    	switch (alt37) 
2266
                    	{
2267
                    	    case 1 :
2268
                    	        // ooa.g:367:4: T_CTRL
2269
                    	        {
2270
                    	        	Match(input,T_CTRL,FOLLOW_T_CTRL_in_namedAction1288); 
2271
                    	        	actionType = FunctionTypeEnum.Controllable;
2272

    
2273
                    	        }
2274
                    	        break;
2275
                    	    case 2 :
2276
                    	        // ooa.g:367:58: T_OBS
2277
                    	        {
2278
                    	        	Match(input,T_OBS,FOLLOW_T_OBS_in_namedAction1293); 
2279
                    	        	actionType = FunctionTypeEnum.Observable;
2280

    
2281
                    	        }
2282
                    	        break;
2283
                    	    case 3 :
2284
                    	        // ooa.g:367:109: 
2285
                    	        {
2286
                    	        }
2287
                    	        break;
2288

    
2289
                    	}
2290

    
2291
                    	actionname=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_namedAction1305); 
2292
                    	newAction = createNamedAction(actionname,actionType);
2293
                    	// ooa.g:369:3: ( T_LPAREN methodParameterList[newAction] T_RPAREN )?
2294
                    	int alt38 = 2;
2295
                    	int LA38_0 = input.LA(1);
2296

    
2297
                    	if ( (LA38_0 == T_LPAREN) )
2298
                    	{
2299
                    	    alt38 = 1;
2300
                    	}
2301
                    	switch (alt38) 
2302
                    	{
2303
                    	    case 1 :
2304
                    	        // ooa.g:369:4: T_LPAREN methodParameterList[newAction] T_RPAREN
2305
                    	        {
2306
                    	        	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_namedAction1313); 
2307
                    	        	PushFollow(FOLLOW_methodParameterList_in_namedAction1315);
2308
                    	        	methodParameterList(newAction);
2309
                    	        	state.followingStackPointer--;
2310

    
2311
                    	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_namedAction1319); 
2312

    
2313
                    	        }
2314
                    	        break;
2315

    
2316
                    	}
2317

    
2318
                    	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_namedAction1326); 
2319
                    	// ooa.g:371:3: ( T_VAR localActionVars[newAction] )?
2320
                    	int alt39 = 2;
2321
                    	int LA39_0 = input.LA(1);
2322

    
2323
                    	if ( (LA39_0 == T_VAR) )
2324
                    	{
2325
                    	    alt39 = 1;
2326
                    	}
2327
                    	switch (alt39) 
2328
                    	{
2329
                    	    case 1 :
2330
                    	        // ooa.g:371:4: T_VAR localActionVars[newAction]
2331
                    	        {
2332
                    	        	Match(input,T_VAR,FOLLOW_T_VAR_in_namedAction1332); 
2333
                    	        	PushFollow(FOLLOW_localActionVars_in_namedAction1334);
2334
                    	        	localActionVars(newAction);
2335
                    	        	state.followingStackPointer--;
2336

    
2337

    
2338
                    	        }
2339
                    	        break;
2340

    
2341
                    	}
2342

    
2343
                    	PushFollow(FOLLOW_discreteActionBody_in_namedAction1345);
2344
                    	body = discreteActionBody();
2345
                    	state.followingStackPointer--;
2346

    
2347
                    	addActionBody(newAction,body);
2348

    
2349
                    }
2350
                    break;
2351

    
2352
            }
2353
        }
2354
        catch (RecognitionException re) 
2355
    	{
2356
            ReportError(re);
2357
            Recover(input,re);
2358
        }
2359
        finally 
2360
    	{
2361
            popResolveStack(newAction);
2362
        }
2363
        return ;
2364
    }
2365
    // $ANTLR end "namedAction"
2366

    
2367

    
2368
    // $ANTLR start "localActionVars"
2369
    // ooa.g:379:1: localActionVars[FunctionIdentifier newMethod] : id1= T_IDENTIFIER T_COLON t1= complexType ( T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType )* ;
2370
    public void localActionVars(FunctionIdentifier newMethod) // throws RecognitionException [1]
2371
    {   
2372
        IToken id1 = null;
2373
        IToken id2 = null;
2374
        UlyssesType t1 = default(UlyssesType);
2375

    
2376
        UlyssesType t2 = default(UlyssesType);
2377

    
2378

    
2379
        try 
2380
    	{
2381
            // ooa.g:380:2: (id1= T_IDENTIFIER T_COLON t1= complexType ( T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType )* )
2382
            // ooa.g:381:3: id1= T_IDENTIFIER T_COLON t1= complexType ( T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType )*
2383
            {
2384
            	id1=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_localActionVars1377); 
2385
            	Match(input,T_COLON,FOLLOW_T_COLON_in_localActionVars1379); 
2386
            	PushFollow(FOLLOW_complexType_in_localActionVars1383);
2387
            	t1 = complexType();
2388
            	state.followingStackPointer--;
2389

    
2390
            	addLocalVariableToNamedAction(newMethod,id1,t1);
2391
            	// ooa.g:382:4: ( T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType )*
2392
            	do 
2393
            	{
2394
            	    int alt41 = 2;
2395
            	    int LA41_0 = input.LA(1);
2396

    
2397
            	    if ( (LA41_0 == T_SEMICOLON) )
2398
            	    {
2399
            	        alt41 = 1;
2400
            	    }
2401

    
2402

    
2403
            	    switch (alt41) 
2404
            		{
2405
            			case 1 :
2406
            			    // ooa.g:382:5: T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType
2407
            			    {
2408
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_localActionVars1392); 
2409
            			    	id2=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_localActionVars1396); 
2410
            			    	Match(input,T_COLON,FOLLOW_T_COLON_in_localActionVars1398); 
2411
            			    	PushFollow(FOLLOW_complexType_in_localActionVars1402);
2412
            			    	t2 = complexType();
2413
            			    	state.followingStackPointer--;
2414

    
2415
            			    	addLocalVariableToNamedAction(newMethod,id2,t2);
2416

    
2417
            			    }
2418
            			    break;
2419

    
2420
            			default:
2421
            			    goto loop41;
2422
            	    }
2423
            	} while (true);
2424

    
2425
            	loop41:
2426
            		;	// Stops C# compiler whining that label 'loop41' has no statements
2427

    
2428

    
2429
            }
2430

    
2431
        }
2432
        catch (RecognitionException re) 
2433
    	{
2434
            ReportError(re);
2435
            Recover(input,re);
2436
        }
2437
        finally 
2438
    	{
2439
        }
2440
        return ;
2441
    }
2442
    // $ANTLR end "localActionVars"
2443

    
2444

    
2445
    // $ANTLR start "anonymousAction"
2446
    // ooa.g:388:1: anonymousAction returns [GuardedCommand result] : (a= continuousActionBody | b= discreteActionBody );
2447
    public GuardedCommand anonymousAction() // throws RecognitionException [1]
2448
    {   
2449
        GuardedCommand result = default(GuardedCommand);
2450

    
2451
        GuardedCommand a = default(GuardedCommand);
2452

    
2453
        GuardedCommand b = default(GuardedCommand);
2454

    
2455

    
2456
        try 
2457
    	{
2458
            // ooa.g:390:2: (a= continuousActionBody | b= discreteActionBody )
2459
            int alt42 = 2;
2460
            int LA42_0 = input.LA(1);
2461

    
2462
            if ( (LA42_0 == T_CONT) )
2463
            {
2464
                alt42 = 1;
2465
            }
2466
            else if ( (LA42_0 == T_REQUIRES) )
2467
            {
2468
                alt42 = 2;
2469
            }
2470
            else 
2471
            {
2472
                NoViableAltException nvae_d42s0 =
2473
                    new NoViableAltException("", 42, 0, input);
2474

    
2475
                throw nvae_d42s0;
2476
            }
2477
            switch (alt42) 
2478
            {
2479
                case 1 :
2480
                    // ooa.g:390:4: a= continuousActionBody
2481
                    {
2482
                    	PushFollow(FOLLOW_continuousActionBody_in_anonymousAction1432);
2483
                    	a = continuousActionBody();
2484
                    	state.followingStackPointer--;
2485

    
2486
                    	result = a;
2487

    
2488
                    }
2489
                    break;
2490
                case 2 :
2491
                    // ooa.g:391:4: b= discreteActionBody
2492
                    {
2493
                    	PushFollow(FOLLOW_discreteActionBody_in_anonymousAction1441);
2494
                    	b = discreteActionBody();
2495
                    	state.followingStackPointer--;
2496

    
2497
                    	result = b;
2498

    
2499
                    }
2500
                    break;
2501

    
2502
            }
2503
        }
2504
        catch (RecognitionException re) 
2505
    	{
2506
            ReportError(re);
2507
            Recover(input,re);
2508
        }
2509
        finally 
2510
    	{
2511
        }
2512
        return result;
2513
    }
2514
    // $ANTLR end "anonymousAction"
2515

    
2516

    
2517
    // $ANTLR start "continuousActionBody"
2518
    // ooa.g:394:1: continuousActionBody returns [GuardedCommand result] : T_CONT T_REQUIRES expr= expression T_COLON bdy= qualConstraintList T_END ;
2519
    public GuardedCommand continuousActionBody() // throws RecognitionException [1]
2520
    {   
2521
        GuardedCommand result = default(GuardedCommand);
2522

    
2523
        Expression expr = default(Expression);
2524

    
2525
        Block bdy = default(Block);
2526

    
2527

    
2528

    
2529
        		result = null;
2530
        	
2531
        try 
2532
    	{
2533
            // ooa.g:399:2: ( T_CONT T_REQUIRES expr= expression T_COLON bdy= qualConstraintList T_END )
2534
            // ooa.g:399:4: T_CONT T_REQUIRES expr= expression T_COLON bdy= qualConstraintList T_END
2535
            {
2536
            	Match(input,T_CONT,FOLLOW_T_CONT_in_continuousActionBody1466); 
2537
            	Match(input,T_REQUIRES,FOLLOW_T_REQUIRES_in_continuousActionBody1468); 
2538
            	PushFollow(FOLLOW_expression_in_continuousActionBody1472);
2539
            	expr = expression();
2540
            	state.followingStackPointer--;
2541

    
2542
            	Match(input,T_COLON,FOLLOW_T_COLON_in_continuousActionBody1474); 
2543
            	PushFollow(FOLLOW_qualConstraintList_in_continuousActionBody1481);
2544
            	bdy = qualConstraintList();
2545
            	state.followingStackPointer--;
2546

    
2547
            	Match(input,T_END,FOLLOW_T_END_in_continuousActionBody1486); 
2548
            	result = createGuardedCommandStatement(expr,bdy,true);
2549

    
2550
            }
2551

    
2552
        }
2553
        catch (RecognitionException re) 
2554
    	{
2555
            ReportError(re);
2556
            Recover(input,re);
2557
        }
2558
        finally 
2559
    	{
2560
        }
2561
        return result;
2562
    }
2563
    // $ANTLR end "continuousActionBody"
2564

    
2565

    
2566
    // $ANTLR start "qualConstraintList"
2567
    // ooa.g:405:1: qualConstraintList returns [Block result] : stmt= qualConstraint ( T_COMMA ostmt= qualConstraint )* ;
2568
    public Block qualConstraintList() // throws RecognitionException [1]
2569
    {   
2570
        Block result = default(Block);
2571

    
2572
        QualitativeConstraintStatement stmt = default(QualitativeConstraintStatement);
2573

    
2574
        QualitativeConstraintStatement ostmt = default(QualitativeConstraintStatement);
2575

    
2576

    
2577

    
2578
        		result = createSeqBlock(null);
2579
        		pushBlockToResolveStack(result);
2580
        	
2581
        try 
2582
    	{
2583
            // ooa.g:411:2: (stmt= qualConstraint ( T_COMMA ostmt= qualConstraint )* )
2584
            // ooa.g:411:4: stmt= qualConstraint ( T_COMMA ostmt= qualConstraint )*
2585
            {
2586
            	PushFollow(FOLLOW_qualConstraint_in_qualConstraintList1514);
2587
            	stmt = qualConstraint();
2588
            	state.followingStackPointer--;
2589

    
2590
            	addToBlockList(result,stmt);
2591
            	// ooa.g:412:3: ( T_COMMA ostmt= qualConstraint )*
2592
            	do 
2593
            	{
2594
            	    int alt43 = 2;
2595
            	    int LA43_0 = input.LA(1);
2596

    
2597
            	    if ( (LA43_0 == T_COMMA) )
2598
            	    {
2599
            	        alt43 = 1;
2600
            	    }
2601

    
2602

    
2603
            	    switch (alt43) 
2604
            		{
2605
            			case 1 :
2606
            			    // ooa.g:412:4: T_COMMA ostmt= qualConstraint
2607
            			    {
2608
            			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_qualConstraintList1521); 
2609
            			    	PushFollow(FOLLOW_qualConstraint_in_qualConstraintList1525);
2610
            			    	ostmt = qualConstraint();
2611
            			    	state.followingStackPointer--;
2612

    
2613
            			    	addToBlockList(result,ostmt);
2614

    
2615
            			    }
2616
            			    break;
2617

    
2618
            			default:
2619
            			    goto loop43;
2620
            	    }
2621
            	} while (true);
2622

    
2623
            	loop43:
2624
            		;	// Stops C# compiler whining that label 'loop43' has no statements
2625

    
2626

    
2627
            }
2628

    
2629
        }
2630
        catch (RecognitionException re) 
2631
    	{
2632
            ReportError(re);
2633
            Recover(input,re);
2634
        }
2635
        finally 
2636
    	{
2637
            popBlockFromResolveStack(result);
2638
        }
2639
        return result;
2640
    }
2641
    // $ANTLR end "qualConstraintList"
2642

    
2643

    
2644
    // $ANTLR start "qualConstraint"
2645
    // ooa.g:419:1: qualConstraint returns [QualitativeConstraintStatement result] : id1= T_IDENTIFIER T_EQUAL ( T_DERIV derivid= T_IDENTIFIER | id2= T_IDENTIFIER ( (op= T_SUM | op= T_DIFF | op= T_PROD ) id3= T_IDENTIFIER | ) ) ;
2646
    public QualitativeConstraintStatement qualConstraint() // throws RecognitionException [1]
2647
    {   
2648
        QualitativeConstraintStatement result = default(QualitativeConstraintStatement);
2649

    
2650
        IToken id1 = null;
2651
        IToken derivid = null;
2652
        IToken id2 = null;
2653
        IToken op = null;
2654
        IToken id3 = null;
2655

    
2656
        try 
2657
    	{
2658
            // ooa.g:421:2: (id1= T_IDENTIFIER T_EQUAL ( T_DERIV derivid= T_IDENTIFIER | id2= T_IDENTIFIER ( (op= T_SUM | op= T_DIFF | op= T_PROD ) id3= T_IDENTIFIER | ) ) )
2659
            // ooa.g:421:4: id1= T_IDENTIFIER T_EQUAL ( T_DERIV derivid= T_IDENTIFIER | id2= T_IDENTIFIER ( (op= T_SUM | op= T_DIFF | op= T_PROD ) id3= T_IDENTIFIER | ) )
2660
            {
2661
            	id1=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_qualConstraint1556); 
2662
            	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_qualConstraint1558); 
2663
            	// ooa.g:422:3: ( T_DERIV derivid= T_IDENTIFIER | id2= T_IDENTIFIER ( (op= T_SUM | op= T_DIFF | op= T_PROD ) id3= T_IDENTIFIER | ) )
2664
            	int alt46 = 2;
2665
            	int LA46_0 = input.LA(1);
2666

    
2667
            	if ( (LA46_0 == T_DERIV) )
2668
            	{
2669
            	    alt46 = 1;
2670
            	}
2671
            	else if ( (LA46_0 == T_IDENTIFIER) )
2672
            	{
2673
            	    alt46 = 2;
2674
            	}
2675
            	else 
2676
            	{
2677
            	    NoViableAltException nvae_d46s0 =
2678
            	        new NoViableAltException("", 46, 0, input);
2679

    
2680
            	    throw nvae_d46s0;
2681
            	}
2682
            	switch (alt46) 
2683
            	{
2684
            	    case 1 :
2685
            	        // ooa.g:422:5: T_DERIV derivid= T_IDENTIFIER
2686
            	        {
2687
            	        	Match(input,T_DERIV,FOLLOW_T_DERIV_in_qualConstraint1565); 
2688
            	        	derivid=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_qualConstraint1569); 
2689
            	        	result = createQualDerivConstraintStatement(id1,derivid);
2690

    
2691
            	        }
2692
            	        break;
2693
            	    case 2 :
2694
            	        // ooa.g:426:11: id2= T_IDENTIFIER ( (op= T_SUM | op= T_DIFF | op= T_PROD ) id3= T_IDENTIFIER | )
2695
            	        {
2696
            	        	id2=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_qualConstraint1604); 
2697
            	        	// ooa.g:427:11: ( (op= T_SUM | op= T_DIFF | op= T_PROD ) id3= T_IDENTIFIER | )
2698
            	        	int alt45 = 2;
2699
            	        	int LA45_0 = input.LA(1);
2700

    
2701
            	        	if ( ((LA45_0 >= T_SUM && LA45_0 <= T_PROD)) )
2702
            	        	{
2703
            	        	    alt45 = 1;
2704
            	        	}
2705
            	        	else if ( (LA45_0 == T_COMMA || LA45_0 == T_END) )
2706
            	        	{
2707
            	        	    alt45 = 2;
2708
            	        	}
2709
            	        	else 
2710
            	        	{
2711
            	        	    NoViableAltException nvae_d45s0 =
2712
            	        	        new NoViableAltException("", 45, 0, input);
2713

    
2714
            	        	    throw nvae_d45s0;
2715
            	        	}
2716
            	        	switch (alt45) 
2717
            	        	{
2718
            	        	    case 1 :
2719
            	        	        // ooa.g:428:12: (op= T_SUM | op= T_DIFF | op= T_PROD ) id3= T_IDENTIFIER
2720
            	        	        {
2721
            	        	        	// ooa.g:428:12: (op= T_SUM | op= T_DIFF | op= T_PROD )
2722
            	        	        	int alt44 = 3;
2723
            	        	        	switch ( input.LA(1) ) 
2724
            	        	        	{
2725
            	        	        	case T_SUM:
2726
            	        	        		{
2727
            	        	        	    alt44 = 1;
2728
            	        	        	    }
2729
            	        	        	    break;
2730
            	        	        	case T_DIFF:
2731
            	        	        		{
2732
            	        	        	    alt44 = 2;
2733
            	        	        	    }
2734
            	        	        	    break;
2735
            	        	        	case T_PROD:
2736
            	        	        		{
2737
            	        	        	    alt44 = 3;
2738
            	        	        	    }
2739
            	        	        	    break;
2740
            	        	        		default:
2741
            	        	        		    NoViableAltException nvae_d44s0 =
2742
            	        	        		        new NoViableAltException("", 44, 0, input);
2743

    
2744
            	        	        		    throw nvae_d44s0;
2745
            	        	        	}
2746

    
2747
            	        	        	switch (alt44) 
2748
            	        	        	{
2749
            	        	        	    case 1 :
2750
            	        	        	        // ooa.g:428:14: op= T_SUM
2751
            	        	        	        {
2752
            	        	        	        	op=(IToken)Match(input,T_SUM,FOLLOW_T_SUM_in_qualConstraint1635); 
2753

    
2754
            	        	        	        }
2755
            	        	        	        break;
2756
            	        	        	    case 2 :
2757
            	        	        	        // ooa.g:429:14: op= T_DIFF
2758
            	        	        	        {
2759
            	        	        	        	op=(IToken)Match(input,T_DIFF,FOLLOW_T_DIFF_in_qualConstraint1652); 
2760

    
2761
            	        	        	        }
2762
            	        	        	        break;
2763
            	        	        	    case 3 :
2764
            	        	        	        // ooa.g:430:14: op= T_PROD
2765
            	        	        	        {
2766
            	        	        	        	op=(IToken)Match(input,T_PROD,FOLLOW_T_PROD_in_qualConstraint1669); 
2767

    
2768
            	        	        	        }
2769
            	        	        	        break;
2770

    
2771
            	        	        	}
2772

    
2773
            	        	        	id3=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_qualConstraint1698); 
2774
            	        	        	result = createQualArithConstraintStatement(id1,id2,id3,op);
2775

    
2776
            	        	        }
2777
            	        	        break;
2778
            	        	    case 2 :
2779
            	        	        // ooa.g:435:12: 
2780
            	        	        {
2781
            	        	        	result = createQualEqualConstraintStatement(id1,id2);
2782

    
2783
            	        	        }
2784
            	        	        break;
2785

    
2786
            	        	}
2787

    
2788

    
2789
            	        }
2790
            	        break;
2791

    
2792
            	}
2793

    
2794

    
2795
            }
2796

    
2797
        }
2798
        catch (RecognitionException re) 
2799
    	{
2800
            ReportError(re);
2801
            Recover(input,re);
2802
        }
2803
        finally 
2804
    	{
2805
        }
2806
        return result;
2807
    }
2808
    // $ANTLR end "qualConstraint"
2809

    
2810

    
2811
    // $ANTLR start "discreteActionBody"
2812
    // ooa.g:443:1: discreteActionBody returns [GuardedCommand result] : T_REQUIRES expr= expression T_COLON bdy= actionBody[null] T_END ;
2813
    public GuardedCommand discreteActionBody() // throws RecognitionException [1]
2814
    {   
2815
        GuardedCommand result = default(GuardedCommand);
2816

    
2817
        Expression expr = default(Expression);
2818

    
2819
        Block bdy = default(Block);
2820

    
2821

    
2822

    
2823
        		result = null;
2824
        	
2825
        try 
2826
    	{
2827
            // ooa.g:448:2: ( T_REQUIRES expr= expression T_COLON bdy= actionBody[null] T_END )
2828
            // ooa.g:449:3: T_REQUIRES expr= expression T_COLON bdy= actionBody[null] T_END
2829
            {
2830
            	Match(input,T_REQUIRES,FOLLOW_T_REQUIRES_in_discreteActionBody1788); 
2831
            	PushFollow(FOLLOW_expression_in_discreteActionBody1792);
2832
            	expr = expression();
2833
            	state.followingStackPointer--;
2834

    
2835
            	Match(input,T_COLON,FOLLOW_T_COLON_in_discreteActionBody1794); 
2836
            	PushFollow(FOLLOW_actionBody_in_discreteActionBody1801);
2837
            	bdy = actionBody(null);
2838
            	state.followingStackPointer--;
2839

    
2840
            	Match(input,T_END,FOLLOW_T_END_in_discreteActionBody1806); 
2841
            	result = createGuardedCommandStatement(expr,bdy);
2842

    
2843
            }
2844

    
2845
        }
2846
        catch (RecognitionException re) 
2847
    	{
2848
            ReportError(re);
2849
            Recover(input,re);
2850
        }
2851
        finally 
2852
    	{
2853
        }
2854
        return result;
2855
    }
2856
    // $ANTLR end "discreteActionBody"
2857

    
2858

    
2859
    // $ANTLR start "actionBlock"
2860
    // ooa.g:460:1: actionBlock[Block top] returns [Block prioList] : actionBlockParallel[prioList] ( T_PRIO actionBlockParallel[prioList] )* ;
2861
    public Block actionBlock(Block top) // throws RecognitionException [1]
2862
    {   
2863
        Block prioList = default(Block);
2864

    
2865
        try 
2866
    	{
2867
            // ooa.g:462:2: ( actionBlockParallel[prioList] ( T_PRIO actionBlockParallel[prioList] )* )
2868
            // ooa.g:462:6: actionBlockParallel[prioList] ( T_PRIO actionBlockParallel[prioList] )*
2869
            {
2870
            	prioList = createPrioBlock(top);
2871
            	PushFollow(FOLLOW_actionBlockParallel_in_actionBlock1842);
2872
            	actionBlockParallel(prioList);
2873
            	state.followingStackPointer--;
2874

    
2875
            	// ooa.g:463:34: ( T_PRIO actionBlockParallel[prioList] )*
2876
            	do 
2877
            	{
2878
            	    int alt47 = 2;
2879
            	    int LA47_0 = input.LA(1);
2880

    
2881
            	    if ( (LA47_0 == T_PRIO) )
2882
            	    {
2883
            	        alt47 = 1;
2884
            	    }
2885

    
2886

    
2887
            	    switch (alt47) 
2888
            		{
2889
            			case 1 :
2890
            			    // ooa.g:463:35: T_PRIO actionBlockParallel[prioList]
2891
            			    {
2892
            			    	Match(input,T_PRIO,FOLLOW_T_PRIO_in_actionBlock1846); 
2893
            			    	PushFollow(FOLLOW_actionBlockParallel_in_actionBlock1848);
2894
            			    	actionBlockParallel(prioList);
2895
            			    	state.followingStackPointer--;
2896

    
2897

    
2898
            			    }
2899
            			    break;
2900

    
2901
            			default:
2902
            			    goto loop47;
2903
            	    }
2904
            	} while (true);
2905

    
2906
            	loop47:
2907
            		;	// Stops C# compiler whining that label 'loop47' has no statements
2908

    
2909

    
2910
            }
2911

    
2912
        }
2913
        catch (RecognitionException re) 
2914
    	{
2915
            ReportError(re);
2916
            Recover(input,re);
2917
        }
2918
        finally 
2919
    	{
2920
        }
2921
        return prioList;
2922
    }
2923
    // $ANTLR end "actionBlock"
2924

    
2925

    
2926
    // $ANTLR start "actionBlockParallel"
2927
    // ooa.g:466:1: actionBlockParallel[Block top] : actionBlockSequential[parList] ( T_NONDET actionBlockSequential[parList] )* ;
2928
    public void actionBlockParallel(Block top) // throws RecognitionException [1]
2929
    {   
2930
        try 
2931
    	{
2932
            // ooa.g:467:2: ( actionBlockSequential[parList] ( T_NONDET actionBlockSequential[parList] )* )
2933
            // ooa.g:467:6: actionBlockSequential[parList] ( T_NONDET actionBlockSequential[parList] )*
2934
            {
2935
            	Block parList = createNondetBlock(top);
2936
            	PushFollow(FOLLOW_actionBlockSequential_in_actionBlockParallel1873);
2937
            	actionBlockSequential(parList);
2938
            	state.followingStackPointer--;
2939

    
2940
            	// ooa.g:468:34: ( T_NONDET actionBlockSequential[parList] )*
2941
            	do 
2942
            	{
2943
            	    int alt48 = 2;
2944
            	    int LA48_0 = input.LA(1);
2945

    
2946
            	    if ( (LA48_0 == T_NONDET) )
2947
            	    {
2948
            	        alt48 = 1;
2949
            	    }
2950

    
2951

    
2952
            	    switch (alt48) 
2953
            		{
2954
            			case 1 :
2955
            			    // ooa.g:468:35: T_NONDET actionBlockSequential[parList]
2956
            			    {
2957
            			    	Match(input,T_NONDET,FOLLOW_T_NONDET_in_actionBlockParallel1877); 
2958
            			    	PushFollow(FOLLOW_actionBlockSequential_in_actionBlockParallel1879);
2959
            			    	actionBlockSequential(parList);
2960
            			    	state.followingStackPointer--;
2961

    
2962

    
2963
            			    }
2964
            			    break;
2965

    
2966
            			default:
2967
            			    goto loop48;
2968
            	    }
2969
            	} while (true);
2970

    
2971
            	loop48:
2972
            		;	// Stops C# compiler whining that label 'loop48' has no statements
2973

    
2974

    
2975
            }
2976

    
2977
        }
2978
        catch (RecognitionException re) 
2979
    	{
2980
            ReportError(re);
2981
            Recover(input,re);
2982
        }
2983
        finally 
2984
    	{
2985
        }
2986
        return ;
2987
    }
2988
    // $ANTLR end "actionBlockParallel"
2989

    
2990

    
2991
    // $ANTLR start "actionBlockSequential"
2992
    // ooa.g:472:1: actionBlockSequential[Block top] : ( T_VAR syms= blockvarlist[seqList] ( '&' sexpr= expression )? T_COLON )? actionBlockParen[seqList] ( T_SEMICOLON actionBlockParen[seqList] )* ;
2993
    public void actionBlockSequential(Block top) // throws RecognitionException [1]
2994
    {   
2995
        Expression sexpr = default(Expression);
2996

    
2997

    
2998

    
2999
        			Block seqList = createSeqBlock(top);
3000
        			pushBlockToResolveStack(seqList);
3001
        		
3002
        try 
3003
    	{
3004
            // ooa.g:477:2: ( ( T_VAR syms= blockvarlist[seqList] ( '&' sexpr= expression )? T_COLON )? actionBlockParen[seqList] ( T_SEMICOLON actionBlockParen[seqList] )* )
3005
            // ooa.g:477:5: ( T_VAR syms= blockvarlist[seqList] ( '&' sexpr= expression )? T_COLON )? actionBlockParen[seqList] ( T_SEMICOLON actionBlockParen[seqList] )*
3006
            {
3007
            	// ooa.g:477:5: ( T_VAR syms= blockvarlist[seqList] ( '&' sexpr= expression )? T_COLON )?
3008
            	int alt50 = 2;
3009
            	int LA50_0 = input.LA(1);
3010

    
3011
            	if ( (LA50_0 == T_VAR) )
3012
            	{
3013
            	    alt50 = 1;
3014
            	}
3015
            	switch (alt50) 
3016
            	{
3017
            	    case 1 :
3018
            	        // ooa.g:477:6: T_VAR syms= blockvarlist[seqList] ( '&' sexpr= expression )? T_COLON
3019
            	        {
3020
            	        	Match(input,T_VAR,FOLLOW_T_VAR_in_actionBlockSequential1908); 
3021
            	        	PushFollow(FOLLOW_blockvarlist_in_actionBlockSequential1912);
3022
            	        	blockvarlist(seqList);
3023
            	        	state.followingStackPointer--;
3024

    
3025
            	        	// ooa.g:477:39: ( '&' sexpr= expression )?
3026
            	        	int alt49 = 2;
3027
            	        	int LA49_0 = input.LA(1);
3028

    
3029
            	        	if ( (LA49_0 == 120) )
3030
            	        	{
3031
            	        	    alt49 = 1;
3032
            	        	}
3033
            	        	switch (alt49) 
3034
            	        	{
3035
            	        	    case 1 :
3036
            	        	        // ooa.g:477:40: '&' sexpr= expression
3037
            	        	        {
3038
            	        	        	Match(input,120,FOLLOW_120_in_actionBlockSequential1916); 
3039
            	        	        	PushFollow(FOLLOW_expression_in_actionBlockSequential1920);
3040
            	        	        	sexpr = expression();
3041
            	        	        	state.followingStackPointer--;
3042

    
3043
            	        	        	addSeqBlockExpression(seqList,sexpr);
3044

    
3045
            	        	        }
3046
            	        	        break;
3047

    
3048
            	        	}
3049

    
3050
            	        	Match(input,T_COLON,FOLLOW_T_COLON_in_actionBlockSequential1927); 
3051

    
3052
            	        }
3053
            	        break;
3054

    
3055
            	}
3056

    
3057
            	PushFollow(FOLLOW_actionBlockParen_in_actionBlockSequential1936);
3058
            	actionBlockParen(seqList);
3059
            	state.followingStackPointer--;
3060

    
3061
            	// ooa.g:478:30: ( T_SEMICOLON actionBlockParen[seqList] )*
3062
            	do 
3063
            	{
3064
            	    int alt51 = 2;
3065
            	    int LA51_0 = input.LA(1);
3066

    
3067
            	    if ( (LA51_0 == T_SEMICOLON) )
3068
            	    {
3069
            	        alt51 = 1;
3070
            	    }
3071

    
3072

    
3073
            	    switch (alt51) 
3074
            		{
3075
            			case 1 :
3076
            			    // ooa.g:478:31: T_SEMICOLON actionBlockParen[seqList]
3077
            			    {
3078
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_actionBlockSequential1940); 
3079
            			    	PushFollow(FOLLOW_actionBlockParen_in_actionBlockSequential1942);
3080
            			    	actionBlockParen(seqList);
3081
            			    	state.followingStackPointer--;
3082

    
3083

    
3084
            			    }
3085
            			    break;
3086

    
3087
            			default:
3088
            			    goto loop51;
3089
            	    }
3090
            	} while (true);
3091

    
3092
            	loop51:
3093
            		;	// Stops C# compiler whining that label 'loop51' has no statements
3094

    
3095

    
3096
            }
3097

    
3098
        }
3099
        catch (RecognitionException re) 
3100
    	{
3101
            ReportError(re);
3102
            Recover(input,re);
3103
        }
3104
        finally 
3105
    	{
3106
            popBlockFromResolveStack(seqList);
3107
        }
3108
        return ;
3109
    }
3110
    // $ANTLR end "actionBlockSequential"
3111

    
3112

    
3113
    // $ANTLR start "actionBlockParen"
3114
    // ooa.g:483:1: actionBlockParen[Block top] : ( T_LPAREN actionBlock[top] T_RPAREN | anonymousOrNamedAction[top] );
3115
    public void actionBlockParen(Block top) // throws RecognitionException [1]
3116
    {   
3117
        try 
3118
    	{
3119
            // ooa.g:484:2: ( T_LPAREN actionBlock[top] T_RPAREN | anonymousOrNamedAction[top] )
3120
            int alt52 = 2;
3121
            int LA52_0 = input.LA(1);
3122

    
3123
            if ( (LA52_0 == T_LPAREN) )
3124
            {
3125
                alt52 = 1;
3126
            }
3127
            else if ( (LA52_0 == T_IDENTIFIER || (LA52_0 >= T_CONT && LA52_0 <= T_REQUIRES) || LA52_0 == T_SKIP) )
3128
            {
3129
                alt52 = 2;
3130
            }
3131
            else 
3132
            {
3133
                NoViableAltException nvae_d52s0 =
3134
                    new NoViableAltException("", 52, 0, input);
3135

    
3136
                throw nvae_d52s0;
3137
            }
3138
            switch (alt52) 
3139
            {
3140
                case 1 :
3141
                    // ooa.g:484:4: T_LPAREN actionBlock[top] T_RPAREN
3142
                    {
3143
                    	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_actionBlockParen1966); 
3144
                    	PushFollow(FOLLOW_actionBlock_in_actionBlockParen1968);
3145
                    	actionBlock(top);
3146
                    	state.followingStackPointer--;
3147

    
3148
                    	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_actionBlockParen1971); 
3149

    
3150
                    }
3151
                    break;
3152
                case 2 :
3153
                    // ooa.g:485:4: anonymousOrNamedAction[top]
3154
                    {
3155
                    	PushFollow(FOLLOW_anonymousOrNamedAction_in_actionBlockParen1976);
3156
                    	anonymousOrNamedAction(top);
3157
                    	state.followingStackPointer--;
3158

    
3159

    
3160
                    }
3161
                    break;
3162

    
3163
            }
3164
        }
3165
        catch (RecognitionException re) 
3166
    	{
3167
            ReportError(re);
3168
            Recover(input,re);
3169
        }
3170
        finally 
3171
    	{
3172
        }
3173
        return ;
3174
    }
3175
    // $ANTLR end "actionBlockParen"
3176

    
3177

    
3178
    // $ANTLR start "anonymousOrNamedAction"
3179
    // ooa.g:488:1: anonymousOrNamedAction[Block top] : (gcmd= anonymousAction | aname= T_IDENTIFIER ( T_LPAREN m_params= methodCallParams T_RPAREN )? (amap= ( T_FOLDLR | T_FOLDRL ) '(' amapexpr= expression ')' )? | T_SKIP );
3180
    public void anonymousOrNamedAction(Block top) // throws RecognitionException [1]
3181
    {   
3182
        IToken aname = null;
3183
        IToken amap = null;
3184
        GuardedCommand gcmd = default(GuardedCommand);
3185

    
3186
        System.Collections.Generic.List<Expression> m_params = default(System.Collections.Generic.List<Expression>);
3187

    
3188
        Expression amapexpr = default(Expression);
3189

    
3190

    
3191
        try 
3192
    	{
3193
            // ooa.g:489:2: (gcmd= anonymousAction | aname= T_IDENTIFIER ( T_LPAREN m_params= methodCallParams T_RPAREN )? (amap= ( T_FOLDLR | T_FOLDRL ) '(' amapexpr= expression ')' )? | T_SKIP )
3194
            int alt55 = 3;
3195
            switch ( input.LA(1) ) 
3196
            {
3197
            case T_CONT:
3198
            case T_REQUIRES:
3199
            	{
3200
                alt55 = 1;
3201
                }
3202
                break;
3203
            case T_IDENTIFIER:
3204
            	{
3205
                alt55 = 2;
3206
                }
3207
                break;
3208
            case T_SKIP:
3209
            	{
3210
                alt55 = 3;
3211
                }
3212
                break;
3213
            	default:
3214
            	    NoViableAltException nvae_d55s0 =
3215
            	        new NoViableAltException("", 55, 0, input);
3216

    
3217
            	    throw nvae_d55s0;
3218
            }
3219

    
3220
            switch (alt55) 
3221
            {
3222
                case 1 :
3223
                    // ooa.g:489:4: gcmd= anonymousAction
3224
                    {
3225
                    	PushFollow(FOLLOW_anonymousAction_in_anonymousOrNamedAction1993);
3226
                    	gcmd = anonymousAction();
3227
                    	state.followingStackPointer--;
3228

    
3229
                    	addToBlockList(top,gcmd);
3230

    
3231
                    }
3232
                    break;
3233
                case 2 :
3234
                    // ooa.g:490:4: aname= T_IDENTIFIER ( T_LPAREN m_params= methodCallParams T_RPAREN )? (amap= ( T_FOLDLR | T_FOLDRL ) '(' amapexpr= expression ')' )?
3235
                    {
3236
                    	aname=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_anonymousOrNamedAction2002); 
3237
                    	// ooa.g:491:11: ( T_LPAREN m_params= methodCallParams T_RPAREN )?
3238
                    	int alt53 = 2;
3239
                    	int LA53_0 = input.LA(1);
3240

    
3241
                    	if ( (LA53_0 == T_LPAREN) )
3242
                    	{
3243
                    	    alt53 = 1;
3244
                    	}
3245
                    	switch (alt53) 
3246
                    	{
3247
                    	    case 1 :
3248
                    	        // ooa.g:491:12: T_LPAREN m_params= methodCallParams T_RPAREN
3249
                    	        {
3250
                    	        	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_anonymousOrNamedAction2016); 
3251
                    	        	PushFollow(FOLLOW_methodCallParams_in_anonymousOrNamedAction2021);
3252
                    	        	m_params = methodCallParams();
3253
                    	        	state.followingStackPointer--;
3254

    
3255
                    	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_anonymousOrNamedAction2023); 
3256

    
3257
                    	        }
3258
                    	        break;
3259

    
3260
                    	}
3261

    
3262
                    	// ooa.g:492:11: (amap= ( T_FOLDLR | T_FOLDRL ) '(' amapexpr= expression ')' )?
3263
                    	int alt54 = 2;
3264
                    	int LA54_0 = input.LA(1);
3265

    
3266
                    	if ( ((LA54_0 >= T_FOLDLR && LA54_0 <= T_FOLDRL)) )
3267
                    	{
3268
                    	    alt54 = 1;
3269
                    	}
3270
                    	switch (alt54) 
3271
                    	{
3272
                    	    case 1 :
3273
                    	        // ooa.g:492:12: amap= ( T_FOLDLR | T_FOLDRL ) '(' amapexpr= expression ')'
3274
                    	        {
3275
                    	        	amap = (IToken)input.LT(1);
3276
                    	        	if ( (input.LA(1) >= T_FOLDLR && input.LA(1) <= T_FOLDRL) ) 
3277
                    	        	{
3278
                    	        	    input.Consume();
3279
                    	        	    state.errorRecovery = false;
3280
                    	        	}
3281
                    	        	else 
3282
                    	        	{
3283
                    	        	    MismatchedSetException mse = new MismatchedSetException(null,input);
3284
                    	        	    throw mse;
3285
                    	        	}
3286

    
3287
                    	        	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_anonymousOrNamedAction2047); 
3288
                    	        	PushFollow(FOLLOW_expression_in_anonymousOrNamedAction2051);
3289
                    	        	amapexpr = expression();
3290
                    	        	state.followingStackPointer--;
3291

    
3292
                    	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_anonymousOrNamedAction2053); 
3293

    
3294
                    	        }
3295
                    	        break;
3296

    
3297
                    	}
3298

    
3299
                    	addNamedActionCallToBlockList(top,aname,m_params,amap,amapexpr);
3300

    
3301
                    }
3302
                    break;
3303
                case 3 :
3304
                    // ooa.g:494:4: T_SKIP
3305
                    {
3306
                    	Match(input,T_SKIP,FOLLOW_T_SKIP_in_anonymousOrNamedAction2064); 
3307
                    	addSkipStatementToBlockList(top);
3308

    
3309
                    }
3310
                    break;
3311

    
3312
            }
3313
        }
3314
        catch (RecognitionException re) 
3315
    	{
3316
            ReportError(re);
3317
            Recover(input,re);
3318
        }
3319
        finally 
3320
    	{
3321
        }
3322
        return ;
3323
    }
3324
    // $ANTLR end "anonymousOrNamedAction"
3325

    
3326

    
3327
    // $ANTLR start "blockvarlist"
3328
    // ooa.g:498:1: blockvarlist[Block seqList] : blockvar[seqList] ( T_SEMICOLON blockvar[seqList] )* ;
3329
    public void blockvarlist(Block seqList) // throws RecognitionException [1]
3330
    {   
3331
        try 
3332
    	{
3333
            // ooa.g:499:2: ( blockvar[seqList] ( T_SEMICOLON blockvar[seqList] )* )
3334
            // ooa.g:499:4: blockvar[seqList] ( T_SEMICOLON blockvar[seqList] )*
3335
            {
3336
            	PushFollow(FOLLOW_blockvar_in_blockvarlist2080);
3337
            	blockvar(seqList);
3338
            	state.followingStackPointer--;
3339

    
3340
            	// ooa.g:499:23: ( T_SEMICOLON blockvar[seqList] )*
3341
            	do 
3342
            	{
3343
            	    int alt56 = 2;
3344
            	    int LA56_0 = input.LA(1);
3345

    
3346
            	    if ( (LA56_0 == T_SEMICOLON) )
3347
            	    {
3348
            	        alt56 = 1;
3349
            	    }
3350

    
3351

    
3352
            	    switch (alt56) 
3353
            		{
3354
            			case 1 :
3355
            			    // ooa.g:499:24: T_SEMICOLON blockvar[seqList]
3356
            			    {
3357
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_blockvarlist2085); 
3358
            			    	PushFollow(FOLLOW_blockvar_in_blockvarlist2087);
3359
            			    	blockvar(seqList);
3360
            			    	state.followingStackPointer--;
3361

    
3362

    
3363
            			    }
3364
            			    break;
3365

    
3366
            			default:
3367
            			    goto loop56;
3368
            	    }
3369
            	} while (true);
3370

    
3371
            	loop56:
3372
            		;	// Stops C# compiler whining that label 'loop56' has no statements
3373

    
3374

    
3375
            }
3376

    
3377
        }
3378
        catch (RecognitionException re) 
3379
    	{
3380
            ReportError(re);
3381
            Recover(input,re);
3382
        }
3383
        finally 
3384
    	{
3385
        }
3386
        return ;
3387
    }
3388
    // $ANTLR end "blockvarlist"
3389

    
3390

    
3391
    // $ANTLR start "blockvar"
3392
    // ooa.g:502:1: blockvar[Block seqList] : varname= T_IDENTIFIER T_COLON aType= complexType ;
3393
    public void blockvar(Block seqList) // throws RecognitionException [1]
3394
    {   
3395
        IToken varname = null;
3396
        UlyssesType aType = default(UlyssesType);
3397

    
3398

    
3399
        try 
3400
    	{
3401
            // ooa.g:503:2: (varname= T_IDENTIFIER T_COLON aType= complexType )
3402
            // ooa.g:503:5: varname= T_IDENTIFIER T_COLON aType= complexType
3403
            {
3404
            	varname=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_blockvar2107); 
3405
            	Match(input,T_COLON,FOLLOW_T_COLON_in_blockvar2110); 
3406
            	PushFollow(FOLLOW_complexType_in_blockvar2114);
3407
            	aType = complexType();
3408
            	state.followingStackPointer--;
3409

    
3410
            	addBlockVariable(seqList,varname,aType);
3411

    
3412
            }
3413

    
3414
        }
3415
        catch (RecognitionException re) 
3416
    	{
3417
            ReportError(re);
3418
            Recover(input,re);
3419
        }
3420
        finally 
3421
    	{
3422
        }
3423
        return ;
3424
    }
3425
    // $ANTLR end "blockvar"
3426

    
3427

    
3428
    // $ANTLR start "actionBody"
3429
    // ooa.g:513:1: actionBody[Block top] returns [Block result] : actionBodyParallel[result] ( T_PRIO actionBodyParallel[result] )? ;
3430
    public Block actionBody(Block top) // throws RecognitionException [1]
3431
    {   
3432
        Block result = default(Block);
3433

    
3434
        try 
3435
    	{
3436
            // ooa.g:515:2: ( actionBodyParallel[result] ( T_PRIO actionBodyParallel[result] )? )
3437
            // ooa.g:515:4: actionBodyParallel[result] ( T_PRIO actionBodyParallel[result] )?
3438
            {
3439
            	result = createPrioBlock(top);
3440
            	PushFollow(FOLLOW_actionBodyParallel_in_actionBody2149);
3441
            	actionBodyParallel(result);
3442
            	state.followingStackPointer--;
3443

    
3444
            	// ooa.g:516:30: ( T_PRIO actionBodyParallel[result] )?
3445
            	int alt57 = 2;
3446
            	int LA57_0 = input.LA(1);
3447

    
3448
            	if ( (LA57_0 == T_PRIO) )
3449
            	{
3450
            	    alt57 = 1;
3451
            	}
3452
            	switch (alt57) 
3453
            	{
3454
            	    case 1 :
3455
            	        // ooa.g:516:31: T_PRIO actionBodyParallel[result]
3456
            	        {
3457
            	        	Match(input,T_PRIO,FOLLOW_T_PRIO_in_actionBody2153); 
3458
            	        	PushFollow(FOLLOW_actionBodyParallel_in_actionBody2155);
3459
            	        	actionBodyParallel(result);
3460
            	        	state.followingStackPointer--;
3461

    
3462

    
3463
            	        }
3464
            	        break;
3465

    
3466
            	}
3467

    
3468

    
3469
            }
3470

    
3471
        }
3472
        catch (RecognitionException re) 
3473
    	{
3474
            ReportError(re);
3475
            Recover(input,re);
3476
        }
3477
        finally 
3478
    	{
3479
        }
3480
        return result;
3481
    }
3482
    // $ANTLR end "actionBody"
3483

    
3484

    
3485
    // $ANTLR start "actionBodyParallel"
3486
    // ooa.g:519:1: actionBodyParallel[Block top] returns [Block result] : actionBodySequential[result] ( T_NONDET olst= actionBodySequential[result] )* ;
3487
    public Block actionBodyParallel(Block top) // throws RecognitionException [1]
3488
    {   
3489
        Block result = default(Block);
3490

    
3491
        Block olst = default(Block);
3492

    
3493

    
3494
        try 
3495
    	{
3496
            // ooa.g:521:2: ( actionBodySequential[result] ( T_NONDET olst= actionBodySequential[result] )* )
3497
            // ooa.g:521:4: actionBodySequential[result] ( T_NONDET olst= actionBodySequential[result] )*
3498
            {
3499
            	result = createNondetBlock(top);
3500
            	PushFollow(FOLLOW_actionBodySequential_in_actionBodyParallel2183);
3501
            	actionBodySequential(result);
3502
            	state.followingStackPointer--;
3503

    
3504
            	// ooa.g:523:3: ( T_NONDET olst= actionBodySequential[result] )*
3505
            	do 
3506
            	{
3507
            	    int alt58 = 2;
3508
            	    int LA58_0 = input.LA(1);
3509

    
3510
            	    if ( (LA58_0 == T_NONDET) )
3511
            	    {
3512
            	        alt58 = 1;
3513
            	    }
3514

    
3515

    
3516
            	    switch (alt58) 
3517
            		{
3518
            			case 1 :
3519
            			    // ooa.g:523:4: T_NONDET olst= actionBodySequential[result]
3520
            			    {
3521
            			    	Match(input,T_NONDET,FOLLOW_T_NONDET_in_actionBodyParallel2189); 
3522
            			    	PushFollow(FOLLOW_actionBodySequential_in_actionBodyParallel2193);
3523
            			    	olst = actionBodySequential(result);
3524
            			    	state.followingStackPointer--;
3525

    
3526

    
3527
            			    }
3528
            			    break;
3529

    
3530
            			default:
3531
            			    goto loop58;
3532
            	    }
3533
            	} while (true);
3534

    
3535
            	loop58:
3536
            		;	// Stops C# compiler whining that label 'loop58' has no statements
3537

    
3538

    
3539
            }
3540

    
3541
        }
3542
        catch (RecognitionException re) 
3543
    	{
3544
            ReportError(re);
3545
            Recover(input,re);
3546
        }
3547
        finally 
3548
    	{
3549
        }
3550
        return result;
3551
    }
3552
    // $ANTLR end "actionBodyParallel"
3553

    
3554

    
3555
    // $ANTLR start "actionBodySequential"
3556
    // ooa.g:527:1: actionBodySequential[Block top] returns [Block result] : actionBodyParen[result] ( T_SEMICOLON actionBodyParen[result] )* ;
3557
    public Block actionBodySequential(Block top) // throws RecognitionException [1]
3558
    {   
3559
        Block result = default(Block);
3560

    
3561
        try 
3562
    	{
3563
            // ooa.g:529:2: ( actionBodyParen[result] ( T_SEMICOLON actionBodyParen[result] )* )
3564
            // ooa.g:529:4: actionBodyParen[result] ( T_SEMICOLON actionBodyParen[result] )*
3565
            {
3566
            	result = createSeqBlock(top);
3567
            	PushFollow(FOLLOW_actionBodyParen_in_actionBodySequential2220);
3568
            	actionBodyParen(result);
3569
            	state.followingStackPointer--;
3570

    
3571
            	// ooa.g:530:27: ( T_SEMICOLON actionBodyParen[result] )*
3572
            	do 
3573
            	{
3574
            	    int alt59 = 2;
3575
            	    int LA59_0 = input.LA(1);
3576

    
3577
            	    if ( (LA59_0 == T_SEMICOLON) )
3578
            	    {
3579
            	        alt59 = 1;
3580
            	    }
3581

    
3582

    
3583
            	    switch (alt59) 
3584
            		{
3585
            			case 1 :
3586
            			    // ooa.g:530:28: T_SEMICOLON actionBodyParen[result]
3587
            			    {
3588
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_actionBodySequential2224); 
3589
            			    	PushFollow(FOLLOW_actionBodyParen_in_actionBodySequential2226);
3590
            			    	actionBodyParen(result);
3591
            			    	state.followingStackPointer--;
3592

    
3593

    
3594
            			    }
3595
            			    break;
3596

    
3597
            			default:
3598
            			    goto loop59;
3599
            	    }
3600
            	} while (true);
3601

    
3602
            	loop59:
3603
            		;	// Stops C# compiler whining that label 'loop59' has no statements
3604

    
3605

    
3606
            }
3607

    
3608
        }
3609
        catch (RecognitionException re) 
3610
    	{
3611
            ReportError(re);
3612
            Recover(input,re);
3613
        }
3614
        finally 
3615
    	{
3616
        }
3617
        return result;
3618
    }
3619
    // $ANTLR end "actionBodySequential"
3620

    
3621

    
3622
    // $ANTLR start "actionBodyParen"
3623
    // ooa.g:533:1: actionBodyParen[Block top] : ( T_LPAREN actionBody[top] T_RPAREN | stmt= statement );
3624
    public void actionBodyParen(Block top) // throws RecognitionException [1]
3625
    {   
3626
        Statement stmt = default(Statement);
3627

    
3628

    
3629
        try 
3630
    	{
3631
            // ooa.g:534:2: ( T_LPAREN actionBody[top] T_RPAREN | stmt= statement )
3632
            int alt60 = 2;
3633
            int LA60_0 = input.LA(1);
3634

    
3635
            if ( (LA60_0 == T_LPAREN) )
3636
            {
3637
                alt60 = 1;
3638
            }
3639
            else if ( (LA60_0 == T_IDENTIFIER || LA60_0 == T_REQUIRES || (LA60_0 >= T_SKIP && LA60_0 <= T_SELF)) )
3640
            {
3641
                alt60 = 2;
3642
            }
3643
            else 
3644
            {
3645
                NoViableAltException nvae_d60s0 =
3646
                    new NoViableAltException("", 60, 0, input);
3647

    
3648
                throw nvae_d60s0;
3649
            }
3650
            switch (alt60) 
3651
            {
3652
                case 1 :
3653
                    // ooa.g:534:4: T_LPAREN actionBody[top] T_RPAREN
3654
                    {
3655
                    	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_actionBodyParen2244); 
3656
                    	PushFollow(FOLLOW_actionBody_in_actionBodyParen2246);
3657
                    	actionBody(top);
3658
                    	state.followingStackPointer--;
3659

    
3660
                    	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_actionBodyParen2249); 
3661

    
3662
                    }
3663
                    break;
3664
                case 2 :
3665
                    // ooa.g:535:4: stmt= statement
3666
                    {
3667
                    	PushFollow(FOLLOW_statement_in_actionBodyParen2256);
3668
                    	stmt = statement();
3669
                    	state.followingStackPointer--;
3670

    
3671
                    	addToStatementList(top,stmt);
3672

    
3673
                    }
3674
                    break;
3675

    
3676
            }
3677
        }
3678
        catch (RecognitionException re) 
3679
    	{
3680
            ReportError(re);
3681
            Recover(input,re);
3682
        }
3683
        finally 
3684
    	{
3685
        }
3686
        return ;
3687
    }
3688
    // $ANTLR end "actionBodyParen"
3689

    
3690

    
3691
    // $ANTLR start "statement"
3692
    // ooa.g:540:1: statement returns [Statement result] : ( T_ABORT | T_SKIP | T_KILL T_LPAREN aname= ( T_IDENTIFIER | T_SELF ) T_RPAREN | gc= discreteActionBody | aqname= reference ( T_ASSIGNMENT aexp= expression ( T_WITH ndexp= expression )? | ( T_COMMA malhs= reference )+ T_ASSIGNMENT mexp= expression ( T_COMMA mexp2= expression )+ ( T_WITH ndex2= expression )? | ) );
3693
    public Statement statement() // throws RecognitionException [1]
3694
    {   
3695
        Statement result = default(Statement);
3696

    
3697
        IToken aname = null;
3698
        GuardedCommand gc = default(GuardedCommand);
3699

    
3700
        Expression aqname = default(Expression);
3701

    
3702
        Expression aexp = default(Expression);
3703

    
3704
        Expression ndexp = default(Expression);
3705

    
3706
        Expression malhs = default(Expression);
3707

    
3708
        Expression mexp = default(Expression);
3709

    
3710
        Expression mexp2 = default(Expression);
3711

    
3712
        Expression ndex2 = default(Expression);
3713

    
3714

    
3715

    
3716
        		bool popFromResolveStack = false;
3717
        		result = null;
3718
        	
3719
        try 
3720
    	{
3721
            // ooa.g:546:2: ( T_ABORT | T_SKIP | T_KILL T_LPAREN aname= ( T_IDENTIFIER | T_SELF ) T_RPAREN | gc= discreteActionBody | aqname= reference ( T_ASSIGNMENT aexp= expression ( T_WITH ndexp= expression )? | ( T_COMMA malhs= reference )+ T_ASSIGNMENT mexp= expression ( T_COMMA mexp2= expression )+ ( T_WITH ndex2= expression )? | ) )
3722
            int alt66 = 5;
3723
            switch ( input.LA(1) ) 
3724
            {
3725
            case T_ABORT:
3726
            	{
3727
                alt66 = 1;
3728
                }
3729
                break;
3730
            case T_SKIP:
3731
            	{
3732
                alt66 = 2;
3733
                }
3734
                break;
3735
            case T_KILL:
3736
            	{
3737
                alt66 = 3;
3738
                }
3739
                break;
3740
            case T_REQUIRES:
3741
            	{
3742
                alt66 = 4;
3743
                }
3744
                break;
3745
            case T_IDENTIFIER:
3746
            case T_SELF:
3747
            	{
3748
                alt66 = 5;
3749
                }
3750
                break;
3751
            	default:
3752
            	    NoViableAltException nvae_d66s0 =
3753
            	        new NoViableAltException("", 66, 0, input);
3754

    
3755
            	    throw nvae_d66s0;
3756
            }
3757

    
3758
            switch (alt66) 
3759
            {
3760
                case 1 :
3761
                    // ooa.g:546:4: T_ABORT
3762
                    {
3763
                    	Match(input,T_ABORT,FOLLOW_T_ABORT_in_statement2284); 
3764
                    	result = createAbortStatement();
3765

    
3766
                    }
3767
                    break;
3768
                case 2 :
3769
                    // ooa.g:547:4: T_SKIP
3770
                    {
3771
                    	Match(input,T_SKIP,FOLLOW_T_SKIP_in_statement2291); 
3772
                    	result = createSkipStatement();
3773

    
3774
                    }
3775
                    break;
3776
                case 3 :
3777
                    // ooa.g:548:4: T_KILL T_LPAREN aname= ( T_IDENTIFIER | T_SELF ) T_RPAREN
3778
                    {
3779
                    	Match(input,T_KILL,FOLLOW_T_KILL_in_statement2298); 
3780
                    	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_statement2300); 
3781
                    	aname = (IToken)input.LT(1);
3782
                    	if ( input.LA(1) == T_IDENTIFIER || input.LA(1) == T_SELF ) 
3783
                    	{
3784
                    	    input.Consume();
3785
                    	    state.errorRecovery = false;
3786
                    	}
3787
                    	else 
3788
                    	{
3789
                    	    MismatchedSetException mse = new MismatchedSetException(null,input);
3790
                    	    throw mse;
3791
                    	}
3792

    
3793
                    	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_statement2312); 
3794
                    	result = createKillStatement(aname);
3795

    
3796
                    }
3797
                    break;
3798
                case 4 :
3799
                    // ooa.g:549:5: gc= discreteActionBody
3800
                    {
3801
                    	PushFollow(FOLLOW_discreteActionBody_in_statement2322);
3802
                    	gc = discreteActionBody();
3803
                    	state.followingStackPointer--;
3804

    
3805
                    	result = gc;
3806

    
3807
                    }
3808
                    break;
3809
                case 5 :
3810
                    // ooa.g:550:4: aqname= reference ( T_ASSIGNMENT aexp= expression ( T_WITH ndexp= expression )? | ( T_COMMA malhs= reference )+ T_ASSIGNMENT mexp= expression ( T_COMMA mexp2= expression )+ ( T_WITH ndex2= expression )? | )
3811
                    {
3812
                    	PushFollow(FOLLOW_reference_in_statement2331);
3813
                    	aqname = reference();
3814
                    	state.followingStackPointer--;
3815

    
3816
                    	// ooa.g:551:7: ( T_ASSIGNMENT aexp= expression ( T_WITH ndexp= expression )? | ( T_COMMA malhs= reference )+ T_ASSIGNMENT mexp= expression ( T_COMMA mexp2= expression )+ ( T_WITH ndex2= expression )? | )
3817
                    	int alt65 = 3;
3818
                    	switch ( input.LA(1) ) 
3819
                    	{
3820
                    	case T_ASSIGNMENT:
3821
                    		{
3822
                    	    alt65 = 1;
3823
                    	    }
3824
                    	    break;
3825
                    	case T_COMMA:
3826
                    		{
3827
                    	    alt65 = 2;
3828
                    	    }
3829
                    	    break;
3830
                    	case T_SEMICOLON:
3831
                    	case T_PRIO:
3832
                    	case T_NONDET:
3833
                    	case T_RPAREN:
3834
                    	case T_END:
3835
                    		{
3836
                    	    alt65 = 3;
3837
                    	    }
3838
                    	    break;
3839
                    		default:
3840
                    		    NoViableAltException nvae_d65s0 =
3841
                    		        new NoViableAltException("", 65, 0, input);
3842

    
3843
                    		    throw nvae_d65s0;
3844
                    	}
3845

    
3846
                    	switch (alt65) 
3847
                    	{
3848
                    	    case 1 :
3849
                    	        // ooa.g:552:12: T_ASSIGNMENT aexp= expression ( T_WITH ndexp= expression )?
3850
                    	        {
3851
                    	        	Match(input,T_ASSIGNMENT,FOLLOW_T_ASSIGNMENT_in_statement2359); 
3852
                    	        	PushFollow(FOLLOW_expression_in_statement2364);
3853
                    	        	aexp = expression();
3854
                    	        	state.followingStackPointer--;
3855

    
3856
                    	        	result = createSingleAssignmentStatement(aqname,aexp);
3857
                    	        	// ooa.g:553:15: ( T_WITH ndexp= expression )?
3858
                    	        	int alt61 = 2;
3859
                    	        	int LA61_0 = input.LA(1);
3860

    
3861
                    	        	if ( (LA61_0 == T_WITH) )
3862
                    	        	{
3863
                    	        	    alt61 = 1;
3864
                    	        	}
3865
                    	        	switch (alt61) 
3866
                    	        	{
3867
                    	        	    case 1 :
3868
                    	        	        // ooa.g:553:16: T_WITH ndexp= expression
3869
                    	        	        {
3870
                    	        	        	Match(input,T_WITH,FOLLOW_T_WITH_in_statement2384); 
3871
                    	        	        	PushFollow(FOLLOW_expression_in_statement2388);
3872
                    	        	        	ndexp = expression();
3873
                    	        	        	state.followingStackPointer--;
3874

    
3875
                    	        	        	addConstraintToAssignment(result,ndexp);
3876

    
3877
                    	        	        }
3878
                    	        	        break;
3879

    
3880
                    	        	}
3881

    
3882

    
3883
                    	        }
3884
                    	        break;
3885
                    	    case 2 :
3886
                    	        // ooa.g:556:8: ( T_COMMA malhs= reference )+ T_ASSIGNMENT mexp= expression ( T_COMMA mexp2= expression )+ ( T_WITH ndex2= expression )?
3887
                    	        {
3888
                    	        	result = createMultipleAssignmentStatementLHS(aqname);
3889
                    	        	// ooa.g:557:7: ( T_COMMA malhs= reference )+
3890
                    	        	int cnt62 = 0;
3891
                    	        	do 
3892
                    	        	{
3893
                    	        	    int alt62 = 2;
3894
                    	        	    int LA62_0 = input.LA(1);
3895

    
3896
                    	        	    if ( (LA62_0 == T_COMMA) )
3897
                    	        	    {
3898
                    	        	        alt62 = 1;
3899
                    	        	    }
3900

    
3901

    
3902
                    	        	    switch (alt62) 
3903
                    	        		{
3904
                    	        			case 1 :
3905
                    	        			    // ooa.g:557:8: T_COMMA malhs= reference
3906
                    	        			    {
3907
                    	        			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_statement2441); 
3908
                    	        			    	PushFollow(FOLLOW_reference_in_statement2445);
3909
                    	        			    	malhs = reference();
3910
                    	        			    	state.followingStackPointer--;
3911

    
3912
                    	        			    	addMultipleAssignmentStatementLHS(result,malhs);
3913

    
3914
                    	        			    }
3915
                    	        			    break;
3916

    
3917
                    	        			default:
3918
                    	        			    if ( cnt62 >= 1 ) goto loop62;
3919
                    	        		            EarlyExitException eee62 =
3920
                    	        		                new EarlyExitException(62, input);
3921
                    	        		            throw eee62;
3922
                    	        	    }
3923
                    	        	    cnt62++;
3924
                    	        	} while (true);
3925

    
3926
                    	        	loop62:
3927
                    	        		;	// Stops C# compiler whining that label 'loop62' has no statements
3928

    
3929
                    	        	Match(input,T_ASSIGNMENT,FOLLOW_T_ASSIGNMENT_in_statement2460); 
3930
                    	        	pushAssignmentOnResolveStack(result); popFromResolveStack = true;
3931
                    	        	PushFollow(FOLLOW_expression_in_statement2482);
3932
                    	        	mexp = expression();
3933
                    	        	state.followingStackPointer--;
3934

    
3935
                    	        	addMutlipleAssignmentStatementRHS(result,mexp);
3936
                    	        	// ooa.g:562:8: ( T_COMMA mexp2= expression )+
3937
                    	        	int cnt63 = 0;
3938
                    	        	do 
3939
                    	        	{
3940
                    	        	    int alt63 = 2;
3941
                    	        	    int LA63_0 = input.LA(1);
3942

    
3943
                    	        	    if ( (LA63_0 == T_COMMA) )
3944
                    	        	    {
3945
                    	        	        alt63 = 1;
3946
                    	        	    }
3947

    
3948

    
3949
                    	        	    switch (alt63) 
3950
                    	        		{
3951
                    	        			case 1 :
3952
                    	        			    // ooa.g:562:9: T_COMMA mexp2= expression
3953
                    	        			    {
3954
                    	        			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_statement2501); 
3955
                    	        			    	PushFollow(FOLLOW_expression_in_statement2505);
3956
                    	        			    	mexp2 = expression();
3957
                    	        			    	state.followingStackPointer--;
3958

    
3959
                    	        			    	addMutlipleAssignmentStatementRHS(result,mexp2);
3960

    
3961
                    	        			    }
3962
                    	        			    break;
3963

    
3964
                    	        			default:
3965
                    	        			    if ( cnt63 >= 1 ) goto loop63;
3966
                    	        		            EarlyExitException eee63 =
3967
                    	        		                new EarlyExitException(63, input);
3968
                    	        		            throw eee63;
3969
                    	        	    }
3970
                    	        	    cnt63++;
3971
                    	        	} while (true);
3972

    
3973
                    	        	loop63:
3974
                    	        		;	// Stops C# compiler whining that label 'loop63' has no statements
3975

    
3976
                    	        	// ooa.g:563:8: ( T_WITH ndex2= expression )?
3977
                    	        	int alt64 = 2;
3978
                    	        	int LA64_0 = input.LA(1);
3979

    
3980
                    	        	if ( (LA64_0 == T_WITH) )
3981
                    	        	{
3982
                    	        	    alt64 = 1;
3983
                    	        	}
3984
                    	        	switch (alt64) 
3985
                    	        	{
3986
                    	        	    case 1 :
3987
                    	        	        // ooa.g:563:9: T_WITH ndex2= expression
3988
                    	        	        {
3989
                    	        	        	Match(input,T_WITH,FOLLOW_T_WITH_in_statement2519); 
3990
                    	        	        	PushFollow(FOLLOW_expression_in_statement2523);
3991
                    	        	        	ndex2 = expression();
3992
                    	        	        	state.followingStackPointer--;
3993

    
3994
                    	        	        	addConstraintToAssignment(result,ndex2);
3995

    
3996
                    	        	        }
3997
                    	        	        break;
3998

    
3999
                    	        	}
4000

    
4001

    
4002
                    	        }
4003
                    	        break;
4004
                    	    case 3 :
4005
                    	        // ooa.g:566:7: 
4006
                    	        {
4007
                    	        	result = createCallStatement(aqname);
4008

    
4009
                    	        }
4010
                    	        break;
4011

    
4012
                    	}
4013

    
4014

    
4015
                    }
4016
                    break;
4017

    
4018
            }
4019
        }
4020
        catch (RecognitionException re) 
4021
    	{
4022
            ReportError(re);
4023
            Recover(input,re);
4024
        }
4025
        finally 
4026
    	{
4027

    
4028
            	       if (popFromResolveStack == true)
4029
            	            popAssignmentOffResolveStack(result);
4030
            	
4031
        }
4032
        return result;
4033
    }
4034
    // $ANTLR end "statement"
4035

    
4036

    
4037
    // $ANTLR start "expression"
4038
    // ooa.g:577:1: expression returns [Expression expr] : left= atomExpression (op= binoperator right= atomExpression )* ;
4039
    public Expression expression() // throws RecognitionException [1]
4040
    {   
4041
        Expression expr = default(Expression);
4042

    
4043
        Expression left = default(Expression);
4044

    
4045
        BinaryOperator op = default(BinaryOperator);
4046

    
4047
        Expression right = default(Expression);
4048

    
4049

    
4050

    
4051
        		System.Collections.Generic.List<BinaryOperator> operators = new System.Collections.Generic.List<BinaryOperator>();
4052
        		System.Collections.Generic.List<Expression> expressions = new System.Collections.Generic.List<Expression>();		
4053
        	
4054
        try 
4055
    	{
4056
            // ooa.g:583:2: (left= atomExpression (op= binoperator right= atomExpression )* )
4057
            // ooa.g:583:4: left= atomExpression (op= binoperator right= atomExpression )*
4058
            {
4059
            	PushFollow(FOLLOW_atomExpression_in_expression2598);
4060
            	left = atomExpression();
4061
            	state.followingStackPointer--;
4062

    
4063
            	expressions.Add(left);
4064
            	// ooa.g:585:3: (op= binoperator right= atomExpression )*
4065
            	do 
4066
            	{
4067
            	    int alt67 = 2;
4068
            	    alt67 = dfa67.Predict(input);
4069
            	    switch (alt67) 
4070
            		{
4071
            			case 1 :
4072
            			    // ooa.g:585:5: op= binoperator right= atomExpression
4073
            			    {
4074
            			    	PushFollow(FOLLOW_binoperator_in_expression2611);
4075
            			    	op = binoperator();
4076
            			    	state.followingStackPointer--;
4077

    
4078
            			    	PushFollow(FOLLOW_atomExpression_in_expression2619);
4079
            			    	right = atomExpression();
4080
            			    	state.followingStackPointer--;
4081

    
4082

    
4083
            			    			  	operators.Add(op);
4084
            			    			  	expressions.Add(right);
4085
            			    			  
4086

    
4087
            			    }
4088
            			    break;
4089

    
4090
            			default:
4091
            			    goto loop67;
4092
            	    }
4093
            	} while (true);
4094

    
4095
            	loop67:
4096
            		;	// Stops C# compiler whining that label 'loop67' has no statements
4097

    
4098
            	expr = createPrecedenceTree(expressions,operators);
4099

    
4100
            }
4101

    
4102
        }
4103
        catch (RecognitionException re) 
4104
    	{
4105
            ReportError(re);
4106
            Recover(input,re);
4107
        }
4108
        finally 
4109
    	{
4110
        }
4111
        return expr;
4112
    }
4113
    // $ANTLR end "expression"
4114

    
4115

    
4116
    // $ANTLR start "binoperator"
4117
    // ooa.g:596:1: binoperator returns [BinaryOperator binop] : ( T_BIIMPLIES | T_GREATER | T_GREATEREQUAL | T_LESS | T_LESSEQUAL | T_EQUAL | T_NOTEQUAL | T_IMPLIES | T_MINUS | T_SUM | T_IN ( T_SET )? | T_NOT T_IN ( T_SET )? | T_SUBSET | T_OR | T_DIV | T_PROD | T_IDIV | T_MOD | T_UNION | T_DIFF | T_INTER | T_AND | T_POW | T_CONC | T_DOMRESBY | T_DOMRESTO | T_RNGRESBY | T_RNGRESTO | T_MUNION | T_SEQMOD_MAPOVERRIDE );
4118
    public BinaryOperator binoperator() // throws RecognitionException [1]
4119
    {   
4120
        BinaryOperator binop = default(BinaryOperator);
4121

    
4122
        try 
4123
    	{
4124
            // ooa.g:598:2: ( T_BIIMPLIES | T_GREATER | T_GREATEREQUAL | T_LESS | T_LESSEQUAL | T_EQUAL | T_NOTEQUAL | T_IMPLIES | T_MINUS | T_SUM | T_IN ( T_SET )? | T_NOT T_IN ( T_SET )? | T_SUBSET | T_OR | T_DIV | T_PROD | T_IDIV | T_MOD | T_UNION | T_DIFF | T_INTER | T_AND | T_POW | T_CONC | T_DOMRESBY | T_DOMRESTO | T_RNGRESBY | T_RNGRESTO | T_MUNION | T_SEQMOD_MAPOVERRIDE )
4125
            int alt70 = 30;
4126
            alt70 = dfa70.Predict(input);
4127
            switch (alt70) 
4128
            {
4129
                case 1 :
4130
                    // ooa.g:598:4: T_BIIMPLIES
4131
                    {
4132
                    	Match(input,T_BIIMPLIES,FOLLOW_T_BIIMPLIES_in_binoperator2652); 
4133
                    	binop = createBinaryOperator(ExpressionKind.biimplies);
4134

    
4135
                    }
4136
                    break;
4137
                case 2 :
4138
                    // ooa.g:600:4: T_GREATER
4139
                    {
4140
                    	Match(input,T_GREATER,FOLLOW_T_GREATER_in_binoperator2661); 
4141
                    	binop = createBinaryOperator(ExpressionKind.greater);
4142

    
4143
                    }
4144
                    break;
4145
                case 3 :
4146
                    // ooa.g:602:4: T_GREATEREQUAL
4147
                    {
4148
                    	Match(input,T_GREATEREQUAL,FOLLOW_T_GREATEREQUAL_in_binoperator2671); 
4149
                    	binop = createBinaryOperator(ExpressionKind.greaterequal);
4150

    
4151
                    }
4152
                    break;
4153
                case 4 :
4154
                    // ooa.g:604:4: T_LESS
4155
                    {
4156
                    	Match(input,T_LESS,FOLLOW_T_LESS_in_binoperator2680); 
4157
                    	binop = createBinaryOperator(ExpressionKind.less);
4158

    
4159
                    }
4160
                    break;
4161
                case 5 :
4162
                    // ooa.g:606:4: T_LESSEQUAL
4163
                    {
4164
                    	Match(input,T_LESSEQUAL,FOLLOW_T_LESSEQUAL_in_binoperator2690); 
4165
                    	binop = createBinaryOperator(ExpressionKind.lessequal);
4166

    
4167
                    }
4168
                    break;
4169
                case 6 :
4170
                    // ooa.g:608:4: T_EQUAL
4171
                    {
4172
                    	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_binoperator2699); 
4173
                    	binop = createBinaryOperator(ExpressionKind.equal);
4174

    
4175
                    }
4176
                    break;
4177
                case 7 :
4178
                    // ooa.g:610:4: T_NOTEQUAL
4179
                    {
4180
                    	Match(input,T_NOTEQUAL,FOLLOW_T_NOTEQUAL_in_binoperator2711); 
4181
                    	binop = createBinaryOperator(ExpressionKind.notequal);
4182

    
4183
                    }
4184
                    break;
4185
                case 8 :
4186
                    // ooa.g:612:4: T_IMPLIES
4187
                    {
4188
                    	Match(input,T_IMPLIES,FOLLOW_T_IMPLIES_in_binoperator2722); 
4189
                    	binop = createBinaryOperator(ExpressionKind.implies);
4190

    
4191
                    }
4192
                    break;
4193
                case 9 :
4194
                    // ooa.g:614:4: T_MINUS
4195
                    {
4196
                    	Match(input,T_MINUS,FOLLOW_T_MINUS_in_binoperator2731); 
4197
                    	binop = createBinaryOperator(ExpressionKind.minus);
4198

    
4199
                    }
4200
                    break;
4201
                case 10 :
4202
                    // ooa.g:616:4: T_SUM
4203
                    {
4204
                    	Match(input,T_SUM,FOLLOW_T_SUM_in_binoperator2741); 
4205
                    	binop = createBinaryOperator(ExpressionKind.sum);
4206

    
4207
                    }
4208
                    break;
4209
                case 11 :
4210
                    // ooa.g:618:4: T_IN ( T_SET )?
4211
                    {
4212
                    	Match(input,T_IN,FOLLOW_T_IN_in_binoperator2751); 
4213
                    	// ooa.g:618:9: ( T_SET )?
4214
                    	int alt68 = 2;
4215
                    	alt68 = dfa68.Predict(input);
4216
                    	switch (alt68) 
4217
                    	{
4218
                    	    case 1 :
4219
                    	        // ooa.g:618:9: T_SET
4220
                    	        {
4221
                    	        	Match(input,T_SET,FOLLOW_T_SET_in_binoperator2753); 
4222

    
4223
                    	        }
4224
                    	        break;
4225

    
4226
                    	}
4227

    
4228
                    	binop = createBinaryOperator(ExpressionKind.elemin);
4229

    
4230
                    }
4231
                    break;
4232
                case 12 :
4233
                    // ooa.g:620:4: T_NOT T_IN ( T_SET )?
4234
                    {
4235
                    	Match(input,T_NOT,FOLLOW_T_NOT_in_binoperator2764); 
4236
                    	Match(input,T_IN,FOLLOW_T_IN_in_binoperator2766); 
4237
                    	// ooa.g:620:15: ( T_SET )?
4238
                    	int alt69 = 2;
4239
                    	alt69 = dfa69.Predict(input);
4240
                    	switch (alt69) 
4241
                    	{
4242
                    	    case 1 :
4243
                    	        // ooa.g:620:15: T_SET
4244
                    	        {
4245
                    	        	Match(input,T_SET,FOLLOW_T_SET_in_binoperator2768); 
4246

    
4247
                    	        }
4248
                    	        break;
4249

    
4250
                    	}
4251

    
4252
                    	binop = createBinaryOperator(ExpressionKind.notelemin);
4253

    
4254
                    }
4255
                    break;
4256
                case 13 :
4257
                    // ooa.g:622:4: T_SUBSET
4258
                    {
4259
                    	Match(input,T_SUBSET,FOLLOW_T_SUBSET_in_binoperator2779); 
4260
                    	binop = createBinaryOperator(ExpressionKind.subset);
4261

    
4262
                    }
4263
                    break;
4264
                case 14 :
4265
                    // ooa.g:624:4: T_OR
4266
                    {
4267
                    	Match(input,T_OR,FOLLOW_T_OR_in_binoperator2789); 
4268
                    	binop = createBinaryOperator(ExpressionKind.or);
4269

    
4270
                    }
4271
                    break;
4272
                case 15 :
4273
                    // ooa.g:626:4: T_DIV
4274
                    {
4275
                    	Match(input,T_DIV,FOLLOW_T_DIV_in_binoperator2798); 
4276
                    	binop = createBinaryOperator(ExpressionKind.div);
4277

    
4278
                    }
4279
                    break;
4280
                case 16 :
4281
                    // ooa.g:628:4: T_PROD
4282
                    {
4283
                    	Match(input,T_PROD,FOLLOW_T_PROD_in_binoperator2807); 
4284
                    	binop = createBinaryOperator(ExpressionKind.prod);
4285

    
4286
                    }
4287
                    break;
4288
                case 17 :
4289
                    // ooa.g:630:4: T_IDIV
4290
                    {
4291
                    	Match(input,T_IDIV,FOLLOW_T_IDIV_in_binoperator2817); 
4292
                    	binop = createBinaryOperator(ExpressionKind.idiv);
4293

    
4294
                    }
4295
                    break;
4296
                case 18 :
4297
                    // ooa.g:632:4: T_MOD
4298
                    {
4299
                    	Match(input,T_MOD,FOLLOW_T_MOD_in_binoperator2827); 
4300
                    	binop = createBinaryOperator(ExpressionKind.mod);
4301

    
4302
                    }
4303
                    break;
4304
                case 19 :
4305
                    // ooa.g:634:4: T_UNION
4306
                    {
4307
                    	Match(input,T_UNION,FOLLOW_T_UNION_in_binoperator2837); 
4308
                    	binop = createBinaryOperator(ExpressionKind.union);
4309

    
4310
                    }
4311
                    break;
4312
                case 20 :
4313
                    // ooa.g:636:4: T_DIFF
4314
                    {
4315
                    	Match(input,T_DIFF,FOLLOW_T_DIFF_in_binoperator2848); 
4316
                    	binop = createBinaryOperator(ExpressionKind.diff);
4317

    
4318
                    }
4319
                    break;
4320
                case 21 :
4321
                    // ooa.g:638:4: T_INTER
4322
                    {
4323
                    	Match(input,T_INTER,FOLLOW_T_INTER_in_binoperator2859); 
4324
                    	binop = createBinaryOperator(ExpressionKind.inter);
4325

    
4326
                    }
4327
                    break;
4328
                case 22 :
4329
                    // ooa.g:640:4: T_AND
4330
                    {
4331
                    	Match(input,T_AND,FOLLOW_T_AND_in_binoperator2870); 
4332
                    	binop = createBinaryOperator(ExpressionKind.and);
4333

    
4334
                    }
4335
                    break;
4336
                case 23 :
4337
                    // ooa.g:642:4: T_POW
4338
                    {
4339
                    	Match(input,T_POW,FOLLOW_T_POW_in_binoperator2885); 
4340
                    	binop = createBinaryOperator(ExpressionKind.pow);
4341

    
4342
                    }
4343
                    break;
4344
                case 24 :
4345
                    // ooa.g:644:4: T_CONC
4346
                    {
4347
                    	Match(input,T_CONC,FOLLOW_T_CONC_in_binoperator2900); 
4348
                    	binop = createBinaryOperator(ExpressionKind.conc);
4349

    
4350
                    }
4351
                    break;
4352
                case 25 :
4353
                    // ooa.g:646:4: T_DOMRESBY
4354
                    {
4355
                    	Match(input,T_DOMRESBY,FOLLOW_T_DOMRESBY_in_binoperator2913); 
4356
                    	binop = createBinaryOperator(ExpressionKind.domresby);
4357

    
4358
                    }
4359
                    break;
4360
                case 26 :
4361
                    // ooa.g:648:4: T_DOMRESTO
4362
                    {
4363
                    	Match(input,T_DOMRESTO,FOLLOW_T_DOMRESTO_in_binoperator2923); 
4364
                    	binop = createBinaryOperator(ExpressionKind.domresto);
4365

    
4366
                    }
4367
                    break;
4368
                case 27 :
4369
                    // ooa.g:650:4: T_RNGRESBY
4370
                    {
4371
                    	Match(input,T_RNGRESBY,FOLLOW_T_RNGRESBY_in_binoperator2933); 
4372
                    	binop = createBinaryOperator(ExpressionKind.rngresby);
4373

    
4374
                    }
4375
                    break;
4376
                case 28 :
4377
                    // ooa.g:652:4: T_RNGRESTO
4378
                    {
4379
                    	Match(input,T_RNGRESTO,FOLLOW_T_RNGRESTO_in_binoperator2943); 
4380
                    	binop = createBinaryOperator(ExpressionKind.rngresto);
4381

    
4382
                    }
4383
                    break;
4384
                case 29 :
4385
                    // ooa.g:654:4: T_MUNION
4386
                    {
4387
                    	Match(input,T_MUNION,FOLLOW_T_MUNION_in_binoperator2953); 
4388
                    	binop = createBinaryOperator(ExpressionKind.munion);
4389

    
4390
                    }
4391
                    break;
4392
                case 30 :
4393
                    // ooa.g:656:4: T_SEQMOD_MAPOVERRIDE
4394
                    {
4395
                    	Match(input,T_SEQMOD_MAPOVERRIDE,FOLLOW_T_SEQMOD_MAPOVERRIDE_in_binoperator2963); 
4396
                    	binop = createBinaryOperator(ExpressionKind.seqmod_mapoverride);
4397

    
4398
                    }
4399
                    break;
4400

    
4401
            }
4402
        }
4403
        catch (RecognitionException re) 
4404
    	{
4405
            ReportError(re);
4406
            Recover(input,re);
4407
        }
4408
        finally 
4409
    	{
4410
        }
4411
        return binop;
4412
    }
4413
    // $ANTLR end "binoperator"
4414

    
4415

    
4416
    // $ANTLR start "atomExpression"
4417
    // ooa.g:662:1: atomExpression returns [Expression expr] : ( ( (unexpr= op_un )? (e= identifierExpression | e= qvalExpression | e= constant | e= initializedComplexType | e= quantifierExpression | T_LPAREN e= expression T_RPAREN ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[e] )? | e= accessExpression[e] )? ) ( 'as' cid= T_IDENTIFIER )? ) | ie= T_IF ce= expression T_THEN te= expression T_ELSE ee= expression T_END );
4418
    public Expression atomExpression() // throws RecognitionException [1]
4419
    {   
4420
        Expression expr = default(Expression);
4421

    
4422
        IToken idn = null;
4423
        IToken cid = null;
4424
        IToken ie = null;
4425
        UnaryOperator unexpr = default(UnaryOperator);
4426

    
4427
        Expression e = default(Expression);
4428

    
4429
        Expression res = default(Expression);
4430

    
4431
        Expression ce = default(Expression);
4432

    
4433
        Expression te = default(Expression);
4434

    
4435
        Expression ee = default(Expression);
4436

    
4437

    
4438

    
4439
        		expr = null;
4440
        	
4441
        try 
4442
    	{
4443
            // ooa.g:667:2: ( ( (unexpr= op_un )? (e= identifierExpression | e= qvalExpression | e= constant | e= initializedComplexType | e= quantifierExpression | T_LPAREN e= expression T_RPAREN ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[e] )? | e= accessExpression[e] )? ) ( 'as' cid= T_IDENTIFIER )? ) | ie= T_IF ce= expression T_THEN te= expression T_ELSE ee= expression T_END )
4444
            int alt77 = 2;
4445
            alt77 = dfa77.Predict(input);
4446
            switch (alt77) 
4447
            {
4448
                case 1 :
4449
                    // ooa.g:667:4: ( (unexpr= op_un )? (e= identifierExpression | e= qvalExpression | e= constant | e= initializedComplexType | e= quantifierExpression | T_LPAREN e= expression T_RPAREN ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[e] )? | e= accessExpression[e] )? ) ( 'as' cid= T_IDENTIFIER )? )
4450
                    {
4451
                    	// ooa.g:667:4: ( (unexpr= op_un )? (e= identifierExpression | e= qvalExpression | e= constant | e= initializedComplexType | e= quantifierExpression | T_LPAREN e= expression T_RPAREN ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[e] )? | e= accessExpression[e] )? ) ( 'as' cid= T_IDENTIFIER )? )
4452
                    	// ooa.g:667:5: (unexpr= op_un )? (e= identifierExpression | e= qvalExpression | e= constant | e= initializedComplexType | e= quantifierExpression | T_LPAREN e= expression T_RPAREN ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[e] )? | e= accessExpression[e] )? ) ( 'as' cid= T_IDENTIFIER )?
4453
                    	{
4454
                    		// ooa.g:667:11: (unexpr= op_un )?
4455
                    		int alt71 = 2;
4456
                    		alt71 = dfa71.Predict(input);
4457
                    		switch (alt71) 
4458
                    		{
4459
                    		    case 1 :
4460
                    		        // ooa.g:667:11: unexpr= op_un
4461
                    		        {
4462
                    		        	PushFollow(FOLLOW_op_un_in_atomExpression3001);
4463
                    		        	unexpr = op_un();
4464
                    		        	state.followingStackPointer--;
4465

    
4466

    
4467
                    		        }
4468
                    		        break;
4469

    
4470
                    		}
4471

    
4472
                    		// ooa.g:667:19: (e= identifierExpression | e= qvalExpression | e= constant | e= initializedComplexType | e= quantifierExpression | T_LPAREN e= expression T_RPAREN ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[e] )? | e= accessExpression[e] )? )
4473
                    		int alt75 = 6;
4474
                    		alt75 = dfa75.Predict(input);
4475
                    		switch (alt75) 
4476
                    		{
4477
                    		    case 1 :
4478
                    		        // ooa.g:668:8: e= identifierExpression
4479
                    		        {
4480
                    		        	PushFollow(FOLLOW_identifierExpression_in_atomExpression3018);
4481
                    		        	e = identifierExpression();
4482
                    		        	state.followingStackPointer--;
4483

    
4484

    
4485
                    		        }
4486
                    		        break;
4487
                    		    case 2 :
4488
                    		        // ooa.g:669:8: e= qvalExpression
4489
                    		        {
4490
                    		        	PushFollow(FOLLOW_qvalExpression_in_atomExpression3029);
4491
                    		        	e = qvalExpression();
4492
                    		        	state.followingStackPointer--;
4493

    
4494

    
4495
                    		        }
4496
                    		        break;
4497
                    		    case 3 :
4498
                    		        // ooa.g:670:8: e= constant
4499
                    		        {
4500
                    		        	PushFollow(FOLLOW_constant_in_atomExpression3040);
4501
                    		        	e = constant();
4502
                    		        	state.followingStackPointer--;
4503

    
4504

    
4505
                    		        }
4506
                    		        break;
4507
                    		    case 4 :
4508
                    		        // ooa.g:671:8: e= initializedComplexType
4509
                    		        {
4510
                    		        	PushFollow(FOLLOW_initializedComplexType_in_atomExpression3051);
4511
                    		        	e = initializedComplexType();
4512
                    		        	state.followingStackPointer--;
4513

    
4514

    
4515
                    		        }
4516
                    		        break;
4517
                    		    case 5 :
4518
                    		        // ooa.g:672:8: e= quantifierExpression
4519
                    		        {
4520
                    		        	PushFollow(FOLLOW_quantifierExpression_in_atomExpression3063);
4521
                    		        	e = quantifierExpression();
4522
                    		        	state.followingStackPointer--;
4523

    
4524

    
4525
                    		        }
4526
                    		        break;
4527
                    		    case 6 :
4528
                    		        // ooa.g:673:8: T_LPAREN e= expression T_RPAREN ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[e] )? | e= accessExpression[e] )?
4529
                    		        {
4530
                    		        	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_atomExpression3072); 
4531
                    		        	PushFollow(FOLLOW_expression_in_atomExpression3076);
4532
                    		        	e = expression();
4533
                    		        	state.followingStackPointer--;
4534

    
4535
                    		        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_atomExpression3078); 
4536
                    		        	// ooa.g:674:8: ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[e] )? | e= accessExpression[e] )?
4537
                    		        	int alt74 = 3;
4538
                    		        	alt74 = dfa74.Predict(input);
4539
                    		        	switch (alt74) 
4540
                    		        	{
4541
                    		        	    case 1 :
4542
                    		        	        // ooa.g:675:6: ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[e] )?
4543
                    		        	        {
4544
                    		        	        	// ooa.g:675:6: ( T_POINT idn= T_IDENTIFIER )+
4545
                    		        	        	int cnt72 = 0;
4546
                    		        	        	do 
4547
                    		        	        	{
4548
                    		        	        	    int alt72 = 2;
4549
                    		        	        	    alt72 = dfa72.Predict(input);
4550
                    		        	        	    switch (alt72) 
4551
                    		        	        		{
4552
                    		        	        			case 1 :
4553
                    		        	        			    // ooa.g:675:7: T_POINT idn= T_IDENTIFIER
4554
                    		        	        			    {
4555
                    		        	        			    	Match(input,T_POINT,FOLLOW_T_POINT_in_atomExpression3101); 
4556
                    		        	        			    	idn=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_atomExpression3113); 
4557
                    		        	        			    	e = addIdentifierAccessExpression(e,idn);
4558

    
4559
                    		        	        			    }
4560
                    		        	        			    break;
4561

    
4562
                    		        	        			default:
4563
                    		        	        			    if ( cnt72 >= 1 ) goto loop72;
4564
                    		        	        		            EarlyExitException eee72 =
4565
                    		        	        		                new EarlyExitException(72, input);
4566
                    		        	        		            throw eee72;
4567
                    		        	        	    }
4568
                    		        	        	    cnt72++;
4569
                    		        	        	} while (true);
4570

    
4571
                    		        	        	loop72:
4572
                    		        	        		;	// Stops C# compiler whining that label 'loop72' has no statements
4573

    
4574
                    		        	        	// ooa.g:678:8: (res= accessExpression[e] )?
4575
                    		        	        	int alt73 = 2;
4576
                    		        	        	alt73 = dfa73.Predict(input);
4577
                    		        	        	switch (alt73) 
4578
                    		        	        	{
4579
                    		        	        	    case 1 :
4580
                    		        	        	        // ooa.g:678:9: res= accessExpression[e]
4581
                    		        	        	        {
4582
                    		        	        	        	PushFollow(FOLLOW_accessExpression_in_atomExpression3137);
4583
                    		        	        	        	res = accessExpression(e);
4584
                    		        	        	        	state.followingStackPointer--;
4585

    
4586
                    		        	        	        	e=res;
4587

    
4588
                    		        	        	        }
4589
                    		        	        	        break;
4590

    
4591
                    		        	        	}
4592

    
4593

    
4594
                    		        	        }
4595
                    		        	        break;
4596
                    		        	    case 2 :
4597
                    		        	        // ooa.g:680:6: e= accessExpression[e]
4598
                    		        	        {
4599
                    		        	        	PushFollow(FOLLOW_accessExpression_in_atomExpression3157);
4600
                    		        	        	e = accessExpression(e);
4601
                    		        	        	state.followingStackPointer--;
4602

    
4603

    
4604
                    		        	        }
4605
                    		        	        break;
4606

    
4607
                    		        	}
4608

    
4609

    
4610
                    		        }
4611
                    		        break;
4612

    
4613
                    		}
4614

    
4615
                    		// ooa.g:682:5: ( 'as' cid= T_IDENTIFIER )?
4616
                    		int alt76 = 2;
4617
                    		alt76 = dfa76.Predict(input);
4618
                    		switch (alt76) 
4619
                    		{
4620
                    		    case 1 :
4621
                    		        // ooa.g:682:6: 'as' cid= T_IDENTIFIER
4622
                    		        {
4623
                    		        	Match(input,121,FOLLOW_121_in_atomExpression3176); 
4624
                    		        	cid=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_atomExpression3180); 
4625
                    		        	e=addCastExpression(e,cid);
4626

    
4627
                    		        }
4628
                    		        break;
4629

    
4630
                    		}
4631

    
4632
                    		expr = addUnaryExpression(unexpr,e);
4633

    
4634
                    	}
4635

    
4636

    
4637
                    }
4638
                    break;
4639
                case 2 :
4640
                    // ooa.g:685:6: ie= T_IF ce= expression T_THEN te= expression T_ELSE ee= expression T_END
4641
                    {
4642
                    	ie=(IToken)Match(input,T_IF,FOLLOW_T_IF_in_atomExpression3201); 
4643
                    	PushFollow(FOLLOW_expression_in_atomExpression3205);
4644
                    	ce = expression();
4645
                    	state.followingStackPointer--;
4646

    
4647
                    	Match(input,T_THEN,FOLLOW_T_THEN_in_atomExpression3207); 
4648
                    	PushFollow(FOLLOW_expression_in_atomExpression3211);
4649
                    	te = expression();
4650
                    	state.followingStackPointer--;
4651

    
4652
                    	Match(input,T_ELSE,FOLLOW_T_ELSE_in_atomExpression3213); 
4653
                    	PushFollow(FOLLOW_expression_in_atomExpression3217);
4654
                    	ee = expression();
4655
                    	state.followingStackPointer--;
4656

    
4657
                    	Match(input,T_END,FOLLOW_T_END_in_atomExpression3219); 
4658
                    	expr = createConditionalExpression(ce,te,ee,ie);
4659

    
4660
                    }
4661
                    break;
4662

    
4663
            }
4664
        }
4665
        catch (RecognitionException re) 
4666
    	{
4667
            ReportError(re);
4668
            Recover(input,re);
4669
        }
4670
        finally 
4671
    	{
4672
        }
4673
        return expr;
4674
    }
4675
    // $ANTLR end "atomExpression"
4676

    
4677

    
4678
    // $ANTLR start "quantifierExpression"
4679
    // ooa.g:690:1: quantifierExpression returns [Quantifier result] : t= ( T_FORALL | T_EXISTS ) (id= T_IDENTIFIER ( T_COLON id_type= simpleType ) ( T_COMMA id2= T_IDENTIFIER ( T_COLON id_type2= simpleType ) )* ) T_COLON T_LPAREN e= expression T_RPAREN ;
4680
    public Quantifier quantifierExpression() // throws RecognitionException [1]
4681
    {   
4682
        Quantifier result = default(Quantifier);
4683

    
4684
        IToken t = null;
4685
        IToken id = null;
4686
        IToken id2 = null;
4687
        UlyssesType id_type = default(UlyssesType);
4688

    
4689
        UlyssesType id_type2 = default(UlyssesType);
4690

    
4691
        Expression e = default(Expression);
4692

    
4693

    
4694

    
4695
        		result = null;
4696
        	
4697
        try 
4698
    	{
4699
            // ooa.g:695:2: (t= ( T_FORALL | T_EXISTS ) (id= T_IDENTIFIER ( T_COLON id_type= simpleType ) ( T_COMMA id2= T_IDENTIFIER ( T_COLON id_type2= simpleType ) )* ) T_COLON T_LPAREN e= expression T_RPAREN )
4700
            // ooa.g:695:5: t= ( T_FORALL | T_EXISTS ) (id= T_IDENTIFIER ( T_COLON id_type= simpleType ) ( T_COMMA id2= T_IDENTIFIER ( T_COLON id_type2= simpleType ) )* ) T_COLON T_LPAREN e= expression T_RPAREN
4701
            {
4702
            	t = (IToken)input.LT(1);
4703
            	if ( (input.LA(1) >= T_FORALL && input.LA(1) <= T_EXISTS) ) 
4704
            	{
4705
            	    input.Consume();
4706
            	    state.errorRecovery = false;
4707
            	}
4708
            	else 
4709
            	{
4710
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
4711
            	    throw mse;
4712
            	}
4713

    
4714
            	result = createQuantifierExpression(t);
4715
            	// ooa.g:697:3: (id= T_IDENTIFIER ( T_COLON id_type= simpleType ) ( T_COMMA id2= T_IDENTIFIER ( T_COLON id_type2= simpleType ) )* )
4716
            	// ooa.g:697:4: id= T_IDENTIFIER ( T_COLON id_type= simpleType ) ( T_COMMA id2= T_IDENTIFIER ( T_COLON id_type2= simpleType ) )*
4717
            	{
4718
            		id=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_quantifierExpression3268); 
4719
            		// ooa.g:697:20: ( T_COLON id_type= simpleType )
4720
            		// ooa.g:697:21: T_COLON id_type= simpleType
4721
            		{
4722
            			Match(input,T_COLON,FOLLOW_T_COLON_in_quantifierExpression3271); 
4723
            			PushFollow(FOLLOW_simpleType_in_quantifierExpression3275);
4724
            			id_type = simpleType();
4725
            			state.followingStackPointer--;
4726

    
4727
            			addBoundVarToQuantifierExpression(result,id,id_type);
4728

    
4729
            		}
4730

    
4731
            		// ooa.g:698:5: ( T_COMMA id2= T_IDENTIFIER ( T_COLON id_type2= simpleType ) )*
4732
            		do 
4733
            		{
4734
            		    int alt78 = 2;
4735
            		    int LA78_0 = input.LA(1);
4736

    
4737
            		    if ( (LA78_0 == T_COMMA) )
4738
            		    {
4739
            		        alt78 = 1;
4740
            		    }
4741

    
4742

    
4743
            		    switch (alt78) 
4744
            			{
4745
            				case 1 :
4746
            				    // ooa.g:698:6: T_COMMA id2= T_IDENTIFIER ( T_COLON id_type2= simpleType )
4747
            				    {
4748
            				    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_quantifierExpression3286); 
4749
            				    	id2=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_quantifierExpression3290); 
4750
            				    	// ooa.g:698:31: ( T_COLON id_type2= simpleType )
4751
            				    	// ooa.g:698:32: T_COLON id_type2= simpleType
4752
            				    	{
4753
            				    		Match(input,T_COLON,FOLLOW_T_COLON_in_quantifierExpression3293); 
4754
            				    		PushFollow(FOLLOW_simpleType_in_quantifierExpression3297);
4755
            				    		id_type2 = simpleType();
4756
            				    		state.followingStackPointer--;
4757

    
4758

    
4759
            				    	}
4760

    
4761
            				    	addBoundVarToQuantifierExpression(result,id2,id_type2);
4762

    
4763
            				    }
4764
            				    break;
4765

    
4766
            				default:
4767
            				    goto loop78;
4768
            		    }
4769
            		} while (true);
4770

    
4771
            		loop78:
4772
            			;	// Stops C# compiler whining that label 'loop78' has no statements
4773

    
4774

    
4775
            	}
4776

    
4777
            	Match(input,T_COLON,FOLLOW_T_COLON_in_quantifierExpression3307); 
4778
            	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_quantifierExpression3309); 
4779
            	PushFollow(FOLLOW_expression_in_quantifierExpression3313);
4780
            	e = expression();
4781
            	state.followingStackPointer--;
4782

    
4783
            	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_quantifierExpression3315); 
4784
            	addExpressionToQuantifier(result,e);
4785

    
4786
            }
4787

    
4788
        }
4789
        catch (RecognitionException re) 
4790
    	{
4791
            ReportError(re);
4792
            Recover(input,re);
4793
        }
4794
        finally 
4795
    	{
4796
            removeBoundVarsFromResolveStack(result);
4797
        }
4798
        return result;
4799
    }
4800
    // $ANTLR end "quantifierExpression"
4801

    
4802

    
4803
    // $ANTLR start "constant"
4804
    // ooa.g:705:1: constant returns [LeafExpression result] : ( T_TRUE | T_FALSE | T_NIL | T_SELF | t_fl= T_FLOATNUMBER | t_in= T_INTNUMBER | t_l= T_STRINGLITERAL );
4805
    public LeafExpression constant() // throws RecognitionException [1]
4806
    {   
4807
        LeafExpression result = default(LeafExpression);
4808

    
4809
        IToken t_fl = null;
4810
        IToken t_in = null;
4811
        IToken t_l = null;
4812

    
4813

    
4814
        		result = null;
4815
        	
4816
        try 
4817
    	{
4818
            // ooa.g:710:2: ( T_TRUE | T_FALSE | T_NIL | T_SELF | t_fl= T_FLOATNUMBER | t_in= T_INTNUMBER | t_l= T_STRINGLITERAL )
4819
            int alt79 = 7;
4820
            switch ( input.LA(1) ) 
4821
            {
4822
            case T_TRUE:
4823
            	{
4824
                alt79 = 1;
4825
                }
4826
                break;
4827
            case T_FALSE:
4828
            	{
4829
                alt79 = 2;
4830
                }
4831
                break;
4832
            case T_NIL:
4833
            	{
4834
                alt79 = 3;
4835
                }
4836
                break;
4837
            case T_SELF:
4838
            	{
4839
                alt79 = 4;
4840
                }
4841
                break;
4842
            case T_FLOATNUMBER:
4843
            	{
4844
                alt79 = 5;
4845
                }
4846
                break;
4847
            case T_INTNUMBER:
4848
            	{
4849
                alt79 = 6;
4850
                }
4851
                break;
4852
            case T_STRINGLITERAL:
4853
            	{
4854
                alt79 = 7;
4855
                }
4856
                break;
4857
            	default:
4858
            	    NoViableAltException nvae_d79s0 =
4859
            	        new NoViableAltException("", 79, 0, input);
4860

    
4861
            	    throw nvae_d79s0;
4862
            }
4863

    
4864
            switch (alt79) 
4865
            {
4866
                case 1 :
4867
                    // ooa.g:710:5: T_TRUE
4868
                    {
4869
                    	Match(input,T_TRUE,FOLLOW_T_TRUE_in_constant3349); 
4870
                    	result = createBoolConstant(true);
4871

    
4872
                    }
4873
                    break;
4874
                case 2 :
4875
                    // ooa.g:711:4: T_FALSE
4876
                    {
4877
                    	Match(input,T_FALSE,FOLLOW_T_FALSE_in_constant3357); 
4878
                    	result = createBoolConstant(false);
4879

    
4880
                    }
4881
                    break;
4882
                case 3 :
4883
                    // ooa.g:712:4: T_NIL
4884
                    {
4885
                    	Match(input,T_NIL,FOLLOW_T_NIL_in_constant3364); 
4886
                    	result = createNullPointerConstant();
4887

    
4888
                    }
4889
                    break;
4890
                case 4 :
4891
                    // ooa.g:713:4: T_SELF
4892
                    {
4893
                    	Match(input,T_SELF,FOLLOW_T_SELF_in_constant3372); 
4894
                    	result = createSelfPointer();
4895

    
4896
                    }
4897
                    break;
4898
                case 5 :
4899
                    // ooa.g:714:5: t_fl= T_FLOATNUMBER
4900
                    {
4901
                    	t_fl=(IToken)Match(input,T_FLOATNUMBER,FOLLOW_T_FLOATNUMBER_in_constant3383); 
4902
                    	result = createFloatConstant(t_fl);
4903

    
4904
                    }
4905
                    break;
4906
                case 6 :
4907
                    // ooa.g:715:4: t_in= T_INTNUMBER
4908
                    {
4909
                    	t_in=(IToken)Match(input,T_INTNUMBER,FOLLOW_T_INTNUMBER_in_constant3392); 
4910
                    	result = createIntConstant(t_in);
4911

    
4912
                    }
4913
                    break;
4914
                case 7 :
4915
                    // ooa.g:716:4: t_l= T_STRINGLITERAL
4916
                    {
4917
                    	t_l=(IToken)Match(input,T_STRINGLITERAL,FOLLOW_T_STRINGLITERAL_in_constant3401); 
4918
                    	result = createStringConstant(t_l);
4919

    
4920
                    }
4921
                    break;
4922

    
4923
            }
4924
        }
4925
        catch (RecognitionException re) 
4926
    	{
4927
            ReportError(re);
4928
            Recover(input,re);
4929
        }
4930
        finally 
4931
    	{
4932
        }
4933
        return result;
4934
    }
4935
    // $ANTLR end "constant"
4936

    
4937

    
4938
    // $ANTLR start "initializedComplexType"
4939
    // ooa.g:719:1: initializedComplexType returns [Expression result] : (res= initializedListType | res= initializedSetType | T_NEW T_LPAREN anid= T_IDENTIFIER ( T_COMMA aname= T_STRINGLITERAL T_RPAREN | T_RPAREN ) );
4940
    public Expression initializedComplexType() // throws RecognitionException [1]
4941
    {   
4942
        Expression result = default(Expression);
4943

    
4944
        IToken anid = null;
4945
        IToken aname = null;
4946
        Expression res = default(Expression);
4947

    
4948

    
4949

    
4950
        		result = null;
4951
        	
4952
        try 
4953
    	{
4954
            // ooa.g:724:2: (res= initializedListType | res= initializedSetType | T_NEW T_LPAREN anid= T_IDENTIFIER ( T_COMMA aname= T_STRINGLITERAL T_RPAREN | T_RPAREN ) )
4955
            int alt81 = 3;
4956
            switch ( input.LA(1) ) 
4957
            {
4958
            case T_LSQPAREN:
4959
            	{
4960
                alt81 = 1;
4961
                }
4962
                break;
4963
            case T_CBRL:
4964
            	{
4965
                alt81 = 2;
4966
                }
4967
                break;
4968
            case T_NEW:
4969
            	{
4970
                alt81 = 3;
4971
                }
4972
                break;
4973
            	default:
4974
            	    NoViableAltException nvae_d81s0 =
4975
            	        new NoViableAltException("", 81, 0, input);
4976

    
4977
            	    throw nvae_d81s0;
4978
            }
4979

    
4980
            switch (alt81) 
4981
            {
4982
                case 1 :
4983
                    // ooa.g:724:4: res= initializedListType
4984
                    {
4985
                    	PushFollow(FOLLOW_initializedListType_in_initializedComplexType3428);
4986
                    	res = initializedListType();
4987
                    	state.followingStackPointer--;
4988

    
4989
                    	result = res;
4990

    
4991
                    }
4992
                    break;
4993
                case 2 :
4994
                    // ooa.g:725:4: res= initializedSetType
4995
                    {
4996
                    	PushFollow(FOLLOW_initializedSetType_in_initializedComplexType3437);
4997
                    	res = initializedSetType();
4998
                    	state.followingStackPointer--;
4999

    
5000
                    	result = res;
5001

    
5002
                    }
5003
                    break;
5004
                case 3 :
5005
                    // ooa.g:726:5: T_NEW T_LPAREN anid= T_IDENTIFIER ( T_COMMA aname= T_STRINGLITERAL T_RPAREN | T_RPAREN )
5006
                    {
5007
                    	Match(input,T_NEW,FOLLOW_T_NEW_in_initializedComplexType3445); 
5008
                    	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_initializedComplexType3447); 
5009
                    	anid=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_initializedComplexType3451); 
5010
                    	// ooa.g:727:4: ( T_COMMA aname= T_STRINGLITERAL T_RPAREN | T_RPAREN )
5011
                    	int alt80 = 2;
5012
                    	int LA80_0 = input.LA(1);
5013

    
5014
                    	if ( (LA80_0 == T_COMMA) )
5015
                    	{
5016
                    	    alt80 = 1;
5017
                    	}
5018
                    	else if ( (LA80_0 == T_RPAREN) )
5019
                    	{
5020
                    	    alt80 = 2;
5021
                    	}
5022
                    	else 
5023
                    	{
5024
                    	    NoViableAltException nvae_d80s0 =
5025
                    	        new NoViableAltException("", 80, 0, input);
5026

    
5027
                    	    throw nvae_d80s0;
5028
                    	}
5029
                    	switch (alt80) 
5030
                    	{
5031
                    	    case 1 :
5032
                    	        // ooa.g:728:5: T_COMMA aname= T_STRINGLITERAL T_RPAREN
5033
                    	        {
5034
                    	        	Match(input,T_COMMA,FOLLOW_T_COMMA_in_initializedComplexType3463); 
5035
                    	        	aname=(IToken)Match(input,T_STRINGLITERAL,FOLLOW_T_STRINGLITERAL_in_initializedComplexType3468); 
5036
                    	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_initializedComplexType3470); 
5037
                    	        	result = createNamedObject(anid, aname);
5038

    
5039
                    	        }
5040
                    	        break;
5041
                    	    case 2 :
5042
                    	        // ooa.g:729:6: T_RPAREN
5043
                    	        {
5044
                    	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_initializedComplexType3479); 
5045
                    	        	result = createObject(anid);
5046

    
5047
                    	        }
5048
                    	        break;
5049

    
5050
                    	}
5051

    
5052

    
5053
                    }
5054
                    break;
5055

    
5056
            }
5057
        }
5058
        catch (RecognitionException re) 
5059
    	{
5060
            ReportError(re);
5061
            Recover(input,re);
5062
        }
5063
        finally 
5064
    	{
5065
        }
5066
        return result;
5067
    }
5068
    // $ANTLR end "initializedComplexType"
5069

    
5070

    
5071
    // $ANTLR start "initializedListType"
5072
    // ooa.g:733:1: initializedListType returns [ListConstructor result] : T_LSQPAREN e= expression ( ( T_COMMA e2= expression )+ | listComprehension[result] )? T_RSQPAREN ;
5073
    public ListConstructor initializedListType() // throws RecognitionException [1]
5074
    {   
5075
        ListConstructor result = default(ListConstructor);
5076

    
5077
        Expression e = default(Expression);
5078

    
5079
        Expression e2 = default(Expression);
5080

    
5081

    
5082

    
5083
        		result = createInitializedList();
5084
        		pushListVarsOnResolveStack(result); // need this here for list comprehension
5085
        	
5086
        try 
5087
    	{
5088
            // ooa.g:739:2: ( T_LSQPAREN e= expression ( ( T_COMMA e2= expression )+ | listComprehension[result] )? T_RSQPAREN )
5089
            // ooa.g:739:4: T_LSQPAREN e= expression ( ( T_COMMA e2= expression )+ | listComprehension[result] )? T_RSQPAREN
5090
            {
5091
            	Match(input,T_LSQPAREN,FOLLOW_T_LSQPAREN_in_initializedListType3510); 
5092
            	PushFollow(FOLLOW_expression_in_initializedListType3514);
5093
            	e = expression();
5094
            	state.followingStackPointer--;
5095

    
5096
            	addListElement(result,e);
5097
            	// ooa.g:739:56: ( ( T_COMMA e2= expression )+ | listComprehension[result] )?
5098
            	int alt83 = 3;
5099
            	int LA83_0 = input.LA(1);
5100

    
5101
            	if ( (LA83_0 == T_COMMA) )
5102
            	{
5103
            	    alt83 = 1;
5104
            	}
5105
            	else if ( (LA83_0 == T_BAR) )
5106
            	{
5107
            	    alt83 = 2;
5108
            	}
5109
            	switch (alt83) 
5110
            	{
5111
            	    case 1 :
5112
            	        // ooa.g:740:4: ( T_COMMA e2= expression )+
5113
            	        {
5114
            	        	// ooa.g:740:4: ( T_COMMA e2= expression )+
5115
            	        	int cnt82 = 0;
5116
            	        	do 
5117
            	        	{
5118
            	        	    int alt82 = 2;
5119
            	        	    int LA82_0 = input.LA(1);
5120

    
5121
            	        	    if ( (LA82_0 == T_COMMA) )
5122
            	        	    {
5123
            	        	        alt82 = 1;
5124
            	        	    }
5125

    
5126

    
5127
            	        	    switch (alt82) 
5128
            	        		{
5129
            	        			case 1 :
5130
            	        			    // ooa.g:740:5: T_COMMA e2= expression
5131
            	        			    {
5132
            	        			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_initializedListType3525); 
5133
            	        			    	PushFollow(FOLLOW_expression_in_initializedListType3529);
5134
            	        			    	e2 = expression();
5135
            	        			    	state.followingStackPointer--;
5136

    
5137
            	        			    	addListElement(result,e2);
5138

    
5139
            	        			    }
5140
            	        			    break;
5141

    
5142
            	        			default:
5143
            	        			    if ( cnt82 >= 1 ) goto loop82;
5144
            	        		            EarlyExitException eee82 =
5145
            	        		                new EarlyExitException(82, input);
5146
            	        		            throw eee82;
5147
            	        	    }
5148
            	        	    cnt82++;
5149
            	        	} while (true);
5150

    
5151
            	        	loop82:
5152
            	        		;	// Stops C# compiler whining that label 'loop82' has no statements
5153

    
5154

    
5155
            	        }
5156
            	        break;
5157
            	    case 2 :
5158
            	        // ooa.g:741:6: listComprehension[result]
5159
            	        {
5160
            	        	PushFollow(FOLLOW_listComprehension_in_initializedListType3541);
5161
            	        	listComprehension(result);
5162
            	        	state.followingStackPointer--;
5163

    
5164

    
5165
            	        }
5166
            	        break;
5167

    
5168
            	}
5169

    
5170
            	Match(input,T_RSQPAREN,FOLLOW_T_RSQPAREN_in_initializedListType3549); 
5171

    
5172
            }
5173

    
5174
        }
5175
        catch (RecognitionException re) 
5176
    	{
5177
            ReportError(re);
5178
            Recover(input,re);
5179
        }
5180
        finally 
5181
    	{
5182
            popListVarsFromResolveStack(result);
5183
        }
5184
        return result;
5185
    }
5186
    // $ANTLR end "initializedListType"
5187

    
5188

    
5189
    // $ANTLR start "listComprehension"
5190
    // ooa.g:747:1: listComprehension[ListConstructor result] : T_BAR T_VAR id= T_IDENTIFIER T_COLON t1= complexType ( T_SEMICOLON id2= T_IDENTIFIER t2= complexType )* ( '&' e= expression )? ;
5191
    public void listComprehension(ListConstructor result) // throws RecognitionException [1]
5192
    {   
5193
        IToken id = null;
5194
        IToken id2 = null;
5195
        UlyssesType t1 = default(UlyssesType);
5196

    
5197
        UlyssesType t2 = default(UlyssesType);
5198

    
5199
        Expression e = default(Expression);
5200

    
5201

    
5202
        	
5203
        		result.SetHasComprehension(true);
5204
        	
5205
        try 
5206
    	{
5207
            // ooa.g:751:2: ( T_BAR T_VAR id= T_IDENTIFIER T_COLON t1= complexType ( T_SEMICOLON id2= T_IDENTIFIER t2= complexType )* ( '&' e= expression )? )
5208
            // ooa.g:752:3: T_BAR T_VAR id= T_IDENTIFIER T_COLON t1= complexType ( T_SEMICOLON id2= T_IDENTIFIER t2= complexType )* ( '&' e= expression )?
5209
            {
5210
            	Match(input,T_BAR,FOLLOW_T_BAR_in_listComprehension3580); 
5211
            	Match(input,T_VAR,FOLLOW_T_VAR_in_listComprehension3582); 
5212
            	id=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_listComprehension3588); 
5213
            	Match(input,T_COLON,FOLLOW_T_COLON_in_listComprehension3591); 
5214
            	PushFollow(FOLLOW_complexType_in_listComprehension3595);
5215
            	t1 = complexType();
5216
            	state.followingStackPointer--;
5217

    
5218
            	addListComprVar(result,id,t1);
5219
            	// ooa.g:754:4: ( T_SEMICOLON id2= T_IDENTIFIER t2= complexType )*
5220
            	do 
5221
            	{
5222
            	    int alt84 = 2;
5223
            	    int LA84_0 = input.LA(1);
5224

    
5225
            	    if ( (LA84_0 == T_SEMICOLON) )
5226
            	    {
5227
            	        alt84 = 1;
5228
            	    }
5229

    
5230

    
5231
            	    switch (alt84) 
5232
            		{
5233
            			case 1 :
5234
            			    // ooa.g:754:5: T_SEMICOLON id2= T_IDENTIFIER t2= complexType
5235
            			    {
5236
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_listComprehension3604); 
5237
            			    	id2=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_listComprehension3608); 
5238
            			    	PushFollow(FOLLOW_complexType_in_listComprehension3613);
5239
            			    	t2 = complexType();
5240
            			    	state.followingStackPointer--;
5241

    
5242
            			    	addListComprVar(result,id2,t2);
5243

    
5244
            			    }
5245
            			    break;
5246

    
5247
            			default:
5248
            			    goto loop84;
5249
            	    }
5250
            	} while (true);
5251

    
5252
            	loop84:
5253
            		;	// Stops C# compiler whining that label 'loop84' has no statements
5254

    
5255
            	// ooa.g:755:3: ( '&' e= expression )?
5256
            	int alt85 = 2;
5257
            	int LA85_0 = input.LA(1);
5258

    
5259
            	if ( (LA85_0 == 120) )
5260
            	{
5261
            	    alt85 = 1;
5262
            	}
5263
            	switch (alt85) 
5264
            	{
5265
            	    case 1 :
5266
            	        // ooa.g:755:4: '&' e= expression
5267
            	        {
5268
            	        	Match(input,120,FOLLOW_120_in_listComprehension3623); 
5269
            	        	PushFollow(FOLLOW_expression_in_listComprehension3629);
5270
            	        	e = expression();
5271
            	        	state.followingStackPointer--;
5272

    
5273
            	        	addListComprExpr(result,e);
5274

    
5275
            	        }
5276
            	        break;
5277

    
5278
            	}
5279

    
5280

    
5281
            }
5282

    
5283
        }
5284
        catch (RecognitionException re) 
5285
    	{
5286
            ReportError(re);
5287
            Recover(input,re);
5288
        }
5289
        finally 
5290
    	{
5291
        }
5292
        return ;
5293
    }
5294
    // $ANTLR end "listComprehension"
5295

    
5296

    
5297
    // $ANTLR start "initializedSetType"
5298
    // ooa.g:759:1: initializedSetType returns [Expression result] : ( T_CBRL T_MAPS T_CBRR | res= initializedSet );
5299
    public Expression initializedSetType() // throws RecognitionException [1]
5300
    {   
5301
        Expression result = default(Expression);
5302

    
5303
        Expression res = default(Expression);
5304

    
5305

    
5306

    
5307
        		result = null;
5308
        	
5309
        try 
5310
    	{
5311
            // ooa.g:764:2: ( T_CBRL T_MAPS T_CBRR | res= initializedSet )
5312
            int alt86 = 2;
5313
            alt86 = dfa86.Predict(input);
5314
            switch (alt86) 
5315
            {
5316
                case 1 :
5317
                    // ooa.g:764:4: T_CBRL T_MAPS T_CBRR
5318
                    {
5319
                    	Match(input,T_CBRL,FOLLOW_T_CBRL_in_initializedSetType3655); 
5320
                    	Match(input,T_MAPS,FOLLOW_T_MAPS_in_initializedSetType3657); 
5321
                    	Match(input,T_CBRR,FOLLOW_T_CBRR_in_initializedSetType3659); 
5322
                    	result = createEmptyMap();
5323

    
5324
                    }
5325
                    break;
5326
                case 2 :
5327
                    // ooa.g:765:4: res= initializedSet
5328
                    {
5329
                    	PushFollow(FOLLOW_initializedSet_in_initializedSetType3670);
5330
                    	res = initializedSet();
5331
                    	state.followingStackPointer--;
5332

    
5333
                    	result = res;
5334

    
5335
                    }
5336
                    break;
5337

    
5338
            }
5339
        }
5340
        catch (RecognitionException re) 
5341
    	{
5342
            ReportError(re);
5343
            Recover(input,re);
5344
        }
5345
        finally 
5346
    	{
5347
        }
5348
        return result;
5349
    }
5350
    // $ANTLR end "initializedSetType"
5351

    
5352

    
5353
    // $ANTLR start "initializedSet"
5354
    // ooa.g:768:1: initializedSet returns [Expression result] : T_CBRL e1= expression ( ( T_COMMA e2= expression )* | m= map[result, e1] | setComprehension[(SetConstructor)result] ) T_CBRR ;
5355
    public Expression initializedSet() // throws RecognitionException [1]
5356
    {   
5357
        Expression result = default(Expression);
5358

    
5359
        Expression e1 = default(Expression);
5360

    
5361
        Expression e2 = default(Expression);
5362

    
5363
        Expression m = default(Expression);
5364

    
5365

    
5366

    
5367
        		SetConstructor theset = createSet(); 
5368
        		pushSetVarsOnResolveStack(theset); // need this here for set comprehension
5369
        		result = theset;
5370
        	
5371
        try 
5372
    	{
5373
            // ooa.g:775:2: ( T_CBRL e1= expression ( ( T_COMMA e2= expression )* | m= map[result, e1] | setComprehension[(SetConstructor)result] ) T_CBRR )
5374
            // ooa.g:775:4: T_CBRL e1= expression ( ( T_COMMA e2= expression )* | m= map[result, e1] | setComprehension[(SetConstructor)result] ) T_CBRR
5375
            {
5376
            	Match(input,T_CBRL,FOLLOW_T_CBRL_in_initializedSet3696); 
5377
            	PushFollow(FOLLOW_expression_in_initializedSet3700);
5378
            	e1 = expression();
5379
            	state.followingStackPointer--;
5380

    
5381
            	// ooa.g:776:10: ( ( T_COMMA e2= expression )* | m= map[result, e1] | setComprehension[(SetConstructor)result] )
5382
            	int alt88 = 3;
5383
            	switch ( input.LA(1) ) 
5384
            	{
5385
            	case T_COMMA:
5386
            	case T_CBRR:
5387
            		{
5388
            	    alt88 = 1;
5389
            	    }
5390
            	    break;
5391
            	case T_MAPS:
5392
            		{
5393
            	    alt88 = 2;
5394
            	    }
5395
            	    break;
5396
            	case T_BAR:
5397
            		{
5398
            	    alt88 = 3;
5399
            	    }
5400
            	    break;
5401
            		default:
5402
            		    NoViableAltException nvae_d88s0 =
5403
            		        new NoViableAltException("", 88, 0, input);
5404

    
5405
            		    throw nvae_d88s0;
5406
            	}
5407

    
5408
            	switch (alt88) 
5409
            	{
5410
            	    case 1 :
5411
            	        // ooa.g:777:4: ( T_COMMA e2= expression )*
5412
            	        {
5413
            	        	addToSet(result,e1);
5414
            	        	// ooa.g:778:4: ( T_COMMA e2= expression )*
5415
            	        	do 
5416
            	        	{
5417
            	        	    int alt87 = 2;
5418
            	        	    int LA87_0 = input.LA(1);
5419

    
5420
            	        	    if ( (LA87_0 == T_COMMA) )
5421
            	        	    {
5422
            	        	        alt87 = 1;
5423
            	        	    }
5424

    
5425

    
5426
            	        	    switch (alt87) 
5427
            	        		{
5428
            	        			case 1 :
5429
            	        			    // ooa.g:778:5: T_COMMA e2= expression
5430
            	        			    {
5431
            	        			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_initializedSet3730); 
5432
            	        			    	PushFollow(FOLLOW_expression_in_initializedSet3734);
5433
            	        			    	e2 = expression();
5434
            	        			    	state.followingStackPointer--;
5435

    
5436
            	        			    	addToSet(result,e2);
5437

    
5438
            	        			    }
5439
            	        			    break;
5440

    
5441
            	        			default:
5442
            	        			    goto loop87;
5443
            	        	    }
5444
            	        	} while (true);
5445

    
5446
            	        	loop87:
5447
            	        		;	// Stops C# compiler whining that label 'loop87' has no statements
5448

    
5449

    
5450
            	        }
5451
            	        break;
5452
            	    case 2 :
5453
            	        // ooa.g:779:6: m= map[result, e1]
5454
            	        {
5455
            	        	PushFollow(FOLLOW_map_in_initializedSet3752);
5456
            	        	m = map(result, e1);
5457
            	        	state.followingStackPointer--;
5458

    
5459
            	        	result = m;
5460

    
5461
            	        }
5462
            	        break;
5463
            	    case 3 :
5464
            	        // ooa.g:780:5: setComprehension[(SetConstructor)result]
5465
            	        {
5466
            	        	addToSet(result,e1);
5467
            	        	PushFollow(FOLLOW_setComprehension_in_initializedSet3765);
5468
            	        	setComprehension((SetConstructor)result);
5469
            	        	state.followingStackPointer--;
5470

    
5471

    
5472
            	        }
5473
            	        break;
5474

    
5475
            	}
5476

    
5477
            	Match(input,T_CBRR,FOLLOW_T_CBRR_in_initializedSet3775); 
5478

    
5479
            }
5480

    
5481
        }
5482
        catch (RecognitionException re) 
5483
    	{
5484
            ReportError(re);
5485
            Recover(input,re);
5486
        }
5487
        finally 
5488
    	{
5489
            popSetVarsFromResolveStack(theset);
5490
        }
5491
        return result;
5492
    }
5493
    // $ANTLR end "initializedSet"
5494

    
5495

    
5496
    // $ANTLR start "map"
5497
    // ooa.g:787:1: map[Expression _map, Expression e1] returns [Expression result] : am= T_MAPS e2= expression ( T_COMMA e3= expression T_MAPS e4= expression )* ;
5498
    public Expression map(Expression _map, Expression e1) // throws RecognitionException [1]
5499
    {   
5500
        Expression result = default(Expression);
5501

    
5502
        IToken am = null;
5503
        Expression e2 = default(Expression);
5504

    
5505
        Expression e3 = default(Expression);
5506

    
5507
        Expression e4 = default(Expression);
5508

    
5509

    
5510

    
5511
        		result = null;
5512
        	
5513
        try 
5514
    	{
5515
            // ooa.g:792:2: (am= T_MAPS e2= expression ( T_COMMA e3= expression T_MAPS e4= expression )* )
5516
            // ooa.g:792:4: am= T_MAPS e2= expression ( T_COMMA e3= expression T_MAPS e4= expression )*
5517
            {
5518
            	am=(IToken)Match(input,T_MAPS,FOLLOW_T_MAPS_in_map3813); 
5519
            	PushFollow(FOLLOW_expression_in_map3817);
5520
            	e2 = expression();
5521
            	state.followingStackPointer--;
5522

    
5523
            	result = createMap(e1,e2,am);
5524
            	// ooa.g:792:63: ( T_COMMA e3= expression T_MAPS e4= expression )*
5525
            	do 
5526
            	{
5527
            	    int alt89 = 2;
5528
            	    int LA89_0 = input.LA(1);
5529

    
5530
            	    if ( (LA89_0 == T_COMMA) )
5531
            	    {
5532
            	        alt89 = 1;
5533
            	    }
5534

    
5535

    
5536
            	    switch (alt89) 
5537
            		{
5538
            			case 1 :
5539
            			    // ooa.g:792:64: T_COMMA e3= expression T_MAPS e4= expression
5540
            			    {
5541
            			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_map3825); 
5542
            			    	PushFollow(FOLLOW_expression_in_map3829);
5543
            			    	e3 = expression();
5544
            			    	state.followingStackPointer--;
5545

    
5546
            			    	Match(input,T_MAPS,FOLLOW_T_MAPS_in_map3831); 
5547
            			    	PushFollow(FOLLOW_expression_in_map3835);
5548
            			    	e4 = expression();
5549
            			    	state.followingStackPointer--;
5550

    
5551
            			    	addToMap(result,e3,e4);
5552

    
5553
            			    }
5554
            			    break;
5555

    
5556
            			default:
5557
            			    goto loop89;
5558
            	    }
5559
            	} while (true);
5560

    
5561
            	loop89:
5562
            		;	// Stops C# compiler whining that label 'loop89' has no statements
5563

    
5564

    
5565
            }
5566

    
5567
        }
5568
        catch (RecognitionException re) 
5569
    	{
5570
            ReportError(re);
5571
            Recover(input,re);
5572
        }
5573
        finally 
5574
    	{
5575
        }
5576
        return result;
5577
    }
5578
    // $ANTLR end "map"
5579

    
5580

    
5581
    // $ANTLR start "setComprehension"
5582
    // ooa.g:795:1: setComprehension[SetConstructor _set] : T_BAR T_VAR (id1= T_IDENTIFIER T_COLON t1= complexType T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType )* ( '&' epx= expression )? ;
5583
    public void setComprehension(SetConstructor _set) // throws RecognitionException [1]
5584
    {   
5585
        IToken id1 = null;
5586
        IToken id2 = null;
5587
        UlyssesType t1 = default(UlyssesType);
5588

    
5589
        UlyssesType t2 = default(UlyssesType);
5590

    
5591
        Expression epx = default(Expression);
5592

    
5593

    
5594

    
5595
        		_set.SetHasComprehension(true);
5596
        	
5597
        try 
5598
    	{
5599
            // ooa.g:799:2: ( T_BAR T_VAR (id1= T_IDENTIFIER T_COLON t1= complexType T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType )* ( '&' epx= expression )? )
5600
            // ooa.g:799:4: T_BAR T_VAR (id1= T_IDENTIFIER T_COLON t1= complexType T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType )* ( '&' epx= expression )?
5601
            {
5602
            	Match(input,T_BAR,FOLLOW_T_BAR_in_setComprehension3857); 
5603
            	Match(input,T_VAR,FOLLOW_T_VAR_in_setComprehension3859); 
5604
            	// ooa.g:799:16: (id1= T_IDENTIFIER T_COLON t1= complexType T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType )*
5605
            	do 
5606
            	{
5607
            	    int alt90 = 2;
5608
            	    int LA90_0 = input.LA(1);
5609

    
5610
            	    if ( (LA90_0 == T_IDENTIFIER) )
5611
            	    {
5612
            	        alt90 = 1;
5613
            	    }
5614

    
5615

    
5616
            	    switch (alt90) 
5617
            		{
5618
            			case 1 :
5619
            			    // ooa.g:799:17: id1= T_IDENTIFIER T_COLON t1= complexType T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType
5620
            			    {
5621
            			    	id1=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_setComprehension3864); 
5622
            			    	Match(input,T_COLON,FOLLOW_T_COLON_in_setComprehension3867); 
5623
            			    	PushFollow(FOLLOW_complexType_in_setComprehension3871);
5624
            			    	t1 = complexType();
5625
            			    	state.followingStackPointer--;
5626

    
5627
            			    	 addSetComprVar(_set, id1, t1); 
5628
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_setComprehension3880); 
5629
            			    	id2=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_setComprehension3884); 
5630
            			    	Match(input,T_COLON,FOLLOW_T_COLON_in_setComprehension3886); 
5631
            			    	PushFollow(FOLLOW_complexType_in_setComprehension3890);
5632
            			    	t2 = complexType();
5633
            			    	state.followingStackPointer--;
5634

    
5635
            			    	 addSetComprVar(_set, id2, t2); 
5636

    
5637
            			    }
5638
            			    break;
5639

    
5640
            			default:
5641
            			    goto loop90;
5642
            	    }
5643
            	} while (true);
5644

    
5645
            	loop90:
5646
            		;	// Stops C# compiler whining that label 'loop90' has no statements
5647

    
5648
            	// ooa.g:803:3: ( '&' epx= expression )?
5649
            	int alt91 = 2;
5650
            	int LA91_0 = input.LA(1);
5651

    
5652
            	if ( (LA91_0 == 120) )
5653
            	{
5654
            	    alt91 = 1;
5655
            	}
5656
            	switch (alt91) 
5657
            	{
5658
            	    case 1 :
5659
            	        // ooa.g:803:4: '&' epx= expression
5660
            	        {
5661
            	        	Match(input,120,FOLLOW_120_in_setComprehension3904); 
5662
            	        	PushFollow(FOLLOW_expression_in_setComprehension3910);
5663
            	        	epx = expression();
5664
            	        	state.followingStackPointer--;
5665

    
5666
            	        	 addSetComprExpr(_set,epx); 
5667

    
5668
            	        }
5669
            	        break;
5670

    
5671
            	}
5672

    
5673

    
5674
            }
5675

    
5676
        }
5677
        catch (RecognitionException re) 
5678
    	{
5679
            ReportError(re);
5680
            Recover(input,re);
5681
        }
5682
        finally 
5683
    	{
5684
        }
5685
        return ;
5686
    }
5687
    // $ANTLR end "setComprehension"
5688

    
5689

    
5690
    // $ANTLR start "qvalExpression"
5691
    // ooa.g:809:1: qvalExpression returns [QValConstructor result] : aval= 'qval' T_LPAREN ( T_NIL | (expr= qualifiedIdentifier | ( '-' )? T_INFTY ) ( T_RANGETO (expr2= qualifiedIdentifier | T_INFTY ) )? ) T_COMMA ( T_NIL | ( 'steady' | 'inc' | 'dec' ) ) T_RPAREN ;
5692
    public QValConstructor qvalExpression() // throws RecognitionException [1]
5693
    {   
5694
        QValConstructor result = default(QValConstructor);
5695

    
5696
        IToken aval = null;
5697
        Expression expr = default(Expression);
5698

    
5699
        Expression expr2 = default(Expression);
5700

    
5701

    
5702

    
5703
        		bool minus = false;
5704
        		result = null;		
5705
        	
5706
        try 
5707
    	{
5708
            // ooa.g:815:2: (aval= 'qval' T_LPAREN ( T_NIL | (expr= qualifiedIdentifier | ( '-' )? T_INFTY ) ( T_RANGETO (expr2= qualifiedIdentifier | T_INFTY ) )? ) T_COMMA ( T_NIL | ( 'steady' | 'inc' | 'dec' ) ) T_RPAREN )
5709
            // ooa.g:816:3: aval= 'qval' T_LPAREN ( T_NIL | (expr= qualifiedIdentifier | ( '-' )? T_INFTY ) ( T_RANGETO (expr2= qualifiedIdentifier | T_INFTY ) )? ) T_COMMA ( T_NIL | ( 'steady' | 'inc' | 'dec' ) ) T_RPAREN
5710
            {
5711
            	aval=(IToken)Match(input,122,FOLLOW_122_in_qvalExpression3945); 
5712
            	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_qvalExpression3947); 
5713
            	result = createQualitativeValue(aval);
5714
            	// ooa.g:818:3: ( T_NIL | (expr= qualifiedIdentifier | ( '-' )? T_INFTY ) ( T_RANGETO (expr2= qualifiedIdentifier | T_INFTY ) )? )
5715
            	int alt96 = 2;
5716
            	int LA96_0 = input.LA(1);
5717

    
5718
            	if ( (LA96_0 == T_NIL) )
5719
            	{
5720
            	    alt96 = 1;
5721
            	}
5722
            	else if ( (LA96_0 == T_IDENTIFIER || (LA96_0 >= T_MINUS && LA96_0 <= T_INFTY) || LA96_0 == T_SELF) )
5723
            	{
5724
            	    alt96 = 2;
5725
            	}
5726
            	else 
5727
            	{
5728
            	    NoViableAltException nvae_d96s0 =
5729
            	        new NoViableAltException("", 96, 0, input);
5730

    
5731
            	    throw nvae_d96s0;
5732
            	}
5733
            	switch (alt96) 
5734
            	{
5735
            	    case 1 :
5736
            	        // ooa.g:819:4: T_NIL
5737
            	        {
5738
            	        	Match(input,T_NIL,FOLLOW_T_NIL_in_qvalExpression3961); 
5739
            	        	setQualitativeValueDontCare(result);
5740

    
5741
            	        }
5742
            	        break;
5743
            	    case 2 :
5744
            	        // ooa.g:822:4: (expr= qualifiedIdentifier | ( '-' )? T_INFTY ) ( T_RANGETO (expr2= qualifiedIdentifier | T_INFTY ) )?
5745
            	        {
5746
            	        	// ooa.g:822:4: (expr= qualifiedIdentifier | ( '-' )? T_INFTY )
5747
            	        	int alt93 = 2;
5748
            	        	int LA93_0 = input.LA(1);
5749

    
5750
            	        	if ( (LA93_0 == T_IDENTIFIER || LA93_0 == T_SELF) )
5751
            	        	{
5752
            	        	    alt93 = 1;
5753
            	        	}
5754
            	        	else if ( ((LA93_0 >= T_MINUS && LA93_0 <= T_INFTY)) )
5755
            	        	{
5756
            	        	    alt93 = 2;
5757
            	        	}
5758
            	        	else 
5759
            	        	{
5760
            	        	    NoViableAltException nvae_d93s0 =
5761
            	        	        new NoViableAltException("", 93, 0, input);
5762

    
5763
            	        	    throw nvae_d93s0;
5764
            	        	}
5765
            	        	switch (alt93) 
5766
            	        	{
5767
            	        	    case 1 :
5768
            	        	        // ooa.g:822:6: expr= qualifiedIdentifier
5769
            	        	        {
5770
            	        	        	PushFollow(FOLLOW_qualifiedIdentifier_in_qvalExpression3982);
5771
            	        	        	expr = qualifiedIdentifier();
5772
            	        	        	state.followingStackPointer--;
5773

    
5774
            	        	        	setQualitativeValueLandmark(result,expr);
5775

    
5776
            	        	        }
5777
            	        	        break;
5778
            	        	    case 2 :
5779
            	        	        // ooa.g:825:5: ( '-' )? T_INFTY
5780
            	        	        {
5781
            	        	        	// ooa.g:825:5: ( '-' )?
5782
            	        	        	int alt92 = 2;
5783
            	        	        	int LA92_0 = input.LA(1);
5784

    
5785
            	        	        	if ( (LA92_0 == T_MINUS) )
5786
            	        	        	{
5787
            	        	        	    alt92 = 1;
5788
            	        	        	}
5789
            	        	        	switch (alt92) 
5790
            	        	        	{
5791
            	        	        	    case 1 :
5792
            	        	        	        // ooa.g:825:6: '-'
5793
            	        	        	        {
5794
            	        	        	        	Match(input,T_MINUS,FOLLOW_T_MINUS_in_qvalExpression4001); 
5795
            	        	        	        	minus = true;
5796

    
5797
            	        	        	        }
5798
            	        	        	        break;
5799

    
5800
            	        	        	}
5801

    
5802
            	        	        	Match(input,T_INFTY,FOLLOW_T_INFTY_in_qvalExpression4007); 
5803
            	        	        	setQualitativeValueInfinity(result,minus);
5804

    
5805
            	        	        }
5806
            	        	        break;
5807

    
5808
            	        	}
5809

    
5810
            	        	// ooa.g:828:4: ( T_RANGETO (expr2= qualifiedIdentifier | T_INFTY ) )?
5811
            	        	int alt95 = 2;
5812
            	        	int LA95_0 = input.LA(1);
5813

    
5814
            	        	if ( (LA95_0 == T_RANGETO) )
5815
            	        	{
5816
            	        	    alt95 = 1;
5817
            	        	}
5818
            	        	switch (alt95) 
5819
            	        	{
5820
            	        	    case 1 :
5821
            	        	        // ooa.g:828:5: T_RANGETO (expr2= qualifiedIdentifier | T_INFTY )
5822
            	        	        {
5823
            	        	        	Match(input,T_RANGETO,FOLLOW_T_RANGETO_in_qvalExpression4025); 
5824
            	        	        	// ooa.g:829:4: (expr2= qualifiedIdentifier | T_INFTY )
5825
            	        	        	int alt94 = 2;
5826
            	        	        	int LA94_0 = input.LA(1);
5827

    
5828
            	        	        	if ( (LA94_0 == T_IDENTIFIER || LA94_0 == T_SELF) )
5829
            	        	        	{
5830
            	        	        	    alt94 = 1;
5831
            	        	        	}
5832
            	        	        	else if ( (LA94_0 == T_INFTY) )
5833
            	        	        	{
5834
            	        	        	    alt94 = 2;
5835
            	        	        	}
5836
            	        	        	else 
5837
            	        	        	{
5838
            	        	        	    NoViableAltException nvae_d94s0 =
5839
            	        	        	        new NoViableAltException("", 94, 0, input);
5840

    
5841
            	        	        	    throw nvae_d94s0;
5842
            	        	        	}
5843
            	        	        	switch (alt94) 
5844
            	        	        	{
5845
            	        	        	    case 1 :
5846
            	        	        	        // ooa.g:829:6: expr2= qualifiedIdentifier
5847
            	        	        	        {
5848
            	        	        	        	PushFollow(FOLLOW_qualifiedIdentifier_in_qvalExpression4035);
5849
            	        	        	        	expr2 = qualifiedIdentifier();
5850
            	        	        	        	state.followingStackPointer--;
5851

    
5852
            	        	        	        	setQualitativeValueRange(result,expr2);
5853

    
5854
            	        	        	        }
5855
            	        	        	        break;
5856
            	        	        	    case 2 :
5857
            	        	        	        // ooa.g:832:5: T_INFTY
5858
            	        	        	        {
5859
            	        	        	        	Match(input,T_INFTY,FOLLOW_T_INFTY_in_qvalExpression4053); 
5860
            	        	        	        	setQualitativeValueRangeInfinity(result,false);
5861

    
5862
            	        	        	        }
5863
            	        	        	        break;
5864

    
5865
            	        	        	}
5866

    
5867

    
5868
            	        	        }
5869
            	        	        break;
5870

    
5871
            	        	}
5872

    
5873

    
5874
            	        }
5875
            	        break;
5876

    
5877
            	}
5878

    
5879
            	Match(input,T_COMMA,FOLLOW_T_COMMA_in_qvalExpression4077); 
5880
            	// ooa.g:837:3: ( T_NIL | ( 'steady' | 'inc' | 'dec' ) )
5881
            	int alt98 = 2;
5882
            	int LA98_0 = input.LA(1);
5883

    
5884
            	if ( (LA98_0 == T_NIL) )
5885
            	{
5886
            	    alt98 = 1;
5887
            	}
5888
            	else if ( ((LA98_0 >= 123 && LA98_0 <= 125)) )
5889
            	{
5890
            	    alt98 = 2;
5891
            	}
5892
            	else 
5893
            	{
5894
            	    NoViableAltException nvae_d98s0 =
5895
            	        new NoViableAltException("", 98, 0, input);
5896

    
5897
            	    throw nvae_d98s0;
5898
            	}
5899
            	switch (alt98) 
5900
            	{
5901
            	    case 1 :
5902
            	        // ooa.g:838:4: T_NIL
5903
            	        {
5904
            	        	Match(input,T_NIL,FOLLOW_T_NIL_in_qvalExpression4087); 
5905
            	        	setQualitativeDerivDontCare(result);
5906

    
5907
            	        }
5908
            	        break;
5909
            	    case 2 :
5910
            	        // ooa.g:841:4: ( 'steady' | 'inc' | 'dec' )
5911
            	        {
5912
            	        	// ooa.g:841:4: ( 'steady' | 'inc' | 'dec' )
5913
            	        	int alt97 = 3;
5914
            	        	switch ( input.LA(1) ) 
5915
            	        	{
5916
            	        	case 123:
5917
            	        		{
5918
            	        	    alt97 = 1;
5919
            	        	    }
5920
            	        	    break;
5921
            	        	case 124:
5922
            	        		{
5923
            	        	    alt97 = 2;
5924
            	        	    }
5925
            	        	    break;
5926
            	        	case 125:
5927
            	        		{
5928
            	        	    alt97 = 3;
5929
            	        	    }
5930
            	        	    break;
5931
            	        		default:
5932
            	        		    NoViableAltException nvae_d97s0 =
5933
            	        		        new NoViableAltException("", 97, 0, input);
5934

    
5935
            	        		    throw nvae_d97s0;
5936
            	        	}
5937

    
5938
            	        	switch (alt97) 
5939
            	        	{
5940
            	        	    case 1 :
5941
            	        	        // ooa.g:841:6: 'steady'
5942
            	        	        {
5943
            	        	        	Match(input,123,FOLLOW_123_in_qvalExpression4103); 
5944
            	        	        	setQualitativeDerivSteady(result);
5945

    
5946
            	        	        }
5947
            	        	        break;
5948
            	        	    case 2 :
5949
            	        	        // ooa.g:843:6: 'inc'
5950
            	        	        {
5951
            	        	        	Match(input,124,FOLLOW_124_in_qvalExpression4116); 
5952
            	        	        	setQualitativeDerivInc(result);
5953

    
5954
            	        	        }
5955
            	        	        break;
5956
            	        	    case 3 :
5957
            	        	        // ooa.g:845:6: 'dec'
5958
            	        	        {
5959
            	        	        	Match(input,125,FOLLOW_125_in_qvalExpression4129); 
5960
            	        	        	setQualitativeDerivDec(result);
5961

    
5962
            	        	        }
5963
            	        	        break;
5964

    
5965
            	        	}
5966

    
5967

    
5968
            	        }
5969
            	        break;
5970

    
5971
            	}
5972

    
5973
            	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_qvalExpression4151); 
5974

    
5975
            }
5976

    
5977
        }
5978
        catch (RecognitionException re) 
5979
    	{
5980
            ReportError(re);
5981
            Recover(input,re);
5982
        }
5983
        finally 
5984
    	{
5985
        }
5986
        return result;
5987
    }
5988
    // $ANTLR end "qvalExpression"
5989

    
5990

    
5991
    // $ANTLR start "identifierExpression"
5992
    // ooa.g:853:1: identifierExpression returns [Expression result] : ({...}?aName= T_IDENTIFIER T_LPAREN m_params= methodCallParams T_RPAREN | res= reference );
5993
    public Expression identifierExpression() // throws RecognitionException [1]
5994
    {   
5995
        Expression result = default(Expression);
5996

    
5997
        IToken aName = null;
5998
        System.Collections.Generic.List<Expression> m_params = default(System.Collections.Generic.List<Expression>);
5999

    
6000
        Expression res = default(Expression);
6001

    
6002

    
6003
        try 
6004
    	{
6005
            // ooa.g:855:2: ({...}?aName= T_IDENTIFIER T_LPAREN m_params= methodCallParams T_RPAREN | res= reference )
6006
            int alt99 = 2;
6007
            alt99 = dfa99.Predict(input);
6008
            switch (alt99) 
6009
            {
6010
                case 1 :
6011
                    // ooa.g:856:3: {...}?aName= T_IDENTIFIER T_LPAREN m_params= methodCallParams T_RPAREN
6012
                    {
6013
                    	if ( !((isTuple(input.LT(1).Text))) ) 
6014
                    	{
6015
                    	    throw new FailedPredicateException(input, "identifierExpression", "isTuple(input.LT(1).Text)");
6016
                    	}
6017
                    	aName=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_identifierExpression4184); 
6018
                    	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_identifierExpression4186); 
6019
                    	PushFollow(FOLLOW_methodCallParams_in_identifierExpression4190);
6020
                    	m_params = methodCallParams();
6021
                    	state.followingStackPointer--;
6022

    
6023
                    	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_identifierExpression4192); 
6024
                    	result = createInitializedTuple(aName,m_params);
6025

    
6026
                    }
6027
                    break;
6028
                case 2 :
6029
                    // ooa.g:860:3: res= reference
6030
                    {
6031
                    	PushFollow(FOLLOW_reference_in_identifierExpression4207);
6032
                    	res = reference();
6033
                    	state.followingStackPointer--;
6034

    
6035
                    	result = res;
6036

    
6037
                    }
6038
                    break;
6039

    
6040
            }
6041
        }
6042
        catch (RecognitionException re) 
6043
    	{
6044
            ReportError(re);
6045
            Recover(input,re);
6046
        }
6047
        finally 
6048
    	{
6049
        }
6050
        return result;
6051
    }
6052
    // $ANTLR end "identifierExpression"
6053

    
6054

    
6055
    // $ANTLR start "reference"
6056
    // ooa.g:865:1: reference returns [Expression result] : {...}?aName= qualifiedIdentifier (output= accessExpression[result] | ) (pr= T_PRIMED | ( '::' T_LPAREN init= expression T_RPAREN )? afold= ( T_FOLDLR | T_FOLDRL ) T_LPAREN anexpr= expression T_RPAREN )? ;
6057
    public Expression reference() // throws RecognitionException [1]
6058
    {   
6059
        Expression result = default(Expression);
6060

    
6061
        IToken pr = null;
6062
        IToken afold = null;
6063
        Expression aName = default(Expression);
6064

    
6065
        Expression output = default(Expression);
6066

    
6067
        Expression init = default(Expression);
6068

    
6069
        Expression anexpr = default(Expression);
6070

    
6071

    
6072

    
6073
        		result = null;
6074
        		init = null;
6075
        	
6076
        try 
6077
    	{
6078
            // ooa.g:871:2: ({...}?aName= qualifiedIdentifier (output= accessExpression[result] | ) (pr= T_PRIMED | ( '::' T_LPAREN init= expression T_RPAREN )? afold= ( T_FOLDLR | T_FOLDRL ) T_LPAREN anexpr= expression T_RPAREN )? )
6079
            // ooa.g:871:4: {...}?aName= qualifiedIdentifier (output= accessExpression[result] | ) (pr= T_PRIMED | ( '::' T_LPAREN init= expression T_RPAREN )? afold= ( T_FOLDLR | T_FOLDRL ) T_LPAREN anexpr= expression T_RPAREN )?
6080
            {
6081
            	if ( !((!isTuple(input.LT(1).Text))) ) 
6082
            	{
6083
            	    throw new FailedPredicateException(input, "reference", "!isTuple(input.LT(1).Text)");
6084
            	}
6085
            	PushFollow(FOLLOW_qualifiedIdentifier_in_reference4245);
6086
            	aName = qualifiedIdentifier();
6087
            	state.followingStackPointer--;
6088

    
6089
            	result = aName;
6090
            	// ooa.g:873:3: (output= accessExpression[result] | )
6091
            	int alt100 = 2;
6092
            	alt100 = dfa100.Predict(input);
6093
            	switch (alt100) 
6094
            	{
6095
            	    case 1 :
6096
            	        // ooa.g:873:5: output= accessExpression[result]
6097
            	        {
6098
            	        	PushFollow(FOLLOW_accessExpression_in_reference4257);
6099
            	        	output = accessExpression(result);
6100
            	        	state.followingStackPointer--;
6101

    
6102
            	        	result = output;
6103

    
6104
            	        }
6105
            	        break;
6106
            	    case 2 :
6107
            	        // ooa.g:876:3: 
6108
            	        {
6109
            	        }
6110
            	        break;
6111

    
6112
            	}
6113

    
6114
            	// ooa.g:877:3: (pr= T_PRIMED | ( '::' T_LPAREN init= expression T_RPAREN )? afold= ( T_FOLDLR | T_FOLDRL ) T_LPAREN anexpr= expression T_RPAREN )?
6115
            	int alt102 = 3;
6116
            	alt102 = dfa102.Predict(input);
6117
            	switch (alt102) 
6118
            	{
6119
            	    case 1 :
6120
            	        // ooa.g:877:6: pr= T_PRIMED
6121
            	        {
6122
            	        	pr=(IToken)Match(input,T_PRIMED,FOLLOW_T_PRIMED_in_reference4282); 
6123
            	        	setIdentifierExpressionPrimed(ref result,pr);
6124

    
6125
            	        }
6126
            	        break;
6127
            	    case 2 :
6128
            	        // ooa.g:879:5: ( '::' T_LPAREN init= expression T_RPAREN )? afold= ( T_FOLDLR | T_FOLDRL ) T_LPAREN anexpr= expression T_RPAREN
6129
            	        {
6130
            	        	// ooa.g:879:5: ( '::' T_LPAREN init= expression T_RPAREN )?
6131
            	        	int alt101 = 2;
6132
            	        	int LA101_0 = input.LA(1);
6133

    
6134
            	        	if ( (LA101_0 == 126) )
6135
            	        	{
6136
            	        	    alt101 = 1;
6137
            	        	}
6138
            	        	switch (alt101) 
6139
            	        	{
6140
            	        	    case 1 :
6141
            	        	        // ooa.g:879:6: '::' T_LPAREN init= expression T_RPAREN
6142
            	        	        {
6143
            	        	        	Match(input,126,FOLLOW_126_in_reference4298); 
6144
            	        	        	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_reference4300); 
6145
            	        	        	PushFollow(FOLLOW_expression_in_reference4304);
6146
            	        	        	init = expression();
6147
            	        	        	state.followingStackPointer--;
6148

    
6149
            	        	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_reference4306); 
6150

    
6151
            	        	        }
6152
            	        	        break;
6153

    
6154
            	        	}
6155

    
6156
            	        	afold = (IToken)input.LT(1);
6157
            	        	if ( (input.LA(1) >= T_FOLDLR && input.LA(1) <= T_FOLDRL) ) 
6158
            	        	{
6159
            	        	    input.Consume();
6160
            	        	    state.errorRecovery = false;
6161
            	        	}
6162
            	        	else 
6163
            	        	{
6164
            	        	    MismatchedSetException mse = new MismatchedSetException(null,input);
6165
            	        	    throw mse;
6166
            	        	}
6167

    
6168
            	        	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_reference4318); 
6169
            	        	PushFollow(FOLLOW_expression_in_reference4322);
6170
            	        	anexpr = expression();
6171
            	        	state.followingStackPointer--;
6172

    
6173
            	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_reference4324); 
6174
            	        	result = createFoldExpression(result,afold,init,anexpr);
6175

    
6176
            	        }
6177
            	        break;
6178

    
6179
            	}
6180

    
6181

    
6182
            }
6183

    
6184
        }
6185
        catch (RecognitionException re) 
6186
    	{
6187
            ReportError(re);
6188
            Recover(input,re);
6189
        }
6190
        finally 
6191
    	{
6192
        }
6193
        return result;
6194
    }
6195
    // $ANTLR end "reference"
6196

    
6197

    
6198
    // $ANTLR start "accessExpression"
6199
    // ooa.g:884:1: accessExpression[Expression subexpr] returns [Expression result] : (tcall= T_LSQPAREN ac= expression T_RSQPAREN | bcall= T_LPAREN m_params= methodCallParams T_RPAREN )+ ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[result] )? )? ;
6200
    public Expression accessExpression(Expression subexpr) // throws RecognitionException [1]
6201
    {   
6202
        Expression result = default(Expression);
6203

    
6204
        IToken tcall = null;
6205
        IToken bcall = null;
6206
        IToken idn = null;
6207
        Expression ac = default(Expression);
6208

    
6209
        System.Collections.Generic.List<Expression> m_params = default(System.Collections.Generic.List<Expression>);
6210

    
6211
        Expression res = default(Expression);
6212

    
6213

    
6214

    
6215
        		UnaryOperator newExpr = null;
6216
        		result = subexpr;
6217
        	
6218
        try 
6219
    	{
6220
            // ooa.g:890:2: ( (tcall= T_LSQPAREN ac= expression T_RSQPAREN | bcall= T_LPAREN m_params= methodCallParams T_RPAREN )+ ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[result] )? )? )
6221
            // ooa.g:891:7: (tcall= T_LSQPAREN ac= expression T_RSQPAREN | bcall= T_LPAREN m_params= methodCallParams T_RPAREN )+ ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[result] )? )?
6222
            {
6223
            	// ooa.g:891:7: (tcall= T_LSQPAREN ac= expression T_RSQPAREN | bcall= T_LPAREN m_params= methodCallParams T_RPAREN )+
6224
            	int cnt103 = 0;
6225
            	do 
6226
            	{
6227
            	    int alt103 = 3;
6228
            	    alt103 = dfa103.Predict(input);
6229
            	    switch (alt103) 
6230
            		{
6231
            			case 1 :
6232
            			    // ooa.g:891:9: tcall= T_LSQPAREN ac= expression T_RSQPAREN
6233
            			    {
6234
            			    	tcall=(IToken)Match(input,T_LSQPAREN,FOLLOW_T_LSQPAREN_in_accessExpression4369); 
6235
            			    	PushFollow(FOLLOW_expression_in_accessExpression4373);
6236
            			    	ac = expression();
6237
            			    	state.followingStackPointer--;
6238

    
6239
            			    	Match(input,T_RSQPAREN,FOLLOW_T_RSQPAREN_in_accessExpression4375); 
6240
            			    	 result = createTupleMapAccessExpression(result,ac,tcall); 
6241

    
6242
            			    }
6243
            			    break;
6244
            			case 2 :
6245
            			    // ooa.g:893:10: bcall= T_LPAREN m_params= methodCallParams T_RPAREN
6246
            			    {
6247
            			    	bcall=(IToken)Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_accessExpression4402); 
6248
            			    	PushFollow(FOLLOW_methodCallParams_in_accessExpression4406);
6249
            			    	m_params = methodCallParams();
6250
            			    	state.followingStackPointer--;
6251

    
6252
            			    	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_accessExpression4408); 
6253
            			    	 result = createMethodAccessExpression(result,m_params,bcall); 
6254

    
6255
            			    }
6256
            			    break;
6257

    
6258
            			default:
6259
            			    if ( cnt103 >= 1 ) goto loop103;
6260
            		            EarlyExitException eee103 =
6261
            		                new EarlyExitException(103, input);
6262
            		            throw eee103;
6263
            	    }
6264
            	    cnt103++;
6265
            	} while (true);
6266

    
6267
            	loop103:
6268
            		;	// Stops C# compiler whining that label 'loop103' has no statements
6269

    
6270
            	// ooa.g:896:3: ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[result] )? )?
6271
            	int alt106 = 2;
6272
            	alt106 = dfa106.Predict(input);
6273
            	switch (alt106) 
6274
            	{
6275
            	    case 1 :
6276
            	        // ooa.g:897:4: ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[result] )?
6277
            	        {
6278
            	        	// ooa.g:897:4: ( T_POINT idn= T_IDENTIFIER )+
6279
            	        	int cnt104 = 0;
6280
            	        	do 
6281
            	        	{
6282
            	        	    int alt104 = 2;
6283
            	        	    alt104 = dfa104.Predict(input);
6284
            	        	    switch (alt104) 
6285
            	        		{
6286
            	        			case 1 :
6287
            	        			    // ooa.g:897:5: T_POINT idn= T_IDENTIFIER
6288
            	        			    {
6289
            	        			    	Match(input,T_POINT,FOLLOW_T_POINT_in_accessExpression4430); 
6290
            	        			    	idn=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_accessExpression4438); 
6291
            	        			    	result = addIdentifierAccessExpression(result,idn);
6292

    
6293
            	        			    }
6294
            	        			    break;
6295

    
6296
            	        			default:
6297
            	        			    if ( cnt104 >= 1 ) goto loop104;
6298
            	        		            EarlyExitException eee104 =
6299
            	        		                new EarlyExitException(104, input);
6300
            	        		            throw eee104;
6301
            	        	    }
6302
            	        	    cnt104++;
6303
            	        	} while (true);
6304

    
6305
            	        	loop104:
6306
            	        		;	// Stops C# compiler whining that label 'loop104' has no statements
6307

    
6308
            	        	// ooa.g:900:4: (res= accessExpression[result] )?
6309
            	        	int alt105 = 2;
6310
            	        	alt105 = dfa105.Predict(input);
6311
            	        	switch (alt105) 
6312
            	        	{
6313
            	        	    case 1 :
6314
            	        	        // ooa.g:900:5: res= accessExpression[result]
6315
            	        	        {
6316
            	        	        	PushFollow(FOLLOW_accessExpression_in_accessExpression4454);
6317
            	        	        	res = accessExpression(result);
6318
            	        	        	state.followingStackPointer--;
6319

    
6320
            	        	        	result=res;
6321

    
6322
            	        	        }
6323
            	        	        break;
6324

    
6325
            	        	}
6326

    
6327

    
6328
            	        }
6329
            	        break;
6330

    
6331
            	}
6332

    
6333

    
6334
            }
6335

    
6336
        }
6337
        catch (RecognitionException re) 
6338
    	{
6339
            ReportError(re);
6340
            Recover(input,re);
6341
        }
6342
        finally 
6343
    	{
6344
        }
6345
        return result;
6346
    }
6347
    // $ANTLR end "accessExpression"
6348

    
6349

    
6350
    // $ANTLR start "qualifiedIdentifier"
6351
    // ooa.g:904:1: qualifiedIdentifier returns [Expression top] : (self= T_SELF T_POINT )? idb= T_IDENTIFIER ( T_POINT idd= T_IDENTIFIER )* ;
6352
    public Expression qualifiedIdentifier() // throws RecognitionException [1]
6353
    {   
6354
        Expression top = default(Expression);
6355

    
6356
        IToken self = null;
6357
        IToken idb = null;
6358
        IToken idd = null;
6359

    
6360

    
6361
        		IdentifierExpression selfexpr = null;
6362
        		top = null;
6363
        	
6364
        try 
6365
    	{
6366
            // ooa.g:910:2: ( (self= T_SELF T_POINT )? idb= T_IDENTIFIER ( T_POINT idd= T_IDENTIFIER )* )
6367
            // ooa.g:911:3: (self= T_SELF T_POINT )? idb= T_IDENTIFIER ( T_POINT idd= T_IDENTIFIER )*
6368
            {
6369
            	// ooa.g:911:3: (self= T_SELF T_POINT )?
6370
            	int alt107 = 2;
6371
            	int LA107_0 = input.LA(1);
6372

    
6373
            	if ( (LA107_0 == T_SELF) )
6374
            	{
6375
            	    alt107 = 1;
6376
            	}
6377
            	switch (alt107) 
6378
            	{
6379
            	    case 1 :
6380
            	        // ooa.g:911:4: self= T_SELF T_POINT
6381
            	        {
6382
            	        	self=(IToken)Match(input,T_SELF,FOLLOW_T_SELF_in_qualifiedIdentifier4493); 
6383
            	        	Match(input,T_POINT,FOLLOW_T_POINT_in_qualifiedIdentifier4495); 
6384
            	        	selfexpr = createSelfIdentifierExpression(self);
6385

    
6386
            	        }
6387
            	        break;
6388

    
6389
            	}
6390

    
6391
            	idb=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_qualifiedIdentifier4507); 
6392
            	top = createIdentifierAccessExpression(selfexpr,idb);
6393
            	// ooa.g:913:3: ( T_POINT idd= T_IDENTIFIER )*
6394
            	do 
6395
            	{
6396
            	    int alt108 = 2;
6397
            	    alt108 = dfa108.Predict(input);
6398
            	    switch (alt108) 
6399
            		{
6400
            			case 1 :
6401
            			    // ooa.g:913:4: T_POINT idd= T_IDENTIFIER
6402
            			    {
6403
            			    	Match(input,T_POINT,FOLLOW_T_POINT_in_qualifiedIdentifier4516); 
6404
            			    	idd=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_qualifiedIdentifier4520); 
6405
            			    	top = addIdentifierAccessExpression(top,idd);
6406

    
6407
            			    }
6408
            			    break;
6409

    
6410
            			default:
6411
            			    goto loop108;
6412
            	    }
6413
            	} while (true);
6414

    
6415
            	loop108:
6416
            		;	// Stops C# compiler whining that label 'loop108' has no statements
6417

    
6418

    
6419
            }
6420

    
6421
        }
6422
        catch (RecognitionException re) 
6423
    	{
6424
            ReportError(re);
6425
            Recover(input,re);
6426
        }
6427
        finally 
6428
    	{
6429
        }
6430
        return top;
6431
    }
6432
    // $ANTLR end "qualifiedIdentifier"
6433

    
6434

    
6435
    // $ANTLR start "methodCallParams"
6436
    // ooa.g:917:1: methodCallParams returns [System.Collections.Generic.List<Expression> result] : (expa= expression ( T_COMMA expb= expression )* )? ;
6437
    public System.Collections.Generic.List<Expression> methodCallParams() // throws RecognitionException [1]
6438
    {   
6439
        System.Collections.Generic.List<Expression> result = default(System.Collections.Generic.List<Expression>);
6440

    
6441
        Expression expa = default(Expression);
6442

    
6443
        Expression expb = default(Expression);
6444

    
6445

    
6446

    
6447
        		result = new System.Collections.Generic.List<Expression>();
6448
        	
6449
        try 
6450
    	{
6451
            // ooa.g:922:2: ( (expa= expression ( T_COMMA expb= expression )* )? )
6452
            // ooa.g:922:4: (expa= expression ( T_COMMA expb= expression )* )?
6453
            {
6454
            	// ooa.g:922:4: (expa= expression ( T_COMMA expb= expression )* )?
6455
            	int alt110 = 2;
6456
            	alt110 = dfa110.Predict(input);
6457
            	switch (alt110) 
6458
            	{
6459
            	    case 1 :
6460
            	        // ooa.g:922:5: expa= expression ( T_COMMA expb= expression )*
6461
            	        {
6462
            	        	PushFollow(FOLLOW_expression_in_methodCallParams4553);
6463
            	        	expa = expression();
6464
            	        	state.followingStackPointer--;
6465

    
6466
            	        	result.Add(expa);
6467
            	        	// ooa.g:922:41: ( T_COMMA expb= expression )*
6468
            	        	do 
6469
            	        	{
6470
            	        	    int alt109 = 2;
6471
            	        	    int LA109_0 = input.LA(1);
6472

    
6473
            	        	    if ( (LA109_0 == T_COMMA) )
6474
            	        	    {
6475
            	        	        alt109 = 1;
6476
            	        	    }
6477

    
6478

    
6479
            	        	    switch (alt109) 
6480
            	        		{
6481
            	        			case 1 :
6482
            	        			    // ooa.g:922:42: T_COMMA expb= expression
6483
            	        			    {
6484
            	        			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_methodCallParams4558); 
6485
            	        			    	PushFollow(FOLLOW_expression_in_methodCallParams4562);
6486
            	        			    	expb = expression();
6487
            	        			    	state.followingStackPointer--;
6488

    
6489
            	        			    	result.Add(expb);
6490

    
6491
            	        			    }
6492
            	        			    break;
6493

    
6494
            	        			default:
6495
            	        			    goto loop109;
6496
            	        	    }
6497
            	        	} while (true);
6498

    
6499
            	        	loop109:
6500
            	        		;	// Stops C# compiler whining that label 'loop109' has no statements
6501

    
6502

    
6503
            	        }
6504
            	        break;
6505

    
6506
            	}
6507

    
6508

    
6509
            }
6510

    
6511
        }
6512
        catch (RecognitionException re) 
6513
    	{
6514
            ReportError(re);
6515
            Recover(input,re);
6516
        }
6517
        finally 
6518
    	{
6519
        }
6520
        return result;
6521
    }
6522
    // $ANTLR end "methodCallParams"
6523

    
6524

    
6525
    // $ANTLR start "op_un"
6526
    // ooa.g:932:1: op_un returns [UnaryOperator expr] : (r= op_un_set_list | r2= op_un_map | T_MINUS | T_NOT | T_ABS );
6527
    public UnaryOperator op_un() // throws RecognitionException [1]
6528
    {   
6529
        UnaryOperator expr = default(UnaryOperator);
6530

    
6531
        UnaryOperator r = default(UnaryOperator);
6532

    
6533
        UnaryOperator r2 = default(UnaryOperator);
6534

    
6535

    
6536

    
6537
        		expr = null;
6538
        	
6539
        try 
6540
    	{
6541
            // ooa.g:937:2: (r= op_un_set_list | r2= op_un_map | T_MINUS | T_NOT | T_ABS )
6542
            int alt111 = 5;
6543
            alt111 = dfa111.Predict(input);
6544
            switch (alt111) 
6545
            {
6546
                case 1 :
6547
                    // ooa.g:937:4: r= op_un_set_list
6548
                    {
6549
                    	PushFollow(FOLLOW_op_un_set_list_in_op_un4601);
6550
                    	r = op_un_set_list();
6551
                    	state.followingStackPointer--;
6552

    
6553
                    	expr = r;
6554

    
6555
                    }
6556
                    break;
6557
                case 2 :
6558
                    // ooa.g:938:4: r2= op_un_map
6559
                    {
6560
                    	PushFollow(FOLLOW_op_un_map_in_op_un4610);
6561
                    	r2 = op_un_map();
6562
                    	state.followingStackPointer--;
6563

    
6564
                    	expr = r2;
6565

    
6566
                    }
6567
                    break;
6568
                case 3 :
6569
                    // ooa.g:939:4: T_MINUS
6570
                    {
6571
                    	Match(input,T_MINUS,FOLLOW_T_MINUS_in_op_un4618); 
6572
                    	expr = createUnaryOperator(ExpressionKind.unminus);
6573

    
6574
                    }
6575
                    break;
6576
                case 4 :
6577
                    // ooa.g:940:4: T_NOT
6578
                    {
6579
                    	Match(input,T_NOT,FOLLOW_T_NOT_in_op_un4626); 
6580
                    	expr = createUnaryOperator(ExpressionKind.not);
6581

    
6582
                    }
6583
                    break;
6584
                case 5 :
6585
                    // ooa.g:941:4: T_ABS
6586
                    {
6587
                    	Match(input,T_ABS,FOLLOW_T_ABS_in_op_un4634); 
6588
                    	expr = createUnaryOperator(ExpressionKind.abs);
6589

    
6590
                    }
6591
                    break;
6592

    
6593
            }
6594
        }
6595
        catch (RecognitionException re) 
6596
    	{
6597
            ReportError(re);
6598
            Recover(input,re);
6599
        }
6600
        finally 
6601
    	{
6602
        }
6603
        return expr;
6604
    }
6605
    // $ANTLR end "op_un"
6606

    
6607

    
6608
    // $ANTLR start "op_un_set_list"
6609
    // ooa.g:945:1: op_un_set_list returns [UnaryOperator expr] : ( T_CARD | T_DCONC | T_DINTER | T_DUNION | T_ELEMS | T_HEAD | T_INDS | T_LEN | T_TAIL );
6610
    public UnaryOperator op_un_set_list() // throws RecognitionException [1]
6611
    {   
6612
        UnaryOperator expr = default(UnaryOperator);
6613

    
6614

    
6615
        		expr = null;
6616
        	
6617
        try 
6618
    	{
6619
            // ooa.g:950:2: ( T_CARD | T_DCONC | T_DINTER | T_DUNION | T_ELEMS | T_HEAD | T_INDS | T_LEN | T_TAIL )
6620
            int alt112 = 9;
6621
            alt112 = dfa112.Predict(input);
6622
            switch (alt112) 
6623
            {
6624
                case 1 :
6625
                    // ooa.g:950:4: T_CARD
6626
                    {
6627
                    	Match(input,T_CARD,FOLLOW_T_CARD_in_op_un_set_list4661); 
6628
                    	expr = createUnaryOperator(ExpressionKind.card);
6629

    
6630
                    }
6631
                    break;
6632
                case 2 :
6633
                    // ooa.g:952:4: T_DCONC
6634
                    {
6635
                    	Match(input,T_DCONC,FOLLOW_T_DCONC_in_op_un_set_list4672); 
6636
                    	expr = createUnaryOperator(ExpressionKind.dconc);
6637

    
6638
                    }
6639
                    break;
6640
                case 3 :
6641
                    // ooa.g:954:4: T_DINTER
6642
                    {
6643
                    	Match(input,T_DINTER,FOLLOW_T_DINTER_in_op_un_set_list4683); 
6644
                    	expr = createUnaryOperator(ExpressionKind.dinter);
6645

    
6646
                    }
6647
                    break;
6648
                case 4 :
6649
                    // ooa.g:956:4: T_DUNION
6650
                    {
6651
                    	Match(input,T_DUNION,FOLLOW_T_DUNION_in_op_un_set_list4693); 
6652
                    	expr = createUnaryOperator(ExpressionKind.dunion);
6653

    
6654
                    }
6655
                    break;
6656
                case 5 :
6657
                    // ooa.g:958:4: T_ELEMS
6658
                    {
6659
                    	Match(input,T_ELEMS,FOLLOW_T_ELEMS_in_op_un_set_list4703); 
6660
                    	expr = createUnaryOperator(ExpressionKind.elems);
6661

    
6662
                    }
6663
                    break;
6664
                case 6 :
6665
                    // ooa.g:960:4: T_HEAD
6666
                    {
6667
                    	Match(input,T_HEAD,FOLLOW_T_HEAD_in_op_un_set_list4714); 
6668
                    	expr = createUnaryOperator(ExpressionKind.head);
6669

    
6670
                    }
6671
                    break;
6672
                case 7 :
6673
                    // ooa.g:962:4: T_INDS
6674
                    {
6675
                    	Match(input,T_INDS,FOLLOW_T_INDS_in_op_un_set_list4725); 
6676
                    	expr = createUnaryOperator(ExpressionKind.inds);
6677

    
6678
                    }
6679
                    break;
6680
                case 8 :
6681
                    // ooa.g:964:4: T_LEN
6682
                    {
6683
                    	Match(input,T_LEN,FOLLOW_T_LEN_in_op_un_set_list4736); 
6684
                    	expr = createUnaryOperator(ExpressionKind.len);
6685

    
6686
                    }
6687
                    break;
6688
                case 9 :
6689
                    // ooa.g:966:4: T_TAIL
6690
                    {
6691
                    	Match(input,T_TAIL,FOLLOW_T_TAIL_in_op_un_set_list4747); 
6692
                    	expr = createUnaryOperator(ExpressionKind.tail);
6693

    
6694
                    }
6695
                    break;
6696

    
6697
            }
6698
        }
6699
        catch (RecognitionException re) 
6700
    	{
6701
            ReportError(re);
6702
            Recover(input,re);
6703
        }
6704
        finally 
6705
    	{
6706
        }
6707
        return expr;
6708
    }
6709
    // $ANTLR end "op_un_set_list"
6710

    
6711

    
6712
    // $ANTLR start "op_un_map"
6713
    // ooa.g:971:1: op_un_map returns [UnaryOperator expr] : ( T_DOM | T_RNG | T_MERGE );
6714
    public UnaryOperator op_un_map() // throws RecognitionException [1]
6715
    {   
6716
        UnaryOperator expr = default(UnaryOperator);
6717

    
6718

    
6719
        		expr = null;
6720
        	
6721
        try 
6722
    	{
6723
            // ooa.g:976:2: ( T_DOM | T_RNG | T_MERGE )
6724
            int alt113 = 3;
6725
            switch ( input.LA(1) ) 
6726
            {
6727
            case T_DOM:
6728
            	{
6729
                alt113 = 1;
6730
                }
6731
                break;
6732
            case T_RNG:
6733
            	{
6734
                alt113 = 2;
6735
                }
6736
                break;
6737
            case T_MERGE:
6738
            	{
6739
                alt113 = 3;
6740
                }
6741
                break;
6742
            	default:
6743
            	    NoViableAltException nvae_d113s0 =
6744
            	        new NoViableAltException("", 113, 0, input);
6745

    
6746
            	    throw nvae_d113s0;
6747
            }
6748

    
6749
            switch (alt113) 
6750
            {
6751
                case 1 :
6752
                    // ooa.g:976:4: T_DOM
6753
                    {
6754
                    	Match(input,T_DOM,FOLLOW_T_DOM_in_op_un_map4776); 
6755
                    	expr = createUnaryOperator(ExpressionKind.dom);
6756

    
6757
                    }
6758
                    break;
6759
                case 2 :
6760
                    // ooa.g:978:4: T_RNG
6761
                    {
6762
                    	Match(input,T_RNG,FOLLOW_T_RNG_in_op_un_map4787); 
6763
                    	expr = createUnaryOperator(ExpressionKind.range);
6764

    
6765
                    }
6766
                    break;
6767
                case 3 :
6768
                    // ooa.g:980:4: T_MERGE
6769
                    {
6770
                    	Match(input,T_MERGE,FOLLOW_T_MERGE_in_op_un_map4798); 
6771
                    	expr = createUnaryOperator(ExpressionKind.merge);
6772

    
6773
                    }
6774
                    break;
6775

    
6776
            }
6777
        }
6778
        catch (RecognitionException re) 
6779
    	{
6780
            ReportError(re);
6781
            Recover(input,re);
6782
        }
6783
        finally 
6784
    	{
6785
        }
6786
        return expr;
6787
    }
6788
    // $ANTLR end "op_un_map"
6789

    
6790
    // Delegated rules
6791

    
6792

    
6793
   	protected DFA4 dfa4;
6794
   	protected DFA14 dfa14;
6795
   	protected DFA67 dfa67;
6796
   	protected DFA70 dfa70;
6797
   	protected DFA68 dfa68;
6798
   	protected DFA69 dfa69;
6799
   	protected DFA77 dfa77;
6800
   	protected DFA71 dfa71;
6801
   	protected DFA75 dfa75;
6802
   	protected DFA74 dfa74;
6803
   	protected DFA72 dfa72;
6804
   	protected DFA73 dfa73;
6805
   	protected DFA76 dfa76;
6806
   	protected DFA86 dfa86;
6807
   	protected DFA99 dfa99;
6808
   	protected DFA100 dfa100;
6809
   	protected DFA102 dfa102;
6810
   	protected DFA103 dfa103;
6811
   	protected DFA106 dfa106;
6812
   	protected DFA104 dfa104;
6813
   	protected DFA105 dfa105;
6814
   	protected DFA108 dfa108;
6815
   	protected DFA110 dfa110;
6816
   	protected DFA111 dfa111;
6817
   	protected DFA112 dfa112;
6818
	private void InitializeCyclicDFAs()
6819
	{
6820
    	this.dfa4 = new DFA4(this);
6821
    	this.dfa14 = new DFA14(this);
6822
    	this.dfa67 = new DFA67(this);
6823
    	this.dfa70 = new DFA70(this);
6824
    	this.dfa68 = new DFA68(this);
6825
    	this.dfa69 = new DFA69(this);
6826
    	this.dfa77 = new DFA77(this);
6827
    	this.dfa71 = new DFA71(this);
6828
    	this.dfa75 = new DFA75(this);
6829
    	this.dfa74 = new DFA74(this);
6830
    	this.dfa72 = new DFA72(this);
6831
    	this.dfa73 = new DFA73(this);
6832
    	this.dfa76 = new DFA76(this);
6833
    	this.dfa86 = new DFA86(this);
6834
    	this.dfa99 = new DFA99(this);
6835
    	this.dfa100 = new DFA100(this);
6836
    	this.dfa102 = new DFA102(this);
6837
    	this.dfa103 = new DFA103(this);
6838
    	this.dfa106 = new DFA106(this);
6839
    	this.dfa104 = new DFA104(this);
6840
    	this.dfa105 = new DFA105(this);
6841
    	this.dfa108 = new DFA108(this);
6842
    	this.dfa110 = new DFA110(this);
6843
    	this.dfa111 = new DFA111(this);
6844
    	this.dfa112 = new DFA112(this);
6845
	    this.dfa99.specialStateTransitionHandler = new DFA.SpecialStateTransitionHandler(DFA99_SpecialStateTransition);
6846
	}
6847

    
6848
    const string DFA4_eotS =
6849
        "\x0e\uffff";
6850
    const string DFA4_eofS =
6851
        "\x0e\uffff";
6852
    const string DFA4_minS =
6853
        "\x01\x06\x0d\uffff";
6854
    const string DFA4_maxS =
6855
        "\x01\x21\x0d\uffff";
6856
    const string DFA4_acceptS =
6857
        "\x01\uffff\x01\x01\x0a\uffff\x01\x02\x01\uffff";
6858
    const string DFA4_specialS =
6859
        "\x0e\uffff}>";
6860
    static readonly string[] DFA4_transitionS = {
6861
            "\x01\x0c\x01\uffff\x01\x01\x03\uffff\x01\x01\x01\uffff\x02"+
6862
            "\x01\x04\uffff\x01\x01\x01\uffff\x01\x01\x02\uffff\x02\x01\x01"+
6863
            "\uffff\x01\x01\x01\uffff\x02\x01\x01\uffff\x01\x0c",
6864
            "",
6865
            "",
6866
            "",
6867
            "",
6868
            "",
6869
            "",
6870
            "",
6871
            "",
6872
            "",
6873
            "",
6874
            "",
6875
            "",
6876
            ""
6877
    };
6878

    
6879
    static readonly short[] DFA4_eot = DFA.UnpackEncodedString(DFA4_eotS);
6880
    static readonly short[] DFA4_eof = DFA.UnpackEncodedString(DFA4_eofS);
6881
    static readonly char[] DFA4_min = DFA.UnpackEncodedStringToUnsignedChars(DFA4_minS);
6882
    static readonly char[] DFA4_max = DFA.UnpackEncodedStringToUnsignedChars(DFA4_maxS);
6883
    static readonly short[] DFA4_accept = DFA.UnpackEncodedString(DFA4_acceptS);
6884
    static readonly short[] DFA4_special = DFA.UnpackEncodedString(DFA4_specialS);
6885
    static readonly short[][] DFA4_transition = DFA.UnpackEncodedStringArray(DFA4_transitionS);
6886

    
6887
    protected class DFA4 : DFA
6888
    {
6889
        public DFA4(BaseRecognizer recognizer)
6890
        {
6891
            this.recognizer = recognizer;
6892
            this.decisionNumber = 4;
6893
            this.eot = DFA4_eot;
6894
            this.eof = DFA4_eof;
6895
            this.min = DFA4_min;
6896
            this.max = DFA4_max;
6897
            this.accept = DFA4_accept;
6898
            this.special = DFA4_special;
6899
            this.transition = DFA4_transition;
6900

    
6901
        }
6902

    
6903
        override public string Description
6904
        {
6905
            get { return "177:3: (aType= complexType | anOoaType= ooActionSystem )"; }
6906
        }
6907

    
6908
    }
6909

    
6910
    const string DFA14_eotS =
6911
        "\x0c\uffff";
6912
    const string DFA14_eofS =
6913
        "\x0c\uffff";
6914
    const string DFA14_minS =
6915
        "\x01\x08\x0b\uffff";
6916
    const string DFA14_maxS =
6917
        "\x01\x1f\x0b\uffff";
6918
    const string DFA14_acceptS =
6919
        "\x01\uffff\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x05"+
6920
        "\uffff";
6921
    const string DFA14_specialS =
6922
        "\x0c\uffff}>";
6923
    static readonly string[] DFA14_transitionS = {
6924
            "\x01\x06\x03\uffff\x01\x05\x01\uffff\x01\x01\x01\x02\x04\uffff"+
6925
            "\x01\x03\x01\uffff\x01\x04\x02\uffff\x02\x06\x01\uffff\x01\x06"+
6926
            "\x01\uffff\x02\x06",
6927
            "",
6928
            "",
6929
            "",
6930
            "",
6931
            "",
6932
            "",
6933
            "",
6934
            "",
6935
            "",
6936
            "",
6937
            ""
6938
    };
6939

    
6940
    static readonly short[] DFA14_eot = DFA.UnpackEncodedString(DFA14_eotS);
6941
    static readonly short[] DFA14_eof = DFA.UnpackEncodedString(DFA14_eofS);
6942
    static readonly char[] DFA14_min = DFA.UnpackEncodedStringToUnsignedChars(DFA14_minS);
6943
    static readonly char[] DFA14_max = DFA.UnpackEncodedStringToUnsignedChars(DFA14_maxS);
6944
    static readonly short[] DFA14_accept = DFA.UnpackEncodedString(DFA14_acceptS);
6945
    static readonly short[] DFA14_special = DFA.UnpackEncodedString(DFA14_specialS);
6946
    static readonly short[][] DFA14_transition = DFA.UnpackEncodedStringArray(DFA14_transitionS);
6947

    
6948
    protected class DFA14 : DFA
6949
    {
6950
        public DFA14(BaseRecognizer recognizer)
6951
        {
6952
            this.recognizer = recognizer;
6953
            this.decisionNumber = 14;
6954
            this.eot = DFA14_eot;
6955
            this.eof = DFA14_eof;
6956
            this.min = DFA14_min;
6957
            this.max = DFA14_max;
6958
            this.accept = DFA14_accept;
6959
            this.special = DFA14_special;
6960
            this.transition = DFA14_transition;
6961

    
6962
        }
6963

    
6964
        override public string Description
6965
        {
6966
            get { return "211:1: complexType returns [UlyssesType aTypeSymbol] : ( T_LIST T_LSQPAREN numOfElements= ( T_INTNUMBER | T_IDENTIFIER ) T_RSQPAREN T_OF innertype= complexType | T_LSQPAREN alistelem= T_IDENTIFIER ( T_COMMA otherlistelem= T_IDENTIFIER )* T_RSQPAREN | T_MAP ( T_LSQPAREN numOfElements= ( T_INTNUMBER | T_IDENTIFIER ) T_RSQPAREN )? mapfromtype= simpleType T_TO maptotype= complexType | T_QUANTITY T_OF T_LSQPAREN (alandmark= T_IDENTIFIER | alandmark= T_MINUS T_INFTY ) ( T_COMMA (otherlandmark= T_IDENTIFIER | otherlandmark= T_INFTY ) )* T_RSQPAREN | T_LPAREN aType= complexType ( T_COMMA anotherType= complexType )* T_RPAREN | r= simpleType );"; }
6967
        }
6968

    
6969
    }
6970

    
6971
    const string DFA67_eotS =
6972
        "\x32\uffff";
6973
    const string DFA67_eofS =
6974
        "\x32\uffff";
6975
    const string DFA67_minS =
6976
        "\x01\x05\x31\uffff";
6977
    const string DFA67_maxS =
6978
        "\x01\x76\x31\uffff";
6979
    const string DFA67_acceptS =
6980
        "\x01\uffff\x01\x02\x12\uffff\x01\x01\x1d\uffff";
6981
    const string DFA67_specialS =
6982
        "\x32\uffff}>";
6983
    static readonly string[] DFA67_transitionS = {
6984
            "\x01\x01\x01\uffff\x01\x01\x01\uffff\x01\x14\x02\x01\x01\uffff"+
6985
            "\x01\x01\x03\uffff\x01\x01\x01\uffff\x01\x01\x03\uffff\x01\x14"+
6986
            "\x08\uffff\x01\x01\x02\uffff\x03\x01\x04\uffff\x02\x01\x03\uffff"+
6987
            "\x03\x14\x07\uffff\x01\x01\x08\x14\x01\uffff\x11\x14\x02\uffff"+
6988
            "\x02\x01\x07\uffff\x02\x01\x15\uffff\x01\x01",
6989
            "",
6990
            "",
6991
            "",
6992
            "",
6993
            "",
6994
            "",
6995
            "",
6996
            "",
6997
            "",
6998
            "",
6999
            "",
7000
            "",
7001
            "",
7002
            "",
7003
            "",
7004
            "",
7005
            "",
7006
            "",
7007
            "",
7008
            "",
7009
            "",
7010
            "",
7011
            "",
7012
            "",
7013
            "",
7014
            "",
7015
            "",
7016
            "",
7017
            "",
7018
            "",
7019
            "",
7020
            "",
7021
            "",
7022
            "",
7023
            "",
7024
            "",
7025
            "",
7026
            "",
7027
            "",
7028
            "",
7029
            "",
7030
            "",
7031
            "",
7032
            "",
7033
            "",
7034
            "",
7035
            "",
7036
            "",
7037
            ""
7038
    };
7039

    
7040
    static readonly short[] DFA67_eot = DFA.UnpackEncodedString(DFA67_eotS);
7041
    static readonly short[] DFA67_eof = DFA.UnpackEncodedString(DFA67_eofS);
7042
    static readonly char[] DFA67_min = DFA.UnpackEncodedStringToUnsignedChars(DFA67_minS);
7043
    static readonly char[] DFA67_max = DFA.UnpackEncodedStringToUnsignedChars(DFA67_maxS);
7044
    static readonly short[] DFA67_accept = DFA.UnpackEncodedString(DFA67_acceptS);
7045
    static readonly short[] DFA67_special = DFA.UnpackEncodedString(DFA67_specialS);
7046
    static readonly short[][] DFA67_transition = DFA.UnpackEncodedStringArray(DFA67_transitionS);
7047

    
7048
    protected class DFA67 : DFA
7049
    {
7050
        public DFA67(BaseRecognizer recognizer)
7051
        {
7052
            this.recognizer = recognizer;
7053
            this.decisionNumber = 67;
7054
            this.eot = DFA67_eot;
7055
            this.eof = DFA67_eof;
7056
            this.min = DFA67_min;
7057
            this.max = DFA67_max;
7058
            this.accept = DFA67_accept;
7059
            this.special = DFA67_special;
7060
            this.transition = DFA67_transition;
7061

    
7062
        }
7063

    
7064
        override public string Description
7065
        {
7066
            get { return "()* loopback of 585:3: (op= binoperator right= atomExpression )*"; }
7067
        }
7068

    
7069
    }
7070

    
7071
    const string DFA70_eotS =
7072
        "\x1f\uffff";
7073
    const string DFA70_eofS =
7074
        "\x1f\uffff";
7075
    const string DFA70_minS =
7076
        "\x01\x09\x1e\uffff";
7077
    const string DFA70_maxS =
7078
        "\x01\x53\x1e\uffff";
7079
    const string DFA70_acceptS =
7080
        "\x01\uffff\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01"+
7081
        "\x07\x01\x08\x01\x09\x01\x0a\x01\x0b\x01\x0c\x01\x0d\x01\x0e\x01"+
7082
        "\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01"+
7083
        "\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e";
7084
    const string DFA70_specialS =
7085
        "\x1f\uffff}>";
7086
    static readonly string[] DFA70_transitionS = {
7087
            "\x01\x06\x0d\uffff\x01\x09\x17\uffff\x01\x0a\x01\x14\x01\x10"+
7088
            "\x08\uffff\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x07\x01"+
7089
            "\x08\x01\x0b\x01\uffff\x01\x0c\x01\x0d\x01\x0e\x01\x0f\x01\x11"+
7090
            "\x01\x12\x01\x13\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01"+
7091
            "\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e",
7092
            "",
7093
            "",
7094
            "",
7095
            "",
7096
            "",
7097
            "",
7098
            "",
7099
            "",
7100
            "",
7101
            "",
7102
            "",
7103
            "",
7104
            "",
7105
            "",
7106
            "",
7107
            "",
7108
            "",
7109
            "",
7110
            "",
7111
            "",
7112
            "",
7113
            "",
7114
            "",
7115
            "",
7116
            "",
7117
            "",
7118
            "",
7119
            "",
7120
            "",
7121
            ""
7122
    };
7123

    
7124
    static readonly short[] DFA70_eot = DFA.UnpackEncodedString(DFA70_eotS);
7125
    static readonly short[] DFA70_eof = DFA.UnpackEncodedString(DFA70_eofS);
7126
    static readonly char[] DFA70_min = DFA.UnpackEncodedStringToUnsignedChars(DFA70_minS);
7127
    static readonly char[] DFA70_max = DFA.UnpackEncodedStringToUnsignedChars(DFA70_maxS);
7128
    static readonly short[] DFA70_accept = DFA.UnpackEncodedString(DFA70_acceptS);
7129
    static readonly short[] DFA70_special = DFA.UnpackEncodedString(DFA70_specialS);
7130
    static readonly short[][] DFA70_transition = DFA.UnpackEncodedStringArray(DFA70_transitionS);
7131

    
7132
    protected class DFA70 : DFA
7133
    {
7134
        public DFA70(BaseRecognizer recognizer)
7135
        {
7136
            this.recognizer = recognizer;
7137
            this.decisionNumber = 70;
7138
            this.eot = DFA70_eot;
7139
            this.eof = DFA70_eof;
7140
            this.min = DFA70_min;
7141
            this.max = DFA70_max;
7142
            this.accept = DFA70_accept;
7143
            this.special = DFA70_special;
7144
            this.transition = DFA70_transition;
7145

    
7146
        }
7147

    
7148
        override public string Description
7149
        {
7150
            get { return "596:1: binoperator returns [BinaryOperator binop] : ( T_BIIMPLIES | T_GREATER | T_GREATEREQUAL | T_LESS | T_LESSEQUAL | T_EQUAL | T_NOTEQUAL | T_IMPLIES | T_MINUS | T_SUM | T_IN ( T_SET )? | T_NOT T_IN ( T_SET )? | T_SUBSET | T_OR | T_DIV | T_PROD | T_IDIV | T_MOD | T_UNION | T_DIFF | T_INTER | T_AND | T_POW | T_CONC | T_DOMRESBY | T_DOMRESTO | T_RNGRESBY | T_RNGRESTO | T_MUNION | T_SEQMOD_MAPOVERRIDE );"; }
7151
        }
7152

    
7153
    }
7154

    
7155
    const string DFA68_eotS =
7156
        "\x20\uffff";
7157
    const string DFA68_eofS =
7158
        "\x20\uffff";
7159
    const string DFA68_minS =
7160
        "\x01\x08\x1f\uffff";
7161
    const string DFA68_maxS =
7162
        "\x01\x7a\x1f\uffff";
7163
    const string DFA68_acceptS =
7164
        "\x01\uffff\x01\x01\x01\x02\x1d\uffff";
7165
    const string DFA68_specialS =
7166
        "\x20\uffff}>";
7167
    static readonly string[] DFA68_transitionS = {
7168
            "\x01\x02\x03\uffff\x01\x02\x02\uffff\x02\x02\x06\uffff\x01"+
7169
            "\x02\x05\uffff\x01\x02\x01\uffff\x01\x02\x17\uffff\x01\x02\x0a"+
7170
            "\uffff\x01\x01\x01\x02\x11\uffff\x01\x02\x02\uffff\x07\x02\x03"+
7171
            "\uffff\x0d\x02\x0b\uffff\x01\x02",
7172
            "",
7173
            "",
7174
            "",
7175
            "",
7176
            "",
7177
            "",
7178
            "",
7179
            "",
7180
            "",
7181
            "",
7182
            "",
7183
            "",
7184
            "",
7185
            "",
7186
            "",
7187
            "",
7188
            "",
7189
            "",
7190
            "",
7191
            "",
7192
            "",
7193
            "",
7194
            "",
7195
            "",
7196
            "",
7197
            "",
7198
            "",
7199
            "",
7200
            "",
7201
            "",
7202
            ""
7203
    };
7204

    
7205
    static readonly short[] DFA68_eot = DFA.UnpackEncodedString(DFA68_eotS);
7206
    static readonly short[] DFA68_eof = DFA.UnpackEncodedString(DFA68_eofS);
7207
    static readonly char[] DFA68_min = DFA.UnpackEncodedStringToUnsignedChars(DFA68_minS);
7208
    static readonly char[] DFA68_max = DFA.UnpackEncodedStringToUnsignedChars(DFA68_maxS);
7209
    static readonly short[] DFA68_accept = DFA.UnpackEncodedString(DFA68_acceptS);
7210
    static readonly short[] DFA68_special = DFA.UnpackEncodedString(DFA68_specialS);
7211
    static readonly short[][] DFA68_transition = DFA.UnpackEncodedStringArray(DFA68_transitionS);
7212

    
7213
    protected class DFA68 : DFA
7214
    {
7215
        public DFA68(BaseRecognizer recognizer)
7216
        {
7217
            this.recognizer = recognizer;
7218
            this.decisionNumber = 68;
7219
            this.eot = DFA68_eot;
7220
            this.eof = DFA68_eof;
7221
            this.min = DFA68_min;
7222
            this.max = DFA68_max;
7223
            this.accept = DFA68_accept;
7224
            this.special = DFA68_special;
7225
            this.transition = DFA68_transition;
7226

    
7227
        }
7228

    
7229
        override public string Description
7230
        {
7231
            get { return "618:9: ( T_SET )?"; }
7232
        }
7233

    
7234
    }
7235

    
7236
    const string DFA69_eotS =
7237
        "\x20\uffff";
7238
    const string DFA69_eofS =
7239
        "\x20\uffff";
7240
    const string DFA69_minS =
7241
        "\x01\x08\x1f\uffff";
7242
    const string DFA69_maxS =
7243
        "\x01\x7a\x1f\uffff";
7244
    const string DFA69_acceptS =
7245
        "\x01\uffff\x01\x01\x01\x02\x1d\uffff";
7246
    const string DFA69_specialS =
7247
        "\x20\uffff}>";
7248
    static readonly string[] DFA69_transitionS = {
7249
            "\x01\x02\x03\uffff\x01\x02\x02\uffff\x02\x02\x06\uffff\x01"+
7250
            "\x02\x05\uffff\x01\x02\x01\uffff\x01\x02\x17\uffff\x01\x02\x0a"+
7251
            "\uffff\x01\x01\x01\x02\x11\uffff\x01\x02\x02\uffff\x07\x02\x03"+
7252
            "\uffff\x0d\x02\x0b\uffff\x01\x02",
7253
            "",
7254
            "",
7255
            "",
7256
            "",
7257
            "",
7258
            "",
7259
            "",
7260
            "",
7261
            "",
7262
            "",
7263
            "",
7264
            "",
7265
            "",
7266
            "",
7267
            "",
7268
            "",
7269
            "",
7270
            "",
7271
            "",
7272
            "",
7273
            "",
7274
            "",
7275
            "",
7276
            "",
7277
            "",
7278
            "",
7279
            "",
7280
            "",
7281
            "",
7282
            "",
7283
            ""
7284
    };
7285

    
7286
    static readonly short[] DFA69_eot = DFA.UnpackEncodedString(DFA69_eotS);
7287
    static readonly short[] DFA69_eof = DFA.UnpackEncodedString(DFA69_eofS);
7288
    static readonly char[] DFA69_min = DFA.UnpackEncodedStringToUnsignedChars(DFA69_minS);
7289
    static readonly char[] DFA69_max = DFA.UnpackEncodedStringToUnsignedChars(DFA69_maxS);
7290
    static readonly short[] DFA69_accept = DFA.UnpackEncodedString(DFA69_acceptS);
7291
    static readonly short[] DFA69_special = DFA.UnpackEncodedString(DFA69_specialS);
7292
    static readonly short[][] DFA69_transition = DFA.UnpackEncodedStringArray(DFA69_transitionS);
7293

    
7294
    protected class DFA69 : DFA
7295
    {
7296
        public DFA69(BaseRecognizer recognizer)
7297
        {
7298
            this.recognizer = recognizer;
7299
            this.decisionNumber = 69;
7300
            this.eot = DFA69_eot;
7301
            this.eof = DFA69_eof;
7302
            this.min = DFA69_min;
7303
            this.max = DFA69_max;
7304
            this.accept = DFA69_accept;
7305
            this.special = DFA69_special;
7306
            this.transition = DFA69_transition;
7307

    
7308
        }
7309

    
7310
        override public string Description
7311
        {
7312
            get { return "620:15: ( T_SET )?"; }
7313
        }
7314

    
7315
    }
7316

    
7317
    const string DFA77_eotS =
7318
        "\x1f\uffff";
7319
    const string DFA77_eofS =
7320
        "\x1f\uffff";
7321
    const string DFA77_minS =
7322
        "\x01\x08\x1e\uffff";
7323
    const string DFA77_maxS =
7324
        "\x01\x7a\x1e\uffff";
7325
    const string DFA77_acceptS =
7326
        "\x01\uffff\x01\x01\x1c\uffff\x01\x02";
7327
    const string DFA77_specialS =
7328
        "\x1f\uffff}>";
7329
    static readonly string[] DFA77_transitionS = {
7330
            "\x01\x01\x03\uffff\x01\x01\x02\uffff\x02\x01\x06\uffff\x01"+
7331
            "\x01\x05\uffff\x01\x01\x01\uffff\x01\x01\x17\uffff\x01\x01\x0b"+
7332
            "\uffff\x01\x01\x11\uffff\x01\x1e\x02\uffff\x07\x01\x03\uffff"+
7333
            "\x0d\x01\x0b\uffff\x01\x01",
7334
            "",
7335
            "",
7336
            "",
7337
            "",
7338
            "",
7339
            "",
7340
            "",
7341
            "",
7342
            "",
7343
            "",
7344
            "",
7345
            "",
7346
            "",
7347
            "",
7348
            "",
7349
            "",
7350
            "",
7351
            "",
7352
            "",
7353
            "",
7354
            "",
7355
            "",
7356
            "",
7357
            "",
7358
            "",
7359
            "",
7360
            "",
7361
            "",
7362
            "",
7363
            ""
7364
    };
7365

    
7366
    static readonly short[] DFA77_eot = DFA.UnpackEncodedString(DFA77_eotS);
7367
    static readonly short[] DFA77_eof = DFA.UnpackEncodedString(DFA77_eofS);
7368
    static readonly char[] DFA77_min = DFA.UnpackEncodedStringToUnsignedChars(DFA77_minS);
7369
    static readonly char[] DFA77_max = DFA.UnpackEncodedStringToUnsignedChars(DFA77_maxS);
7370
    static readonly short[] DFA77_accept = DFA.UnpackEncodedString(DFA77_acceptS);
7371
    static readonly short[] DFA77_special = DFA.UnpackEncodedString(DFA77_specialS);
7372
    static readonly short[][] DFA77_transition = DFA.UnpackEncodedStringArray(DFA77_transitionS);
7373

    
7374
    protected class DFA77 : DFA
7375
    {
7376
        public DFA77(BaseRecognizer recognizer)
7377
        {
7378
            this.recognizer = recognizer;
7379
            this.decisionNumber = 77;
7380
            this.eot = DFA77_eot;
7381
            this.eof = DFA77_eof;
7382
            this.min = DFA77_min;
7383
            this.max = DFA77_max;
7384
            this.accept = DFA77_accept;
7385
            this.special = DFA77_special;
7386
            this.transition = DFA77_transition;
7387

    
7388
        }
7389

    
7390
        override public string Description
7391
        {
7392
            get { return "662:1: atomExpression returns [Expression expr] : ( ( (unexpr= op_un )? (e= identifierExpression | e= qvalExpression | e= constant | e= initializedComplexType | e= quantifierExpression | T_LPAREN e= expression T_RPAREN ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[e] )? | e= accessExpression[e] )? ) ( 'as' cid= T_IDENTIFIER )? ) | ie= T_IF ce= expression T_THEN te= expression T_ELSE ee= expression T_END );"; }
7393
        }
7394

    
7395
    }
7396

    
7397
    const string DFA71_eotS =
7398
        "\x1e\uffff";
7399
    const string DFA71_eofS =
7400
        "\x1e\uffff";
7401
    const string DFA71_minS =
7402
        "\x01\x08\x1d\uffff";
7403
    const string DFA71_maxS =
7404
        "\x01\x7a\x1d\uffff";
7405
    const string DFA71_acceptS =
7406
        "\x01\uffff\x01\x01\x0e\uffff\x01\x02\x0d\uffff";
7407
    const string DFA71_specialS =
7408
        "\x1e\uffff}>";
7409
    static readonly string[] DFA71_transitionS = {
7410
            "\x01\x10\x03\uffff\x01\x10\x02\uffff\x02\x10\x06\uffff\x01"+
7411
            "\x01\x05\uffff\x01\x10\x01\uffff\x01\x10\x17\uffff\x01\x10\x0b"+
7412
            "\uffff\x01\x01\x14\uffff\x07\x10\x03\uffff\x0d\x01\x0b\uffff"+
7413
            "\x01\x10",
7414
            "",
7415
            "",
7416
            "",
7417
            "",
7418
            "",
7419
            "",
7420
            "",
7421
            "",
7422
            "",
7423
            "",
7424
            "",
7425
            "",
7426
            "",
7427
            "",
7428
            "",
7429
            "",
7430
            "",
7431
            "",
7432
            "",
7433
            "",
7434
            "",
7435
            "",
7436
            "",
7437
            "",
7438
            "",
7439
            "",
7440
            "",
7441
            "",
7442
            ""
7443
    };
7444

    
7445
    static readonly short[] DFA71_eot = DFA.UnpackEncodedString(DFA71_eotS);
7446
    static readonly short[] DFA71_eof = DFA.UnpackEncodedString(DFA71_eofS);
7447
    static readonly char[] DFA71_min = DFA.UnpackEncodedStringToUnsignedChars(DFA71_minS);
7448
    static readonly char[] DFA71_max = DFA.UnpackEncodedStringToUnsignedChars(DFA71_maxS);
7449
    static readonly short[] DFA71_accept = DFA.UnpackEncodedString(DFA71_acceptS);
7450
    static readonly short[] DFA71_special = DFA.UnpackEncodedString(DFA71_specialS);
7451
    static readonly short[][] DFA71_transition = DFA.UnpackEncodedStringArray(DFA71_transitionS);
7452

    
7453
    protected class DFA71 : DFA
7454
    {
7455
        public DFA71(BaseRecognizer recognizer)
7456
        {
7457
            this.recognizer = recognizer;
7458
            this.decisionNumber = 71;
7459
            this.eot = DFA71_eot;
7460
            this.eof = DFA71_eof;
7461
            this.min = DFA71_min;
7462
            this.max = DFA71_max;
7463
            this.accept = DFA71_accept;
7464
            this.special = DFA71_special;
7465
            this.transition = DFA71_transition;
7466

    
7467
        }
7468

    
7469
        override public string Description
7470
        {
7471
            get { return "667:11: (unexpr= op_un )?"; }
7472
        }
7473

    
7474
    }
7475

    
7476
    const string DFA75_eotS =
7477
        "\x42\uffff";
7478
    const string DFA75_eofS =
7479
        "\x42\uffff";
7480
    const string DFA75_minS =
7481
        "\x01\x08\x01\uffff\x01\x05\x3f\uffff";
7482
    const string DFA75_maxS =
7483
        "\x01\x7a\x01\uffff\x01\x79\x3f\uffff";
7484
    const string DFA75_acceptS =
7485
        "\x01\uffff\x01\x01\x01\uffff\x01\x02\x01\x03\x05\uffff\x01\x04"+
7486
        "\x02\uffff\x01\x05\x01\x06\x33\uffff";
7487
    const string DFA75_specialS =
7488
        "\x42\uffff}>";
7489
    static readonly string[] DFA75_transitionS = {
7490
            "\x01\x01\x03\uffff\x01\x0e\x02\uffff\x01\x0a\x01\x04\x0c\uffff"+
7491
            "\x01\x04\x01\uffff\x01\x0a\x17\uffff\x01\x02\x20\uffff\x02\x0d"+
7492
            "\x04\x04\x01\x0a\x1b\uffff\x01\x03",
7493
            "",
7494
            "\x01\x04\x01\uffff\x01\x04\x01\uffff\x03\x04\x01\uffff\x01"+
7495
            "\x04\x03\uffff\x01\x04\x01\uffff\x01\x04\x03\uffff\x01\x04\x08"+
7496
            "\uffff\x01\x04\x02\uffff\x03\x04\x04\uffff\x02\x04\x03\uffff"+
7497
            "\x03\x04\x07\uffff\x09\x04\x01\uffff\x11\x04\x01\x01\x01\uffff"+
7498
            "\x02\x04\x07\uffff\x02\x04\x15\uffff\x01\x04\x02\uffff\x01\x04",
7499
            "",
7500
            "",
7501
            "",
7502
            "",
7503
            "",
7504
            "",
7505
            "",
7506
            "",
7507
            "",
7508
            "",
7509
            "",
7510
            "",
7511
            "",
7512
            "",
7513
            "",
7514
            "",
7515
            "",
7516
            "",
7517
            "",
7518
            "",
7519
            "",
7520
            "",
7521
            "",
7522
            "",
7523
            "",
7524
            "",
7525
            "",
7526
            "",
7527
            "",
7528
            "",
7529
            "",
7530
            "",
7531
            "",
7532
            "",
7533
            "",
7534
            "",
7535
            "",
7536
            "",
7537
            "",
7538
            "",
7539
            "",
7540
            "",
7541
            "",
7542
            "",
7543
            "",
7544
            "",
7545
            "",
7546
            "",
7547
            "",
7548
            "",
7549
            "",
7550
            "",
7551
            "",
7552
            "",
7553
            "",
7554
            "",
7555
            "",
7556
            "",
7557
            "",
7558
            "",
7559
            "",
7560
            "",
7561
            ""
7562
    };
7563

    
7564
    static readonly short[] DFA75_eot = DFA.UnpackEncodedString(DFA75_eotS);
7565
    static readonly short[] DFA75_eof = DFA.UnpackEncodedString(DFA75_eofS);
7566
    static readonly char[] DFA75_min = DFA.UnpackEncodedStringToUnsignedChars(DFA75_minS);
7567
    static readonly char[] DFA75_max = DFA.UnpackEncodedStringToUnsignedChars(DFA75_maxS);
7568
    static readonly short[] DFA75_accept = DFA.UnpackEncodedString(DFA75_acceptS);
7569
    static readonly short[] DFA75_special = DFA.UnpackEncodedString(DFA75_specialS);
7570
    static readonly short[][] DFA75_transition = DFA.UnpackEncodedStringArray(DFA75_transitionS);
7571

    
7572
    protected class DFA75 : DFA
7573
    {
7574
        public DFA75(BaseRecognizer recognizer)
7575
        {
7576
            this.recognizer = recognizer;
7577
            this.decisionNumber = 75;
7578
            this.eot = DFA75_eot;
7579
            this.eof = DFA75_eof;
7580
            this.min = DFA75_min;
7581
            this.max = DFA75_max;
7582
            this.accept = DFA75_accept;
7583
            this.special = DFA75_special;
7584
            this.transition = DFA75_transition;
7585

    
7586
        }
7587

    
7588
        override public string Description
7589
        {
7590
            get { return "667:19: (e= identifierExpression | e= qvalExpression | e= constant | e= initializedComplexType | e= quantifierExpression | T_LPAREN e= expression T_RPAREN ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[e] )? | e= accessExpression[e] )? )"; }
7591
        }
7592

    
7593
    }
7594

    
7595
    const string DFA74_eotS =
7596
        "\x36\uffff";
7597
    const string DFA74_eofS =
7598
        "\x36\uffff";
7599
    const string DFA74_minS =
7600
        "\x01\x05\x35\uffff";
7601
    const string DFA74_maxS =
7602
        "\x01\x79\x35\uffff";
7603
    const string DFA74_acceptS =
7604
        "\x01\uffff\x01\x01\x01\x02\x01\uffff\x01\x03\x31\uffff";
7605
    const string DFA74_specialS =
7606
        "\x36\uffff}>";
7607
    static readonly string[] DFA74_transitionS = {
7608
            "\x01\x04\x01\uffff\x01\x04\x01\uffff\x03\x04\x01\x02\x01\x04"+
7609
            "\x01\uffff\x01\x02\x01\uffff\x01\x04\x01\uffff\x01\x04\x03\uffff"+
7610
            "\x01\x04\x08\uffff\x01\x04\x02\uffff\x03\x04\x04\uffff\x02\x04"+
7611
            "\x03\uffff\x03\x04\x07\uffff\x09\x04\x01\uffff\x11\x04\x01\x01"+
7612
            "\x01\uffff\x02\x04\x07\uffff\x02\x04\x15\uffff\x01\x04\x02\uffff"+
7613
            "\x01\x04",
7614
            "",
7615
            "",
7616
            "",
7617
            "",
7618
            "",
7619
            "",
7620
            "",
7621
            "",
7622
            "",
7623
            "",
7624
            "",
7625
            "",
7626
            "",
7627
            "",
7628
            "",
7629
            "",
7630
            "",
7631
            "",
7632
            "",
7633
            "",
7634
            "",
7635
            "",
7636
            "",
7637
            "",
7638
            "",
7639
            "",
7640
            "",
7641
            "",
7642
            "",
7643
            "",
7644
            "",
7645
            "",
7646
            "",
7647
            "",
7648
            "",
7649
            "",
7650
            "",
7651
            "",
7652
            "",
7653
            "",
7654
            "",
7655
            "",
7656
            "",
7657
            "",
7658
            "",
7659
            "",
7660
            "",
7661
            "",
7662
            "",
7663
            "",
7664
            "",
7665
            "",
7666
            ""
7667
    };
7668

    
7669
    static readonly short[] DFA74_eot = DFA.UnpackEncodedString(DFA74_eotS);
7670
    static readonly short[] DFA74_eof = DFA.UnpackEncodedString(DFA74_eofS);
7671
    static readonly char[] DFA74_min = DFA.UnpackEncodedStringToUnsignedChars(DFA74_minS);
7672
    static readonly char[] DFA74_max = DFA.UnpackEncodedStringToUnsignedChars(DFA74_maxS);
7673
    static readonly short[] DFA74_accept = DFA.UnpackEncodedString(DFA74_acceptS);
7674
    static readonly short[] DFA74_special = DFA.UnpackEncodedString(DFA74_specialS);
7675
    static readonly short[][] DFA74_transition = DFA.UnpackEncodedStringArray(DFA74_transitionS);
7676

    
7677
    protected class DFA74 : DFA
7678
    {
7679
        public DFA74(BaseRecognizer recognizer)
7680
        {
7681
            this.recognizer = recognizer;
7682
            this.decisionNumber = 74;
7683
            this.eot = DFA74_eot;
7684
            this.eof = DFA74_eof;
7685
            this.min = DFA74_min;
7686
            this.max = DFA74_max;
7687
            this.accept = DFA74_accept;
7688
            this.special = DFA74_special;
7689
            this.transition = DFA74_transition;
7690

    
7691
        }
7692

    
7693
        override public string Description
7694
        {
7695
            get { return "674:8: ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[e] )? | e= accessExpression[e] )?"; }
7696
        }
7697

    
7698
    }
7699

    
7700
    const string DFA72_eotS =
7701
        "\x36\uffff";
7702
    const string DFA72_eofS =
7703
        "\x36\uffff";
7704
    const string DFA72_minS =
7705
        "\x01\x05\x35\uffff";
7706
    const string DFA72_maxS =
7707
        "\x01\x79\x35\uffff";
7708
    const string DFA72_acceptS =
7709
        "\x01\uffff\x01\x02\x33\uffff\x01\x01";
7710
    const string DFA72_specialS =
7711
        "\x36\uffff}>";
7712
    static readonly string[] DFA72_transitionS = {
7713
            "\x01\x01\x01\uffff\x01\x01\x01\uffff\x05\x01\x01\uffff\x01"+
7714
            "\x01\x01\uffff\x01\x01\x01\uffff\x01\x01\x03\uffff\x01\x01\x08"+
7715
            "\uffff\x01\x01\x02\uffff\x03\x01\x04\uffff\x02\x01\x03\uffff"+
7716
            "\x03\x01\x07\uffff\x09\x01\x01\uffff\x11\x01\x01\x35\x01\uffff"+
7717
            "\x02\x01\x07\uffff\x02\x01\x15\uffff\x01\x01\x02\uffff\x01\x01",
7718
            "",
7719
            "",
7720
            "",
7721
            "",
7722
            "",
7723
            "",
7724
            "",
7725
            "",
7726
            "",
7727
            "",
7728
            "",
7729
            "",
7730
            "",
7731
            "",
7732
            "",
7733
            "",
7734
            "",
7735
            "",
7736
            "",
7737
            "",
7738
            "",
7739
            "",
7740
            "",
7741
            "",
7742
            "",
7743
            "",
7744
            "",
7745
            "",
7746
            "",
7747
            "",
7748
            "",
7749
            "",
7750
            "",
7751
            "",
7752
            "",
7753
            "",
7754
            "",
7755
            "",
7756
            "",
7757
            "",
7758
            "",
7759
            "",
7760
            "",
7761
            "",
7762
            "",
7763
            "",
7764
            "",
7765
            "",
7766
            "",
7767
            "",
7768
            "",
7769
            "",
7770
            ""
7771
    };
7772

    
7773
    static readonly short[] DFA72_eot = DFA.UnpackEncodedString(DFA72_eotS);
7774
    static readonly short[] DFA72_eof = DFA.UnpackEncodedString(DFA72_eofS);
7775
    static readonly char[] DFA72_min = DFA.UnpackEncodedStringToUnsignedChars(DFA72_minS);
7776
    static readonly char[] DFA72_max = DFA.UnpackEncodedStringToUnsignedChars(DFA72_maxS);
7777
    static readonly short[] DFA72_accept = DFA.UnpackEncodedString(DFA72_acceptS);
7778
    static readonly short[] DFA72_special = DFA.UnpackEncodedString(DFA72_specialS);
7779
    static readonly short[][] DFA72_transition = DFA.UnpackEncodedStringArray(DFA72_transitionS);
7780

    
7781
    protected class DFA72 : DFA
7782
    {
7783
        public DFA72(BaseRecognizer recognizer)
7784
        {
7785
            this.recognizer = recognizer;
7786
            this.decisionNumber = 72;
7787
            this.eot = DFA72_eot;
7788
            this.eof = DFA72_eof;
7789
            this.min = DFA72_min;
7790
            this.max = DFA72_max;
7791
            this.accept = DFA72_accept;
7792
            this.special = DFA72_special;
7793
            this.transition = DFA72_transition;
7794

    
7795
        }
7796

    
7797
        override public string Description
7798
        {
7799
            get { return "()+ loopback of 675:6: ( T_POINT idn= T_IDENTIFIER )+"; }
7800
        }
7801

    
7802
    }
7803

    
7804
    const string DFA73_eotS =
7805
        "\x35\uffff";
7806
    const string DFA73_eofS =
7807
        "\x35\uffff";
7808
    const string DFA73_minS =
7809
        "\x01\x05\x34\uffff";
7810
    const string DFA73_maxS =
7811
        "\x01\x79\x34\uffff";
7812
    const string DFA73_acceptS =
7813
        "\x01\uffff\x01\x01\x01\uffff\x01\x02\x31\uffff";
7814
    const string DFA73_specialS =
7815
        "\x35\uffff}>";
7816
    static readonly string[] DFA73_transitionS = {
7817
            "\x01\x03\x01\uffff\x01\x03\x01\uffff\x03\x03\x01\x01\x01\x03"+
7818
            "\x01\uffff\x01\x01\x01\uffff\x01\x03\x01\uffff\x01\x03\x03\uffff"+
7819
            "\x01\x03\x08\uffff\x01\x03\x02\uffff\x03\x03\x04\uffff\x02\x03"+
7820
            "\x03\uffff\x03\x03\x07\uffff\x09\x03\x01\uffff\x11\x03\x02\uffff"+
7821
            "\x02\x03\x07\uffff\x02\x03\x15\uffff\x01\x03\x02\uffff\x01\x03",
7822
            "",
7823
            "",
7824
            "",
7825
            "",
7826
            "",
7827
            "",
7828
            "",
7829
            "",
7830
            "",
7831
            "",
7832
            "",
7833
            "",
7834
            "",
7835
            "",
7836
            "",
7837
            "",
7838
            "",
7839
            "",
7840
            "",
7841
            "",
7842
            "",
7843
            "",
7844
            "",
7845
            "",
7846
            "",
7847
            "",
7848
            "",
7849
            "",
7850
            "",
7851
            "",
7852
            "",
7853
            "",
7854
            "",
7855
            "",
7856
            "",
7857
            "",
7858
            "",
7859
            "",
7860
            "",
7861
            "",
7862
            "",
7863
            "",
7864
            "",
7865
            "",
7866
            "",
7867
            "",
7868
            "",
7869
            "",
7870
            "",
7871
            "",
7872
            "",
7873
            ""
7874
    };
7875

    
7876
    static readonly short[] DFA73_eot = DFA.UnpackEncodedString(DFA73_eotS);
7877
    static readonly short[] DFA73_eof = DFA.UnpackEncodedString(DFA73_eofS);
7878
    static readonly char[] DFA73_min = DFA.UnpackEncodedStringToUnsignedChars(DFA73_minS);
7879
    static readonly char[] DFA73_max = DFA.UnpackEncodedStringToUnsignedChars(DFA73_maxS);
7880
    static readonly short[] DFA73_accept = DFA.UnpackEncodedString(DFA73_acceptS);
7881
    static readonly short[] DFA73_special = DFA.UnpackEncodedString(DFA73_specialS);
7882
    static readonly short[][] DFA73_transition = DFA.UnpackEncodedStringArray(DFA73_transitionS);
7883

    
7884
    protected class DFA73 : DFA
7885
    {
7886
        public DFA73(BaseRecognizer recognizer)
7887
        {
7888
            this.recognizer = recognizer;
7889
            this.decisionNumber = 73;
7890
            this.eot = DFA73_eot;
7891
            this.eof = DFA73_eof;
7892
            this.min = DFA73_min;
7893
            this.max = DFA73_max;
7894
            this.accept = DFA73_accept;
7895
            this.special = DFA73_special;
7896
            this.transition = DFA73_transition;
7897

    
7898
        }
7899

    
7900
        override public string Description
7901
        {
7902
            get { return "678:8: (res= accessExpression[e] )?"; }
7903
        }
7904

    
7905
    }
7906

    
7907
    const string DFA76_eotS =
7908
        "\x33\uffff";
7909
    const string DFA76_eofS =
7910
        "\x33\uffff";
7911
    const string DFA76_minS =
7912
        "\x01\x05\x32\uffff";
7913
    const string DFA76_maxS =
7914
        "\x01\x79\x32\uffff";
7915
    const string DFA76_acceptS =
7916
        "\x01\uffff\x01\x01\x01\x02\x30\uffff";
7917
    const string DFA76_specialS =
7918
        "\x33\uffff}>";
7919
    static readonly string[] DFA76_transitionS = {
7920
            "\x01\x02\x01\uffff\x01\x02\x01\uffff\x03\x02\x01\uffff\x01"+
7921
            "\x02\x03\uffff\x01\x02\x01\uffff\x01\x02\x03\uffff\x01\x02\x08"+
7922
            "\uffff\x01\x02\x02\uffff\x03\x02\x04\uffff\x02\x02\x03\uffff"+
7923
            "\x03\x02\x07\uffff\x09\x02\x01\uffff\x11\x02\x02\uffff\x02\x02"+
7924
            "\x07\uffff\x02\x02\x15\uffff\x01\x02\x02\uffff\x01\x01",
7925
            "",
7926
            "",
7927
            "",
7928
            "",
7929
            "",
7930
            "",
7931
            "",
7932
            "",
7933
            "",
7934
            "",
7935
            "",
7936
            "",
7937
            "",
7938
            "",
7939
            "",
7940
            "",
7941
            "",
7942
            "",
7943
            "",
7944
            "",
7945
            "",
7946
            "",
7947
            "",
7948
            "",
7949
            "",
7950
            "",
7951
            "",
7952
            "",
7953
            "",
7954
            "",
7955
            "",
7956
            "",
7957
            "",
7958
            "",
7959
            "",
7960
            "",
7961
            "",
7962
            "",
7963
            "",
7964
            "",
7965
            "",
7966
            "",
7967
            "",
7968
            "",
7969
            "",
7970
            "",
7971
            "",
7972
            "",
7973
            "",
7974
            ""
7975
    };
7976

    
7977
    static readonly short[] DFA76_eot = DFA.UnpackEncodedString(DFA76_eotS);
7978
    static readonly short[] DFA76_eof = DFA.UnpackEncodedString(DFA76_eofS);
7979
    static readonly char[] DFA76_min = DFA.UnpackEncodedStringToUnsignedChars(DFA76_minS);
7980
    static readonly char[] DFA76_max = DFA.UnpackEncodedStringToUnsignedChars(DFA76_maxS);
7981
    static readonly short[] DFA76_accept = DFA.UnpackEncodedString(DFA76_acceptS);
7982
    static readonly short[] DFA76_special = DFA.UnpackEncodedString(DFA76_specialS);
7983
    static readonly short[][] DFA76_transition = DFA.UnpackEncodedStringArray(DFA76_transitionS);
7984

    
7985
    protected class DFA76 : DFA
7986
    {
7987
        public DFA76(BaseRecognizer recognizer)
7988
        {
7989
            this.recognizer = recognizer;
7990
            this.decisionNumber = 76;
7991
            this.eot = DFA76_eot;
7992
            this.eof = DFA76_eof;
7993
            this.min = DFA76_min;
7994
            this.max = DFA76_max;
7995
            this.accept = DFA76_accept;
7996
            this.special = DFA76_special;
7997
            this.transition = DFA76_transition;
7998

    
7999
        }
8000

    
8001
        override public string Description
8002
        {
8003
            get { return "682:5: ( 'as' cid= T_IDENTIFIER )?"; }
8004
        }
8005

    
8006
    }
8007

    
8008
    const string DFA86_eotS =
8009
        "\x21\uffff";
8010
    const string DFA86_eofS =
8011
        "\x21\uffff";
8012
    const string DFA86_minS =
8013
        "\x01\x1f\x01\x08\x1f\uffff";
8014
    const string DFA86_maxS =
8015
        "\x01\x1f\x01\x7a\x1f\uffff";
8016
    const string DFA86_acceptS =
8017
        "\x02\uffff\x01\x01\x01\x02\x1d\uffff";
8018
    const string DFA86_specialS =
8019
        "\x21\uffff}>";
8020
    static readonly string[] DFA86_transitionS = {
8021
            "\x01\x01",
8022
            "\x01\x03\x03\uffff\x01\x03\x02\uffff\x02\x03\x06\uffff\x01"+
8023
            "\x03\x05\uffff\x01\x03\x01\uffff\x01\x03\x17\uffff\x01\x03\x0b"+
8024
            "\uffff\x01\x03\x11\uffff\x01\x03\x02\uffff\x07\x03\x01\uffff"+
8025
            "\x01\x02\x01\uffff\x0d\x03\x0b\uffff\x01\x03",
8026
            "",
8027
            "",
8028
            "",
8029
            "",
8030
            "",
8031
            "",
8032
            "",
8033
            "",
8034
            "",
8035
            "",
8036
            "",
8037
            "",
8038
            "",
8039
            "",
8040
            "",
8041
            "",
8042
            "",
8043
            "",
8044
            "",
8045
            "",
8046
            "",
8047
            "",
8048
            "",
8049
            "",
8050
            "",
8051
            "",
8052
            "",
8053
            "",
8054
            "",
8055
            "",
8056
            ""
8057
    };
8058

    
8059
    static readonly short[] DFA86_eot = DFA.UnpackEncodedString(DFA86_eotS);
8060
    static readonly short[] DFA86_eof = DFA.UnpackEncodedString(DFA86_eofS);
8061
    static readonly char[] DFA86_min = DFA.UnpackEncodedStringToUnsignedChars(DFA86_minS);
8062
    static readonly char[] DFA86_max = DFA.UnpackEncodedStringToUnsignedChars(DFA86_maxS);
8063
    static readonly short[] DFA86_accept = DFA.UnpackEncodedString(DFA86_acceptS);
8064
    static readonly short[] DFA86_special = DFA.UnpackEncodedString(DFA86_specialS);
8065
    static readonly short[][] DFA86_transition = DFA.UnpackEncodedStringArray(DFA86_transitionS);
8066

    
8067
    protected class DFA86 : DFA
8068
    {
8069
        public DFA86(BaseRecognizer recognizer)
8070
        {
8071
            this.recognizer = recognizer;
8072
            this.decisionNumber = 86;
8073
            this.eot = DFA86_eot;
8074
            this.eof = DFA86_eof;
8075
            this.min = DFA86_min;
8076
            this.max = DFA86_max;
8077
            this.accept = DFA86_accept;
8078
            this.special = DFA86_special;
8079
            this.transition = DFA86_transition;
8080

    
8081
        }
8082

    
8083
        override public string Description
8084
        {
8085
            get { return "759:1: initializedSetType returns [Expression result] : ( T_CBRL T_MAPS T_CBRR | res= initializedSet );"; }
8086
        }
8087

    
8088
    }
8089

    
8090
    const string DFA99_eotS =
8091
        "\x3c\uffff";
8092
    const string DFA99_eofS =
8093
        "\x3c\uffff";
8094
    const string DFA99_minS =
8095
        "\x01\x08\x01\x05\x01\uffff\x01\x00\x38\uffff";
8096
    const string DFA99_maxS =
8097
        "\x01\x37\x01\x7e\x01\uffff\x01\x00\x38\uffff";
8098
    const string DFA99_acceptS =
8099
        "\x02\uffff\x01\x02\x38\uffff\x01\x01";
8100
    const string DFA99_specialS =
8101
        "\x03\uffff\x01\x00\x38\uffff}>";
8102
    static readonly string[] DFA99_transitionS = {
8103
            "\x01\x01\x2e\uffff\x01\x02",
8104
            "\x01\x02\x01\uffff\x01\x02\x01\uffff\x03\x02\x01\x03\x01\x02"+
8105
            "\x01\uffff\x01\x02\x01\uffff\x01\x02\x01\uffff\x01\x02\x03\uffff"+
8106
            "\x01\x02\x08\uffff\x01\x02\x02\uffff\x03\x02\x04\uffff\x02\x02"+
8107
            "\x03\uffff\x05\x02\x05\uffff\x09\x02\x01\uffff\x12\x02\x01\uffff"+
8108
            "\x02\x02\x07\uffff\x03\x02\x14\uffff\x01\x02\x02\uffff\x01\x02"+
8109
            "\x04\uffff\x01\x02",
8110
            "",
8111
            "\x01\uffff",
8112
            "",
8113
            "",
8114
            "",
8115
            "",
8116
            "",
8117
            "",
8118
            "",
8119
            "",
8120
            "",
8121
            "",
8122
            "",
8123
            "",
8124
            "",
8125
            "",
8126
            "",
8127
            "",
8128
            "",
8129
            "",
8130
            "",
8131
            "",
8132
            "",
8133
            "",
8134
            "",
8135
            "",
8136
            "",
8137
            "",
8138
            "",
8139
            "",
8140
            "",
8141
            "",
8142
            "",
8143
            "",
8144
            "",
8145
            "",
8146
            "",
8147
            "",
8148
            "",
8149
            "",
8150
            "",
8151
            "",
8152
            "",
8153
            "",
8154
            "",
8155
            "",
8156
            "",
8157
            "",
8158
            "",
8159
            "",
8160
            "",
8161
            "",
8162
            "",
8163
            "",
8164
            "",
8165
            "",
8166
            "",
8167
            ""
8168
    };
8169

    
8170
    static readonly short[] DFA99_eot = DFA.UnpackEncodedString(DFA99_eotS);
8171
    static readonly short[] DFA99_eof = DFA.UnpackEncodedString(DFA99_eofS);
8172
    static readonly char[] DFA99_min = DFA.UnpackEncodedStringToUnsignedChars(DFA99_minS);
8173
    static readonly char[] DFA99_max = DFA.UnpackEncodedStringToUnsignedChars(DFA99_maxS);
8174
    static readonly short[] DFA99_accept = DFA.UnpackEncodedString(DFA99_acceptS);
8175
    static readonly short[] DFA99_special = DFA.UnpackEncodedString(DFA99_specialS);
8176
    static readonly short[][] DFA99_transition = DFA.UnpackEncodedStringArray(DFA99_transitionS);
8177

    
8178
    protected class DFA99 : DFA
8179
    {
8180
        public DFA99(BaseRecognizer recognizer)
8181
        {
8182
            this.recognizer = recognizer;
8183
            this.decisionNumber = 99;
8184
            this.eot = DFA99_eot;
8185
            this.eof = DFA99_eof;
8186
            this.min = DFA99_min;
8187
            this.max = DFA99_max;
8188
            this.accept = DFA99_accept;
8189
            this.special = DFA99_special;
8190
            this.transition = DFA99_transition;
8191

    
8192
        }
8193

    
8194
        override public string Description
8195
        {
8196
            get { return "853:1: identifierExpression returns [Expression result] : ({...}?aName= T_IDENTIFIER T_LPAREN m_params= methodCallParams T_RPAREN | res= reference );"; }
8197
        }
8198

    
8199
    }
8200

    
8201

    
8202
    protected internal int DFA99_SpecialStateTransition(DFA dfa, int s, IIntStream _input) //throws NoViableAltException
8203
    {
8204
            ITokenStream input = (ITokenStream)_input;
8205
    	int _s = s;
8206
        switch ( s )
8207
        {
8208
               	case 0 : 
8209
                   	int LA99_3 = input.LA(1);
8210

    
8211
                   	 
8212
                   	int index99_3 = input.Index();
8213
                   	input.Rewind();
8214
                   	s = -1;
8215
                   	if ( ((isTuple(input.LT(1).Text))) ) { s = 59; }
8216

    
8217
                   	else if ( ((!isTuple(input.LT(1).Text))) ) { s = 2; }
8218

    
8219
                   	 
8220
                   	input.Seek(index99_3);
8221
                   	if ( s >= 0 ) return s;
8222
                   	break;
8223
        }
8224
        NoViableAltException nvae99 =
8225
            new NoViableAltException(dfa.Description, 99, _s, input);
8226
        dfa.Error(nvae99);
8227
        throw nvae99;
8228
    }
8229
    const string DFA100_eotS =
8230
        "\x39\uffff";
8231
    const string DFA100_eofS =
8232
        "\x39\uffff";
8233
    const string DFA100_minS =
8234
        "\x01\x05\x38\uffff";
8235
    const string DFA100_maxS =
8236
        "\x01\x7e\x38\uffff";
8237
    const string DFA100_acceptS =
8238
        "\x01\uffff\x01\x01\x01\uffff\x01\x02\x35\uffff";
8239
    const string DFA100_specialS =
8240
        "\x39\uffff}>";
8241
    static readonly string[] DFA100_transitionS = {
8242
            "\x01\x03\x01\uffff\x01\x03\x01\uffff\x03\x03\x01\x01\x01\x03"+
8243
            "\x01\uffff\x01\x01\x01\uffff\x01\x03\x01\uffff\x01\x03\x03\uffff"+
8244
            "\x01\x03\x08\uffff\x01\x03\x02\uffff\x03\x03\x04\uffff\x02\x03"+
8245
            "\x03\uffff\x05\x03\x04\uffff\x0a\x03\x01\uffff\x11\x03\x02\uffff"+
8246
            "\x02\x03\x07\uffff\x03\x03\x14\uffff\x01\x03\x02\uffff\x01\x03"+
8247
            "\x04\uffff\x01\x03",
8248
            "",
8249
            "",
8250
            "",
8251
            "",
8252
            "",
8253
            "",
8254
            "",
8255
            "",
8256
            "",
8257
            "",
8258
            "",
8259
            "",
8260
            "",
8261
            "",
8262
            "",
8263
            "",
8264
            "",
8265
            "",
8266
            "",
8267
            "",
8268
            "",
8269
            "",
8270
            "",
8271
            "",
8272
            "",
8273
            "",
8274
            "",
8275
            "",
8276
            "",
8277
            "",
8278
            "",
8279
            "",
8280
            "",
8281
            "",
8282
            "",
8283
            "",
8284
            "",
8285
            "",
8286
            "",
8287
            "",
8288
            "",
8289
            "",
8290
            "",
8291
            "",
8292
            "",
8293
            "",
8294
            "",
8295
            "",
8296
            "",
8297
            "",
8298
            "",
8299
            "",
8300
            "",
8301
            "",
8302
            "",
8303
            ""
8304
    };
8305

    
8306
    static readonly short[] DFA100_eot = DFA.UnpackEncodedString(DFA100_eotS);
8307
    static readonly short[] DFA100_eof = DFA.UnpackEncodedString(DFA100_eofS);
8308
    static readonly char[] DFA100_min = DFA.UnpackEncodedStringToUnsignedChars(DFA100_minS);
8309
    static readonly char[] DFA100_max = DFA.UnpackEncodedStringToUnsignedChars(DFA100_maxS);
8310
    static readonly short[] DFA100_accept = DFA.UnpackEncodedString(DFA100_acceptS);
8311
    static readonly short[] DFA100_special = DFA.UnpackEncodedString(DFA100_specialS);
8312
    static readonly short[][] DFA100_transition = DFA.UnpackEncodedStringArray(DFA100_transitionS);
8313

    
8314
    protected class DFA100 : DFA
8315
    {
8316
        public DFA100(BaseRecognizer recognizer)
8317
        {
8318
            this.recognizer = recognizer;
8319
            this.decisionNumber = 100;
8320
            this.eot = DFA100_eot;
8321
            this.eof = DFA100_eof;
8322
            this.min = DFA100_min;
8323
            this.max = DFA100_max;
8324
            this.accept = DFA100_accept;
8325
            this.special = DFA100_special;
8326
            this.transition = DFA100_transition;
8327

    
8328
        }
8329

    
8330
        override public string Description
8331
        {
8332
            get { return "873:3: (output= accessExpression[result] | )"; }
8333
        }
8334

    
8335
    }
8336

    
8337
    const string DFA102_eotS =
8338
        "\x37\uffff";
8339
    const string DFA102_eofS =
8340
        "\x37\uffff";
8341
    const string DFA102_minS =
8342
        "\x01\x05\x36\uffff";
8343
    const string DFA102_maxS =
8344
        "\x01\x7e\x36\uffff";
8345
    const string DFA102_acceptS =
8346
        "\x01\uffff\x01\x01\x01\x02\x01\uffff\x01\x03\x32\uffff";
8347
    const string DFA102_specialS =
8348
        "\x37\uffff}>";
8349
    static readonly string[] DFA102_transitionS = {
8350
            "\x01\x04\x01\uffff\x01\x04\x01\uffff\x03\x04\x01\uffff\x01"+
8351
            "\x04\x03\uffff\x01\x04\x01\uffff\x01\x04\x03\uffff\x01\x04\x08"+
8352
            "\uffff\x01\x04\x02\uffff\x03\x04\x04\uffff\x02\x04\x03\uffff"+
8353
            "\x03\x04\x02\x02\x04\uffff\x0a\x04\x01\uffff\x11\x04\x02\uffff"+
8354
            "\x02\x04\x07\uffff\x02\x04\x01\x01\x14\uffff\x01\x04\x02\uffff"+
8355
            "\x01\x04\x04\uffff\x01\x02",
8356
            "",
8357
            "",
8358
            "",
8359
            "",
8360
            "",
8361
            "",
8362
            "",
8363
            "",
8364
            "",
8365
            "",
8366
            "",
8367
            "",
8368
            "",
8369
            "",
8370
            "",
8371
            "",
8372
            "",
8373
            "",
8374
            "",
8375
            "",
8376
            "",
8377
            "",
8378
            "",
8379
            "",
8380
            "",
8381
            "",
8382
            "",
8383
            "",
8384
            "",
8385
            "",
8386
            "",
8387
            "",
8388
            "",
8389
            "",
8390
            "",
8391
            "",
8392
            "",
8393
            "",
8394
            "",
8395
            "",
8396
            "",
8397
            "",
8398
            "",
8399
            "",
8400
            "",
8401
            "",
8402
            "",
8403
            "",
8404
            "",
8405
            "",
8406
            "",
8407
            "",
8408
            "",
8409
            ""
8410
    };
8411

    
8412
    static readonly short[] DFA102_eot = DFA.UnpackEncodedString(DFA102_eotS);
8413
    static readonly short[] DFA102_eof = DFA.UnpackEncodedString(DFA102_eofS);
8414
    static readonly char[] DFA102_min = DFA.UnpackEncodedStringToUnsignedChars(DFA102_minS);
8415
    static readonly char[] DFA102_max = DFA.UnpackEncodedStringToUnsignedChars(DFA102_maxS);
8416
    static readonly short[] DFA102_accept = DFA.UnpackEncodedString(DFA102_acceptS);
8417
    static readonly short[] DFA102_special = DFA.UnpackEncodedString(DFA102_specialS);
8418
    static readonly short[][] DFA102_transition = DFA.UnpackEncodedStringArray(DFA102_transitionS);
8419

    
8420
    protected class DFA102 : DFA
8421
    {
8422
        public DFA102(BaseRecognizer recognizer)
8423
        {
8424
            this.recognizer = recognizer;
8425
            this.decisionNumber = 102;
8426
            this.eot = DFA102_eot;
8427
            this.eof = DFA102_eof;
8428
            this.min = DFA102_min;
8429
            this.max = DFA102_max;
8430
            this.accept = DFA102_accept;
8431
            this.special = DFA102_special;
8432
            this.transition = DFA102_transition;
8433

    
8434
        }
8435

    
8436
        override public string Description
8437
        {
8438
            get { return "877:3: (pr= T_PRIMED | ( '::' T_LPAREN init= expression T_RPAREN )? afold= ( T_FOLDLR | T_FOLDRL ) T_LPAREN anexpr= expression T_RPAREN )?"; }
8439
        }
8440

    
8441
    }
8442

    
8443
    const string DFA103_eotS =
8444
        "\x3a\uffff";
8445
    const string DFA103_eofS =
8446
        "\x3a\uffff";
8447
    const string DFA103_minS =
8448
        "\x01\x05\x39\uffff";
8449
    const string DFA103_maxS =
8450
        "\x01\x7e\x39\uffff";
8451
    const string DFA103_acceptS =
8452
        "\x01\uffff\x01\x03\x36\uffff\x01\x01\x01\x02";
8453
    const string DFA103_specialS =
8454
        "\x3a\uffff}>";
8455
    static readonly string[] DFA103_transitionS = {
8456
            "\x01\x01\x01\uffff\x01\x01\x01\uffff\x03\x01\x01\x39\x01\x01"+
8457
            "\x01\uffff\x01\x38\x01\uffff\x01\x01\x01\uffff\x01\x01\x03\uffff"+
8458
            "\x01\x01\x08\uffff\x01\x01\x02\uffff\x03\x01\x04\uffff\x02\x01"+
8459
            "\x03\uffff\x05\x01\x04\uffff\x0a\x01\x01\uffff\x12\x01\x01\uffff"+
8460
            "\x02\x01\x07\uffff\x03\x01\x14\uffff\x01\x01\x02\uffff\x01\x01"+
8461
            "\x04\uffff\x01\x01",
8462
            "",
8463
            "",
8464
            "",
8465
            "",
8466
            "",
8467
            "",
8468
            "",
8469
            "",
8470
            "",
8471
            "",
8472
            "",
8473
            "",
8474
            "",
8475
            "",
8476
            "",
8477
            "",
8478
            "",
8479
            "",
8480
            "",
8481
            "",
8482
            "",
8483
            "",
8484
            "",
8485
            "",
8486
            "",
8487
            "",
8488
            "",
8489
            "",
8490
            "",
8491
            "",
8492
            "",
8493
            "",
8494
            "",
8495
            "",
8496
            "",
8497
            "",
8498
            "",
8499
            "",
8500
            "",
8501
            "",
8502
            "",
8503
            "",
8504
            "",
8505
            "",
8506
            "",
8507
            "",
8508
            "",
8509
            "",
8510
            "",
8511
            "",
8512
            "",
8513
            "",
8514
            "",
8515
            "",
8516
            "",
8517
            "",
8518
            ""
8519
    };
8520

    
8521
    static readonly short[] DFA103_eot = DFA.UnpackEncodedString(DFA103_eotS);
8522
    static readonly short[] DFA103_eof = DFA.UnpackEncodedString(DFA103_eofS);
8523
    static readonly char[] DFA103_min = DFA.UnpackEncodedStringToUnsignedChars(DFA103_minS);
8524
    static readonly char[] DFA103_max = DFA.UnpackEncodedStringToUnsignedChars(DFA103_maxS);
8525
    static readonly short[] DFA103_accept = DFA.UnpackEncodedString(DFA103_acceptS);
8526
    static readonly short[] DFA103_special = DFA.UnpackEncodedString(DFA103_specialS);
8527
    static readonly short[][] DFA103_transition = DFA.UnpackEncodedStringArray(DFA103_transitionS);
8528

    
8529
    protected class DFA103 : DFA
8530
    {
8531
        public DFA103(BaseRecognizer recognizer)
8532
        {
8533
            this.recognizer = recognizer;
8534
            this.decisionNumber = 103;
8535
            this.eot = DFA103_eot;
8536
            this.eof = DFA103_eof;
8537
            this.min = DFA103_min;
8538
            this.max = DFA103_max;
8539
            this.accept = DFA103_accept;
8540
            this.special = DFA103_special;
8541
            this.transition = DFA103_transition;
8542

    
8543
        }
8544

    
8545
        override public string Description
8546
        {
8547
            get { return "()+ loopback of 891:7: (tcall= T_LSQPAREN ac= expression T_RSQPAREN | bcall= T_LPAREN m_params= methodCallParams T_RPAREN )+"; }
8548
        }
8549

    
8550
    }
8551

    
8552
    const string DFA106_eotS =
8553
        "\x38\uffff";
8554
    const string DFA106_eofS =
8555
        "\x38\uffff";
8556
    const string DFA106_minS =
8557
        "\x01\x05\x37\uffff";
8558
    const string DFA106_maxS =
8559
        "\x01\x7e\x37\uffff";
8560
    const string DFA106_acceptS =
8561
        "\x01\uffff\x01\x01\x01\x02\x35\uffff";
8562
    const string DFA106_specialS =
8563
        "\x38\uffff}>";
8564
    static readonly string[] DFA106_transitionS = {
8565
            "\x01\x02\x01\uffff\x01\x02\x01\uffff\x03\x02\x01\uffff\x01"+
8566
            "\x02\x03\uffff\x01\x02\x01\uffff\x01\x02\x03\uffff\x01\x02\x08"+
8567
            "\uffff\x01\x02\x02\uffff\x03\x02\x04\uffff\x02\x02\x03\uffff"+
8568
            "\x05\x02\x04\uffff\x0a\x02\x01\uffff\x11\x02\x01\x01\x01\uffff"+
8569
            "\x02\x02\x07\uffff\x03\x02\x14\uffff\x01\x02\x02\uffff\x01\x02"+
8570
            "\x04\uffff\x01\x02",
8571
            "",
8572
            "",
8573
            "",
8574
            "",
8575
            "",
8576
            "",
8577
            "",
8578
            "",
8579
            "",
8580
            "",
8581
            "",
8582
            "",
8583
            "",
8584
            "",
8585
            "",
8586
            "",
8587
            "",
8588
            "",
8589
            "",
8590
            "",
8591
            "",
8592
            "",
8593
            "",
8594
            "",
8595
            "",
8596
            "",
8597
            "",
8598
            "",
8599
            "",
8600
            "",
8601
            "",
8602
            "",
8603
            "",
8604
            "",
8605
            "",
8606
            "",
8607
            "",
8608
            "",
8609
            "",
8610
            "",
8611
            "",
8612
            "",
8613
            "",
8614
            "",
8615
            "",
8616
            "",
8617
            "",
8618
            "",
8619
            "",
8620
            "",
8621
            "",
8622
            "",
8623
            "",
8624
            "",
8625
            ""
8626
    };
8627

    
8628
    static readonly short[] DFA106_eot = DFA.UnpackEncodedString(DFA106_eotS);
8629
    static readonly short[] DFA106_eof = DFA.UnpackEncodedString(DFA106_eofS);
8630
    static readonly char[] DFA106_min = DFA.UnpackEncodedStringToUnsignedChars(DFA106_minS);
8631
    static readonly char[] DFA106_max = DFA.UnpackEncodedStringToUnsignedChars(DFA106_maxS);
8632
    static readonly short[] DFA106_accept = DFA.UnpackEncodedString(DFA106_acceptS);
8633
    static readonly short[] DFA106_special = DFA.UnpackEncodedString(DFA106_specialS);
8634
    static readonly short[][] DFA106_transition = DFA.UnpackEncodedStringArray(DFA106_transitionS);
8635

    
8636
    protected class DFA106 : DFA
8637
    {
8638
        public DFA106(BaseRecognizer recognizer)
8639
        {
8640
            this.recognizer = recognizer;
8641
            this.decisionNumber = 106;
8642
            this.eot = DFA106_eot;
8643
            this.eof = DFA106_eof;
8644
            this.min = DFA106_min;
8645
            this.max = DFA106_max;
8646
            this.accept = DFA106_accept;
8647
            this.special = DFA106_special;
8648
            this.transition = DFA106_transition;
8649

    
8650
        }
8651

    
8652
        override public string Description
8653
        {
8654
            get { return "896:3: ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[result] )? )?"; }
8655
        }
8656

    
8657
    }
8658

    
8659
    const string DFA104_eotS =
8660
        "\x3a\uffff";
8661
    const string DFA104_eofS =
8662
        "\x3a\uffff";
8663
    const string DFA104_minS =
8664
        "\x01\x05\x39\uffff";
8665
    const string DFA104_maxS =
8666
        "\x01\x7e\x39\uffff";
8667
    const string DFA104_acceptS =
8668
        "\x01\uffff\x01\x02\x37\uffff\x01\x01";
8669
    const string DFA104_specialS =
8670
        "\x3a\uffff}>";
8671
    static readonly string[] DFA104_transitionS = {
8672
            "\x01\x01\x01\uffff\x01\x01\x01\uffff\x05\x01\x01\uffff\x01"+
8673
            "\x01\x01\uffff\x01\x01\x01\uffff\x01\x01\x03\uffff\x01\x01\x08"+
8674
            "\uffff\x01\x01\x02\uffff\x03\x01\x04\uffff\x02\x01\x03\uffff"+
8675
            "\x05\x01\x04\uffff\x0a\x01\x01\uffff\x11\x01\x01\x39\x01\uffff"+
8676
            "\x02\x01\x07\uffff\x03\x01\x14\uffff\x01\x01\x02\uffff\x01\x01"+
8677
            "\x04\uffff\x01\x01",
8678
            "",
8679
            "",
8680
            "",
8681
            "",
8682
            "",
8683
            "",
8684
            "",
8685
            "",
8686
            "",
8687
            "",
8688
            "",
8689
            "",
8690
            "",
8691
            "",
8692
            "",
8693
            "",
8694
            "",
8695
            "",
8696
            "",
8697
            "",
8698
            "",
8699
            "",
8700
            "",
8701
            "",
8702
            "",
8703
            "",
8704
            "",
8705
            "",
8706
            "",
8707
            "",
8708
            "",
8709
            "",
8710
            "",
8711
            "",
8712
            "",
8713
            "",
8714
            "",
8715
            "",
8716
            "",
8717
            "",
8718
            "",
8719
            "",
8720
            "",
8721
            "",
8722
            "",
8723
            "",
8724
            "",
8725
            "",
8726
            "",
8727
            "",
8728
            "",
8729
            "",
8730
            "",
8731
            "",
8732
            "",
8733
            "",
8734
            ""
8735
    };
8736

    
8737
    static readonly short[] DFA104_eot = DFA.UnpackEncodedString(DFA104_eotS);
8738
    static readonly short[] DFA104_eof = DFA.UnpackEncodedString(DFA104_eofS);
8739
    static readonly char[] DFA104_min = DFA.UnpackEncodedStringToUnsignedChars(DFA104_minS);
8740
    static readonly char[] DFA104_max = DFA.UnpackEncodedStringToUnsignedChars(DFA104_maxS);
8741
    static readonly short[] DFA104_accept = DFA.UnpackEncodedString(DFA104_acceptS);
8742
    static readonly short[] DFA104_special = DFA.UnpackEncodedString(DFA104_specialS);
8743
    static readonly short[][] DFA104_transition = DFA.UnpackEncodedStringArray(DFA104_transitionS);
8744

    
8745
    protected class DFA104 : DFA
8746
    {
8747
        public DFA104(BaseRecognizer recognizer)
8748
        {
8749
            this.recognizer = recognizer;
8750
            this.decisionNumber = 104;
8751
            this.eot = DFA104_eot;
8752
            this.eof = DFA104_eof;
8753
            this.min = DFA104_min;
8754
            this.max = DFA104_max;
8755
            this.accept = DFA104_accept;
8756
            this.special = DFA104_special;
8757
            this.transition = DFA104_transition;
8758

    
8759
        }
8760

    
8761
        override public string Description
8762
        {
8763
            get { return "()+ loopback of 897:4: ( T_POINT idn= T_IDENTIFIER )+"; }
8764
        }
8765

    
8766
    }
8767

    
8768
    const string DFA105_eotS =
8769
        "\x39\uffff";
8770
    const string DFA105_eofS =
8771
        "\x39\uffff";
8772
    const string DFA105_minS =
8773
        "\x01\x05\x38\uffff";
8774
    const string DFA105_maxS =
8775
        "\x01\x7e\x38\uffff";
8776
    const string DFA105_acceptS =
8777
        "\x01\uffff\x01\x01\x01\uffff\x01\x02\x35\uffff";
8778
    const string DFA105_specialS =
8779
        "\x39\uffff}>";
8780
    static readonly string[] DFA105_transitionS = {
8781
            "\x01\x03\x01\uffff\x01\x03\x01\uffff\x03\x03\x01\x01\x01\x03"+
8782
            "\x01\uffff\x01\x01\x01\uffff\x01\x03\x01\uffff\x01\x03\x03\uffff"+
8783
            "\x01\x03\x08\uffff\x01\x03\x02\uffff\x03\x03\x04\uffff\x02\x03"+
8784
            "\x03\uffff\x05\x03\x04\uffff\x0a\x03\x01\uffff\x11\x03\x02\uffff"+
8785
            "\x02\x03\x07\uffff\x03\x03\x14\uffff\x01\x03\x02\uffff\x01\x03"+
8786
            "\x04\uffff\x01\x03",
8787
            "",
8788
            "",
8789
            "",
8790
            "",
8791
            "",
8792
            "",
8793
            "",
8794
            "",
8795
            "",
8796
            "",
8797
            "",
8798
            "",
8799
            "",
8800
            "",
8801
            "",
8802
            "",
8803
            "",
8804
            "",
8805
            "",
8806
            "",
8807
            "",
8808
            "",
8809
            "",
8810
            "",
8811
            "",
8812
            "",
8813
            "",
8814
            "",
8815
            "",
8816
            "",
8817
            "",
8818
            "",
8819
            "",
8820
            "",
8821
            "",
8822
            "",
8823
            "",
8824
            "",
8825
            "",
8826
            "",
8827
            "",
8828
            "",
8829
            "",
8830
            "",
8831
            "",
8832
            "",
8833
            "",
8834
            "",
8835
            "",
8836
            "",
8837
            "",
8838
            "",
8839
            "",
8840
            "",
8841
            "",
8842
            ""
8843
    };
8844

    
8845
    static readonly short[] DFA105_eot = DFA.UnpackEncodedString(DFA105_eotS);
8846
    static readonly short[] DFA105_eof = DFA.UnpackEncodedString(DFA105_eofS);
8847
    static readonly char[] DFA105_min = DFA.UnpackEncodedStringToUnsignedChars(DFA105_minS);
8848
    static readonly char[] DFA105_max = DFA.UnpackEncodedStringToUnsignedChars(DFA105_maxS);
8849
    static readonly short[] DFA105_accept = DFA.UnpackEncodedString(DFA105_acceptS);
8850
    static readonly short[] DFA105_special = DFA.UnpackEncodedString(DFA105_specialS);
8851
    static readonly short[][] DFA105_transition = DFA.UnpackEncodedStringArray(DFA105_transitionS);
8852

    
8853
    protected class DFA105 : DFA
8854
    {
8855
        public DFA105(BaseRecognizer recognizer)
8856
        {
8857
            this.recognizer = recognizer;
8858
            this.decisionNumber = 105;
8859
            this.eot = DFA105_eot;
8860
            this.eof = DFA105_eof;
8861
            this.min = DFA105_min;
8862
            this.max = DFA105_max;
8863
            this.accept = DFA105_accept;
8864
            this.special = DFA105_special;
8865
            this.transition = DFA105_transition;
8866

    
8867
        }
8868

    
8869
        override public string Description
8870
        {
8871
            get { return "900:4: (res= accessExpression[result] )?"; }
8872
        }
8873

    
8874
    }
8875

    
8876
    const string DFA108_eotS =
8877
        "\x3b\uffff";
8878
    const string DFA108_eofS =
8879
        "\x3b\uffff";
8880
    const string DFA108_minS =
8881
        "\x01\x05\x3a\uffff";
8882
    const string DFA108_maxS =
8883
        "\x01\x7e\x3a\uffff";
8884
    const string DFA108_acceptS =
8885
        "\x01\uffff\x01\x02\x38\uffff\x01\x01";
8886
    const string DFA108_specialS =
8887
        "\x3b\uffff}>";
8888
    static readonly string[] DFA108_transitionS = {
8889
            "\x01\x01\x01\uffff\x01\x01\x01\uffff\x05\x01\x01\uffff\x01"+
8890
            "\x01\x01\uffff\x01\x01\x01\uffff\x01\x01\x03\uffff\x01\x01\x03"+
8891
            "\uffff\x01\x01\x04\uffff\x01\x01\x02\uffff\x03\x01\x04\uffff"+
8892
            "\x02\x01\x03\uffff\x05\x01\x04\uffff\x0a\x01\x01\uffff\x11\x01"+
8893
            "\x01\x3a\x01\uffff\x02\x01\x07\uffff\x03\x01\x14\uffff\x01\x01"+
8894
            "\x02\uffff\x01\x01\x04\uffff\x01\x01",
8895
            "",
8896
            "",
8897
            "",
8898
            "",
8899
            "",
8900
            "",
8901
            "",
8902
            "",
8903
            "",
8904
            "",
8905
            "",
8906
            "",
8907
            "",
8908
            "",
8909
            "",
8910
            "",
8911
            "",
8912
            "",
8913
            "",
8914
            "",
8915
            "",
8916
            "",
8917
            "",
8918
            "",
8919
            "",
8920
            "",
8921
            "",
8922
            "",
8923
            "",
8924
            "",
8925
            "",
8926
            "",
8927
            "",
8928
            "",
8929
            "",
8930
            "",
8931
            "",
8932
            "",
8933
            "",
8934
            "",
8935
            "",
8936
            "",
8937
            "",
8938
            "",
8939
            "",
8940
            "",
8941
            "",
8942
            "",
8943
            "",
8944
            "",
8945
            "",
8946
            "",
8947
            "",
8948
            "",
8949
            "",
8950
            "",
8951
            "",
8952
            ""
8953
    };
8954

    
8955
    static readonly short[] DFA108_eot = DFA.UnpackEncodedString(DFA108_eotS);
8956
    static readonly short[] DFA108_eof = DFA.UnpackEncodedString(DFA108_eofS);
8957
    static readonly char[] DFA108_min = DFA.UnpackEncodedStringToUnsignedChars(DFA108_minS);
8958
    static readonly char[] DFA108_max = DFA.UnpackEncodedStringToUnsignedChars(DFA108_maxS);
8959
    static readonly short[] DFA108_accept = DFA.UnpackEncodedString(DFA108_acceptS);
8960
    static readonly short[] DFA108_special = DFA.UnpackEncodedString(DFA108_specialS);
8961
    static readonly short[][] DFA108_transition = DFA.UnpackEncodedStringArray(DFA108_transitionS);
8962

    
8963
    protected class DFA108 : DFA
8964
    {
8965
        public DFA108(BaseRecognizer recognizer)
8966
        {
8967
            this.recognizer = recognizer;
8968
            this.decisionNumber = 108;
8969
            this.eot = DFA108_eot;
8970
            this.eof = DFA108_eof;
8971
            this.min = DFA108_min;
8972
            this.max = DFA108_max;
8973
            this.accept = DFA108_accept;
8974
            this.special = DFA108_special;
8975
            this.transition = DFA108_transition;
8976

    
8977
        }
8978

    
8979
        override public string Description
8980
        {
8981
            get { return "()* loopback of 913:3: ( T_POINT idd= T_IDENTIFIER )*"; }
8982
        }
8983

    
8984
    }
8985

    
8986
    const string DFA110_eotS =
8987
        "\x20\uffff";
8988
    const string DFA110_eofS =
8989
        "\x20\uffff";
8990
    const string DFA110_minS =
8991
        "\x01\x08\x1f\uffff";
8992
    const string DFA110_maxS =
8993
        "\x01\x7a\x1f\uffff";
8994
    const string DFA110_acceptS =
8995
        "\x01\uffff\x01\x01\x1d\uffff\x01\x02";
8996
    const string DFA110_specialS =
8997
        "\x20\uffff}>";
8998
    static readonly string[] DFA110_transitionS = {
8999
            "\x01\x01\x03\uffff\x01\x01\x01\x1f\x01\uffff\x02\x01\x06\uffff"+
9000
            "\x01\x01\x05\uffff\x01\x01\x01\uffff\x01\x01\x17\uffff\x01\x01"+
9001
            "\x0b\uffff\x01\x01\x11\uffff\x01\x01\x02\uffff\x07\x01\x03\uffff"+
9002
            "\x0d\x01\x0b\uffff\x01\x01",
9003
            "",
9004
            "",
9005
            "",
9006
            "",
9007
            "",
9008
            "",
9009
            "",
9010
            "",
9011
            "",
9012
            "",
9013
            "",
9014
            "",
9015
            "",
9016
            "",
9017
            "",
9018
            "",
9019
            "",
9020
            "",
9021
            "",
9022
            "",
9023
            "",
9024
            "",
9025
            "",
9026
            "",
9027
            "",
9028
            "",
9029
            "",
9030
            "",
9031
            "",
9032
            "",
9033
            ""
9034
    };
9035

    
9036
    static readonly short[] DFA110_eot = DFA.UnpackEncodedString(DFA110_eotS);
9037
    static readonly short[] DFA110_eof = DFA.UnpackEncodedString(DFA110_eofS);
9038
    static readonly char[] DFA110_min = DFA.UnpackEncodedStringToUnsignedChars(DFA110_minS);
9039
    static readonly char[] DFA110_max = DFA.UnpackEncodedStringToUnsignedChars(DFA110_maxS);
9040
    static readonly short[] DFA110_accept = DFA.UnpackEncodedString(DFA110_acceptS);
9041
    static readonly short[] DFA110_special = DFA.UnpackEncodedString(DFA110_specialS);
9042
    static readonly short[][] DFA110_transition = DFA.UnpackEncodedStringArray(DFA110_transitionS);
9043

    
9044
    protected class DFA110 : DFA
9045
    {
9046
        public DFA110(BaseRecognizer recognizer)
9047
        {
9048
            this.recognizer = recognizer;
9049
            this.decisionNumber = 110;
9050
            this.eot = DFA110_eot;
9051
            this.eof = DFA110_eof;
9052
            this.min = DFA110_min;
9053
            this.max = DFA110_max;
9054
            this.accept = DFA110_accept;
9055
            this.special = DFA110_special;
9056
            this.transition = DFA110_transition;
9057

    
9058
        }
9059

    
9060
        override public string Description
9061
        {
9062
            get { return "922:4: (expa= expression ( T_COMMA expb= expression )* )?"; }
9063
        }
9064

    
9065
    }
9066

    
9067
    const string DFA111_eotS =
9068
        "\x10\uffff";
9069
    const string DFA111_eofS =
9070
        "\x10\uffff";
9071
    const string DFA111_minS =
9072
        "\x01\x17\x0f\uffff";
9073
    const string DFA111_maxS =
9074
        "\x01\x6e\x0f\uffff";
9075
    const string DFA111_acceptS =
9076
        "\x01\uffff\x01\x01\x08\uffff\x01\x02\x02\uffff\x01\x03\x01\x04"+
9077
        "\x01\x05";
9078
    const string DFA111_specialS =
9079
        "\x10\uffff}>";
9080
    static readonly string[] DFA111_transitionS = {
9081
            "\x01\x0d\x2b\uffff\x01\x0e\x1e\uffff\x01\x0f\x09\x01\x03\x0a",
9082
            "",
9083
            "",
9084
            "",
9085
            "",
9086
            "",
9087
            "",
9088
            "",
9089
            "",
9090
            "",
9091
            "",
9092
            "",
9093
            "",
9094
            "",
9095
            "",
9096
            ""
9097
    };
9098

    
9099
    static readonly short[] DFA111_eot = DFA.UnpackEncodedString(DFA111_eotS);
9100
    static readonly short[] DFA111_eof = DFA.UnpackEncodedString(DFA111_eofS);
9101
    static readonly char[] DFA111_min = DFA.UnpackEncodedStringToUnsignedChars(DFA111_minS);
9102
    static readonly char[] DFA111_max = DFA.UnpackEncodedStringToUnsignedChars(DFA111_maxS);
9103
    static readonly short[] DFA111_accept = DFA.UnpackEncodedString(DFA111_acceptS);
9104
    static readonly short[] DFA111_special = DFA.UnpackEncodedString(DFA111_specialS);
9105
    static readonly short[][] DFA111_transition = DFA.UnpackEncodedStringArray(DFA111_transitionS);
9106

    
9107
    protected class DFA111 : DFA
9108
    {
9109
        public DFA111(BaseRecognizer recognizer)
9110
        {
9111
            this.recognizer = recognizer;
9112
            this.decisionNumber = 111;
9113
            this.eot = DFA111_eot;
9114
            this.eof = DFA111_eof;
9115
            this.min = DFA111_min;
9116
            this.max = DFA111_max;
9117
            this.accept = DFA111_accept;
9118
            this.special = DFA111_special;
9119
            this.transition = DFA111_transition;
9120

    
9121
        }
9122

    
9123
        override public string Description
9124
        {
9125
            get { return "932:1: op_un returns [UnaryOperator expr] : (r= op_un_set_list | r2= op_un_map | T_MINUS | T_NOT | T_ABS );"; }
9126
        }
9127

    
9128
    }
9129

    
9130
    const string DFA112_eotS =
9131
        "\x0a\uffff";
9132
    const string DFA112_eofS =
9133
        "\x0a\uffff";
9134
    const string DFA112_minS =
9135
        "\x01\x63\x09\uffff";
9136
    const string DFA112_maxS =
9137
        "\x01\x6b\x09\uffff";
9138
    const string DFA112_acceptS =
9139
        "\x01\uffff\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01"+
9140
        "\x07\x01\x08\x01\x09";
9141
    const string DFA112_specialS =
9142
        "\x0a\uffff}>";
9143
    static readonly string[] DFA112_transitionS = {
9144
            "\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01\x07\x01"+
9145
            "\x08\x01\x09",
9146
            "",
9147
            "",
9148
            "",
9149
            "",
9150
            "",
9151
            "",
9152
            "",
9153
            "",
9154
            ""
9155
    };
9156

    
9157
    static readonly short[] DFA112_eot = DFA.UnpackEncodedString(DFA112_eotS);
9158
    static readonly short[] DFA112_eof = DFA.UnpackEncodedString(DFA112_eofS);
9159
    static readonly char[] DFA112_min = DFA.UnpackEncodedStringToUnsignedChars(DFA112_minS);
9160
    static readonly char[] DFA112_max = DFA.UnpackEncodedStringToUnsignedChars(DFA112_maxS);
9161
    static readonly short[] DFA112_accept = DFA.UnpackEncodedString(DFA112_acceptS);
9162
    static readonly short[] DFA112_special = DFA.UnpackEncodedString(DFA112_specialS);
9163
    static readonly short[][] DFA112_transition = DFA.UnpackEncodedStringArray(DFA112_transitionS);
9164

    
9165
    protected class DFA112 : DFA
9166
    {
9167
        public DFA112(BaseRecognizer recognizer)
9168
        {
9169
            this.recognizer = recognizer;
9170
            this.decisionNumber = 112;
9171
            this.eot = DFA112_eot;
9172
            this.eof = DFA112_eof;
9173
            this.min = DFA112_min;
9174
            this.max = DFA112_max;
9175
            this.accept = DFA112_accept;
9176
            this.special = DFA112_special;
9177
            this.transition = DFA112_transition;
9178

    
9179
        }
9180

    
9181
        override public string Description
9182
        {
9183
            get { return "945:1: op_un_set_list returns [UnaryOperator expr] : ( T_CARD | T_DCONC | T_DINTER | T_DUNION | T_ELEMS | T_HEAD | T_INDS | T_LEN | T_TAIL );"; }
9184
        }
9185

    
9186
    }
9187

    
9188
 
9189

    
9190
    public static readonly BitSet FOLLOW_T_CONSTS_in_ooActionSystems93 = new BitSet(new ulong[]{0x0000000000000100UL});
9191
    public static readonly BitSet FOLLOW_namedConstList_in_ooActionSystems95 = new BitSet(new ulong[]{0x0000000000000020UL});
9192
    public static readonly BitSet FOLLOW_T_TYPES_in_ooActionSystems105 = new BitSet(new ulong[]{0x0000000000000100UL});
9193
    public static readonly BitSet FOLLOW_namedTypeList_in_ooActionSystems113 = new BitSet(new ulong[]{0x0000000000000040UL});
9194
    public static readonly BitSet FOLLOW_T_SYSTEM_in_ooActionSystems118 = new BitSet(new ulong[]{0x0000000000001100UL});
9195
    public static readonly BitSet FOLLOW_asTypeComposition_in_ooActionSystems125 = new BitSet(new ulong[]{0x0000000000000002UL});
9196
    public static readonly BitSet FOLLOW_namedConst_in_namedConstList148 = new BitSet(new ulong[]{0x0000000000000082UL});
9197
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_namedConstList151 = new BitSet(new ulong[]{0x0000000000000100UL});
9198
    public static readonly BitSet FOLLOW_namedConst_in_namedConstList153 = new BitSet(new ulong[]{0x0000000000000082UL});
9199
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_namedConst169 = new BitSet(new ulong[]{0x0000000000000200UL});
9200
    public static readonly BitSet FOLLOW_T_EQUAL_in_namedConst173 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9201
    public static readonly BitSet FOLLOW_expression_in_namedConst179 = new BitSet(new ulong[]{0x0000000000000002UL});
9202
    public static readonly BitSet FOLLOW_namedType_in_namedTypeList199 = new BitSet(new ulong[]{0x0000000000000082UL});
9203
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_namedTypeList202 = new BitSet(new ulong[]{0x0000000000000100UL});
9204
    public static readonly BitSet FOLLOW_namedType_in_namedTypeList204 = new BitSet(new ulong[]{0x0000000000000082UL});
9205
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_namedType220 = new BitSet(new ulong[]{0x0000000000000200UL});
9206
    public static readonly BitSet FOLLOW_T_EQUAL_in_namedType225 = new BitSet(new ulong[]{0x00000002D650D140UL});
9207
    public static readonly BitSet FOLLOW_complexType_in_namedType237 = new BitSet(new ulong[]{0x0000000000000002UL});
9208
    public static readonly BitSet FOLLOW_ooActionSystem_in_namedType249 = new BitSet(new ulong[]{0x0000000000000002UL});
9209
    public static readonly BitSet FOLLOW_asTypeCompositionParallel_in_asTypeComposition285 = new BitSet(new ulong[]{0x0000000000000402UL});
9210
    public static readonly BitSet FOLLOW_T_PRIO_in_asTypeComposition290 = new BitSet(new ulong[]{0x0000000000001100UL});
9211
    public static readonly BitSet FOLLOW_asTypeCompositionParallel_in_asTypeComposition292 = new BitSet(new ulong[]{0x0000000000000402UL});
9212
    public static readonly BitSet FOLLOW_asTypeCompositionSequential_in_asTypeCompositionParallel315 = new BitSet(new ulong[]{0x0000000000000802UL});
9213
    public static readonly BitSet FOLLOW_T_NONDET_in_asTypeCompositionParallel319 = new BitSet(new ulong[]{0x0000000000001100UL});
9214
    public static readonly BitSet FOLLOW_asTypeCompositionSequential_in_asTypeCompositionParallel321 = new BitSet(new ulong[]{0x0000000000000802UL});
9215
    public static readonly BitSet FOLLOW_asTypeCompositionBlockParen_in_asTypeCompositionSequential343 = new BitSet(new ulong[]{0x0000000000000002UL});
9216
    public static readonly BitSet FOLLOW_T_LPAREN_in_asTypeCompositionBlockParen358 = new BitSet(new ulong[]{0x0000000000001100UL});
9217
    public static readonly BitSet FOLLOW_asTypeComposition_in_asTypeCompositionBlockParen360 = new BitSet(new ulong[]{0x0000000000002000UL});
9218
    public static readonly BitSet FOLLOW_T_RPAREN_in_asTypeCompositionBlockParen363 = new BitSet(new ulong[]{0x0000000000000002UL});
9219
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_asTypeCompositionBlockParen370 = new BitSet(new ulong[]{0x0000000000000002UL});
9220
    public static readonly BitSet FOLLOW_T_LIST_in_complexType401 = new BitSet(new ulong[]{0x0000000000008000UL});
9221
    public static readonly BitSet FOLLOW_T_LSQPAREN_in_complexType404 = new BitSet(new ulong[]{0x0000000000010100UL});
9222
    public static readonly BitSet FOLLOW_set_in_complexType408 = new BitSet(new ulong[]{0x0000000000020000UL});
9223
    public static readonly BitSet FOLLOW_T_RSQPAREN_in_complexType414 = new BitSet(new ulong[]{0x0000000000040000UL});
9224
    public static readonly BitSet FOLLOW_T_OF_in_complexType416 = new BitSet(new ulong[]{0x00000000D650D100UL});
9225
    public static readonly BitSet FOLLOW_complexType_in_complexType421 = new BitSet(new ulong[]{0x0000000000000002UL});
9226
    public static readonly BitSet FOLLOW_T_LSQPAREN_in_complexType436 = new BitSet(new ulong[]{0x0000000000000100UL});
9227
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_complexType440 = new BitSet(new ulong[]{0x00000000000A0000UL});
9228
    public static readonly BitSet FOLLOW_T_COMMA_in_complexType449 = new BitSet(new ulong[]{0x0000000000000100UL});
9229
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_complexType453 = new BitSet(new ulong[]{0x00000000000A0000UL});
9230
    public static readonly BitSet FOLLOW_T_RSQPAREN_in_complexType459 = new BitSet(new ulong[]{0x0000000000000002UL});
9231
    public static readonly BitSet FOLLOW_T_MAP_in_complexType469 = new BitSet(new ulong[]{0x00000000D650D100UL});
9232
    public static readonly BitSet FOLLOW_T_LSQPAREN_in_complexType474 = new BitSet(new ulong[]{0x0000000000010100UL});
9233
    public static readonly BitSet FOLLOW_set_in_complexType478 = new BitSet(new ulong[]{0x0000000000020000UL});
9234
    public static readonly BitSet FOLLOW_T_RSQPAREN_in_complexType484 = new BitSet(new ulong[]{0x00000000D650D100UL});
9235
    public static readonly BitSet FOLLOW_simpleType_in_complexType490 = new BitSet(new ulong[]{0x0000000000200000UL});
9236
    public static readonly BitSet FOLLOW_T_TO_in_complexType492 = new BitSet(new ulong[]{0x00000000D650D100UL});
9237
    public static readonly BitSet FOLLOW_complexType_in_complexType496 = new BitSet(new ulong[]{0x0000000000000002UL});
9238
    public static readonly BitSet FOLLOW_T_QUANTITY_in_complexType510 = new BitSet(new ulong[]{0x0000000000040000UL});
9239
    public static readonly BitSet FOLLOW_T_OF_in_complexType512 = new BitSet(new ulong[]{0x0000000000008000UL});
9240
    public static readonly BitSet FOLLOW_T_LSQPAREN_in_complexType514 = new BitSet(new ulong[]{0x0000000000800100UL});
9241
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_complexType519 = new BitSet(new ulong[]{0x00000000000A0000UL});
9242
    public static readonly BitSet FOLLOW_T_MINUS_in_complexType524 = new BitSet(new ulong[]{0x0000000001000000UL});
9243
    public static readonly BitSet FOLLOW_T_INFTY_in_complexType526 = new BitSet(new ulong[]{0x00000000000A0000UL});
9244
    public static readonly BitSet FOLLOW_T_COMMA_in_complexType536 = new BitSet(new ulong[]{0x0000000001000100UL});
9245
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_complexType541 = new BitSet(new ulong[]{0x00000000000A0000UL});
9246
    public static readonly BitSet FOLLOW_T_INFTY_in_complexType545 = new BitSet(new ulong[]{0x00000000000A0000UL});
9247
    public static readonly BitSet FOLLOW_T_RSQPAREN_in_complexType552 = new BitSet(new ulong[]{0x0000000000000002UL});
9248
    public static readonly BitSet FOLLOW_T_LPAREN_in_complexType562 = new BitSet(new ulong[]{0x00000000D650D100UL});
9249
    public static readonly BitSet FOLLOW_complexType_in_complexType566 = new BitSet(new ulong[]{0x0000000000082000UL});
9250
    public static readonly BitSet FOLLOW_T_COMMA_in_complexType575 = new BitSet(new ulong[]{0x00000000D650D100UL});
9251
    public static readonly BitSet FOLLOW_complexType_in_complexType579 = new BitSet(new ulong[]{0x0000000000082000UL});
9252
    public static readonly BitSet FOLLOW_T_RPAREN_in_complexType586 = new BitSet(new ulong[]{0x0000000000000002UL});
9253
    public static readonly BitSet FOLLOW_simpleType_in_complexType599 = new BitSet(new ulong[]{0x0000000000000002UL});
9254
    public static readonly BitSet FOLLOW_T_BOOL_in_simpleType632 = new BitSet(new ulong[]{0x0000000000000002UL});
9255
    public static readonly BitSet FOLLOW_T_INT_in_simpleType645 = new BitSet(new ulong[]{0x0000000000008000UL});
9256
    public static readonly BitSet FOLLOW_T_LSQPAREN_in_simpleType647 = new BitSet(new ulong[]{0x0000000001010100UL});
9257
    public static readonly BitSet FOLLOW_set_in_simpleType651 = new BitSet(new ulong[]{0x0000000008000000UL});
9258
    public static readonly BitSet FOLLOW_T_RANGETO_in_simpleType659 = new BitSet(new ulong[]{0x0000000001010100UL});
9259
    public static readonly BitSet FOLLOW_set_in_simpleType663 = new BitSet(new ulong[]{0x0000000000020000UL});
9260
    public static readonly BitSet FOLLOW_T_RSQPAREN_in_simpleType671 = new BitSet(new ulong[]{0x0000000000000002UL});
9261
    public static readonly BitSet FOLLOW_T_FLOAT_in_simpleType690 = new BitSet(new ulong[]{0x0000000000008000UL});
9262
    public static readonly BitSet FOLLOW_T_LSQPAREN_in_simpleType693 = new BitSet(new ulong[]{0x0000000021000100UL});
9263
    public static readonly BitSet FOLLOW_set_in_simpleType697 = new BitSet(new ulong[]{0x0000000008000000UL});
9264
    public static readonly BitSet FOLLOW_T_RANGETO_in_simpleType705 = new BitSet(new ulong[]{0x0000000021000100UL});
9265
    public static readonly BitSet FOLLOW_set_in_simpleType709 = new BitSet(new ulong[]{0x0000000000020000UL});
9266
    public static readonly BitSet FOLLOW_T_RSQPAREN_in_simpleType717 = new BitSet(new ulong[]{0x0000000000000002UL});
9267
    public static readonly BitSet FOLLOW_T_CHAR_in_simpleType735 = new BitSet(new ulong[]{0x0000000000000002UL});
9268
    public static readonly BitSet FOLLOW_T_CBRL_in_simpleType751 = new BitSet(new ulong[]{0x0000000000000100UL});
9269
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_simpleType755 = new BitSet(new ulong[]{0x0000000100080200UL});
9270
    public static readonly BitSet FOLLOW_T_EQUAL_in_simpleType758 = new BitSet(new ulong[]{0x0000000000010000UL});
9271
    public static readonly BitSet FOLLOW_T_INTNUMBER_in_simpleType762 = new BitSet(new ulong[]{0x0000000100080000UL});
9272
    public static readonly BitSet FOLLOW_T_COMMA_in_simpleType773 = new BitSet(new ulong[]{0x0000000000000100UL});
9273
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_simpleType777 = new BitSet(new ulong[]{0x0000000100080200UL});
9274
    public static readonly BitSet FOLLOW_T_EQUAL_in_simpleType780 = new BitSet(new ulong[]{0x0000000000010000UL});
9275
    public static readonly BitSet FOLLOW_T_INTNUMBER_in_simpleType784 = new BitSet(new ulong[]{0x0000000100080000UL});
9276
    public static readonly BitSet FOLLOW_T_CBRR_in_simpleType792 = new BitSet(new ulong[]{0x0000000000000002UL});
9277
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_simpleType803 = new BitSet(new ulong[]{0x0000000000000002UL});
9278
    public static readonly BitSet FOLLOW_T_AUTOCONS_in_ooActionSystem846 = new BitSet(new ulong[]{0x0000000000000040UL});
9279
    public static readonly BitSet FOLLOW_T_SYSTEM_in_ooActionSystem855 = new BitSet(new ulong[]{0x0000000000001000UL,0x0020000000000000UL});
9280
    public static readonly BitSet FOLLOW_T_LPAREN_in_ooActionSystem858 = new BitSet(new ulong[]{0x0000000000000100UL});
9281
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_ooActionSystem862 = new BitSet(new ulong[]{0x0000000000002000UL});
9282
    public static readonly BitSet FOLLOW_T_RPAREN_in_ooActionSystem864 = new BitSet(new ulong[]{0x0000000000000000UL,0x0020000000000000UL});
9283
    public static readonly BitSet FOLLOW_117_in_ooActionSystem877 = new BitSet(new ulong[]{0x0000003C00000000UL,0x0040000000000000UL});
9284
    public static readonly BitSet FOLLOW_T_VAR_in_ooActionSystem883 = new BitSet(new ulong[]{0x0000038000000100UL});
9285
    public static readonly BitSet FOLLOW_attrList_in_ooActionSystem885 = new BitSet(new ulong[]{0x0000003800000000UL,0x0040000000000000UL});
9286
    public static readonly BitSet FOLLOW_T_METHODS_in_ooActionSystem893 = new BitSet(new ulong[]{0x0000000000000100UL});
9287
    public static readonly BitSet FOLLOW_methodList_in_ooActionSystem895 = new BitSet(new ulong[]{0x0000003000000000UL,0x0040000000000000UL});
9288
    public static readonly BitSet FOLLOW_T_ACTIONS_in_ooActionSystem903 = new BitSet(new ulong[]{0x0000130000000100UL});
9289
    public static readonly BitSet FOLLOW_namedActionList_in_ooActionSystem905 = new BitSet(new ulong[]{0x0000002000000000UL,0x0040000000000000UL});
9290
    public static readonly BitSet FOLLOW_T_DO_in_ooActionSystem913 = new BitSet(new ulong[]{0x0010304400001100UL});
9291
    public static readonly BitSet FOLLOW_actionBlock_in_ooActionSystem918 = new BitSet(new ulong[]{0x0000004000000000UL});
9292
    public static readonly BitSet FOLLOW_T_OD_in_ooActionSystem925 = new BitSet(new ulong[]{0x0000000000000000UL,0x0040000000000000UL});
9293
    public static readonly BitSet FOLLOW_118_in_ooActionSystem931 = new BitSet(new ulong[]{0x0000000000000002UL});
9294
    public static readonly BitSet FOLLOW_attr_in_attrList962 = new BitSet(new ulong[]{0x0000000000000082UL});
9295
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_attrList965 = new BitSet(new ulong[]{0x0000038000000100UL});
9296
    public static readonly BitSet FOLLOW_attr_in_attrList967 = new BitSet(new ulong[]{0x0000000000000082UL});
9297
    public static readonly BitSet FOLLOW_T_STATIC_in_attr992 = new BitSet(new ulong[]{0x0000030000000100UL});
9298
    public static readonly BitSet FOLLOW_T_OBS_in_attr999 = new BitSet(new ulong[]{0x0000000000000100UL});
9299
    public static readonly BitSet FOLLOW_T_CTRL_in_attr1005 = new BitSet(new ulong[]{0x0000000000000100UL});
9300
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_attr1016 = new BitSet(new ulong[]{0x0000040000000000UL});
9301
    public static readonly BitSet FOLLOW_T_COLON_in_attr1019 = new BitSet(new ulong[]{0x00000000D650D100UL});
9302
    public static readonly BitSet FOLLOW_complexType_in_attr1023 = new BitSet(new ulong[]{0x0000000000000202UL});
9303
    public static readonly BitSet FOLLOW_T_EQUAL_in_attr1026 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9304
    public static readonly BitSet FOLLOW_expression_in_attr1030 = new BitSet(new ulong[]{0x0000000000000002UL});
9305
    public static readonly BitSet FOLLOW_method_in_methodList1052 = new BitSet(new ulong[]{0x0000000000000082UL});
9306
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_methodList1055 = new BitSet(new ulong[]{0x0000000000000100UL});
9307
    public static readonly BitSet FOLLOW_method_in_methodList1057 = new BitSet(new ulong[]{0x0000000000000082UL});
9308
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_method1079 = new BitSet(new ulong[]{0x0000040000001200UL});
9309
    public static readonly BitSet FOLLOW_T_LPAREN_in_method1087 = new BitSet(new ulong[]{0x0000000000000100UL});
9310
    public static readonly BitSet FOLLOW_methodParameterList_in_method1089 = new BitSet(new ulong[]{0x0000000000002000UL});
9311
    public static readonly BitSet FOLLOW_T_RPAREN_in_method1093 = new BitSet(new ulong[]{0x0000040000000200UL});
9312
    public static readonly BitSet FOLLOW_T_COLON_in_method1101 = new BitSet(new ulong[]{0x00000000D650D100UL});
9313
    public static readonly BitSet FOLLOW_complexType_in_method1105 = new BitSet(new ulong[]{0x0000000000000200UL});
9314
    public static readonly BitSet FOLLOW_T_EQUAL_in_method1115 = new BitSet(new ulong[]{0x00F0300400001100UL});
9315
    public static readonly BitSet FOLLOW_T_VAR_in_method1122 = new BitSet(new ulong[]{0x0000000000000100UL});
9316
    public static readonly BitSet FOLLOW_localActionVars_in_method1124 = new BitSet(new ulong[]{0x0000000000000000UL,0x0080000000000000UL});
9317
    public static readonly BitSet FOLLOW_119_in_method1127 = new BitSet(new ulong[]{0x00F0300400001100UL});
9318
    public static readonly BitSet FOLLOW_actionBody_in_method1136 = new BitSet(new ulong[]{0x0000080000000000UL});
9319
    public static readonly BitSet FOLLOW_T_END_in_method1144 = new BitSet(new ulong[]{0x0000000000000002UL});
9320
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_methodParameterList1168 = new BitSet(new ulong[]{0x0000040000000000UL});
9321
    public static readonly BitSet FOLLOW_T_COLON_in_methodParameterList1170 = new BitSet(new ulong[]{0x00000000D650D100UL});
9322
    public static readonly BitSet FOLLOW_complexType_in_methodParameterList1174 = new BitSet(new ulong[]{0x0000000000080002UL});
9323
    public static readonly BitSet FOLLOW_T_COMMA_in_methodParameterList1182 = new BitSet(new ulong[]{0x0000000000000100UL});
9324
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_methodParameterList1186 = new BitSet(new ulong[]{0x0000040000000000UL});
9325
    public static readonly BitSet FOLLOW_T_COLON_in_methodParameterList1188 = new BitSet(new ulong[]{0x00000000D650D100UL});
9326
    public static readonly BitSet FOLLOW_complexType_in_methodParameterList1192 = new BitSet(new ulong[]{0x0000000000080002UL});
9327
    public static readonly BitSet FOLLOW_namedAction_in_namedActionList1219 = new BitSet(new ulong[]{0x0000000000000082UL});
9328
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_namedActionList1222 = new BitSet(new ulong[]{0x0000130000000100UL});
9329
    public static readonly BitSet FOLLOW_namedAction_in_namedActionList1224 = new BitSet(new ulong[]{0x0000000000000082UL});
9330
    public static readonly BitSet FOLLOW_T_CONT_in_namedAction1244 = new BitSet(new ulong[]{0x0000000000000100UL});
9331
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_namedAction1248 = new BitSet(new ulong[]{0x0000000000001200UL});
9332
    public static readonly BitSet FOLLOW_T_LPAREN_in_namedAction1256 = new BitSet(new ulong[]{0x0000000000000100UL});
9333
    public static readonly BitSet FOLLOW_methodParameterList_in_namedAction1258 = new BitSet(new ulong[]{0x0000000000002000UL});
9334
    public static readonly BitSet FOLLOW_T_RPAREN_in_namedAction1262 = new BitSet(new ulong[]{0x0000000000000200UL});
9335
    public static readonly BitSet FOLLOW_T_EQUAL_in_namedAction1269 = new BitSet(new ulong[]{0x0000100000000000UL});
9336
    public static readonly BitSet FOLLOW_continuousActionBody_in_namedAction1273 = new BitSet(new ulong[]{0x0000000000000002UL});
9337
    public static readonly BitSet FOLLOW_T_CTRL_in_namedAction1288 = new BitSet(new ulong[]{0x0000000000000100UL});
9338
    public static readonly BitSet FOLLOW_T_OBS_in_namedAction1293 = new BitSet(new ulong[]{0x0000000000000100UL});
9339
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_namedAction1305 = new BitSet(new ulong[]{0x0000000000001200UL});
9340
    public static readonly BitSet FOLLOW_T_LPAREN_in_namedAction1313 = new BitSet(new ulong[]{0x0000000000000100UL});
9341
    public static readonly BitSet FOLLOW_methodParameterList_in_namedAction1315 = new BitSet(new ulong[]{0x0000000000002000UL});
9342
    public static readonly BitSet FOLLOW_T_RPAREN_in_namedAction1319 = new BitSet(new ulong[]{0x0000000000000200UL});
9343
    public static readonly BitSet FOLLOW_T_EQUAL_in_namedAction1326 = new BitSet(new ulong[]{0x0000300400000000UL});
9344
    public static readonly BitSet FOLLOW_T_VAR_in_namedAction1332 = new BitSet(new ulong[]{0x0000000000000100UL});
9345
    public static readonly BitSet FOLLOW_localActionVars_in_namedAction1334 = new BitSet(new ulong[]{0x0000300000000000UL});
9346
    public static readonly BitSet FOLLOW_discreteActionBody_in_namedAction1345 = new BitSet(new ulong[]{0x0000000000000002UL});
9347
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_localActionVars1377 = new BitSet(new ulong[]{0x0000040000000000UL});
9348
    public static readonly BitSet FOLLOW_T_COLON_in_localActionVars1379 = new BitSet(new ulong[]{0x00000000D650D100UL});
9349
    public static readonly BitSet FOLLOW_complexType_in_localActionVars1383 = new BitSet(new ulong[]{0x0000000000000082UL});
9350
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_localActionVars1392 = new BitSet(new ulong[]{0x0000000000000100UL});
9351
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_localActionVars1396 = new BitSet(new ulong[]{0x0000040000000000UL});
9352
    public static readonly BitSet FOLLOW_T_COLON_in_localActionVars1398 = new BitSet(new ulong[]{0x00000000D650D100UL});
9353
    public static readonly BitSet FOLLOW_complexType_in_localActionVars1402 = new BitSet(new ulong[]{0x0000000000000082UL});
9354
    public static readonly BitSet FOLLOW_continuousActionBody_in_anonymousAction1432 = new BitSet(new ulong[]{0x0000000000000002UL});
9355
    public static readonly BitSet FOLLOW_discreteActionBody_in_anonymousAction1441 = new BitSet(new ulong[]{0x0000000000000002UL});
9356
    public static readonly BitSet FOLLOW_T_CONT_in_continuousActionBody1466 = new BitSet(new ulong[]{0x0000200000000000UL});
9357
    public static readonly BitSet FOLLOW_T_REQUIRES_in_continuousActionBody1468 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9358
    public static readonly BitSet FOLLOW_expression_in_continuousActionBody1472 = new BitSet(new ulong[]{0x0000040000000000UL});
9359
    public static readonly BitSet FOLLOW_T_COLON_in_continuousActionBody1474 = new BitSet(new ulong[]{0x0000000000000100UL});
9360
    public static readonly BitSet FOLLOW_qualConstraintList_in_continuousActionBody1481 = new BitSet(new ulong[]{0x0000080000000000UL});
9361
    public static readonly BitSet FOLLOW_T_END_in_continuousActionBody1486 = new BitSet(new ulong[]{0x0000000000000002UL});
9362
    public static readonly BitSet FOLLOW_qualConstraint_in_qualConstraintList1514 = new BitSet(new ulong[]{0x0000000000080002UL});
9363
    public static readonly BitSet FOLLOW_T_COMMA_in_qualConstraintList1521 = new BitSet(new ulong[]{0x0000000000000100UL});
9364
    public static readonly BitSet FOLLOW_qualConstraint_in_qualConstraintList1525 = new BitSet(new ulong[]{0x0000000000080002UL});
9365
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_qualConstraint1556 = new BitSet(new ulong[]{0x0000000000000200UL});
9366
    public static readonly BitSet FOLLOW_T_EQUAL_in_qualConstraint1558 = new BitSet(new ulong[]{0x0000400000000100UL});
9367
    public static readonly BitSet FOLLOW_T_DERIV_in_qualConstraint1565 = new BitSet(new ulong[]{0x0000000000000100UL});
9368
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_qualConstraint1569 = new BitSet(new ulong[]{0x0000000000000002UL});
9369
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_qualConstraint1604 = new BitSet(new ulong[]{0x0003800000000002UL});
9370
    public static readonly BitSet FOLLOW_T_SUM_in_qualConstraint1635 = new BitSet(new ulong[]{0x0000000000000100UL});
9371
    public static readonly BitSet FOLLOW_T_DIFF_in_qualConstraint1652 = new BitSet(new ulong[]{0x0000000000000100UL});
9372
    public static readonly BitSet FOLLOW_T_PROD_in_qualConstraint1669 = new BitSet(new ulong[]{0x0000000000000100UL});
9373
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_qualConstraint1698 = new BitSet(new ulong[]{0x0000000000000002UL});
9374
    public static readonly BitSet FOLLOW_T_REQUIRES_in_discreteActionBody1788 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9375
    public static readonly BitSet FOLLOW_expression_in_discreteActionBody1792 = new BitSet(new ulong[]{0x0000040000000000UL});
9376
    public static readonly BitSet FOLLOW_T_COLON_in_discreteActionBody1794 = new BitSet(new ulong[]{0x00F0300400001100UL});
9377
    public static readonly BitSet FOLLOW_actionBody_in_discreteActionBody1801 = new BitSet(new ulong[]{0x0000080000000000UL});
9378
    public static readonly BitSet FOLLOW_T_END_in_discreteActionBody1806 = new BitSet(new ulong[]{0x0000000000000002UL});
9379
    public static readonly BitSet FOLLOW_actionBlockParallel_in_actionBlock1842 = new BitSet(new ulong[]{0x0000000000000402UL});
9380
    public static readonly BitSet FOLLOW_T_PRIO_in_actionBlock1846 = new BitSet(new ulong[]{0x0010300400001100UL});
9381
    public static readonly BitSet FOLLOW_actionBlockParallel_in_actionBlock1848 = new BitSet(new ulong[]{0x0000000000000402UL});
9382
    public static readonly BitSet FOLLOW_actionBlockSequential_in_actionBlockParallel1873 = new BitSet(new ulong[]{0x0000000000000802UL});
9383
    public static readonly BitSet FOLLOW_T_NONDET_in_actionBlockParallel1877 = new BitSet(new ulong[]{0x0010300400001100UL});
9384
    public static readonly BitSet FOLLOW_actionBlockSequential_in_actionBlockParallel1879 = new BitSet(new ulong[]{0x0000000000000802UL});
9385
    public static readonly BitSet FOLLOW_T_VAR_in_actionBlockSequential1908 = new BitSet(new ulong[]{0x0000000000000100UL});
9386
    public static readonly BitSet FOLLOW_blockvarlist_in_actionBlockSequential1912 = new BitSet(new ulong[]{0x0000040000000000UL,0x0100000000000000UL});
9387
    public static readonly BitSet FOLLOW_120_in_actionBlockSequential1916 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9388
    public static readonly BitSet FOLLOW_expression_in_actionBlockSequential1920 = new BitSet(new ulong[]{0x0000040000000000UL});
9389
    public static readonly BitSet FOLLOW_T_COLON_in_actionBlockSequential1927 = new BitSet(new ulong[]{0x0010300400001100UL});
9390
    public static readonly BitSet FOLLOW_actionBlockParen_in_actionBlockSequential1936 = new BitSet(new ulong[]{0x0000000000000082UL});
9391
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_actionBlockSequential1940 = new BitSet(new ulong[]{0x0010300400001100UL});
9392
    public static readonly BitSet FOLLOW_actionBlockParen_in_actionBlockSequential1942 = new BitSet(new ulong[]{0x0000000000000082UL});
9393
    public static readonly BitSet FOLLOW_T_LPAREN_in_actionBlockParen1966 = new BitSet(new ulong[]{0x0010300400001100UL});
9394
    public static readonly BitSet FOLLOW_actionBlock_in_actionBlockParen1968 = new BitSet(new ulong[]{0x0000000000002000UL});
9395
    public static readonly BitSet FOLLOW_T_RPAREN_in_actionBlockParen1971 = new BitSet(new ulong[]{0x0000000000000002UL});
9396
    public static readonly BitSet FOLLOW_anonymousOrNamedAction_in_actionBlockParen1976 = new BitSet(new ulong[]{0x0000000000000002UL});
9397
    public static readonly BitSet FOLLOW_anonymousAction_in_anonymousOrNamedAction1993 = new BitSet(new ulong[]{0x0000000000000002UL});
9398
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_anonymousOrNamedAction2002 = new BitSet(new ulong[]{0x000C000000001002UL});
9399
    public static readonly BitSet FOLLOW_T_LPAREN_in_anonymousOrNamedAction2016 = new BitSet(new ulong[]{0x00800000A081B100UL,0x04007FFC7F200008UL});
9400
    public static readonly BitSet FOLLOW_methodCallParams_in_anonymousOrNamedAction2021 = new BitSet(new ulong[]{0x0000000000002000UL});
9401
    public static readonly BitSet FOLLOW_T_RPAREN_in_anonymousOrNamedAction2023 = new BitSet(new ulong[]{0x000C000000000002UL});
9402
    public static readonly BitSet FOLLOW_set_in_anonymousOrNamedAction2041 = new BitSet(new ulong[]{0x0000000000001000UL});
9403
    public static readonly BitSet FOLLOW_T_LPAREN_in_anonymousOrNamedAction2047 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9404
    public static readonly BitSet FOLLOW_expression_in_anonymousOrNamedAction2051 = new BitSet(new ulong[]{0x0000000000002000UL});
9405
    public static readonly BitSet FOLLOW_T_RPAREN_in_anonymousOrNamedAction2053 = new BitSet(new ulong[]{0x0000000000000002UL});
9406
    public static readonly BitSet FOLLOW_T_SKIP_in_anonymousOrNamedAction2064 = new BitSet(new ulong[]{0x0000000000000002UL});
9407
    public static readonly BitSet FOLLOW_blockvar_in_blockvarlist2080 = new BitSet(new ulong[]{0x0000000000000082UL});
9408
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_blockvarlist2085 = new BitSet(new ulong[]{0x0000000000000100UL});
9409
    public static readonly BitSet FOLLOW_blockvar_in_blockvarlist2087 = new BitSet(new ulong[]{0x0000000000000082UL});
9410
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_blockvar2107 = new BitSet(new ulong[]{0x0000040000000000UL});
9411
    public static readonly BitSet FOLLOW_T_COLON_in_blockvar2110 = new BitSet(new ulong[]{0x00000000D650D100UL});
9412
    public static readonly BitSet FOLLOW_complexType_in_blockvar2114 = new BitSet(new ulong[]{0x0000000000000002UL});
9413
    public static readonly BitSet FOLLOW_actionBodyParallel_in_actionBody2149 = new BitSet(new ulong[]{0x0000000000000402UL});
9414
    public static readonly BitSet FOLLOW_T_PRIO_in_actionBody2153 = new BitSet(new ulong[]{0x00F0300400001100UL});
9415
    public static readonly BitSet FOLLOW_actionBodyParallel_in_actionBody2155 = new BitSet(new ulong[]{0x0000000000000002UL});
9416
    public static readonly BitSet FOLLOW_actionBodySequential_in_actionBodyParallel2183 = new BitSet(new ulong[]{0x0000000000000802UL});
9417
    public static readonly BitSet FOLLOW_T_NONDET_in_actionBodyParallel2189 = new BitSet(new ulong[]{0x00F0300400001100UL});
9418
    public static readonly BitSet FOLLOW_actionBodySequential_in_actionBodyParallel2193 = new BitSet(new ulong[]{0x0000000000000802UL});
9419
    public static readonly BitSet FOLLOW_actionBodyParen_in_actionBodySequential2220 = new BitSet(new ulong[]{0x0000000000000082UL});
9420
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_actionBodySequential2224 = new BitSet(new ulong[]{0x00F0300400001100UL});
9421
    public static readonly BitSet FOLLOW_actionBodyParen_in_actionBodySequential2226 = new BitSet(new ulong[]{0x0000000000000082UL});
9422
    public static readonly BitSet FOLLOW_T_LPAREN_in_actionBodyParen2244 = new BitSet(new ulong[]{0x00F0300400001100UL});
9423
    public static readonly BitSet FOLLOW_actionBody_in_actionBodyParen2246 = new BitSet(new ulong[]{0x0000000000002000UL});
9424
    public static readonly BitSet FOLLOW_T_RPAREN_in_actionBodyParen2249 = new BitSet(new ulong[]{0x0000000000000002UL});
9425
    public static readonly BitSet FOLLOW_statement_in_actionBodyParen2256 = new BitSet(new ulong[]{0x0000000000000002UL});
9426
    public static readonly BitSet FOLLOW_T_ABORT_in_statement2284 = new BitSet(new ulong[]{0x0000000000000002UL});
9427
    public static readonly BitSet FOLLOW_T_SKIP_in_statement2291 = new BitSet(new ulong[]{0x0000000000000002UL});
9428
    public static readonly BitSet FOLLOW_T_KILL_in_statement2298 = new BitSet(new ulong[]{0x0000000000001000UL});
9429
    public static readonly BitSet FOLLOW_T_LPAREN_in_statement2300 = new BitSet(new ulong[]{0x0080000000000100UL});
9430
    public static readonly BitSet FOLLOW_set_in_statement2304 = new BitSet(new ulong[]{0x0000000000002000UL});
9431
    public static readonly BitSet FOLLOW_T_RPAREN_in_statement2312 = new BitSet(new ulong[]{0x0000000000000002UL});
9432
    public static readonly BitSet FOLLOW_discreteActionBody_in_statement2322 = new BitSet(new ulong[]{0x0000000000000002UL});
9433
    public static readonly BitSet FOLLOW_reference_in_statement2331 = new BitSet(new ulong[]{0x0100000000080002UL});
9434
    public static readonly BitSet FOLLOW_T_ASSIGNMENT_in_statement2359 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9435
    public static readonly BitSet FOLLOW_expression_in_statement2364 = new BitSet(new ulong[]{0x0200000000000002UL});
9436
    public static readonly BitSet FOLLOW_T_WITH_in_statement2384 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9437
    public static readonly BitSet FOLLOW_expression_in_statement2388 = new BitSet(new ulong[]{0x0000000000000002UL});
9438
    public static readonly BitSet FOLLOW_T_COMMA_in_statement2441 = new BitSet(new ulong[]{0x0080000000000100UL});
9439
    public static readonly BitSet FOLLOW_reference_in_statement2445 = new BitSet(new ulong[]{0x0100000000080000UL});
9440
    public static readonly BitSet FOLLOW_T_ASSIGNMENT_in_statement2460 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9441
    public static readonly BitSet FOLLOW_expression_in_statement2482 = new BitSet(new ulong[]{0x0000000000080000UL});
9442
    public static readonly BitSet FOLLOW_T_COMMA_in_statement2501 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9443
    public static readonly BitSet FOLLOW_expression_in_statement2505 = new BitSet(new ulong[]{0x0200000000080002UL});
9444
    public static readonly BitSet FOLLOW_T_WITH_in_statement2519 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9445
    public static readonly BitSet FOLLOW_expression_in_statement2523 = new BitSet(new ulong[]{0x0000000000000002UL});
9446
    public static readonly BitSet FOLLOW_atomExpression_in_expression2598 = new BitSet(new ulong[]{0xFC03800000800202UL,0x00000000000FFFFBUL});
9447
    public static readonly BitSet FOLLOW_binoperator_in_expression2611 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9448
    public static readonly BitSet FOLLOW_atomExpression_in_expression2619 = new BitSet(new ulong[]{0xFC03800000800202UL,0x00000000000FFFFBUL});
9449
    public static readonly BitSet FOLLOW_T_BIIMPLIES_in_binoperator2652 = new BitSet(new ulong[]{0x0000000000000002UL});
9450
    public static readonly BitSet FOLLOW_T_GREATER_in_binoperator2661 = new BitSet(new ulong[]{0x0000000000000002UL});
9451
    public static readonly BitSet FOLLOW_T_GREATEREQUAL_in_binoperator2671 = new BitSet(new ulong[]{0x0000000000000002UL});
9452
    public static readonly BitSet FOLLOW_T_LESS_in_binoperator2680 = new BitSet(new ulong[]{0x0000000000000002UL});
9453
    public static readonly BitSet FOLLOW_T_LESSEQUAL_in_binoperator2690 = new BitSet(new ulong[]{0x0000000000000002UL});
9454
    public static readonly BitSet FOLLOW_T_EQUAL_in_binoperator2699 = new BitSet(new ulong[]{0x0000000000000002UL});
9455
    public static readonly BitSet FOLLOW_T_NOTEQUAL_in_binoperator2711 = new BitSet(new ulong[]{0x0000000000000002UL});
9456
    public static readonly BitSet FOLLOW_T_IMPLIES_in_binoperator2722 = new BitSet(new ulong[]{0x0000000000000002UL});
9457
    public static readonly BitSet FOLLOW_T_MINUS_in_binoperator2731 = new BitSet(new ulong[]{0x0000000000000002UL});
9458
    public static readonly BitSet FOLLOW_T_SUM_in_binoperator2741 = new BitSet(new ulong[]{0x0000000000000002UL});
9459
    public static readonly BitSet FOLLOW_T_IN_in_binoperator2751 = new BitSet(new ulong[]{0x0000000000000002UL,0x0000000000000004UL});
9460
    public static readonly BitSet FOLLOW_T_SET_in_binoperator2753 = new BitSet(new ulong[]{0x0000000000000002UL});
9461
    public static readonly BitSet FOLLOW_T_NOT_in_binoperator2764 = new BitSet(new ulong[]{0x0000000000000000UL,0x0000000000000002UL});
9462
    public static readonly BitSet FOLLOW_T_IN_in_binoperator2766 = new BitSet(new ulong[]{0x0000000000000002UL,0x0000000000000004UL});
9463
    public static readonly BitSet FOLLOW_T_SET_in_binoperator2768 = new BitSet(new ulong[]{0x0000000000000002UL});
9464
    public static readonly BitSet FOLLOW_T_SUBSET_in_binoperator2779 = new BitSet(new ulong[]{0x0000000000000002UL});
9465
    public static readonly BitSet FOLLOW_T_OR_in_binoperator2789 = new BitSet(new ulong[]{0x0000000000000002UL});
9466
    public static readonly BitSet FOLLOW_T_DIV_in_binoperator2798 = new BitSet(new ulong[]{0x0000000000000002UL});
9467
    public static readonly BitSet FOLLOW_T_PROD_in_binoperator2807 = new BitSet(new ulong[]{0x0000000000000002UL});
9468
    public static readonly BitSet FOLLOW_T_IDIV_in_binoperator2817 = new BitSet(new ulong[]{0x0000000000000002UL});
9469
    public static readonly BitSet FOLLOW_T_MOD_in_binoperator2827 = new BitSet(new ulong[]{0x0000000000000002UL});
9470
    public static readonly BitSet FOLLOW_T_UNION_in_binoperator2837 = new BitSet(new ulong[]{0x0000000000000002UL});
9471
    public static readonly BitSet FOLLOW_T_DIFF_in_binoperator2848 = new BitSet(new ulong[]{0x0000000000000002UL});
9472
    public static readonly BitSet FOLLOW_T_INTER_in_binoperator2859 = new BitSet(new ulong[]{0x0000000000000002UL});
9473
    public static readonly BitSet FOLLOW_T_AND_in_binoperator2870 = new BitSet(new ulong[]{0x0000000000000002UL});
9474
    public static readonly BitSet FOLLOW_T_POW_in_binoperator2885 = new BitSet(new ulong[]{0x0000000000000002UL});
9475
    public static readonly BitSet FOLLOW_T_CONC_in_binoperator2900 = new BitSet(new ulong[]{0x0000000000000002UL});
9476
    public static readonly BitSet FOLLOW_T_DOMRESBY_in_binoperator2913 = new BitSet(new ulong[]{0x0000000000000002UL});
9477
    public static readonly BitSet FOLLOW_T_DOMRESTO_in_binoperator2923 = new BitSet(new ulong[]{0x0000000000000002UL});
9478
    public static readonly BitSet FOLLOW_T_RNGRESBY_in_binoperator2933 = new BitSet(new ulong[]{0x0000000000000002UL});
9479
    public static readonly BitSet FOLLOW_T_RNGRESTO_in_binoperator2943 = new BitSet(new ulong[]{0x0000000000000002UL});
9480
    public static readonly BitSet FOLLOW_T_MUNION_in_binoperator2953 = new BitSet(new ulong[]{0x0000000000000002UL});
9481
    public static readonly BitSet FOLLOW_T_SEQMOD_MAPOVERRIDE_in_binoperator2963 = new BitSet(new ulong[]{0x0000000000000002UL});
9482
    public static readonly BitSet FOLLOW_op_un_in_atomExpression3001 = new BitSet(new ulong[]{0x00800000A0019100UL,0x040000007F000000UL});
9483
    public static readonly BitSet FOLLOW_identifierExpression_in_atomExpression3018 = new BitSet(new ulong[]{0x0000000000000002UL,0x0200000000000000UL});
9484
    public static readonly BitSet FOLLOW_qvalExpression_in_atomExpression3029 = new BitSet(new ulong[]{0x0000000000000002UL,0x0200000000000000UL});
9485
    public static readonly BitSet FOLLOW_constant_in_atomExpression3040 = new BitSet(new ulong[]{0x0000000000000002UL,0x0200000000000000UL});
9486
    public static readonly BitSet FOLLOW_initializedComplexType_in_atomExpression3051 = new BitSet(new ulong[]{0x0000000000000002UL,0x0200000000000000UL});
9487
    public static readonly BitSet FOLLOW_quantifierExpression_in_atomExpression3063 = new BitSet(new ulong[]{0x0000000000000002UL,0x0200000000000000UL});
9488
    public static readonly BitSet FOLLOW_T_LPAREN_in_atomExpression3072 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9489
    public static readonly BitSet FOLLOW_expression_in_atomExpression3076 = new BitSet(new ulong[]{0x0000000000002000UL});
9490
    public static readonly BitSet FOLLOW_T_RPAREN_in_atomExpression3078 = new BitSet(new ulong[]{0x0000000000009002UL,0x0200000000100000UL});
9491
    public static readonly BitSet FOLLOW_T_POINT_in_atomExpression3101 = new BitSet(new ulong[]{0x0000000000000100UL});
9492
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_atomExpression3113 = new BitSet(new ulong[]{0x0000000000009002UL,0x0200000000100000UL});
9493
    public static readonly BitSet FOLLOW_accessExpression_in_atomExpression3137 = new BitSet(new ulong[]{0x0000000000000002UL,0x0200000000000000UL});
9494
    public static readonly BitSet FOLLOW_accessExpression_in_atomExpression3157 = new BitSet(new ulong[]{0x0000000000000002UL,0x0200000000000000UL});
9495
    public static readonly BitSet FOLLOW_121_in_atomExpression3176 = new BitSet(new ulong[]{0x0000000000000100UL});
9496
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_atomExpression3180 = new BitSet(new ulong[]{0x0000000000000002UL});
9497
    public static readonly BitSet FOLLOW_T_IF_in_atomExpression3201 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9498
    public static readonly BitSet FOLLOW_expression_in_atomExpression3205 = new BitSet(new ulong[]{0x0000000000000000UL,0x0000000000400000UL});
9499
    public static readonly BitSet FOLLOW_T_THEN_in_atomExpression3207 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9500
    public static readonly BitSet FOLLOW_expression_in_atomExpression3211 = new BitSet(new ulong[]{0x0000000000000000UL,0x0000000000800000UL});
9501
    public static readonly BitSet FOLLOW_T_ELSE_in_atomExpression3213 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9502
    public static readonly BitSet FOLLOW_expression_in_atomExpression3217 = new BitSet(new ulong[]{0x0000080000000000UL});
9503
    public static readonly BitSet FOLLOW_T_END_in_atomExpression3219 = new BitSet(new ulong[]{0x0000000000000002UL});
9504
    public static readonly BitSet FOLLOW_set_in_quantifierExpression3251 = new BitSet(new ulong[]{0x0000000000000100UL});
9505
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_quantifierExpression3268 = new BitSet(new ulong[]{0x0000040000000000UL});
9506
    public static readonly BitSet FOLLOW_T_COLON_in_quantifierExpression3271 = new BitSet(new ulong[]{0x00000000D650D100UL});
9507
    public static readonly BitSet FOLLOW_simpleType_in_quantifierExpression3275 = new BitSet(new ulong[]{0x0000040000080000UL});
9508
    public static readonly BitSet FOLLOW_T_COMMA_in_quantifierExpression3286 = new BitSet(new ulong[]{0x0000000000000100UL});
9509
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_quantifierExpression3290 = new BitSet(new ulong[]{0x0000040000000000UL});
9510
    public static readonly BitSet FOLLOW_T_COLON_in_quantifierExpression3293 = new BitSet(new ulong[]{0x00000000D650D100UL});
9511
    public static readonly BitSet FOLLOW_simpleType_in_quantifierExpression3297 = new BitSet(new ulong[]{0x0000040000080000UL});
9512
    public static readonly BitSet FOLLOW_T_COLON_in_quantifierExpression3307 = new BitSet(new ulong[]{0x0000000000001000UL});
9513
    public static readonly BitSet FOLLOW_T_LPAREN_in_quantifierExpression3309 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9514
    public static readonly BitSet FOLLOW_expression_in_quantifierExpression3313 = new BitSet(new ulong[]{0x0000000000002000UL});
9515
    public static readonly BitSet FOLLOW_T_RPAREN_in_quantifierExpression3315 = new BitSet(new ulong[]{0x0000000000000002UL});
9516
    public static readonly BitSet FOLLOW_T_TRUE_in_constant3349 = new BitSet(new ulong[]{0x0000000000000002UL});
9517
    public static readonly BitSet FOLLOW_T_FALSE_in_constant3357 = new BitSet(new ulong[]{0x0000000000000002UL});
9518
    public static readonly BitSet FOLLOW_T_NIL_in_constant3364 = new BitSet(new ulong[]{0x0000000000000002UL});
9519
    public static readonly BitSet FOLLOW_T_SELF_in_constant3372 = new BitSet(new ulong[]{0x0000000000000002UL});
9520
    public static readonly BitSet FOLLOW_T_FLOATNUMBER_in_constant3383 = new BitSet(new ulong[]{0x0000000000000002UL});
9521
    public static readonly BitSet FOLLOW_T_INTNUMBER_in_constant3392 = new BitSet(new ulong[]{0x0000000000000002UL});
9522
    public static readonly BitSet FOLLOW_T_STRINGLITERAL_in_constant3401 = new BitSet(new ulong[]{0x0000000000000002UL});
9523
    public static readonly BitSet FOLLOW_initializedListType_in_initializedComplexType3428 = new BitSet(new ulong[]{0x0000000000000002UL});
9524
    public static readonly BitSet FOLLOW_initializedSetType_in_initializedComplexType3437 = new BitSet(new ulong[]{0x0000000000000002UL});
9525
    public static readonly BitSet FOLLOW_T_NEW_in_initializedComplexType3445 = new BitSet(new ulong[]{0x0000000000001000UL});
9526
    public static readonly BitSet FOLLOW_T_LPAREN_in_initializedComplexType3447 = new BitSet(new ulong[]{0x0000000000000100UL});
9527
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_initializedComplexType3451 = new BitSet(new ulong[]{0x0000000000082000UL});
9528
    public static readonly BitSet FOLLOW_T_COMMA_in_initializedComplexType3463 = new BitSet(new ulong[]{0x0000000000000000UL,0x0000000020000000UL});
9529
    public static readonly BitSet FOLLOW_T_STRINGLITERAL_in_initializedComplexType3468 = new BitSet(new ulong[]{0x0000000000002000UL});
9530
    public static readonly BitSet FOLLOW_T_RPAREN_in_initializedComplexType3470 = new BitSet(new ulong[]{0x0000000000000002UL});
9531
    public static readonly BitSet FOLLOW_T_RPAREN_in_initializedComplexType3479 = new BitSet(new ulong[]{0x0000000000000002UL});
9532
    public static readonly BitSet FOLLOW_T_LSQPAREN_in_initializedListType3510 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9533
    public static readonly BitSet FOLLOW_expression_in_initializedListType3514 = new BitSet(new ulong[]{0x00000000000A0000UL,0x0000000080000000UL});
9534
    public static readonly BitSet FOLLOW_T_COMMA_in_initializedListType3525 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9535
    public static readonly BitSet FOLLOW_expression_in_initializedListType3529 = new BitSet(new ulong[]{0x00000000000A0000UL});
9536
    public static readonly BitSet FOLLOW_listComprehension_in_initializedListType3541 = new BitSet(new ulong[]{0x0000000000020000UL});
9537
    public static readonly BitSet FOLLOW_T_RSQPAREN_in_initializedListType3549 = new BitSet(new ulong[]{0x0000000000000002UL});
9538
    public static readonly BitSet FOLLOW_T_BAR_in_listComprehension3580 = new BitSet(new ulong[]{0x0000000400000000UL});
9539
    public static readonly BitSet FOLLOW_T_VAR_in_listComprehension3582 = new BitSet(new ulong[]{0x0000000000000100UL});
9540
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_listComprehension3588 = new BitSet(new ulong[]{0x0000040000000000UL});
9541
    public static readonly BitSet FOLLOW_T_COLON_in_listComprehension3591 = new BitSet(new ulong[]{0x00000000D650D100UL});
9542
    public static readonly BitSet FOLLOW_complexType_in_listComprehension3595 = new BitSet(new ulong[]{0x0000000000000082UL,0x0100000000000000UL});
9543
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_listComprehension3604 = new BitSet(new ulong[]{0x0000000000000100UL});
9544
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_listComprehension3608 = new BitSet(new ulong[]{0x00000000D650D100UL});
9545
    public static readonly BitSet FOLLOW_complexType_in_listComprehension3613 = new BitSet(new ulong[]{0x0000000000000082UL,0x0100000000000000UL});
9546
    public static readonly BitSet FOLLOW_120_in_listComprehension3623 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9547
    public static readonly BitSet FOLLOW_expression_in_listComprehension3629 = new BitSet(new ulong[]{0x0000000000000002UL});
9548
    public static readonly BitSet FOLLOW_T_CBRL_in_initializedSetType3655 = new BitSet(new ulong[]{0x0000000000000000UL,0x0000000100000000UL});
9549
    public static readonly BitSet FOLLOW_T_MAPS_in_initializedSetType3657 = new BitSet(new ulong[]{0x0000000100000000UL});
9550
    public static readonly BitSet FOLLOW_T_CBRR_in_initializedSetType3659 = new BitSet(new ulong[]{0x0000000000000002UL});
9551
    public static readonly BitSet FOLLOW_initializedSet_in_initializedSetType3670 = new BitSet(new ulong[]{0x0000000000000002UL});
9552
    public static readonly BitSet FOLLOW_T_CBRL_in_initializedSet3696 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9553
    public static readonly BitSet FOLLOW_expression_in_initializedSet3700 = new BitSet(new ulong[]{0x0000000100080000UL,0x0000000180000000UL});
9554
    public static readonly BitSet FOLLOW_T_COMMA_in_initializedSet3730 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9555
    public static readonly BitSet FOLLOW_expression_in_initializedSet3734 = new BitSet(new ulong[]{0x0000000100080000UL});
9556
    public static readonly BitSet FOLLOW_map_in_initializedSet3752 = new BitSet(new ulong[]{0x0000000100000000UL});
9557
    public static readonly BitSet FOLLOW_setComprehension_in_initializedSet3765 = new BitSet(new ulong[]{0x0000000100000000UL});
9558
    public static readonly BitSet FOLLOW_T_CBRR_in_initializedSet3775 = new BitSet(new ulong[]{0x0000000000000002UL});
9559
    public static readonly BitSet FOLLOW_T_MAPS_in_map3813 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9560
    public static readonly BitSet FOLLOW_expression_in_map3817 = new BitSet(new ulong[]{0x0000000000080002UL});
9561
    public static readonly BitSet FOLLOW_T_COMMA_in_map3825 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9562
    public static readonly BitSet FOLLOW_expression_in_map3829 = new BitSet(new ulong[]{0x0000000000000000UL,0x0000000100000000UL});
9563
    public static readonly BitSet FOLLOW_T_MAPS_in_map3831 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9564
    public static readonly BitSet FOLLOW_expression_in_map3835 = new BitSet(new ulong[]{0x0000000000080002UL});
9565
    public static readonly BitSet FOLLOW_T_BAR_in_setComprehension3857 = new BitSet(new ulong[]{0x0000000400000000UL});
9566
    public static readonly BitSet FOLLOW_T_VAR_in_setComprehension3859 = new BitSet(new ulong[]{0x0000000000000102UL,0x0100000000000000UL});
9567
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_setComprehension3864 = new BitSet(new ulong[]{0x0000040000000000UL});
9568
    public static readonly BitSet FOLLOW_T_COLON_in_setComprehension3867 = new BitSet(new ulong[]{0x00000000D650D100UL});
9569
    public static readonly BitSet FOLLOW_complexType_in_setComprehension3871 = new BitSet(new ulong[]{0x0000000000000080UL});
9570
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_setComprehension3880 = new BitSet(new ulong[]{0x0000000000000100UL});
9571
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_setComprehension3884 = new BitSet(new ulong[]{0x0000040000000000UL});
9572
    public static readonly BitSet FOLLOW_T_COLON_in_setComprehension3886 = new BitSet(new ulong[]{0x00000000D650D100UL});
9573
    public static readonly BitSet FOLLOW_complexType_in_setComprehension3890 = new BitSet(new ulong[]{0x0000000000000102UL,0x0100000000000000UL});
9574
    public static readonly BitSet FOLLOW_120_in_setComprehension3904 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9575
    public static readonly BitSet FOLLOW_expression_in_setComprehension3910 = new BitSet(new ulong[]{0x0000000000000002UL});
9576
    public static readonly BitSet FOLLOW_122_in_qvalExpression3945 = new BitSet(new ulong[]{0x0000000000001000UL});
9577
    public static readonly BitSet FOLLOW_T_LPAREN_in_qvalExpression3947 = new BitSet(new ulong[]{0x0080000001800100UL,0x0000000010000000UL});
9578
    public static readonly BitSet FOLLOW_T_NIL_in_qvalExpression3961 = new BitSet(new ulong[]{0x0000000000080000UL});
9579
    public static readonly BitSet FOLLOW_qualifiedIdentifier_in_qvalExpression3982 = new BitSet(new ulong[]{0x0000000008080000UL});
9580
    public static readonly BitSet FOLLOW_T_MINUS_in_qvalExpression4001 = new BitSet(new ulong[]{0x0000000001000000UL});
9581
    public static readonly BitSet FOLLOW_T_INFTY_in_qvalExpression4007 = new BitSet(new ulong[]{0x0000000008080000UL});
9582
    public static readonly BitSet FOLLOW_T_RANGETO_in_qvalExpression4025 = new BitSet(new ulong[]{0x0080000001000100UL});
9583
    public static readonly BitSet FOLLOW_qualifiedIdentifier_in_qvalExpression4035 = new BitSet(new ulong[]{0x0000000000080000UL});
9584
    public static readonly BitSet FOLLOW_T_INFTY_in_qvalExpression4053 = new BitSet(new ulong[]{0x0000000000080000UL});
9585
    public static readonly BitSet FOLLOW_T_COMMA_in_qvalExpression4077 = new BitSet(new ulong[]{0x0000000000000000UL,0x3800000010000000UL});
9586
    public static readonly BitSet FOLLOW_T_NIL_in_qvalExpression4087 = new BitSet(new ulong[]{0x0000000000002000UL});
9587
    public static readonly BitSet FOLLOW_123_in_qvalExpression4103 = new BitSet(new ulong[]{0x0000000000002000UL});
9588
    public static readonly BitSet FOLLOW_124_in_qvalExpression4116 = new BitSet(new ulong[]{0x0000000000002000UL});
9589
    public static readonly BitSet FOLLOW_125_in_qvalExpression4129 = new BitSet(new ulong[]{0x0000000000002000UL});
9590
    public static readonly BitSet FOLLOW_T_RPAREN_in_qvalExpression4151 = new BitSet(new ulong[]{0x0000000000000002UL});
9591
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_identifierExpression4184 = new BitSet(new ulong[]{0x0000000000001000UL});
9592
    public static readonly BitSet FOLLOW_T_LPAREN_in_identifierExpression4186 = new BitSet(new ulong[]{0x00800000A081B100UL,0x04007FFC7F200008UL});
9593
    public static readonly BitSet FOLLOW_methodCallParams_in_identifierExpression4190 = new BitSet(new ulong[]{0x0000000000002000UL});
9594
    public static readonly BitSet FOLLOW_T_RPAREN_in_identifierExpression4192 = new BitSet(new ulong[]{0x0000000000000002UL});
9595
    public static readonly BitSet FOLLOW_reference_in_identifierExpression4207 = new BitSet(new ulong[]{0x0000000000000002UL});
9596
    public static readonly BitSet FOLLOW_qualifiedIdentifier_in_reference4245 = new BitSet(new ulong[]{0x000C000000009002UL,0x4000000200000000UL});
9597
    public static readonly BitSet FOLLOW_accessExpression_in_reference4257 = new BitSet(new ulong[]{0x000C000000000002UL,0x4000000200000000UL});
9598
    public static readonly BitSet FOLLOW_T_PRIMED_in_reference4282 = new BitSet(new ulong[]{0x0000000000000002UL});
9599
    public static readonly BitSet FOLLOW_126_in_reference4298 = new BitSet(new ulong[]{0x0000000000001000UL});
9600
    public static readonly BitSet FOLLOW_T_LPAREN_in_reference4300 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9601
    public static readonly BitSet FOLLOW_expression_in_reference4304 = new BitSet(new ulong[]{0x0000000000002000UL});
9602
    public static readonly BitSet FOLLOW_T_RPAREN_in_reference4306 = new BitSet(new ulong[]{0x000C000000000000UL});
9603
    public static readonly BitSet FOLLOW_set_in_reference4312 = new BitSet(new ulong[]{0x0000000000001000UL});
9604
    public static readonly BitSet FOLLOW_T_LPAREN_in_reference4318 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9605
    public static readonly BitSet FOLLOW_expression_in_reference4322 = new BitSet(new ulong[]{0x0000000000002000UL});
9606
    public static readonly BitSet FOLLOW_T_RPAREN_in_reference4324 = new BitSet(new ulong[]{0x0000000000000002UL});
9607
    public static readonly BitSet FOLLOW_T_LSQPAREN_in_accessExpression4369 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9608
    public static readonly BitSet FOLLOW_expression_in_accessExpression4373 = new BitSet(new ulong[]{0x0000000000020000UL});
9609
    public static readonly BitSet FOLLOW_T_RSQPAREN_in_accessExpression4375 = new BitSet(new ulong[]{0x0000000000009002UL,0x0000000000100000UL});
9610
    public static readonly BitSet FOLLOW_T_LPAREN_in_accessExpression4402 = new BitSet(new ulong[]{0x00800000A081B100UL,0x04007FFC7F200008UL});
9611
    public static readonly BitSet FOLLOW_methodCallParams_in_accessExpression4406 = new BitSet(new ulong[]{0x0000000000002000UL});
9612
    public static readonly BitSet FOLLOW_T_RPAREN_in_accessExpression4408 = new BitSet(new ulong[]{0x0000000000009002UL,0x0000000000100000UL});
9613
    public static readonly BitSet FOLLOW_T_POINT_in_accessExpression4430 = new BitSet(new ulong[]{0x0000000000000100UL});
9614
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_accessExpression4438 = new BitSet(new ulong[]{0x0000000000009002UL,0x0000000000100000UL});
9615
    public static readonly BitSet FOLLOW_accessExpression_in_accessExpression4454 = new BitSet(new ulong[]{0x0000000000000002UL});
9616
    public static readonly BitSet FOLLOW_T_SELF_in_qualifiedIdentifier4493 = new BitSet(new ulong[]{0x0000000000000000UL,0x0000000000100000UL});
9617
    public static readonly BitSet FOLLOW_T_POINT_in_qualifiedIdentifier4495 = new BitSet(new ulong[]{0x0000000000000100UL});
9618
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_qualifiedIdentifier4507 = new BitSet(new ulong[]{0x0000000000000002UL,0x0000000000100000UL});
9619
    public static readonly BitSet FOLLOW_T_POINT_in_qualifiedIdentifier4516 = new BitSet(new ulong[]{0x0000000000000100UL});
9620
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_qualifiedIdentifier4520 = new BitSet(new ulong[]{0x0000000000000002UL,0x0000000000100000UL});
9621
    public static readonly BitSet FOLLOW_expression_in_methodCallParams4553 = new BitSet(new ulong[]{0x0000000000080002UL});
9622
    public static readonly BitSet FOLLOW_T_COMMA_in_methodCallParams4558 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
9623
    public static readonly BitSet FOLLOW_expression_in_methodCallParams4562 = new BitSet(new ulong[]{0x0000000000080002UL});
9624
    public static readonly BitSet FOLLOW_op_un_set_list_in_op_un4601 = new BitSet(new ulong[]{0x0000000000000002UL});
9625
    public static readonly BitSet FOLLOW_op_un_map_in_op_un4610 = new BitSet(new ulong[]{0x0000000000000002UL});
9626
    public static readonly BitSet FOLLOW_T_MINUS_in_op_un4618 = new BitSet(new ulong[]{0x0000000000000002UL});
9627
    public static readonly BitSet FOLLOW_T_NOT_in_op_un4626 = new BitSet(new ulong[]{0x0000000000000002UL});
9628
    public static readonly BitSet FOLLOW_T_ABS_in_op_un4634 = new BitSet(new ulong[]{0x0000000000000002UL});
9629
    public static readonly BitSet FOLLOW_T_CARD_in_op_un_set_list4661 = new BitSet(new ulong[]{0x0000000000000002UL});
9630
    public static readonly BitSet FOLLOW_T_DCONC_in_op_un_set_list4672 = new BitSet(new ulong[]{0x0000000000000002UL});
9631
    public static readonly BitSet FOLLOW_T_DINTER_in_op_un_set_list4683 = new BitSet(new ulong[]{0x0000000000000002UL});
9632
    public static readonly BitSet FOLLOW_T_DUNION_in_op_un_set_list4693 = new BitSet(new ulong[]{0x0000000000000002UL});
9633
    public static readonly BitSet FOLLOW_T_ELEMS_in_op_un_set_list4703 = new BitSet(new ulong[]{0x0000000000000002UL});
9634
    public static readonly BitSet FOLLOW_T_HEAD_in_op_un_set_list4714 = new BitSet(new ulong[]{0x0000000000000002UL});
9635
    public static readonly BitSet FOLLOW_T_INDS_in_op_un_set_list4725 = new BitSet(new ulong[]{0x0000000000000002UL});
9636
    public static readonly BitSet FOLLOW_T_LEN_in_op_un_set_list4736 = new BitSet(new ulong[]{0x0000000000000002UL});
9637
    public static readonly BitSet FOLLOW_T_TAIL_in_op_un_set_list4747 = new BitSet(new ulong[]{0x0000000000000002UL});
9638
    public static readonly BitSet FOLLOW_T_DOM_in_op_un_map4776 = new BitSet(new ulong[]{0x0000000000000002UL});
9639
    public static readonly BitSet FOLLOW_T_RNG_in_op_un_map4787 = new BitSet(new ulong[]{0x0000000000000002UL});
9640
    public static readonly BitSet FOLLOW_T_MERGE_in_op_un_map4798 = new BitSet(new ulong[]{0x0000000000000002UL});
9641

    
9642
}
9643
}