Project

General

Profile

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

1 3 krennw
// $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
}