Project

General

Profile

root / branches / compiler / cSharp / ooasCompiler / src / output / ooaParser.cs

1 3 krennw
// $ANTLR 3.2 Sep 23, 2009 12:02:23 C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g 2011-02-10 11:21:04
2
3
#define ANTLR_DEBUG
4
// The variable 'variable' is assigned but its value is never used.
5
#pragma warning disable 168, 219
6
// Unreachable code detected.
7
#pragma warning disable 162
8
9
10
/*
11
    Ulysses OO-Action System Parser
12
13
    Copyright Willibald Krenn 2009
14
15
 */
16
17
18
using System;
19
using Antlr.Runtime;
20
using IList 		= System.Collections.IList;
21
using ArrayList 	= System.Collections.ArrayList;
22
using Stack 		= Antlr.Runtime.Collections.StackList;
23
24
25
using Antlr.Runtime.Debug;
26
using IOException = System.IO.IOException;
27
namespace  TUG.Mogentes
28
{
29
public partial class ooaParser : DebugParser
30
{
31
    public static readonly string[] tokenNames = new string[]
32
	{
33
        "<invalid>",
34
		"<EOR>",
35
		"<DOWN>",
36
		"<UP>",
37
		"T_CONSTS",
38
		"T_TYPES",
39
		"T_SYSTEM",
40
		"T_SEMICOLON",
41
		"T_IDENTIFIER",
42
		"T_EQUAL",
43
		"T_PRIO",
44
		"T_NONDET",
45
		"T_LPAREN",
46
		"T_RPAREN",
47
		"T_LIST",
48
		"T_LSQPAREN",
49
		"T_INTNUMBER",
50
		"T_RSQPAREN",
51
		"T_OF",
52
		"T_COMMA",
53
		"T_MAP",
54
		"T_TO",
55
		"T_QUANTITY",
56
		"T_MINUS",
57
		"T_INFTY",
58
		"T_BOOL",
59
		"T_INT",
60
		"T_RANGETO",
61
		"T_FLOAT",
62
		"T_FLOATNUMBER",
63
		"T_CHAR",
64
		"T_CBRL",
65
		"T_CBRR",
66
		"T_AUTOCONS",
67
		"T_VAR",
68
		"T_METHODS",
69
		"T_ACTIONS",
70
		"T_DO",
71
		"T_OD",
72
		"T_STATIC",
73
		"T_OBS",
74
		"T_CTRL",
75
		"T_COLON",
76
		"T_END",
77
		"T_CONT",
78
		"T_REQUIRES",
79
		"T_DERIV",
80
		"T_SUM",
81
		"T_DIFF",
82
		"T_PROD",
83
		"T_FOLDLR",
84
		"T_FOLDRL",
85
		"T_SKIP",
86
		"T_ABORT",
87
		"T_KILL",
88
		"T_SELF",
89
		"T_ASSIGNMENT",
90
		"T_WITH",
91
		"T_BIIMPLIES",
92
		"T_GREATER",
93
		"T_GREATEREQUAL",
94
		"T_LESS",
95
		"T_LESSEQUAL",
96
		"T_NOTEQUAL",
97
		"T_IMPLIES",
98
		"T_IN",
99
		"T_SET",
100
		"T_NOT",
101
		"T_SUBSET",
102
		"T_OR",
103
		"T_DIV",
104
		"T_IDIV",
105
		"T_MOD",
106
		"T_UNION",
107
		"T_INTER",
108
		"T_AND",
109
		"T_POW",
110
		"T_CONC",
111
		"T_DOMRESBY",
112
		"T_DOMRESTO",
113
		"T_RNGRESBY",
114
		"T_RNGRESTO",
115
		"T_MUNION",
116
		"T_SEQMOD_MAPOVERRIDE",
117
		"T_POINT",
118
		"T_IF",
119
		"T_THEN",
120
		"T_ELSE",
121
		"T_FORALL",
122
		"T_EXISTS",
123
		"T_TRUE",
124
		"T_FALSE",
125
		"T_NIL",
126
		"T_STRINGLITERAL",
127
		"T_NEW",
128
		"T_BAR",
129
		"T_MAPS",
130
		"T_PRIMED",
131
		"T_ABS",
132
		"T_CARD",
133
		"T_DCONC",
134
		"T_DINTER",
135
		"T_DUNION",
136
		"T_ELEMS",
137
		"T_HEAD",
138
		"T_INDS",
139
		"T_LEN",
140
		"T_TAIL",
141
		"T_DOM",
142
		"T_RNG",
143
		"T_MERGE",
144
		"T_WS",
145
		"T_COMMENT",
146
		"LINE_COMMENT",
147
		"T_DIGIT",
148
		"FLOAT_OR_INT_OR_RANGE",
149
		"T_LETTER",
150
		"'|['",
151
		"']|'",
152
		"'begin'",
153
		"'&'",
154
		"'as'",
155
		"'qval'",
156
		"'steady'",
157
		"'inc'",
158
		"'dec'",
159
		"'::'"
160
    };
161
162
    public const int T_FLOATNUMBER = 29;
163
    public const int T_SYSTEM = 6;
164
    public const int T_ELSE = 87;
165
    public const int T_LPAREN = 12;
166
    public const int T_DUNION = 102;
167
    public const int T_BOOL = 25;
168
    public const int T_METHODS = 35;
169
    public const int T_INDS = 105;
170
    public const int T_OR = 69;
171
    public const int EOF = -1;
172
    public const int T_OD = 38;
173
    public const int T_AND = 75;
174
    public const int T_OF = 18;
175
    public const int T_STRINGLITERAL = 93;
176
    public const int T_SET = 66;
177
    public const int T_SKIP = 52;
178
    public const int T_WITH = 57;
179
    public const int T_DOM = 108;
180
    public const int T_WS = 111;
181
    public const int T_VAR = 34;
182
    public const int T_SUM = 47;
183
    public const int T_REQUIRES = 45;
184
    public const int T_DINTER = 101;
185
    public const int T_HEAD = 104;
186
    public const int T_AUTOCONS = 33;
187
    public const int T_END = 43;
188
    public const int T_TRUE = 90;
189
    public const int T_LSQPAREN = 15;
190
    public const int T_PRIMED = 97;
191
    public const int T_MAPS = 96;
192
    public const int T_NIL = 92;
193
    public const int T_INFTY = 24;
194
    public const int T_IF = 85;
195
    public const int LINE_COMMENT = 113;
196
    public const int T_THEN = 86;
197
    public const int T_FLOAT = 28;
198
    public const int T_TAIL = 107;
199
    public const int T_SELF = 55;
200
    public const int T_MERGE = 110;
201
    public const int T_DIFF = 48;
202
    public const int T_FOLDRL = 51;
203
    public const int T_QUANTITY = 22;
204
    public const int T_IN = 65;
205
    public const int T_MUNION = 82;
206
    public const int T__126 = 126;
207
    public const int T__125 = 125;
208
    public const int T_INTER = 74;
209
    public const int T_SEMICOLON = 7;
210
    public const int T_FOLDLR = 50;
211
    public const int T_CARD = 99;
212
    public const int T_FALSE = 91;
213
    public const int T_CONT = 44;
214
    public const int T_SUBSET = 68;
215
    public const int T_COMMA = 19;
216
    public const int T_RANGETO = 27;
217
    public const int T_MINUS = 23;
218
    public const int T_CONC = 77;
219
    public const int T_IDIV = 71;
220
    public const int T_FORALL = 88;
221
    public const int T_DERIV = 46;
222
    public const int T_CONSTS = 4;
223
    public const int T_TYPES = 5;
224
    public const int T_GREATEREQUAL = 60;
225
    public const int T__118 = 118;
226
    public const int T_RNG = 109;
227
    public const int T__119 = 119;
228
    public const int T_MOD = 72;
229
    public const int T__117 = 117;
230
    public const int T_SEQMOD_MAPOVERRIDE = 83;
231
    public const int T__124 = 124;
232
    public const int T__123 = 123;
233
    public const int T_ELEMS = 103;
234
    public const int T__122 = 122;
235
    public const int T__121 = 121;
236
    public const int T_IMPLIES = 64;
237
    public const int T__120 = 120;
238
    public const int T_EXISTS = 89;
239
    public const int T_POW = 76;
240
    public const int T_COMMENT = 112;
241
    public const int T_RPAREN = 13;
242
    public const int T_PRIO = 10;
243
    public const int T_RNGRESBY = 80;
244
    public const int T_ABS = 98;
245
    public const int T_DIV = 70;
246
    public const int T_LIST = 14;
247
    public const int T_CBRL = 31;
248
    public const int T_DCONC = 100;
249
    public const int T_ABORT = 53;
250
    public const int T_CHAR = 30;
251
    public const int T_POINT = 84;
252
    public const int T_STATIC = 39;
253
    public const int T_CBRR = 32;
254
    public const int T_INT = 26;
255
    public const int T_COLON = 42;
256
    public const int T_PROD = 49;
257
    public const int T_ACTIONS = 36;
258
    public const int T_DIGIT = 114;
259
    public const int T_LESS = 61;
260
    public const int T_BAR = 95;
261
    public const int T_TO = 21;
262
    public const int T_NONDET = 11;
263
    public const int T_DOMRESBY = 78;
264
    public const int T_DOMRESTO = 79;
265
    public const int T_EQUAL = 9;
266
    public const int T_GREATER = 59;
267
    public const int T_KILL = 54;
268
    public const int T_RNGRESTO = 81;
269
    public const int T_RSQPAREN = 17;
270
    public const int T_NEW = 94;
271
    public const int T_INTNUMBER = 16;
272
    public const int T_UNION = 73;
273
    public const int T_OBS = 40;
274
    public const int T_BIIMPLIES = 58;
275
    public const int T_NOTEQUAL = 63;
276
    public const int T_IDENTIFIER = 8;
277
    public const int T_DO = 37;
278
    public const int FLOAT_OR_INT_OR_RANGE = 115;
279
    public const int T_LEN = 106;
280
    public const int T_NOT = 67;
281
    public const int T_ASSIGNMENT = 56;
282
    public const int T_LETTER = 116;
283
    public const int T_MAP = 20;
284
    public const int T_LESSEQUAL = 62;
285
    public const int T_CTRL = 41;
286
287
    // delegates
288
    // delegators
289
290
    public static readonly string[] ruleNames = new string[] {
291
        "invalidRule", "statement", "op_un_set_list", "actionBodyParallel",
292
        "atomExpression", "initializedListType", "anonymousAction", "asTypeCompositionParallel",
293
        "actionBodySequential", "listComprehension", "methodCallParams",
294
        "constant", "qvalExpression", "namedTypeList", "map", "namedConst",
295
        "initializedSetType", "qualifiedIdentifier", "op_un", "actionBlockParen",
296
        "ooActionSystems", "blockvarlist", "setComprehension", "binoperator",
297
        "asTypeCompositionBlockParen", "localActionVars", "simpleType",
298
        "namedAction", "identifierExpression", "asTypeComposition", "expression",
299
        "reference", "namedActionList", "ooActionSystem", "actionBlockParallel",
300
        "complexType", "actionBody", "attrList", "initializedComplexType",
301
        "continuousActionBody", "methodParameterList", "methodList", "qualConstraint",
302
        "namedConstList", "actionBlock", "actionBlockSequential", "initializedSet",
303
        "accessExpression", "asTypeCompositionSequential", "method", "namedType",
304
        "actionBodyParen", "discreteActionBody", "quantifierExpression",
305
        "attr", "op_un_map", "blockvar", "anonymousOrNamedAction", "qualConstraintList"
306
    };
307
308
        private int ruleLevel = 0;
309
        public int RuleLevel {
310
    	get { return ruleLevel; }
311
        }
312
        public void IncRuleLevel() { ruleLevel++; }
313
        public void DecRuleLevel() { ruleLevel--; }
314
        public ooaParser(ITokenStream input)
315
            : this(input, DebugEventSocketProxy.DEFAULT_DEBUGGER_PORT, new RecognizerSharedState()) {
316
        }
317
318
        public ooaParser(ITokenStream input, int port, RecognizerSharedState state)
319
            : base(input, state) {
320
            DebugEventSocketProxy dbg = new DebugEventSocketProxy(this, port, null);DebugListener = dbg;
321
            try
322
            {
323
                dbg.Handshake();
324
            }
325
            catch (IOException ioe)
326
            {
327
                ReportError(ioe);
328
            }
329
            InitializeCyclicDFAs(dbg);
330
331
        }
332
    public ooaParser(ITokenStream input, IDebugEventListener dbg)
333
        : base(input, dbg, new RecognizerSharedState()) {
334
        InitializeCyclicDFAs(dbg);
335
336
    }
337
    protected bool EvalPredicate(bool result, string predicate)
338
    {
339
        dbg.SemanticPredicate(result, predicate);
340
        return result;
341
    }
342
343
344
    override public string[] TokenNames {
345
		get { return ooaParser.tokenNames; }
346
    }
347
348
    override public string GrammarFileName {
349
		get { return "C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g"; }
350
    }
351
352
353
354
    // $ANTLR start "ooActionSystems"
355
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:135:1: ooActionSystems : ( T_CONSTS namedConstList )? T_TYPES namedTypeList T_SYSTEM comp= asTypeComposition[null] ;
356
    public void ooActionSystems() // throws RecognitionException [1]
357
    {
358
        IdentifierList comp = default(IdentifierList);
359
360
361
        try {
362
        	dbg.EnterRule(GrammarFileName, "ooActionSystems");
363
        	if ( RuleLevel==0 ) {dbg.Commence();}
364
        	IncRuleLevel();
365
        	dbg.Location(135, 1);
366
367
        try
368
    	{
369
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:136:2: ( ( T_CONSTS namedConstList )? T_TYPES namedTypeList T_SYSTEM comp= asTypeComposition[null] )
370
            dbg.EnterAlt(1);
371
372
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:136:4: ( T_CONSTS namedConstList )? T_TYPES namedTypeList T_SYSTEM comp= asTypeComposition[null]
373
            {
374
            	dbg.Location(136,4);
375
            	initializeTopLevelParserState();
376
            	dbg.Location(138,11);
377
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:138:11: ( T_CONSTS namedConstList )?
378
            	int alt1 = 2;
379
            	try { dbg.EnterSubRule(1);
380
            	try { dbg.EnterDecision(1);
381
382
            	int LA1_0 = input.LA(1);
383
384
            	if ( (LA1_0 == T_CONSTS) )
385
            	{
386
            	    alt1 = 1;
387
            	}
388
            	} finally { dbg.ExitDecision(1); }
389
390
            	switch (alt1)
391
            	{
392
            	    case 1 :
393
            	        dbg.EnterAlt(1);
394
395
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:138:12: T_CONSTS namedConstList
396
            	        {
397
            	        	dbg.Location(138,12);
398
            	        	Match(input,T_CONSTS,FOLLOW_T_CONSTS_in_ooActionSystems93);
399
            	        	dbg.Location(138,21);
400
            	        	PushFollow(FOLLOW_namedConstList_in_ooActionSystems95);
401
            	        	namedConstList();
402
            	        	state.followingStackPointer--;
403
404
405
            	        }
406
            	        break;
407
408
            	}
409
            	} finally { dbg.ExitSubRule(1); }
410
411
            	dbg.Location(140,4);
412
            	Match(input,T_TYPES,FOLLOW_T_TYPES_in_ooActionSystems105);
413
            	dbg.Location(141,6);
414
            	PushFollow(FOLLOW_namedTypeList_in_ooActionSystems113);
415
            	namedTypeList();
416
            	state.followingStackPointer--;
417
418
            	dbg.Location(142,4);
419
            	Match(input,T_SYSTEM,FOLLOW_T_SYSTEM_in_ooActionSystems118);
420
            	dbg.Location(143,8);
421
            	PushFollow(FOLLOW_asTypeComposition_in_ooActionSystems125);
422
            	comp = asTypeComposition(null);
423
            	state.followingStackPointer--;
424
425
            	dbg.Location(144,4);
426
            	fixUpRun(comp);
427
428
            }
429
430
        }
431
        catch (RecognitionException re)
432
    	{
433
            ReportError(re);
434
            Recover(input,re);
435
        }
436
        finally
437
    	{
438
        }
439
        dbg.Location(145, 2);
440
441
        }
442
        finally {
443
            dbg.ExitRule(GrammarFileName, "ooActionSystems");
444
            DecRuleLevel();
445
            if ( RuleLevel==0 ) {dbg.Terminate();}
446
        }
447
448
        return ;
449
    }
450
    // $ANTLR end "ooActionSystems"
451
452
453
    // $ANTLR start "namedConstList"
454
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:153:1: namedConstList : namedConst ( T_SEMICOLON namedConst )* ;
455
    public void namedConstList() // throws RecognitionException [1]
456
    {
457
        try {
458
        	dbg.EnterRule(GrammarFileName, "namedConstList");
459
        	if ( RuleLevel==0 ) {dbg.Commence();}
460
        	IncRuleLevel();
461
        	dbg.Location(153, 1);
462
463
        try
464
    	{
465
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:154:2: ( namedConst ( T_SEMICOLON namedConst )* )
466
            dbg.EnterAlt(1);
467
468
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:154:4: namedConst ( T_SEMICOLON namedConst )*
469
            {
470
            	dbg.Location(154,4);
471
            	PushFollow(FOLLOW_namedConst_in_namedConstList148);
472
            	namedConst();
473
            	state.followingStackPointer--;
474
475
            	dbg.Location(154,15);
476
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:154:15: ( T_SEMICOLON namedConst )*
477
            	try { dbg.EnterSubRule(2);
478
479
            	do
480
            	{
481
            	    int alt2 = 2;
482
            	    try { dbg.EnterDecision(2);
483
484
            	    int LA2_0 = input.LA(1);
485
486
            	    if ( (LA2_0 == T_SEMICOLON) )
487
            	    {
488
            	        alt2 = 1;
489
            	    }
490
491
492
            	    } finally { dbg.ExitDecision(2); }
493
494
            	    switch (alt2)
495
            		{
496
            			case 1 :
497
            			    dbg.EnterAlt(1);
498
499
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:154:16: T_SEMICOLON namedConst
500
            			    {
501
            			    	dbg.Location(154,16);
502
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_namedConstList151);
503
            			    	dbg.Location(154,28);
504
            			    	PushFollow(FOLLOW_namedConst_in_namedConstList153);
505
            			    	namedConst();
506
            			    	state.followingStackPointer--;
507
508
509
            			    }
510
            			    break;
511
512
            			default:
513
            			    goto loop2;
514
            	    }
515
            	} while (true);
516
517
            	loop2:
518
            		;	// Stops C# compiler whining that label 'loop2' has no statements
519
            	} finally { dbg.ExitSubRule(2); }
520
521
522
            }
523
524
        }
525
        catch (RecognitionException re)
526
    	{
527
            ReportError(re);
528
            Recover(input,re);
529
        }
530
        finally
531
    	{
532
        }
533
        dbg.Location(155, 2);
534
535
        }
536
        finally {
537
            dbg.ExitRule(GrammarFileName, "namedConstList");
538
            DecRuleLevel();
539
            if ( RuleLevel==0 ) {dbg.Terminate();}
540
        }
541
542
        return ;
543
    }
544
    // $ANTLR end "namedConstList"
545
546
547
    // $ANTLR start "namedConst"
548
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:157:1: namedConst : aName= T_IDENTIFIER T_EQUAL anExpr= expression ;
549
    public void namedConst() // throws RecognitionException [1]
550
    {
551
        IToken aName = null;
552
        Expression anExpr = default(Expression);
553
554
555
        try {
556
        	dbg.EnterRule(GrammarFileName, "namedConst");
557
        	if ( RuleLevel==0 ) {dbg.Commence();}
558
        	IncRuleLevel();
559
        	dbg.Location(157, 1);
560
561
        try
562
    	{
563
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:158:2: (aName= T_IDENTIFIER T_EQUAL anExpr= expression )
564
            dbg.EnterAlt(1);
565
566
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:158:4: aName= T_IDENTIFIER T_EQUAL anExpr= expression
567
            {
568
            	dbg.Location(158,9);
569
            	aName=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_namedConst169);
570
            	dbg.Location(159,3);
571
            	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_namedConst173);
572
            	dbg.Location(160,9);
573
            	PushFollow(FOLLOW_expression_in_namedConst179);
574
            	anExpr = expression();
575
            	state.followingStackPointer--;
576
577
            	dbg.Location(161,3);
578
            	addNamedConst(aName,anExpr);
579
580
            }
581
582
        }
583
        catch (RecognitionException re)
584
    	{
585
            ReportError(re);
586
            Recover(input,re);
587
        }
588
        finally
589
    	{
590
        }
591
        dbg.Location(162, 2);
592
593
        }
594
        finally {
595
            dbg.ExitRule(GrammarFileName, "namedConst");
596
            DecRuleLevel();
597
            if ( RuleLevel==0 ) {dbg.Terminate();}
598
        }
599
600
        return ;
601
    }
602
    // $ANTLR end "namedConst"
603
604
605
    // $ANTLR start "namedTypeList"
606
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:168:1: namedTypeList : namedType ( T_SEMICOLON namedType )* ;
607
    public void namedTypeList() // throws RecognitionException [1]
608
    {
609
        try {
610
        	dbg.EnterRule(GrammarFileName, "namedTypeList");
611
        	if ( RuleLevel==0 ) {dbg.Commence();}
612
        	IncRuleLevel();
613
        	dbg.Location(168, 1);
614
615
        try
616
    	{
617
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:169:2: ( namedType ( T_SEMICOLON namedType )* )
618
            dbg.EnterAlt(1);
619
620
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:169:4: namedType ( T_SEMICOLON namedType )*
621
            {
622
            	dbg.Location(169,4);
623
            	PushFollow(FOLLOW_namedType_in_namedTypeList199);
624
            	namedType();
625
            	state.followingStackPointer--;
626
627
            	dbg.Location(169,14);
628
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:169:14: ( T_SEMICOLON namedType )*
629
            	try { dbg.EnterSubRule(3);
630
631
            	do
632
            	{
633
            	    int alt3 = 2;
634
            	    try { dbg.EnterDecision(3);
635
636
            	    int LA3_0 = input.LA(1);
637
638
            	    if ( (LA3_0 == T_SEMICOLON) )
639
            	    {
640
            	        alt3 = 1;
641
            	    }
642
643
644
            	    } finally { dbg.ExitDecision(3); }
645
646
            	    switch (alt3)
647
            		{
648
            			case 1 :
649
            			    dbg.EnterAlt(1);
650
651
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:169:15: T_SEMICOLON namedType
652
            			    {
653
            			    	dbg.Location(169,15);
654
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_namedTypeList202);
655
            			    	dbg.Location(169,27);
656
            			    	PushFollow(FOLLOW_namedType_in_namedTypeList204);
657
            			    	namedType();
658
            			    	state.followingStackPointer--;
659
660
661
            			    }
662
            			    break;
663
664
            			default:
665
            			    goto loop3;
666
            	    }
667
            	} while (true);
668
669
            	loop3:
670
            		;	// Stops C# compiler whining that label 'loop3' has no statements
671
            	} finally { dbg.ExitSubRule(3); }
672
673
674
            }
675
676
        }
677
        catch (RecognitionException re)
678
    	{
679
            ReportError(re);
680
            Recover(input,re);
681
        }
682
        finally
683
    	{
684
        }
685
        dbg.Location(170, 2);
686
687
        }
688
        finally {
689
            dbg.ExitRule(GrammarFileName, "namedTypeList");
690
            DecRuleLevel();
691
            if ( RuleLevel==0 ) {dbg.Terminate();}
692
        }
693
694
        return ;
695
    }
696
    // $ANTLR end "namedTypeList"
697
698
699
    // $ANTLR start "namedType"
700
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:172:1: namedType : aName= T_IDENTIFIER T_EQUAL (aType= complexType | anOoaType= ooActionSystem ) ;
701
    public void namedType() // throws RecognitionException [1]
702
    {
703
        IToken aName = null;
704
        UlyssesType aType = default(UlyssesType);
705
706
        OoActionSystemType anOoaType = default(OoActionSystemType);
707
708
709
        try {
710
        	dbg.EnterRule(GrammarFileName, "namedType");
711
        	if ( RuleLevel==0 ) {dbg.Commence();}
712
        	IncRuleLevel();
713
        	dbg.Location(172, 1);
714
715
        try
716
    	{
717
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:173:2: (aName= T_IDENTIFIER T_EQUAL (aType= complexType | anOoaType= ooActionSystem ) )
718
            dbg.EnterAlt(1);
719
720
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:173:4: aName= T_IDENTIFIER T_EQUAL (aType= complexType | anOoaType= ooActionSystem )
721
            {
722
            	dbg.Location(173,9);
723
            	aName=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_namedType220);
724
            	dbg.Location(174,3);
725
            	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_namedType225);
726
            	dbg.Location(175,3);
727
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:175:3: (aType= complexType | anOoaType= ooActionSystem )
728
            	int alt4 = 2;
729
            	try { dbg.EnterSubRule(4);
730
            	try { dbg.EnterDecision(4);
731
732
            	try
733
            	{
734
            	    isCyclicDecision = true;
735
            	    alt4 = dfa4.Predict(input);
736
            	}
737
            	catch (NoViableAltException nvae)
738
            	{
739
            	    dbg.RecognitionException(nvae);
740
            	    throw nvae;
741
            	}
742
            	} finally { dbg.ExitDecision(4); }
743
744
            	switch (alt4)
745
            	{
746
            	    case 1 :
747
            	        dbg.EnterAlt(1);
748
749
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:176:4: aType= complexType
750
            	        {
751
            	        	dbg.Location(176,9);
752
            	        	PushFollow(FOLLOW_complexType_in_namedType237);
753
            	        	aType = complexType();
754
            	        	state.followingStackPointer--;
755
756
            	        	dbg.Location(176,24);
757
            	        	createNamedType(aName,aType);
758
759
            	        }
760
            	        break;
761
            	    case 2 :
762
            	        dbg.EnterAlt(2);
763
764
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:177:5: anOoaType= ooActionSystem
765
            	        {
766
            	        	dbg.Location(177,14);
767
            	        	PushFollow(FOLLOW_ooActionSystem_in_namedType249);
768
            	        	anOoaType = ooActionSystem();
769
            	        	state.followingStackPointer--;
770
771
            	        	dbg.Location(177,30);
772
            	        	createNamedType(aName,anOoaType);
773
774
            	        }
775
            	        break;
776
777
            	}
778
            	} finally { dbg.ExitSubRule(4); }
779
780
781
            }
782
783
        }
784
        catch (RecognitionException re)
785
    	{
786
            ReportError(re);
787
            Recover(input,re);
788
        }
789
        finally
790
    	{
791
        }
792
        dbg.Location(180, 2);
793
794
        }
795
        finally {
796
            dbg.ExitRule(GrammarFileName, "namedType");
797
            DecRuleLevel();
798
            if ( RuleLevel==0 ) {dbg.Terminate();}
799
        }
800
801
        return ;
802
    }
803
    // $ANTLR end "namedType"
804
805
806
    // $ANTLR start "asTypeComposition"
807
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:183:1: asTypeComposition[IdentifierList top] returns [IdentifierList prioList] : asTypeCompositionParallel[prioList] ( T_PRIO asTypeCompositionParallel[prioList] )* ;
808
    public IdentifierList asTypeComposition(IdentifierList top) // throws RecognitionException [1]
809
    {
810
        IdentifierList prioList = default(IdentifierList);
811
812
        try {
813
        	dbg.EnterRule(GrammarFileName, "asTypeComposition");
814
        	if ( RuleLevel==0 ) {dbg.Commence();}
815
        	IncRuleLevel();
816
        	dbg.Location(183, 1);
817
818
        try
819
    	{
820
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:185:2: ( asTypeCompositionParallel[prioList] ( T_PRIO asTypeCompositionParallel[prioList] )* )
821
            dbg.EnterAlt(1);
822
823
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:185:6: asTypeCompositionParallel[prioList] ( T_PRIO asTypeCompositionParallel[prioList] )*
824
            {
825
            	dbg.Location(185,6);
826
            	prioList = new PrioIdentifierList(top);
827
            	dbg.Location(186,3);
828
            	PushFollow(FOLLOW_asTypeCompositionParallel_in_asTypeComposition285);
829
            	asTypeCompositionParallel(prioList);
830
            	state.followingStackPointer--;
831
832
            	dbg.Location(186,40);
833
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:186:40: ( T_PRIO asTypeCompositionParallel[prioList] )*
834
            	try { dbg.EnterSubRule(5);
835
836
            	do
837
            	{
838
            	    int alt5 = 2;
839
            	    try { dbg.EnterDecision(5);
840
841
            	    int LA5_0 = input.LA(1);
842
843
            	    if ( (LA5_0 == T_PRIO) )
844
            	    {
845
            	        alt5 = 1;
846
            	    }
847
848
849
            	    } finally { dbg.ExitDecision(5); }
850
851
            	    switch (alt5)
852
            		{
853
            			case 1 :
854
            			    dbg.EnterAlt(1);
855
856
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:186:41: T_PRIO asTypeCompositionParallel[prioList]
857
            			    {
858
            			    	dbg.Location(186,41);
859
            			    	Match(input,T_PRIO,FOLLOW_T_PRIO_in_asTypeComposition290);
860
            			    	dbg.Location(186,48);
861
            			    	PushFollow(FOLLOW_asTypeCompositionParallel_in_asTypeComposition292);
862
            			    	asTypeCompositionParallel(prioList);
863
            			    	state.followingStackPointer--;
864
865
866
            			    }
867
            			    break;
868
869
            			default:
870
            			    goto loop5;
871
            	    }
872
            	} while (true);
873
874
            	loop5:
875
            		;	// Stops C# compiler whining that label 'loop5' has no statements
876
            	} finally { dbg.ExitSubRule(5); }
877
878
879
            }
880
881
        }
882
        catch (RecognitionException re)
883
    	{
884
            ReportError(re);
885
            Recover(input,re);
886
        }
887
        finally
888
    	{
889
        }
890
        dbg.Location(187, 2);
891
892
        }
893
        finally {
894
            dbg.ExitRule(GrammarFileName, "asTypeComposition");
895
            DecRuleLevel();
896
            if ( RuleLevel==0 ) {dbg.Terminate();}
897
        }
898
899
        return prioList;
900
    }
901
    // $ANTLR end "asTypeComposition"
902
903
904
    // $ANTLR start "asTypeCompositionParallel"
905
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:189:1: asTypeCompositionParallel[IdentifierList top] : asTypeCompositionSequential[parList] ( T_NONDET asTypeCompositionSequential[parList] )* ;
906
    public void asTypeCompositionParallel(IdentifierList top) // throws RecognitionException [1]
907
    {
908
        try {
909
        	dbg.EnterRule(GrammarFileName, "asTypeCompositionParallel");
910
        	if ( RuleLevel==0 ) {dbg.Commence();}
911
        	IncRuleLevel();
912
        	dbg.Location(189, 1);
913
914
        try
915
    	{
916
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:190:2: ( asTypeCompositionSequential[parList] ( T_NONDET asTypeCompositionSequential[parList] )* )
917
            dbg.EnterAlt(1);
918
919
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:190:6: asTypeCompositionSequential[parList] ( T_NONDET asTypeCompositionSequential[parList] )*
920
            {
921
            	dbg.Location(190,6);
922
            	IdentifierList parList = new NondetIdentifierList(top);
923
            	dbg.Location(191,3);
924
            	PushFollow(FOLLOW_asTypeCompositionSequential_in_asTypeCompositionParallel315);
925
            	asTypeCompositionSequential(parList);
926
            	state.followingStackPointer--;
927
928
            	dbg.Location(191,40);
929
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:191:40: ( T_NONDET asTypeCompositionSequential[parList] )*
930
            	try { dbg.EnterSubRule(6);
931
932
            	do
933
            	{
934
            	    int alt6 = 2;
935
            	    try { dbg.EnterDecision(6);
936
937
            	    int LA6_0 = input.LA(1);
938
939
            	    if ( (LA6_0 == T_NONDET) )
940
            	    {
941
            	        alt6 = 1;
942
            	    }
943
944
945
            	    } finally { dbg.ExitDecision(6); }
946
947
            	    switch (alt6)
948
            		{
949
            			case 1 :
950
            			    dbg.EnterAlt(1);
951
952
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:191:41: T_NONDET asTypeCompositionSequential[parList]
953
            			    {
954
            			    	dbg.Location(191,41);
955
            			    	Match(input,T_NONDET,FOLLOW_T_NONDET_in_asTypeCompositionParallel319);
956
            			    	dbg.Location(191,50);
957
            			    	PushFollow(FOLLOW_asTypeCompositionSequential_in_asTypeCompositionParallel321);
958
            			    	asTypeCompositionSequential(parList);
959
            			    	state.followingStackPointer--;
960
961
962
            			    }
963
            			    break;
964
965
            			default:
966
            			    goto loop6;
967
            	    }
968
            	} while (true);
969
970
            	loop6:
971
            		;	// Stops C# compiler whining that label 'loop6' has no statements
972
            	} finally { dbg.ExitSubRule(6); }
973
974
975
            }
976
977
        }
978
        catch (RecognitionException re)
979
    	{
980
            ReportError(re);
981
            Recover(input,re);
982
        }
983
        finally
984
    	{
985
        }
986
        dbg.Location(192, 2);
987
988
        }
989
        finally {
990
            dbg.ExitRule(GrammarFileName, "asTypeCompositionParallel");
991
            DecRuleLevel();
992
            if ( RuleLevel==0 ) {dbg.Terminate();}
993
        }
994
995
        return ;
996
    }
997
    // $ANTLR end "asTypeCompositionParallel"
998
999
1000
    // $ANTLR start "asTypeCompositionSequential"
1001
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:194:1: asTypeCompositionSequential[IdentifierList top] : asTypeCompositionBlockParen[seqList] ;
1002
    public void asTypeCompositionSequential(IdentifierList top) // throws RecognitionException [1]
1003
    {
1004
        try {
1005
        	dbg.EnterRule(GrammarFileName, "asTypeCompositionSequential");
1006
        	if ( RuleLevel==0 ) {dbg.Commence();}
1007
        	IncRuleLevel();
1008
        	dbg.Location(194, 1);
1009
1010
        try
1011
    	{
1012
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:195:2: ( asTypeCompositionBlockParen[seqList] )
1013
            dbg.EnterAlt(1);
1014
1015
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:195:6: asTypeCompositionBlockParen[seqList]
1016
            {
1017
            	dbg.Location(195,6);
1018
            	IdentifierList seqList = new SeqIdentifierList(top);
1019
            	dbg.Location(196,3);
1020
            	PushFollow(FOLLOW_asTypeCompositionBlockParen_in_asTypeCompositionSequential343);
1021
            	asTypeCompositionBlockParen(seqList);
1022
            	state.followingStackPointer--;
1023
1024
1025
            }
1026
1027
        }
1028
        catch (RecognitionException re)
1029
    	{
1030
            ReportError(re);
1031
            Recover(input,re);
1032
        }
1033
        finally
1034
    	{
1035
        }
1036
        dbg.Location(197, 2);
1037
1038
        }
1039
        finally {
1040
            dbg.ExitRule(GrammarFileName, "asTypeCompositionSequential");
1041
            DecRuleLevel();
1042
            if ( RuleLevel==0 ) {dbg.Terminate();}
1043
        }
1044
1045
        return ;
1046
    }
1047
    // $ANTLR end "asTypeCompositionSequential"
1048
1049
1050
    // $ANTLR start "asTypeCompositionBlockParen"
1051
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:199:1: asTypeCompositionBlockParen[IdentifierList top] : ( T_LPAREN asTypeComposition[top] T_RPAREN | aName= T_IDENTIFIER );
1052
    public void asTypeCompositionBlockParen(IdentifierList top) // throws RecognitionException [1]
1053
    {
1054
        IToken aName = null;
1055
1056
        try {
1057
        	dbg.EnterRule(GrammarFileName, "asTypeCompositionBlockParen");
1058
        	if ( RuleLevel==0 ) {dbg.Commence();}
1059
        	IncRuleLevel();
1060
        	dbg.Location(199, 1);
1061
1062
        try
1063
    	{
1064
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:200:2: ( T_LPAREN asTypeComposition[top] T_RPAREN | aName= T_IDENTIFIER )
1065
            int alt7 = 2;
1066
            try { dbg.EnterDecision(7);
1067
1068
            int LA7_0 = input.LA(1);
1069
1070
            if ( (LA7_0 == T_LPAREN) )
1071
            {
1072
                alt7 = 1;
1073
            }
1074
            else if ( (LA7_0 == T_IDENTIFIER) )
1075
            {
1076
                alt7 = 2;
1077
            }
1078
            else
1079
            {
1080
                NoViableAltException nvae_d7s0 =
1081
                    new NoViableAltException("", 7, 0, input);
1082
1083
                dbg.RecognitionException(nvae_d7s0);
1084
                throw nvae_d7s0;
1085
            }
1086
            } finally { dbg.ExitDecision(7); }
1087
1088
            switch (alt7)
1089
            {
1090
                case 1 :
1091
                    dbg.EnterAlt(1);
1092
1093
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:200:4: T_LPAREN asTypeComposition[top] T_RPAREN
1094
                    {
1095
                    	dbg.Location(200,4);
1096
                    	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_asTypeCompositionBlockParen358);
1097
                    	dbg.Location(200,13);
1098
                    	PushFollow(FOLLOW_asTypeComposition_in_asTypeCompositionBlockParen360);
1099
                    	asTypeComposition(top);
1100
                    	state.followingStackPointer--;
1101
1102
                    	dbg.Location(200,36);
1103
                    	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_asTypeCompositionBlockParen363);
1104
1105
                    }
1106
                    break;
1107
                case 2 :
1108
                    dbg.EnterAlt(2);
1109
1110
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:201:4: aName= T_IDENTIFIER
1111
                    {
1112
                    	dbg.Location(201,9);
1113
                    	aName=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_asTypeCompositionBlockParen370);
1114
                    	dbg.Location(201,23);
1115
                    	addToIdentifierList(top,aName);
1116
1117
                    }
1118
                    break;
1119
1120
            }
1121
        }
1122
        catch (RecognitionException re)
1123
    	{
1124
            ReportError(re);
1125
            Recover(input,re);
1126
        }
1127
        finally
1128
    	{
1129
        }
1130
        dbg.Location(202, 2);
1131
1132
        }
1133
        finally {
1134
            dbg.ExitRule(GrammarFileName, "asTypeCompositionBlockParen");
1135
            DecRuleLevel();
1136
            if ( RuleLevel==0 ) {dbg.Terminate();}
1137
        }
1138
1139
        return ;
1140
    }
1141
    // $ANTLR end "asTypeCompositionBlockParen"
1142
1143
1144
    // $ANTLR start "complexType"
1145
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:209: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 );
1146
    public UlyssesType complexType() // throws RecognitionException [1]
1147
    {
1148
        UlyssesType aTypeSymbol = default(UlyssesType);
1149
1150
        IToken numOfElements = null;
1151
        IToken alistelem = null;
1152
        IToken otherlistelem = null;
1153
        IToken alandmark = null;
1154
        IToken otherlandmark = null;
1155
        UlyssesType innertype = default(UlyssesType);
1156
1157
        UlyssesType mapfromtype = default(UlyssesType);
1158
1159
        UlyssesType maptotype = default(UlyssesType);
1160
1161
        UlyssesType aType = default(UlyssesType);
1162
1163
        UlyssesType anotherType = default(UlyssesType);
1164
1165
        UlyssesType r = default(UlyssesType);
1166
1167
1168
1169
        		aTypeSymbol = null;
1170
        		alandmark = null;
1171
1172
        try {
1173
        	dbg.EnterRule(GrammarFileName, "complexType");
1174
        	if ( RuleLevel==0 ) {dbg.Commence();}
1175
        	IncRuleLevel();
1176
        	dbg.Location(209, 1);
1177
1178
        try
1179
    	{
1180
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:215: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 )
1181
            int alt14 = 6;
1182
            try { dbg.EnterDecision(14);
1183
1184
            try
1185
            {
1186
                isCyclicDecision = true;
1187
                alt14 = dfa14.Predict(input);
1188
            }
1189
            catch (NoViableAltException nvae)
1190
            {
1191
                dbg.RecognitionException(nvae);
1192
                throw nvae;
1193
            }
1194
            } finally { dbg.ExitDecision(14); }
1195
1196
            switch (alt14)
1197
            {
1198
                case 1 :
1199
                    dbg.EnterAlt(1);
1200
1201
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:215:4: T_LIST T_LSQPAREN numOfElements= ( T_INTNUMBER | T_IDENTIFIER ) T_RSQPAREN T_OF innertype= complexType
1202
                    {
1203
                    	dbg.Location(215,4);
1204
                    	Match(input,T_LIST,FOLLOW_T_LIST_in_complexType401);
1205
                    	dbg.Location(215,12);
1206
                    	Match(input,T_LSQPAREN,FOLLOW_T_LSQPAREN_in_complexType404);
1207
                    	dbg.Location(215,36);
1208
                    	numOfElements = (IToken)input.LT(1);
1209
                    	if ( input.LA(1) == T_IDENTIFIER || input.LA(1) == T_INTNUMBER )
1210
                    	{
1211
                    	    input.Consume();
1212
                    	    state.errorRecovery = false;
1213
                    	}
1214
                    	else
1215
                    	{
1216
                    	    MismatchedSetException mse = new MismatchedSetException(null,input);
1217
                    	    dbg.RecognitionException(mse);
1218
                    	    throw mse;
1219
                    	}
1220
1221
                    	dbg.Location(215,64);
1222
                    	Match(input,T_RSQPAREN,FOLLOW_T_RSQPAREN_in_complexType414);
1223
                    	dbg.Location(215,75);
1224
                    	Match(input,T_OF,FOLLOW_T_OF_in_complexType416);
1225
                    	dbg.Location(215,90);
1226
                    	PushFollow(FOLLOW_complexType_in_complexType421);
1227
                    	innertype = complexType();
1228
                    	state.followingStackPointer--;
1229
1230
                    	dbg.Location(216,4);
1231
                    	aTypeSymbol = createListType(numOfElements,innertype);
1232
1233
                    }
1234
                    break;
1235
                case 2 :
1236
                    dbg.EnterAlt(2);
1237
1238
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:219:4: T_LSQPAREN alistelem= T_IDENTIFIER ( T_COMMA otherlistelem= T_IDENTIFIER )* T_RSQPAREN
1239
                    {
1240
                    	dbg.Location(219,4);
1241
                    	Match(input,T_LSQPAREN,FOLLOW_T_LSQPAREN_in_complexType436);
1242
                    	dbg.Location(219,24);
1243
                    	alistelem=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_complexType440);
1244
                    	dbg.Location(219,38);
1245
                    	aTypeSymbol = createListEnumType(alistelem);
1246
                    	dbg.Location(220,4);
1247
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:220:4: ( T_COMMA otherlistelem= T_IDENTIFIER )*
1248
                    	try { dbg.EnterSubRule(8);
1249
1250
                    	do
1251
                    	{
1252
                    	    int alt8 = 2;
1253
                    	    try { dbg.EnterDecision(8);
1254
1255
                    	    int LA8_0 = input.LA(1);
1256
1257
                    	    if ( (LA8_0 == T_COMMA) )
1258
                    	    {
1259
                    	        alt8 = 1;
1260
                    	    }
1261
1262
1263
                    	    } finally { dbg.ExitDecision(8); }
1264
1265
                    	    switch (alt8)
1266
                    		{
1267
                    			case 1 :
1268
                    			    dbg.EnterAlt(1);
1269
1270
                    			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:220:5: T_COMMA otherlistelem= T_IDENTIFIER
1271
                    			    {
1272
                    			    	dbg.Location(220,5);
1273
                    			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_complexType449);
1274
                    			    	dbg.Location(220,26);
1275
                    			    	otherlistelem=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_complexType453);
1276
                    			    	dbg.Location(220,40);
1277
                    			    	addToListEnumType(aTypeSymbol,otherlistelem);
1278
1279
                    			    }
1280
                    			    break;
1281
1282
                    			default:
1283
                    			    goto loop8;
1284
                    	    }
1285
                    	} while (true);
1286
1287
                    	loop8:
1288
                    		;	// Stops C# compiler whining that label 'loop8' has no statements
1289
                    	} finally { dbg.ExitSubRule(8); }
1290
1291
                    	dbg.Location(220,90);
1292
                    	Match(input,T_RSQPAREN,FOLLOW_T_RSQPAREN_in_complexType459);
1293
1294
                    }
1295
                    break;
1296
                case 3 :
1297
                    dbg.EnterAlt(3);
1298
1299
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:223:4: T_MAP ( T_LSQPAREN numOfElements= ( T_INTNUMBER | T_IDENTIFIER ) T_RSQPAREN )? mapfromtype= simpleType T_TO maptotype= complexType
1300
                    {
1301
                    	dbg.Location(223,4);
1302
                    	Match(input,T_MAP,FOLLOW_T_MAP_in_complexType469);
1303
                    	dbg.Location(223,12);
1304
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:223:12: ( T_LSQPAREN numOfElements= ( T_INTNUMBER | T_IDENTIFIER ) T_RSQPAREN )?
1305
                    	int alt9 = 2;
1306
                    	try { dbg.EnterSubRule(9);
1307
                    	try { dbg.EnterDecision(9);
1308
1309
                    	int LA9_0 = input.LA(1);
1310
1311
                    	if ( (LA9_0 == T_LSQPAREN) )
1312
                    	{
1313
                    	    alt9 = 1;
1314
                    	}
1315
                    	} finally { dbg.ExitDecision(9); }
1316
1317
                    	switch (alt9)
1318
                    	{
1319
                    	    case 1 :
1320
                    	        dbg.EnterAlt(1);
1321
1322
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:223:13: T_LSQPAREN numOfElements= ( T_INTNUMBER | T_IDENTIFIER ) T_RSQPAREN
1323
                    	        {
1324
                    	        	dbg.Location(223,13);
1325
                    	        	Match(input,T_LSQPAREN,FOLLOW_T_LSQPAREN_in_complexType474);
1326
                    	        	dbg.Location(223,37);
1327
                    	        	numOfElements = (IToken)input.LT(1);
1328
                    	        	if ( input.LA(1) == T_IDENTIFIER || input.LA(1) == T_INTNUMBER )
1329
                    	        	{
1330
                    	        	    input.Consume();
1331
                    	        	    state.errorRecovery = false;
1332
                    	        	}
1333
                    	        	else
1334
                    	        	{
1335
                    	        	    MismatchedSetException mse = new MismatchedSetException(null,input);
1336
                    	        	    dbg.RecognitionException(mse);
1337
                    	        	    throw mse;
1338
                    	        	}
1339
1340
                    	        	dbg.Location(223,65);
1341
                    	        	Match(input,T_RSQPAREN,FOLLOW_T_RSQPAREN_in_complexType484);
1342
1343
                    	        }
1344
                    	        break;
1345
1346
                    	}
1347
                    	} finally { dbg.ExitSubRule(9); }
1348
1349
                    	dbg.Location(223,89);
1350
                    	PushFollow(FOLLOW_simpleType_in_complexType490);
1351
                    	mapfromtype = simpleType();
1352
                    	state.followingStackPointer--;
1353
1354
                    	dbg.Location(223,101);
1355
                    	Match(input,T_TO,FOLLOW_T_TO_in_complexType492);
1356
                    	dbg.Location(223,115);
1357
                    	PushFollow(FOLLOW_complexType_in_complexType496);
1358
                    	maptotype = complexType();
1359
                    	state.followingStackPointer--;
1360
1361
                    	dbg.Location(224,4);
1362
                    	aTypeSymbol = createMapType(numOfElements,mapfromtype,maptotype);
1363
1364
                    }
1365
                    break;
1366
                case 4 :
1367
                    dbg.EnterAlt(4);
1368
1369
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:226: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
1370
                    {
1371
                    	dbg.Location(226,4);
1372
                    	Match(input,T_QUANTITY,FOLLOW_T_QUANTITY_in_complexType510);
1373
                    	dbg.Location(226,15);
1374
                    	Match(input,T_OF,FOLLOW_T_OF_in_complexType512);
1375
                    	dbg.Location(226,20);
1376
                    	Match(input,T_LSQPAREN,FOLLOW_T_LSQPAREN_in_complexType514);
1377
                    	dbg.Location(226,31);
1378
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:226:31: (alandmark= T_IDENTIFIER | alandmark= T_MINUS T_INFTY )
1379
                    	int alt10 = 2;
1380
                    	try { dbg.EnterSubRule(10);
1381
                    	try { dbg.EnterDecision(10);
1382
1383
                    	int LA10_0 = input.LA(1);
1384
1385
                    	if ( (LA10_0 == T_IDENTIFIER) )
1386
                    	{
1387
                    	    alt10 = 1;
1388
                    	}
1389
                    	else if ( (LA10_0 == T_MINUS) )
1390
                    	{
1391
                    	    alt10 = 2;
1392
                    	}
1393
                    	else
1394
                    	{
1395
                    	    NoViableAltException nvae_d10s0 =
1396
                    	        new NoViableAltException("", 10, 0, input);
1397
1398
                    	    dbg.RecognitionException(nvae_d10s0);
1399
                    	    throw nvae_d10s0;
1400
                    	}
1401
                    	} finally { dbg.ExitDecision(10); }
1402
1403
                    	switch (alt10)
1404
                    	{
1405
                    	    case 1 :
1406
                    	        dbg.EnterAlt(1);
1407
1408
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:226:32: alandmark= T_IDENTIFIER
1409
                    	        {
1410
                    	        	dbg.Location(226,41);
1411
                    	        	alandmark=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_complexType519);
1412
1413
                    	        }
1414
                    	        break;
1415
                    	    case 2 :
1416
                    	        dbg.EnterAlt(2);
1417
1418
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:226:56: alandmark= T_MINUS T_INFTY
1419
                    	        {
1420
                    	        	dbg.Location(226,65);
1421
                    	        	alandmark=(IToken)Match(input,T_MINUS,FOLLOW_T_MINUS_in_complexType524);
1422
                    	        	dbg.Location(226,74);
1423
                    	        	Match(input,T_INFTY,FOLLOW_T_INFTY_in_complexType526);
1424
1425
                    	        }
1426
                    	        break;
1427
1428
                    	}
1429
                    	} finally { dbg.ExitSubRule(10); }
1430
1431
                    	dbg.Location(226,83);
1432
                    	aTypeSymbol = createQrType(alandmark);
1433
                    	dbg.Location(227,4);
1434
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:227:4: ( T_COMMA (otherlandmark= T_IDENTIFIER | otherlandmark= T_INFTY ) )*
1435
                    	try { dbg.EnterSubRule(12);
1436
1437
                    	do
1438
                    	{
1439
                    	    int alt12 = 2;
1440
                    	    try { dbg.EnterDecision(12);
1441
1442
                    	    int LA12_0 = input.LA(1);
1443
1444
                    	    if ( (LA12_0 == T_COMMA) )
1445
                    	    {
1446
                    	        alt12 = 1;
1447
                    	    }
1448
1449
1450
                    	    } finally { dbg.ExitDecision(12); }
1451
1452
                    	    switch (alt12)
1453
                    		{
1454
                    			case 1 :
1455
                    			    dbg.EnterAlt(1);
1456
1457
                    			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:227:5: T_COMMA (otherlandmark= T_IDENTIFIER | otherlandmark= T_INFTY )
1458
                    			    {
1459
                    			    	dbg.Location(227,5);
1460
                    			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_complexType536);
1461
                    			    	dbg.Location(227,13);
1462
                    			    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:227:13: (otherlandmark= T_IDENTIFIER | otherlandmark= T_INFTY )
1463
                    			    	int alt11 = 2;
1464
                    			    	try { dbg.EnterSubRule(11);
1465
                    			    	try { dbg.EnterDecision(11);
1466
1467
                    			    	int LA11_0 = input.LA(1);
1468
1469
                    			    	if ( (LA11_0 == T_IDENTIFIER) )
1470
                    			    	{
1471
                    			    	    alt11 = 1;
1472
                    			    	}
1473
                    			    	else if ( (LA11_0 == T_INFTY) )
1474
                    			    	{
1475
                    			    	    alt11 = 2;
1476
                    			    	}
1477
                    			    	else
1478
                    			    	{
1479
                    			    	    NoViableAltException nvae_d11s0 =
1480
                    			    	        new NoViableAltException("", 11, 0, input);
1481
1482
                    			    	    dbg.RecognitionException(nvae_d11s0);
1483
                    			    	    throw nvae_d11s0;
1484
                    			    	}
1485
                    			    	} finally { dbg.ExitDecision(11); }
1486
1487
                    			    	switch (alt11)
1488
                    			    	{
1489
                    			    	    case 1 :
1490
                    			    	        dbg.EnterAlt(1);
1491
1492
                    			    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:227:14: otherlandmark= T_IDENTIFIER
1493
                    			    	        {
1494
                    			    	        	dbg.Location(227,27);
1495
                    			    	        	otherlandmark=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_complexType541);
1496
1497
                    			    	        }
1498
                    			    	        break;
1499
                    			    	    case 2 :
1500
                    			    	        dbg.EnterAlt(2);
1501
1502
                    			    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:227:41: otherlandmark= T_INFTY
1503
                    			    	        {
1504
                    			    	        	dbg.Location(227,54);
1505
                    			    	        	otherlandmark=(IToken)Match(input,T_INFTY,FOLLOW_T_INFTY_in_complexType545);
1506
1507
                    			    	        }
1508
                    			    	        break;
1509
1510
                    			    	}
1511
                    			    	} finally { dbg.ExitSubRule(11); }
1512
1513
                    			    	dbg.Location(227,64);
1514
                    			    	addToQrType(aTypeSymbol,otherlandmark);
1515
1516
                    			    }
1517
                    			    break;
1518
1519
                    			default:
1520
                    			    goto loop12;
1521
                    	    }
1522
                    	} while (true);
1523
1524
                    	loop12:
1525
                    		;	// Stops C# compiler whining that label 'loop12' has no statements
1526
                    	} finally { dbg.ExitSubRule(12); }
1527
1528
                    	dbg.Location(227,108);
1529
                    	Match(input,T_RSQPAREN,FOLLOW_T_RSQPAREN_in_complexType552);
1530
1531
                    }
1532
                    break;
1533
                case 5 :
1534
                    dbg.EnterAlt(5);
1535
1536
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:229:5: T_LPAREN aType= complexType ( T_COMMA anotherType= complexType )* T_RPAREN
1537
                    {
1538
                    	dbg.Location(229,5);
1539
                    	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_complexType562);
1540
                    	dbg.Location(229,19);
1541
                    	PushFollow(FOLLOW_complexType_in_complexType566);
1542
                    	aType = complexType();
1543
                    	state.followingStackPointer--;
1544
1545
                    	dbg.Location(229,32);
1546
                    	aTypeSymbol = createTupleType(aType);
1547
                    	dbg.Location(230,4);
1548
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:230:4: ( T_COMMA anotherType= complexType )*
1549
                    	try { dbg.EnterSubRule(13);
1550
1551
                    	do
1552
                    	{
1553
                    	    int alt13 = 2;
1554
                    	    try { dbg.EnterDecision(13);
1555
1556
                    	    int LA13_0 = input.LA(1);
1557
1558
                    	    if ( (LA13_0 == T_COMMA) )
1559
                    	    {
1560
                    	        alt13 = 1;
1561
                    	    }
1562
1563
1564
                    	    } finally { dbg.ExitDecision(13); }
1565
1566
                    	    switch (alt13)
1567
                    		{
1568
                    			case 1 :
1569
                    			    dbg.EnterAlt(1);
1570
1571
                    			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:230:5: T_COMMA anotherType= complexType
1572
                    			    {
1573
                    			    	dbg.Location(230,5);
1574
                    			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_complexType575);
1575
                    			    	dbg.Location(230,24);
1576
                    			    	PushFollow(FOLLOW_complexType_in_complexType579);
1577
                    			    	anotherType = complexType();
1578
                    			    	state.followingStackPointer--;
1579
1580
                    			    	dbg.Location(230,37);
1581
                    			    	addToTupleType(aTypeSymbol,anotherType);
1582
1583
                    			    }
1584
                    			    break;
1585
1586
                    			default:
1587
                    			    goto loop13;
1588
                    	    }
1589
                    	} while (true);
1590
1591
                    	loop13:
1592
                    		;	// Stops C# compiler whining that label 'loop13' has no statements
1593
                    	} finally { dbg.ExitSubRule(13); }
1594
1595
                    	dbg.Location(230,83);
1596
                    	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_complexType586);
1597
1598
                    }
1599
                    break;
1600
                case 6 :
1601
                    dbg.EnterAlt(6);
1602
1603
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:233:4: r= simpleType
1604
                    {
1605
                    	dbg.Location(233,5);
1606
                    	PushFollow(FOLLOW_simpleType_in_complexType599);
1607
                    	r = simpleType();
1608
                    	state.followingStackPointer--;
1609
1610
                    	dbg.Location(233,17);
1611
                    	aTypeSymbol = r;
1612
1613
                    }
1614
                    break;
1615
1616
            }
1617
        }
1618
        catch (RecognitionException re)
1619
    	{
1620
            ReportError(re);
1621
            Recover(input,re);
1622
        }
1623
        finally
1624
    	{
1625
            fixupComplexType(aTypeSymbol);
1626
        }
1627
        dbg.Location(234, 2);
1628
1629
        }
1630
        finally {
1631
            dbg.ExitRule(GrammarFileName, "complexType");
1632
            DecRuleLevel();
1633
            if ( RuleLevel==0 ) {dbg.Terminate();}
1634
        }
1635
1636
        return aTypeSymbol;
1637
    }
1638
    // $ANTLR end "complexType"
1639
1640
1641
    // $ANTLR start "simpleType"
1642
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:239: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 );
1643
    public UlyssesType simpleType() // throws RecognitionException [1]
1644
    {
1645
        UlyssesType aTypeSymbol = default(UlyssesType);
1646
1647
        IToken rangeLow = null;
1648
        IToken rangeHigh = null;
1649
        IToken aRangeValue = null;
1650
        IToken optVal = null;
1651
        IToken otherRangeValue = null;
1652
        IToken otherOptVal = null;
1653
        IToken aType = null;
1654
1655
1656
        		aTypeSymbol = null;
1657
1658
        try {
1659
        	dbg.EnterRule(GrammarFileName, "simpleType");
1660
        	if ( RuleLevel==0 ) {dbg.Commence();}
1661
        	IncRuleLevel();
1662
        	dbg.Location(239, 1);
1663
1664
        try
1665
    	{
1666
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:244: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 )
1667
            int alt18 = 6;
1668
            try { dbg.EnterDecision(18);
1669
1670
            switch ( input.LA(1) )
1671
            {
1672
            case T_BOOL:
1673
            	{
1674
                alt18 = 1;
1675
                }
1676
                break;
1677
            case T_INT:
1678
            	{
1679
                alt18 = 2;
1680
                }
1681
                break;
1682
            case T_FLOAT:
1683
            	{
1684
                alt18 = 3;
1685
                }
1686
                break;
1687
            case T_CHAR:
1688
            	{
1689
                alt18 = 4;
1690
                }
1691
                break;
1692
            case T_CBRL:
1693
            	{
1694
                alt18 = 5;
1695
                }
1696
                break;
1697
            case T_IDENTIFIER:
1698
            	{
1699
                alt18 = 6;
1700
                }
1701
                break;
1702
            	default:
1703
            	    NoViableAltException nvae_d18s0 =
1704
            	        new NoViableAltException("", 18, 0, input);
1705
1706
            	    dbg.RecognitionException(nvae_d18s0);
1707
            	    throw nvae_d18s0;
1708
            }
1709
1710
            } finally { dbg.ExitDecision(18); }
1711
1712
            switch (alt18)
1713
            {
1714
                case 1 :
1715
                    dbg.EnterAlt(1);
1716
1717
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:244:4: T_BOOL
1718
                    {
1719
                    	dbg.Location(244,4);
1720
                    	Match(input,T_BOOL,FOLLOW_T_BOOL_in_simpleType632);
1721
                    	dbg.Location(244,12);
1722
                    	aTypeSymbol = createBoolType();
1723
1724
                    }
1725
                    break;
1726
                case 2 :
1727
                    dbg.EnterAlt(2);
1728
1729
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:247:4: T_INT T_LSQPAREN rangeLow= ( T_INTNUMBER | T_INFTY | T_IDENTIFIER ) T_RANGETO rangeHigh= ( T_INTNUMBER | T_INFTY | T_IDENTIFIER ) T_RSQPAREN
1730
                    {
1731
                    	dbg.Location(247,4);
1732
                    	Match(input,T_INT,FOLLOW_T_INT_in_simpleType645);
1733
                    	dbg.Location(247,10);
1734
                    	Match(input,T_LSQPAREN,FOLLOW_T_LSQPAREN_in_simpleType647);
1735
                    	dbg.Location(247,29);
1736
                    	rangeLow = (IToken)input.LT(1);
1737
                    	if ( input.LA(1) == T_IDENTIFIER || input.LA(1) == T_INTNUMBER || input.LA(1) == T_INFTY )
1738
                    	{
1739
                    	    input.Consume();
1740
                    	    state.errorRecovery = false;
1741
                    	}
1742
                    	else
1743
                    	{
1744
                    	    MismatchedSetException mse = new MismatchedSetException(null,input);
1745
                    	    dbg.RecognitionException(mse);
1746
                    	    throw mse;
1747
                    	}
1748
1749
                    	dbg.Location(247,65);
1750
                    	Match(input,T_RANGETO,FOLLOW_T_RANGETO_in_simpleType659);
1751
                    	dbg.Location(247,84);
1752
                    	rangeHigh = (IToken)input.LT(1);
1753
                    	if ( input.LA(1) == T_IDENTIFIER || input.LA(1) == T_INTNUMBER || input.LA(1) == T_INFTY )
1754
                    	{
1755
                    	    input.Consume();
1756
                    	    state.errorRecovery = false;
1757
                    	}
1758
                    	else
1759
                    	{
1760
                    	    MismatchedSetException mse = new MismatchedSetException(null,input);
1761
                    	    dbg.RecognitionException(mse);
1762
                    	    throw mse;
1763
                    	}
1764
1765
                    	dbg.Location(247,120);
1766
                    	Match(input,T_RSQPAREN,FOLLOW_T_RSQPAREN_in_simpleType671);
1767
                    	dbg.Location(248,4);
1768
                    	aTypeSymbol = createIntType(rangeLow,rangeHigh);
1769
1770
                    }
1771
                    break;
1772
                case 3 :
1773
                    dbg.EnterAlt(3);
1774
1775
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:251:4: T_FLOAT T_LSQPAREN rangeLow= ( T_FLOATNUMBER | T_INFTY | T_IDENTIFIER ) T_RANGETO rangeHigh= ( T_FLOATNUMBER | T_INFTY | T_IDENTIFIER ) T_RSQPAREN
1776
                    {
1777
                    	dbg.Location(251,4);
1778
                    	Match(input,T_FLOAT,FOLLOW_T_FLOAT_in_simpleType690);
1779
                    	dbg.Location(251,13);
1780
                    	Match(input,T_LSQPAREN,FOLLOW_T_LSQPAREN_in_simpleType693);
1781
                    	dbg.Location(251,32);
1782
                    	rangeLow = (IToken)input.LT(1);
1783
                    	if ( input.LA(1) == T_IDENTIFIER || input.LA(1) == T_INFTY || input.LA(1) == T_FLOATNUMBER )
1784
                    	{
1785
                    	    input.Consume();
1786
                    	    state.errorRecovery = false;
1787
                    	}
1788
                    	else
1789
                    	{
1790
                    	    MismatchedSetException mse = new MismatchedSetException(null,input);
1791
                    	    dbg.RecognitionException(mse);
1792
                    	    throw mse;
1793
                    	}
1794
1795
                    	dbg.Location(251,70);
1796
                    	Match(input,T_RANGETO,FOLLOW_T_RANGETO_in_simpleType705);
1797
                    	dbg.Location(251,89);
1798
                    	rangeHigh = (IToken)input.LT(1);
1799
                    	if ( input.LA(1) == T_IDENTIFIER || input.LA(1) == T_INFTY || input.LA(1) == T_FLOATNUMBER )
1800
                    	{
1801
                    	    input.Consume();
1802
                    	    state.errorRecovery = false;
1803
                    	}
1804
                    	else
1805
                    	{
1806
                    	    MismatchedSetException mse = new MismatchedSetException(null,input);
1807
                    	    dbg.RecognitionException(mse);
1808
                    	    throw mse;
1809
                    	}
1810
1811
                    	dbg.Location(251,127);
1812
                    	Match(input,T_RSQPAREN,FOLLOW_T_RSQPAREN_in_simpleType717);
1813
                    	dbg.Location(252,4);
1814
                    	aTypeSymbol = createFloatType(rangeLow,rangeHigh);
1815
1816
                    }
1817
                    break;
1818
                case 4 :
1819
                    dbg.EnterAlt(4);
1820
1821
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:255:4: T_CHAR
1822
                    {
1823
                    	dbg.Location(255,4);
1824
                    	Match(input,T_CHAR,FOLLOW_T_CHAR_in_simpleType735);
1825
                    	dbg.Location(255,11);
1826
                    	aTypeSymbol = createCharType();
1827
1828
                    }
1829
                    break;
1830
                case 5 :
1831
                    dbg.EnterAlt(5);
1832
1833
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:259:4: T_CBRL aRangeValue= T_IDENTIFIER ( T_EQUAL optVal= T_INTNUMBER )? ( T_COMMA otherRangeValue= T_IDENTIFIER ( T_EQUAL otherOptVal= T_INTNUMBER )? )* T_CBRR
1834
                    {
1835
                    	dbg.Location(259,4);
1836
                    	Match(input,T_CBRL,FOLLOW_T_CBRL_in_simpleType751);
1837
                    	dbg.Location(259,22);
1838
                    	aRangeValue=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_simpleType755);
1839
                    	dbg.Location(259,36);
1840
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:259:36: ( T_EQUAL optVal= T_INTNUMBER )?
1841
                    	int alt15 = 2;
1842
                    	try { dbg.EnterSubRule(15);
1843
                    	try { dbg.EnterDecision(15);
1844
1845
                    	int LA15_0 = input.LA(1);
1846
1847
                    	if ( (LA15_0 == T_EQUAL) )
1848
                    	{
1849
                    	    alt15 = 1;
1850
                    	}
1851
                    	} finally { dbg.ExitDecision(15); }
1852
1853
                    	switch (alt15)
1854
                    	{
1855
                    	    case 1 :
1856
                    	        dbg.EnterAlt(1);
1857
1858
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:259:37: T_EQUAL optVal= T_INTNUMBER
1859
                    	        {
1860
                    	        	dbg.Location(259,37);
1861
                    	        	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_simpleType758);
1862
                    	        	dbg.Location(259,51);
1863
                    	        	optVal=(IToken)Match(input,T_INTNUMBER,FOLLOW_T_INTNUMBER_in_simpleType762);
1864
1865
                    	        }
1866
                    	        break;
1867
1868
                    	}
1869
                    	} finally { dbg.ExitSubRule(15); }
1870
1871
                    	dbg.Location(259,66);
1872
                    	aTypeSymbol = createEnumType(aRangeValue, optVal);
1873
                    	dbg.Location(260,4);
1874
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:260:4: ( T_COMMA otherRangeValue= T_IDENTIFIER ( T_EQUAL otherOptVal= T_INTNUMBER )? )*
1875
                    	try { dbg.EnterSubRule(17);
1876
1877
                    	do
1878
                    	{
1879
                    	    int alt17 = 2;
1880
                    	    try { dbg.EnterDecision(17);
1881
1882
                    	    int LA17_0 = input.LA(1);
1883
1884
                    	    if ( (LA17_0 == T_COMMA) )
1885
                    	    {
1886
                    	        alt17 = 1;
1887
                    	    }
1888
1889
1890
                    	    } finally { dbg.ExitDecision(17); }
1891
1892
                    	    switch (alt17)
1893
                    		{
1894
                    			case 1 :
1895
                    			    dbg.EnterAlt(1);
1896
1897
                    			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:260:5: T_COMMA otherRangeValue= T_IDENTIFIER ( T_EQUAL otherOptVal= T_INTNUMBER )?
1898
                    			    {
1899
                    			    	dbg.Location(260,5);
1900
                    			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_simpleType773);
1901
                    			    	dbg.Location(260,28);
1902
                    			    	otherRangeValue=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_simpleType777);
1903
                    			    	dbg.Location(260,42);
1904
                    			    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:260:42: ( T_EQUAL otherOptVal= T_INTNUMBER )?
1905
                    			    	int alt16 = 2;
1906
                    			    	try { dbg.EnterSubRule(16);
1907
                    			    	try { dbg.EnterDecision(16);
1908
1909
                    			    	int LA16_0 = input.LA(1);
1910
1911
                    			    	if ( (LA16_0 == T_EQUAL) )
1912
                    			    	{
1913
                    			    	    alt16 = 1;
1914
                    			    	}
1915
                    			    	} finally { dbg.ExitDecision(16); }
1916
1917
                    			    	switch (alt16)
1918
                    			    	{
1919
                    			    	    case 1 :
1920
                    			    	        dbg.EnterAlt(1);
1921
1922
                    			    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:260:43: T_EQUAL otherOptVal= T_INTNUMBER
1923
                    			    	        {
1924
                    			    	        	dbg.Location(260,43);
1925
                    			    	        	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_simpleType780);
1926
                    			    	        	dbg.Location(260,62);
1927
                    			    	        	otherOptVal=(IToken)Match(input,T_INTNUMBER,FOLLOW_T_INTNUMBER_in_simpleType784);
1928
1929
                    			    	        }
1930
                    			    	        break;
1931
1932
                    			    	}
1933
                    			    	} finally { dbg.ExitSubRule(16); }
1934
1935
                    			    	dbg.Location(260,77);
1936
                    			    	addToEnumType(aTypeSymbol,otherRangeValue,otherOptVal); otherOptVal=null;
1937
1938
                    			    }
1939
                    			    break;
1940
1941
                    			default:
1942
                    			    goto loop17;
1943
                    	    }
1944
                    	} while (true);
1945
1946
                    	loop17:
1947
                    		;	// Stops C# compiler whining that label 'loop17' has no statements
1948
                    	} finally { dbg.ExitSubRule(17); }
1949
1950
                    	dbg.Location(260,155);
1951
                    	Match(input,T_CBRR,FOLLOW_T_CBRR_in_simpleType792);
1952
1953
                    }
1954
                    break;
1955
                case 6 :
1956
                    dbg.EnterAlt(6);
1957
1958
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:262:4: aType= T_IDENTIFIER
1959
                    {
1960
                    	dbg.Location(262,9);
1961
                    	aType=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_simpleType803);
1962
                    	dbg.Location(262,23);
1963
                    	aTypeSymbol = getNamedType(aType);
1964
1965
                    }
1966
                    break;
1967
1968
            }
1969
        }
1970
        catch (RecognitionException re)
1971
    	{
1972
            ReportError(re);
1973
            Recover(input,re);
1974
        }
1975
        finally
1976
    	{
1977
            fixupSimpleType(aTypeSymbol);
1978
        }
1979
        dbg.Location(263, 2);
1980
1981
        }
1982
        finally {
1983
            dbg.ExitRule(GrammarFileName, "simpleType");
1984
            DecRuleLevel();
1985
            if ( RuleLevel==0 ) {dbg.Terminate();}
1986
        }
1987
1988
        return aTypeSymbol;
1989
    }
1990
    // $ANTLR end "simpleType"
1991
1992
1993
    // $ANTLR start "ooActionSystem"
1994
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:272: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 )? ']|' ;
1995
    public OoActionSystemType ooActionSystem() // throws RecognitionException [1]
1996
    {
1997
        OoActionSystemType aTypeSymbol = default(OoActionSystemType);
1998
1999
        IToken refinesSystemName = null;
2000
        Block bl = default(Block);
2001
2002
2003
2004
        		bool autoCons = false;
2005
        		aTypeSymbol = null;
2006
        		refinesSystemName = null;
2007
2008
        try {
2009
        	dbg.EnterRule(GrammarFileName, "ooActionSystem");
2010
        	if ( RuleLevel==0 ) {dbg.Commence();}
2011
        	IncRuleLevel();
2012
        	dbg.Location(272, 1);
2013
2014
        try
2015
    	{
2016
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:279: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 )? ']|' )
2017
            dbg.EnterAlt(1);
2018
2019
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:279: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 )? ']|'
2020
            {
2021
            	dbg.Location(279,9);
2022
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:279:9: ( T_AUTOCONS )?
2023
            	int alt19 = 2;
2024
            	try { dbg.EnterSubRule(19);
2025
            	try { dbg.EnterDecision(19);
2026
2027
            	int LA19_0 = input.LA(1);
2028
2029
            	if ( (LA19_0 == T_AUTOCONS) )
2030
            	{
2031
            	    alt19 = 1;
2032
            	}
2033
            	} finally { dbg.ExitDecision(19); }
2034
2035
            	switch (alt19)
2036
            	{
2037
            	    case 1 :
2038
            	        dbg.EnterAlt(1);
2039
2040
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:279:10: T_AUTOCONS
2041
            	        {
2042
            	        	dbg.Location(279,10);
2043
            	        	Match(input,T_AUTOCONS,FOLLOW_T_AUTOCONS_in_ooActionSystem846);
2044
            	        	dbg.Location(279,21);
2045
            	        	autoCons = true;
2046
2047
            	        }
2048
            	        break;
2049
2050
            	}
2051
            	} finally { dbg.ExitSubRule(19); }
2052
2053
            	dbg.Location(280,3);
2054
            	Match(input,T_SYSTEM,FOLLOW_T_SYSTEM_in_ooActionSystem855);
2055
            	dbg.Location(280,12);
2056
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:280:12: ( T_LPAREN refinesSystemName= T_IDENTIFIER T_RPAREN )?
2057
            	int alt20 = 2;
2058
            	try { dbg.EnterSubRule(20);
2059
            	try { dbg.EnterDecision(20);
2060
2061
            	int LA20_0 = input.LA(1);
2062
2063
            	if ( (LA20_0 == T_LPAREN) )
2064
            	{
2065
            	    alt20 = 1;
2066
            	}
2067
            	} finally { dbg.ExitDecision(20); }
2068
2069
            	switch (alt20)
2070
            	{
2071
            	    case 1 :
2072
            	        dbg.EnterAlt(1);
2073
2074
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:280:13: T_LPAREN refinesSystemName= T_IDENTIFIER T_RPAREN
2075
            	        {
2076
            	        	dbg.Location(280,13);
2077
            	        	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_ooActionSystem858);
2078
            	        	dbg.Location(280,39);
2079
            	        	refinesSystemName=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_ooActionSystem862);
2080
            	        	dbg.Location(280,53);
2081
            	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_ooActionSystem864);
2082
2083
            	        }
2084
            	        break;
2085
2086
            	}
2087
            	} finally { dbg.ExitSubRule(20); }
2088
2089
            	dbg.Location(281,3);
2090
            	aTypeSymbol = createOoaType(refinesSystemName,autoCons);
2091
            	dbg.Location(282,3);
2092
            	Match(input,117,FOLLOW_117_in_ooActionSystem877);
2093
            	dbg.Location(283,4);
2094
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:283:4: ( T_VAR attrList )?
2095
            	int alt21 = 2;
2096
            	try { dbg.EnterSubRule(21);
2097
            	try { dbg.EnterDecision(21);
2098
2099
            	int LA21_0 = input.LA(1);
2100
2101
            	if ( (LA21_0 == T_VAR) )
2102
            	{
2103
            	    alt21 = 1;
2104
            	}
2105
            	} finally { dbg.ExitDecision(21); }
2106
2107
            	switch (alt21)
2108
            	{
2109
            	    case 1 :
2110
            	        dbg.EnterAlt(1);
2111
2112
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:283:5: T_VAR attrList
2113
            	        {
2114
            	        	dbg.Location(283,5);
2115
            	        	Match(input,T_VAR,FOLLOW_T_VAR_in_ooActionSystem883);
2116
            	        	dbg.Location(283,11);
2117
            	        	PushFollow(FOLLOW_attrList_in_ooActionSystem885);
2118
            	        	attrList();
2119
            	        	state.followingStackPointer--;
2120
2121
2122
            	        }
2123
            	        break;
2124
2125
            	}
2126
            	} finally { dbg.ExitSubRule(21); }
2127
2128
            	dbg.Location(284,4);
2129
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:284:4: ( T_METHODS methodList )?
2130
            	int alt22 = 2;
2131
            	try { dbg.EnterSubRule(22);
2132
            	try { dbg.EnterDecision(22);
2133
2134
            	int LA22_0 = input.LA(1);
2135
2136
            	if ( (LA22_0 == T_METHODS) )
2137
            	{
2138
            	    alt22 = 1;
2139
            	}
2140
            	} finally { dbg.ExitDecision(22); }
2141
2142
            	switch (alt22)
2143
            	{
2144
            	    case 1 :
2145
            	        dbg.EnterAlt(1);
2146
2147
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:284:5: T_METHODS methodList
2148
            	        {
2149
            	        	dbg.Location(284,5);
2150
            	        	Match(input,T_METHODS,FOLLOW_T_METHODS_in_ooActionSystem893);
2151
            	        	dbg.Location(284,15);
2152
            	        	PushFollow(FOLLOW_methodList_in_ooActionSystem895);
2153
            	        	methodList();
2154
            	        	state.followingStackPointer--;
2155
2156
2157
            	        }
2158
            	        break;
2159
2160
            	}
2161
            	} finally { dbg.ExitSubRule(22); }
2162
2163
            	dbg.Location(285,4);
2164
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:285:4: ( T_ACTIONS namedActionList )?
2165
            	int alt23 = 2;
2166
            	try { dbg.EnterSubRule(23);
2167
            	try { dbg.EnterDecision(23);
2168
2169
            	int LA23_0 = input.LA(1);
2170
2171
            	if ( (LA23_0 == T_ACTIONS) )
2172
            	{
2173
            	    alt23 = 1;
2174
            	}
2175
            	} finally { dbg.ExitDecision(23); }
2176
2177
            	switch (alt23)
2178
            	{
2179
            	    case 1 :
2180
            	        dbg.EnterAlt(1);
2181
2182
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:285:5: T_ACTIONS namedActionList
2183
            	        {
2184
            	        	dbg.Location(285,5);
2185
            	        	Match(input,T_ACTIONS,FOLLOW_T_ACTIONS_in_ooActionSystem903);
2186
            	        	dbg.Location(285,15);
2187
            	        	PushFollow(FOLLOW_namedActionList_in_ooActionSystem905);
2188
            	        	namedActionList();
2189
            	        	state.followingStackPointer--;
2190
2191
2192
            	        }
2193
            	        break;
2194
2195
            	}
2196
            	} finally { dbg.ExitSubRule(23); }
2197
2198
            	dbg.Location(286,4);
2199
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:286:4: ( T_DO (bl= actionBlock[null] )? T_OD )?
2200
            	int alt25 = 2;
2201
            	try { dbg.EnterSubRule(25);
2202
            	try { dbg.EnterDecision(25);
2203
2204
            	int LA25_0 = input.LA(1);
2205
2206
            	if ( (LA25_0 == T_DO) )
2207
            	{
2208
            	    alt25 = 1;
2209
            	}
2210
            	} finally { dbg.ExitDecision(25); }
2211
2212
            	switch (alt25)
2213
            	{
2214
            	    case 1 :
2215
            	        dbg.EnterAlt(1);
2216
2217
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:286:5: T_DO (bl= actionBlock[null] )? T_OD
2218
            	        {
2219
            	        	dbg.Location(286,5);
2220
            	        	Match(input,T_DO,FOLLOW_T_DO_in_ooActionSystem913);
2221
            	        	dbg.Location(286,10);
2222
            	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:286:10: (bl= actionBlock[null] )?
2223
            	        	int alt24 = 2;
2224
            	        	try { dbg.EnterSubRule(24);
2225
            	        	try { dbg.EnterDecision(24);
2226
2227
            	        	int LA24_0 = input.LA(1);
2228
2229
            	        	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) )
2230
            	        	{
2231
            	        	    alt24 = 1;
2232
            	        	}
2233
            	        	} finally { dbg.ExitDecision(24); }
2234
2235
            	        	switch (alt24)
2236
            	        	{
2237
            	        	    case 1 :
2238
            	        	        dbg.EnterAlt(1);
2239
2240
            	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:286:11: bl= actionBlock[null]
2241
            	        	        {
2242
            	        	        	dbg.Location(286,13);
2243
            	        	        	PushFollow(FOLLOW_actionBlock_in_ooActionSystem918);
2244
            	        	        	bl = actionBlock(null);
2245
            	        	        	state.followingStackPointer--;
2246
2247
            	        	        	dbg.Location(286,32);
2248
            	        	        	addActionBlock(aTypeSymbol,bl);
2249
2250
            	        	        }
2251
            	        	        break;
2252
2253
            	        	}
2254
            	        	} finally { dbg.ExitSubRule(24); }
2255
2256
            	        	dbg.Location(286,68);
2257
            	        	Match(input,T_OD,FOLLOW_T_OD_in_ooActionSystem925);
2258
2259
            	        }
2260
            	        break;
2261
2262
            	}
2263
            	} finally { dbg.ExitSubRule(25); }
2264
2265
            	dbg.Location(287,3);
2266
            	Match(input,118,FOLLOW_118_in_ooActionSystem931);
2267
2268
            }
2269
2270
        }
2271
        catch (RecognitionException re)
2272
    	{
2273
            ReportError(re);
2274
            Recover(input,re);
2275
        }
2276
        finally
2277
    	{
2278
            fixupOoaType(aTypeSymbol);
2279
        }
2280
        dbg.Location(288, 2);
2281
2282
        }
2283
        finally {
2284
            dbg.ExitRule(GrammarFileName, "ooActionSystem");
2285
            DecRuleLevel();
2286
            if ( RuleLevel==0 ) {dbg.Terminate();}
2287
        }
2288
2289
        return aTypeSymbol;
2290
    }
2291
    // $ANTLR end "ooActionSystem"
2292
2293
2294
    // $ANTLR start "attrList"
2295
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:298:1: attrList : attr ( T_SEMICOLON attr )* ;
2296
    public void attrList() // throws RecognitionException [1]
2297
    {
2298
        try {
2299
        	dbg.EnterRule(GrammarFileName, "attrList");
2300
        	if ( RuleLevel==0 ) {dbg.Commence();}
2301
        	IncRuleLevel();
2302
        	dbg.Location(298, 1);
2303
2304
        try
2305
    	{
2306
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:299:2: ( attr ( T_SEMICOLON attr )* )
2307
            dbg.EnterAlt(1);
2308
2309
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:299:4: attr ( T_SEMICOLON attr )*
2310
            {
2311
            	dbg.Location(299,4);
2312
            	BeginParsingAttributes();
2313
            	dbg.Location(300,4);
2314
            	PushFollow(FOLLOW_attr_in_attrList962);
2315
            	attr();
2316
            	state.followingStackPointer--;
2317
2318
            	dbg.Location(300,9);
2319
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:300:9: ( T_SEMICOLON attr )*
2320
            	try { dbg.EnterSubRule(26);
2321
2322
            	do
2323
            	{
2324
            	    int alt26 = 2;
2325
            	    try { dbg.EnterDecision(26);
2326
2327
            	    int LA26_0 = input.LA(1);
2328
2329
            	    if ( (LA26_0 == T_SEMICOLON) )
2330
            	    {
2331
            	        alt26 = 1;
2332
            	    }
2333
2334
2335
            	    } finally { dbg.ExitDecision(26); }
2336
2337
            	    switch (alt26)
2338
            		{
2339
            			case 1 :
2340
            			    dbg.EnterAlt(1);
2341
2342
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:300:10: T_SEMICOLON attr
2343
            			    {
2344
            			    	dbg.Location(300,10);
2345
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_attrList965);
2346
            			    	dbg.Location(300,22);
2347
            			    	PushFollow(FOLLOW_attr_in_attrList967);
2348
            			    	attr();
2349
            			    	state.followingStackPointer--;
2350
2351
2352
            			    }
2353
            			    break;
2354
2355
            			default:
2356
            			    goto loop26;
2357
            	    }
2358
            	} while (true);
2359
2360
            	loop26:
2361
            		;	// Stops C# compiler whining that label 'loop26' has no statements
2362
            	} finally { dbg.ExitSubRule(26); }
2363
2364
2365
            }
2366
2367
        }
2368
        catch (RecognitionException re)
2369
    	{
2370
            ReportError(re);
2371
            Recover(input,re);
2372
        }
2373
        finally
2374
    	{
2375
2376
            		EndParsingAttributes();
2377
2378
        }
2379
        dbg.Location(301, 2);
2380
2381
        }
2382
        finally {
2383
            dbg.ExitRule(GrammarFileName, "attrList");
2384
            DecRuleLevel();
2385
            if ( RuleLevel==0 ) {dbg.Terminate();}
2386
        }
2387
2388
        return ;
2389
    }
2390
    // $ANTLR end "attrList"
2391
2392
2393
    // $ANTLR start "attr"
2394
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:306:1: attr : ( T_STATIC )? ( T_OBS | T_CTRL )? varname= T_IDENTIFIER T_COLON aType= complexType ( T_EQUAL anExpr= expression )? ;
2395
    public void attr() // throws RecognitionException [1]
2396
    {
2397
        IToken varname = null;
2398
        UlyssesType aType = default(UlyssesType);
2399
2400
        Expression anExpr = default(Expression);
2401
2402
2403
2404
        		bool isStatic = false;
2405
        		bool isCtr = false;
2406
        		bool isObs = false;
2407
2408
2409
        try {
2410
        	dbg.EnterRule(GrammarFileName, "attr");
2411
        	if ( RuleLevel==0 ) {dbg.Commence();}
2412
        	IncRuleLevel();
2413
        	dbg.Location(306, 1);
2414
2415
        try
2416
    	{
2417
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:313:2: ( ( T_STATIC )? ( T_OBS | T_CTRL )? varname= T_IDENTIFIER T_COLON aType= complexType ( T_EQUAL anExpr= expression )? )
2418
            dbg.EnterAlt(1);
2419
2420
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:313:5: ( T_STATIC )? ( T_OBS | T_CTRL )? varname= T_IDENTIFIER T_COLON aType= complexType ( T_EQUAL anExpr= expression )?
2421
            {
2422
            	dbg.Location(313,5);
2423
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:313:5: ( T_STATIC )?
2424
            	int alt27 = 2;
2425
            	try { dbg.EnterSubRule(27);
2426
            	try { dbg.EnterDecision(27);
2427
2428
            	int LA27_0 = input.LA(1);
2429
2430
            	if ( (LA27_0 == T_STATIC) )
2431
            	{
2432
            	    alt27 = 1;
2433
            	}
2434
            	} finally { dbg.ExitDecision(27); }
2435
2436
            	switch (alt27)
2437
            	{
2438
            	    case 1 :
2439
            	        dbg.EnterAlt(1);
2440
2441
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:313:6: T_STATIC
2442
            	        {
2443
            	        	dbg.Location(313,6);
2444
            	        	Match(input,T_STATIC,FOLLOW_T_STATIC_in_attr992);
2445
            	        	dbg.Location(313,15);
2446
            	        	isStatic = true;
2447
2448
            	        }
2449
            	        break;
2450
2451
            	}
2452
            	} finally { dbg.ExitSubRule(27); }
2453
2454
            	dbg.Location(313,36);
2455
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:313:36: ( T_OBS | T_CTRL )?
2456
            	int alt28 = 3;
2457
            	try { dbg.EnterSubRule(28);
2458
            	try { dbg.EnterDecision(28);
2459
2460
            	int LA28_0 = input.LA(1);
2461
2462
            	if ( (LA28_0 == T_OBS) )
2463
            	{
2464
            	    alt28 = 1;
2465
            	}
2466
            	else if ( (LA28_0 == T_CTRL) )
2467
            	{
2468
            	    alt28 = 2;
2469
            	}
2470
            	} finally { dbg.ExitDecision(28); }
2471
2472
            	switch (alt28)
2473
            	{
2474
            	    case 1 :
2475
            	        dbg.EnterAlt(1);
2476
2477
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:313:37: T_OBS
2478
            	        {
2479
            	        	dbg.Location(313,37);
2480
            	        	Match(input,T_OBS,FOLLOW_T_OBS_in_attr999);
2481
            	        	dbg.Location(313,43);
2482
            	        	isObs = true;
2483
2484
            	        }
2485
            	        break;
2486
            	    case 2 :
2487
            	        dbg.EnterAlt(2);
2488
2489
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:313:61: T_CTRL
2490
            	        {
2491
            	        	dbg.Location(313,61);
2492
            	        	Match(input,T_CTRL,FOLLOW_T_CTRL_in_attr1005);
2493
            	        	dbg.Location(313,68);
2494
            	        	isCtr = true;
2495
2496
            	        }
2497
            	        break;
2498
2499
            	}
2500
            	} finally { dbg.ExitSubRule(28); }
2501
2502
            	dbg.Location(314,10);
2503
            	varname=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_attr1016);
2504
            	dbg.Location(314,25);
2505
            	Match(input,T_COLON,FOLLOW_T_COLON_in_attr1019);
2506
            	dbg.Location(314,38);
2507
            	PushFollow(FOLLOW_complexType_in_attr1023);
2508
            	aType = complexType();
2509
            	state.followingStackPointer--;
2510
2511
            	dbg.Location(314,51);
2512
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:314:51: ( T_EQUAL anExpr= expression )?
2513
            	int alt29 = 2;
2514
            	try { dbg.EnterSubRule(29);
2515
            	try { dbg.EnterDecision(29);
2516
2517
            	int LA29_0 = input.LA(1);
2518
2519
            	if ( (LA29_0 == T_EQUAL) )
2520
            	{
2521
            	    alt29 = 1;
2522
            	}
2523
            	} finally { dbg.ExitDecision(29); }
2524
2525
            	switch (alt29)
2526
            	{
2527
            	    case 1 :
2528
            	        dbg.EnterAlt(1);
2529
2530
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:314:52: T_EQUAL anExpr= expression
2531
            	        {
2532
            	        	dbg.Location(314,52);
2533
            	        	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_attr1026);
2534
            	        	dbg.Location(314,66);
2535
            	        	PushFollow(FOLLOW_expression_in_attr1030);
2536
            	        	anExpr = expression();
2537
            	        	state.followingStackPointer--;
2538
2539
2540
            	        }
2541
            	        break;
2542
2543
            	}
2544
            	} finally { dbg.ExitSubRule(29); }
2545
2546
            	dbg.Location(315,3);
2547
            	createAttribute(varname, isStatic, isObs, isCtr, aType, anExpr);
2548
2549
            }
2550
2551
        }
2552
        catch (RecognitionException re)
2553
    	{
2554
            ReportError(re);
2555
            Recover(input,re);
2556
        }
2557
        finally
2558
    	{
2559
        }
2560
        dbg.Location(316, 2);
2561
2562
        }
2563
        finally {
2564
            dbg.ExitRule(GrammarFileName, "attr");
2565
            DecRuleLevel();
2566
            if ( RuleLevel==0 ) {dbg.Terminate();}
2567
        }
2568
2569
        return ;
2570
    }
2571
    // $ANTLR end "attr"
2572
2573
2574
    // $ANTLR start "methodList"
2575
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:321:1: methodList : method ( T_SEMICOLON method )* ;
2576
    public void methodList() // throws RecognitionException [1]
2577
    {
2578
        try {
2579
        	dbg.EnterRule(GrammarFileName, "methodList");
2580
        	if ( RuleLevel==0 ) {dbg.Commence();}
2581
        	IncRuleLevel();
2582
        	dbg.Location(321, 1);
2583
2584
        try
2585
    	{
2586
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:322:2: ( method ( T_SEMICOLON method )* )
2587
            dbg.EnterAlt(1);
2588
2589
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:322:5: method ( T_SEMICOLON method )*
2590
            {
2591
            	dbg.Location(322,5);
2592
            	PushFollow(FOLLOW_method_in_methodList1052);
2593
            	method();
2594
            	state.followingStackPointer--;
2595
2596
            	dbg.Location(322,12);
2597
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:322:12: ( T_SEMICOLON method )*
2598
            	try { dbg.EnterSubRule(30);
2599
2600
            	do
2601
            	{
2602
            	    int alt30 = 2;
2603
            	    try { dbg.EnterDecision(30);
2604
2605
            	    int LA30_0 = input.LA(1);
2606
2607
            	    if ( (LA30_0 == T_SEMICOLON) )
2608
            	    {
2609
            	        alt30 = 1;
2610
            	    }
2611
2612
2613
            	    } finally { dbg.ExitDecision(30); }
2614
2615
            	    switch (alt30)
2616
            		{
2617
            			case 1 :
2618
            			    dbg.EnterAlt(1);
2619
2620
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:322:13: T_SEMICOLON method
2621
            			    {
2622
            			    	dbg.Location(322,13);
2623
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_methodList1055);
2624
            			    	dbg.Location(322,25);
2625
            			    	PushFollow(FOLLOW_method_in_methodList1057);
2626
            			    	method();
2627
            			    	state.followingStackPointer--;
2628
2629
2630
            			    }
2631
            			    break;
2632
2633
            			default:
2634
            			    goto loop30;
2635
            	    }
2636
            	} while (true);
2637
2638
            	loop30:
2639
            		;	// Stops C# compiler whining that label 'loop30' has no statements
2640
            	} finally { dbg.ExitSubRule(30); }
2641
2642
2643
            }
2644
2645
        }
2646
        catch (RecognitionException re)
2647
    	{
2648
            ReportError(re);
2649
            Recover(input,re);
2650
        }
2651
        finally
2652
    	{
2653
        }
2654
        dbg.Location(323, 2);
2655
2656
        }
2657
        finally {
2658
            dbg.ExitRule(GrammarFileName, "methodList");
2659
            DecRuleLevel();
2660
            if ( RuleLevel==0 ) {dbg.Terminate();}
2661
        }
2662
2663
        return ;
2664
    }
2665
    // $ANTLR end "methodList"
2666
2667
2668
    // $ANTLR start "method"
2669
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:325: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 ;
2670
    public void method() // throws RecognitionException [1]
2671
    {
2672
        IToken mname = null;
2673
        UlyssesType rt = default(UlyssesType);
2674
2675
        Block statements = default(Block);
2676
2677
2678
2679
        		FunctionIdentifier newMethod = null;
2680
2681
        try {
2682
        	dbg.EnterRule(GrammarFileName, "method");
2683
        	if ( RuleLevel==0 ) {dbg.Commence();}
2684
        	IncRuleLevel();
2685
        	dbg.Location(325, 1);
2686
2687
        try
2688
    	{
2689
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:329: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 )
2690
            dbg.EnterAlt(1);
2691
2692
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:329: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
2693
            {
2694
            	dbg.Location(329,9);
2695
            	mname=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_method1079);
2696
            	dbg.Location(329,24);
2697
            	newMethod = createMethodSymbol(mname);
2698
            	dbg.Location(330,3);
2699
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:330:3: ( T_LPAREN methodParameterList[newMethod] T_RPAREN )?
2700
            	int alt31 = 2;
2701
            	try { dbg.EnterSubRule(31);
2702
            	try { dbg.EnterDecision(31);
2703
2704
            	int LA31_0 = input.LA(1);
2705
2706
            	if ( (LA31_0 == T_LPAREN) )
2707
            	{
2708
            	    alt31 = 1;
2709
            	}
2710
            	} finally { dbg.ExitDecision(31); }
2711
2712
            	switch (alt31)
2713
            	{
2714
            	    case 1 :
2715
            	        dbg.EnterAlt(1);
2716
2717
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:330:4: T_LPAREN methodParameterList[newMethod] T_RPAREN
2718
            	        {
2719
            	        	dbg.Location(330,4);
2720
            	        	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_method1087);
2721
            	        	dbg.Location(330,13);
2722
            	        	PushFollow(FOLLOW_methodParameterList_in_method1089);
2723
            	        	methodParameterList(newMethod);
2724
            	        	state.followingStackPointer--;
2725
2726
            	        	dbg.Location(330,45);
2727
            	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_method1093);
2728
2729
            	        }
2730
            	        break;
2731
2732
            	}
2733
            	} finally { dbg.ExitSubRule(31); }
2734
2735
            	dbg.Location(331,3);
2736
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:331:3: ( T_COLON rt= complexType )?
2737
            	int alt32 = 2;
2738
            	try { dbg.EnterSubRule(32);
2739
            	try { dbg.EnterDecision(32);
2740
2741
            	int LA32_0 = input.LA(1);
2742
2743
            	if ( (LA32_0 == T_COLON) )
2744
            	{
2745
            	    alt32 = 1;
2746
            	}
2747
            	} finally { dbg.ExitDecision(32); }
2748
2749
            	switch (alt32)
2750
            	{
2751
            	    case 1 :
2752
            	        dbg.EnterAlt(1);
2753
2754
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:331:4: T_COLON rt= complexType
2755
            	        {
2756
            	        	dbg.Location(331,4);
2757
            	        	Match(input,T_COLON,FOLLOW_T_COLON_in_method1101);
2758
            	        	dbg.Location(331,14);
2759
            	        	PushFollow(FOLLOW_complexType_in_method1105);
2760
            	        	rt = complexType();
2761
            	        	state.followingStackPointer--;
2762
2763
            	        	dbg.Location(331,27);
2764
            	        	setMethodReturnType(newMethod,rt);
2765
2766
            	        }
2767
            	        break;
2768
2769
            	}
2770
            	} finally { dbg.ExitSubRule(32); }
2771
2772
            	dbg.Location(332,4);
2773
            	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_method1115);
2774
            	dbg.Location(333,4);
2775
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:333:4: ( T_VAR localActionVars[newMethod] 'begin' )?
2776
            	int alt33 = 2;
2777
            	try { dbg.EnterSubRule(33);
2778
            	try { dbg.EnterDecision(33);
2779
2780
            	int LA33_0 = input.LA(1);
2781
2782
            	if ( (LA33_0 == T_VAR) )
2783
            	{
2784
            	    alt33 = 1;
2785
            	}
2786
            	} finally { dbg.ExitDecision(33); }
2787
2788
            	switch (alt33)
2789
            	{
2790
            	    case 1 :
2791
            	        dbg.EnterAlt(1);
2792
2793
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:333:5: T_VAR localActionVars[newMethod] 'begin'
2794
            	        {
2795
            	        	dbg.Location(333,5);
2796
            	        	Match(input,T_VAR,FOLLOW_T_VAR_in_method1122);
2797
            	        	dbg.Location(333,11);
2798
            	        	PushFollow(FOLLOW_localActionVars_in_method1124);
2799
            	        	localActionVars(newMethod);
2800
            	        	state.followingStackPointer--;
2801
2802
            	        	dbg.Location(333,38);
2803
            	        	Match(input,119,FOLLOW_119_in_method1127);
2804
2805
            	        }
2806
            	        break;
2807
2808
            	}
2809
            	} finally { dbg.ExitSubRule(33); }
2810
2811
            	dbg.Location(334,13);
2812
            	PushFollow(FOLLOW_actionBody_in_method1136);
2813
            	statements = actionBody(null);
2814
            	state.followingStackPointer--;
2815
2816
            	dbg.Location(334,31);
2817
            	addMethodBody(newMethod,statements);
2818
            	dbg.Location(335,3);
2819
            	Match(input,T_END,FOLLOW_T_END_in_method1144);
2820
2821
            }
2822
2823
        }
2824
        catch (RecognitionException re)
2825
    	{
2826
            ReportError(re);
2827
            Recover(input,re);
2828
        }
2829
        finally
2830
    	{
2831
            popResolveStack(newMethod);
2832
        }
2833
        dbg.Location(336, 2);
2834
2835
        }
2836
        finally {
2837
            dbg.ExitRule(GrammarFileName, "method");
2838
            DecRuleLevel();
2839
            if ( RuleLevel==0 ) {dbg.Terminate();}
2840
        }
2841
2842
        return ;
2843
    }
2844
    // $ANTLR end "method"
2845
2846
2847
    // $ANTLR start "methodParameterList"
2848
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:340:1: methodParameterList[FunctionIdentifier newMethod] : paramName= T_IDENTIFIER T_COLON atype= complexType ( T_COMMA otherparam= T_IDENTIFIER T_COLON othertype= complexType )* ;
2849
    public void methodParameterList(FunctionIdentifier newMethod) // throws RecognitionException [1]
2850
    {
2851
        IToken paramName = null;
2852
        IToken otherparam = null;
2853
        UlyssesType atype = default(UlyssesType);
2854
2855
        UlyssesType othertype = default(UlyssesType);
2856
2857
2858
        try {
2859
        	dbg.EnterRule(GrammarFileName, "methodParameterList");
2860
        	if ( RuleLevel==0 ) {dbg.Commence();}
2861
        	IncRuleLevel();
2862
        	dbg.Location(340, 1);
2863
2864
        try
2865
    	{
2866
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:341:2: (paramName= T_IDENTIFIER T_COLON atype= complexType ( T_COMMA otherparam= T_IDENTIFIER T_COLON othertype= complexType )* )
2867
            dbg.EnterAlt(1);
2868
2869
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:341:5: paramName= T_IDENTIFIER T_COLON atype= complexType ( T_COMMA otherparam= T_IDENTIFIER T_COLON othertype= complexType )*
2870
            {
2871
            	dbg.Location(341,14);
2872
            	paramName=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_methodParameterList1168);
2873
            	dbg.Location(341,28);
2874
            	Match(input,T_COLON,FOLLOW_T_COLON_in_methodParameterList1170);
2875
            	dbg.Location(341,41);
2876
            	PushFollow(FOLLOW_complexType_in_methodParameterList1174);
2877
            	atype = complexType();
2878
            	state.followingStackPointer--;
2879
2880
            	dbg.Location(341,54);
2881
            	addMethodParameter(newMethod,paramName,atype);
2882
            	dbg.Location(342,4);
2883
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:342:4: ( T_COMMA otherparam= T_IDENTIFIER T_COLON othertype= complexType )*
2884
            	try { dbg.EnterSubRule(34);
2885
2886
            	do
2887
            	{
2888
            	    int alt34 = 2;
2889
            	    try { dbg.EnterDecision(34);
2890
2891
            	    int LA34_0 = input.LA(1);
2892
2893
            	    if ( (LA34_0 == T_COMMA) )
2894
            	    {
2895
            	        alt34 = 1;
2896
            	    }
2897
2898
2899
            	    } finally { dbg.ExitDecision(34); }
2900
2901
            	    switch (alt34)
2902
            		{
2903
            			case 1 :
2904
            			    dbg.EnterAlt(1);
2905
2906
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:342:5: T_COMMA otherparam= T_IDENTIFIER T_COLON othertype= complexType
2907
            			    {
2908
            			    	dbg.Location(342,5);
2909
            			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_methodParameterList1182);
2910
            			    	dbg.Location(342,23);
2911
            			    	otherparam=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_methodParameterList1186);
2912
            			    	dbg.Location(342,37);
2913
            			    	Match(input,T_COLON,FOLLOW_T_COLON_in_methodParameterList1188);
2914
            			    	dbg.Location(342,54);
2915
            			    	PushFollow(FOLLOW_complexType_in_methodParameterList1192);
2916
            			    	othertype = complexType();
2917
            			    	state.followingStackPointer--;
2918
2919
            			    	dbg.Location(343,4);
2920
            			    	addMethodParameter(newMethod,otherparam,othertype);
2921
2922
            			    }
2923
            			    break;
2924
2925
            			default:
2926
            			    goto loop34;
2927
            	    }
2928
            	} while (true);
2929
2930
            	loop34:
2931
            		;	// Stops C# compiler whining that label 'loop34' has no statements
2932
            	} finally { dbg.ExitSubRule(34); }
2933
2934
2935
            }
2936
2937
        }
2938
        catch (RecognitionException re)
2939
    	{
2940
            ReportError(re);
2941
            Recover(input,re);
2942
        }
2943
        finally
2944
    	{
2945
        }
2946
        dbg.Location(344, 2);
2947
2948
        }
2949
        finally {
2950
            dbg.ExitRule(GrammarFileName, "methodParameterList");
2951
            DecRuleLevel();
2952
            if ( RuleLevel==0 ) {dbg.Terminate();}
2953
        }
2954
2955
        return ;
2956
    }
2957
    // $ANTLR end "methodParameterList"
2958
2959
2960
    // $ANTLR start "namedActionList"
2961
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:351:1: namedActionList : namedAction ( T_SEMICOLON namedAction )* ;
2962
    public void namedActionList() // throws RecognitionException [1]
2963
    {
2964
        try {
2965
        	dbg.EnterRule(GrammarFileName, "namedActionList");
2966
        	if ( RuleLevel==0 ) {dbg.Commence();}
2967
        	IncRuleLevel();
2968
        	dbg.Location(351, 1);
2969
2970
        try
2971
    	{
2972
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:352:2: ( namedAction ( T_SEMICOLON namedAction )* )
2973
            dbg.EnterAlt(1);
2974
2975
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:352:4: namedAction ( T_SEMICOLON namedAction )*
2976
            {
2977
            	dbg.Location(352,4);
2978
            	PushFollow(FOLLOW_namedAction_in_namedActionList1219);
2979
            	namedAction();
2980
            	state.followingStackPointer--;
2981
2982
            	dbg.Location(352,16);
2983
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:352:16: ( T_SEMICOLON namedAction )*
2984
            	try { dbg.EnterSubRule(35);
2985
2986
            	do
2987
            	{
2988
            	    int alt35 = 2;
2989
            	    try { dbg.EnterDecision(35);
2990
2991
            	    int LA35_0 = input.LA(1);
2992
2993
            	    if ( (LA35_0 == T_SEMICOLON) )
2994
            	    {
2995
            	        alt35 = 1;
2996
            	    }
2997
2998
2999
            	    } finally { dbg.ExitDecision(35); }
3000
3001
            	    switch (alt35)
3002
            		{
3003
            			case 1 :
3004
            			    dbg.EnterAlt(1);
3005
3006
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:352:17: T_SEMICOLON namedAction
3007
            			    {
3008
            			    	dbg.Location(352,17);
3009
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_namedActionList1222);
3010
            			    	dbg.Location(352,29);
3011
            			    	PushFollow(FOLLOW_namedAction_in_namedActionList1224);
3012
            			    	namedAction();
3013
            			    	state.followingStackPointer--;
3014
3015
3016
            			    }
3017
            			    break;
3018
3019
            			default:
3020
            			    goto loop35;
3021
            	    }
3022
            	} while (true);
3023
3024
            	loop35:
3025
            		;	// Stops C# compiler whining that label 'loop35' has no statements
3026
            	} finally { dbg.ExitSubRule(35); }
3027
3028
3029
            }
3030
3031
        }
3032
        catch (RecognitionException re)
3033
    	{
3034
            ReportError(re);
3035
            Recover(input,re);
3036
        }
3037
        finally
3038
    	{
3039
        }
3040
        dbg.Location(353, 2);
3041
3042
        }
3043
        finally {
3044
            dbg.ExitRule(GrammarFileName, "namedActionList");
3045
            DecRuleLevel();
3046
            if ( RuleLevel==0 ) {dbg.Terminate();}
3047
        }
3048
3049
        return ;
3050
    }
3051
    // $ANTLR end "namedActionList"
3052
3053
3054
    // $ANTLR start "namedAction"
3055
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:355: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 );
3056
    public void namedAction() // throws RecognitionException [1]
3057
    {
3058
        IToken cactionname = null;
3059
        IToken actionname = null;
3060
        GuardedCommand constraints = default(GuardedCommand);
3061
3062
        GuardedCommand body = default(GuardedCommand);
3063
3064
3065
3066
        		FunctionTypeEnum actionType;
3067
        		FunctionIdentifier newAction = null;
3068
3069
        try {
3070
        	dbg.EnterRule(GrammarFileName, "namedAction");
3071
        	if ( RuleLevel==0 ) {dbg.Commence();}
3072
        	IncRuleLevel();
3073
        	dbg.Location(355, 1);
3074
3075
        try
3076
    	{
3077
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:360: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 )
3078
            int alt40 = 2;
3079
            try { dbg.EnterDecision(40);
3080
3081
            int LA40_0 = input.LA(1);
3082
3083
            if ( (LA40_0 == T_CONT) )
3084
            {
3085
                alt40 = 1;
3086
            }
3087
            else if ( (LA40_0 == T_IDENTIFIER || (LA40_0 >= T_OBS && LA40_0 <= T_CTRL)) )
3088
            {
3089
                alt40 = 2;
3090
            }
3091
            else
3092
            {
3093
                NoViableAltException nvae_d40s0 =
3094
                    new NoViableAltException("", 40, 0, input);
3095
3096
                dbg.RecognitionException(nvae_d40s0);
3097
                throw nvae_d40s0;
3098
            }
3099
            } finally { dbg.ExitDecision(40); }
3100
3101
            switch (alt40)
3102
            {
3103
                case 1 :
3104
                    dbg.EnterAlt(1);
3105
3106
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:360:4: T_CONT cactionname= T_IDENTIFIER ( T_LPAREN methodParameterList[newAction] T_RPAREN )? T_EQUAL constraints= continuousActionBody
3107
                    {
3108
                    	dbg.Location(360,4);
3109
                    	Match(input,T_CONT,FOLLOW_T_CONT_in_namedAction1244);
3110
                    	dbg.Location(360,22);
3111
                    	cactionname=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_namedAction1248);
3112
                    	dbg.Location(360,37);
3113
                    	newAction = createNamedContinuousAction(cactionname, FunctionTypeEnum.Continuous);
3114
                    	dbg.Location(361,3);
3115
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:361:3: ( T_LPAREN methodParameterList[newAction] T_RPAREN )?
3116
                    	int alt36 = 2;
3117
                    	try { dbg.EnterSubRule(36);
3118
                    	try { dbg.EnterDecision(36);
3119
3120
                    	int LA36_0 = input.LA(1);
3121
3122
                    	if ( (LA36_0 == T_LPAREN) )
3123
                    	{
3124
                    	    alt36 = 1;
3125
                    	}
3126
                    	} finally { dbg.ExitDecision(36); }
3127
3128
                    	switch (alt36)
3129
                    	{
3130
                    	    case 1 :
3131
                    	        dbg.EnterAlt(1);
3132
3133
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:361:4: T_LPAREN methodParameterList[newAction] T_RPAREN
3134
                    	        {
3135
                    	        	dbg.Location(361,4);
3136
                    	        	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_namedAction1256);
3137
                    	        	dbg.Location(361,13);
3138
                    	        	PushFollow(FOLLOW_methodParameterList_in_namedAction1258);
3139
                    	        	methodParameterList(newAction);
3140
                    	        	state.followingStackPointer--;
3141
3142
                    	        	dbg.Location(361,45);
3143
                    	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_namedAction1262);
3144
3145
                    	        }
3146
                    	        break;
3147
3148
                    	}
3149
                    	} finally { dbg.ExitSubRule(36); }
3150
3151
                    	dbg.Location(362,3);
3152
                    	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_namedAction1269);
3153
                    	dbg.Location(362,22);
3154
                    	PushFollow(FOLLOW_continuousActionBody_in_namedAction1273);
3155
                    	constraints = continuousActionBody();
3156
                    	state.followingStackPointer--;
3157
3158
                    	dbg.Location(362,44);
3159
                    	addContinuousActionBody(newAction,constraints);
3160
3161
                    }
3162
                    break;
3163
                case 2 :
3164
                    dbg.EnterAlt(2);
3165
3166
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:364:4: ( T_CTRL | T_OBS | ) actionname= T_IDENTIFIER ( T_LPAREN methodParameterList[newAction] T_RPAREN )? T_EQUAL ( T_VAR localActionVars[newAction] )? body= discreteActionBody
3167
                    {
3168
                    	dbg.Location(364,4);
3169
                    	actionType = FunctionTypeEnum.Internal;
3170
                    	dbg.Location(365,3);
3171
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:365:3: ( T_CTRL | T_OBS | )
3172
                    	int alt37 = 3;
3173
                    	try { dbg.EnterSubRule(37);
3174
                    	try { dbg.EnterDecision(37);
3175
3176
                    	switch ( input.LA(1) )
3177
                    	{
3178
                    	case T_CTRL:
3179
                    		{
3180
                    	    alt37 = 1;
3181
                    	    }
3182
                    	    break;
3183
                    	case T_OBS:
3184
                    		{
3185
                    	    alt37 = 2;
3186
                    	    }
3187
                    	    break;
3188
                    	case T_IDENTIFIER:
3189
                    		{
3190
                    	    alt37 = 3;
3191
                    	    }
3192
                    	    break;
3193
                    		default:
3194
                    		    NoViableAltException nvae_d37s0 =
3195
                    		        new NoViableAltException("", 37, 0, input);
3196
3197
                    		    dbg.RecognitionException(nvae_d37s0);
3198
                    		    throw nvae_d37s0;
3199
                    	}
3200
3201
                    	} finally { dbg.ExitDecision(37); }
3202
3203
                    	switch (alt37)
3204
                    	{
3205
                    	    case 1 :
3206
                    	        dbg.EnterAlt(1);
3207
3208
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:365:4: T_CTRL
3209
                    	        {
3210
                    	        	dbg.Location(365,4);
3211
                    	        	Match(input,T_CTRL,FOLLOW_T_CTRL_in_namedAction1288);
3212
                    	        	dbg.Location(365,11);
3213
                    	        	actionType = FunctionTypeEnum.Controllable;
3214
3215
                    	        }
3216
                    	        break;
3217
                    	    case 2 :
3218
                    	        dbg.EnterAlt(2);
3219
3220
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:365:58: T_OBS
3221
                    	        {
3222
                    	        	dbg.Location(365,58);
3223
                    	        	Match(input,T_OBS,FOLLOW_T_OBS_in_namedAction1293);
3224
                    	        	dbg.Location(365,64);
3225
                    	        	actionType = FunctionTypeEnum.Observable;
3226
3227
                    	        }
3228
                    	        break;
3229
                    	    case 3 :
3230
                    	        dbg.EnterAlt(3);
3231
3232
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:365:109:
3233
                    	        {
3234
                    	        }
3235
                    	        break;
3236
3237
                    	}
3238
                    	} finally { dbg.ExitSubRule(37); }
3239
3240
                    	dbg.Location(366,14);
3241
                    	actionname=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_namedAction1305);
3242
                    	dbg.Location(366,29);
3243
                    	newAction = createNamedAction(actionname,actionType);
3244
                    	dbg.Location(367,3);
3245
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:367:3: ( T_LPAREN methodParameterList[newAction] T_RPAREN )?
3246
                    	int alt38 = 2;
3247
                    	try { dbg.EnterSubRule(38);
3248
                    	try { dbg.EnterDecision(38);
3249
3250
                    	int LA38_0 = input.LA(1);
3251
3252
                    	if ( (LA38_0 == T_LPAREN) )
3253
                    	{
3254
                    	    alt38 = 1;
3255
                    	}
3256
                    	} finally { dbg.ExitDecision(38); }
3257
3258
                    	switch (alt38)
3259
                    	{
3260
                    	    case 1 :
3261
                    	        dbg.EnterAlt(1);
3262
3263
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:367:4: T_LPAREN methodParameterList[newAction] T_RPAREN
3264
                    	        {
3265
                    	        	dbg.Location(367,4);
3266
                    	        	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_namedAction1313);
3267
                    	        	dbg.Location(367,13);
3268
                    	        	PushFollow(FOLLOW_methodParameterList_in_namedAction1315);
3269
                    	        	methodParameterList(newAction);
3270
                    	        	state.followingStackPointer--;
3271
3272
                    	        	dbg.Location(367,45);
3273
                    	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_namedAction1319);
3274
3275
                    	        }
3276
                    	        break;
3277
3278
                    	}
3279
                    	} finally { dbg.ExitSubRule(38); }
3280
3281
                    	dbg.Location(368,3);
3282
                    	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_namedAction1326);
3283
                    	dbg.Location(369,3);
3284
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:369:3: ( T_VAR localActionVars[newAction] )?
3285
                    	int alt39 = 2;
3286
                    	try { dbg.EnterSubRule(39);
3287
                    	try { dbg.EnterDecision(39);
3288
3289
                    	int LA39_0 = input.LA(1);
3290
3291
                    	if ( (LA39_0 == T_VAR) )
3292
                    	{
3293
                    	    alt39 = 1;
3294
                    	}
3295
                    	} finally { dbg.ExitDecision(39); }
3296
3297
                    	switch (alt39)
3298
                    	{
3299
                    	    case 1 :
3300
                    	        dbg.EnterAlt(1);
3301
3302
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:369:4: T_VAR localActionVars[newAction]
3303
                    	        {
3304
                    	        	dbg.Location(369,4);
3305
                    	        	Match(input,T_VAR,FOLLOW_T_VAR_in_namedAction1332);
3306
                    	        	dbg.Location(369,10);
3307
                    	        	PushFollow(FOLLOW_localActionVars_in_namedAction1334);
3308
                    	        	localActionVars(newAction);
3309
                    	        	state.followingStackPointer--;
3310
3311
3312
                    	        }
3313
                    	        break;
3314
3315
                    	}
3316
                    	} finally { dbg.ExitSubRule(39); }
3317
3318
                    	dbg.Location(370,7);
3319
                    	PushFollow(FOLLOW_discreteActionBody_in_namedAction1345);
3320
                    	body = discreteActionBody();
3321
                    	state.followingStackPointer--;
3322
3323
                    	dbg.Location(371,3);
3324
                    	addActionBody(newAction,body);
3325
3326
                    }
3327
                    break;
3328
3329
            }
3330
        }
3331
        catch (RecognitionException re)
3332
    	{
3333
            ReportError(re);
3334
            Recover(input,re);
3335
        }
3336
        finally
3337
    	{
3338
            popResolveStack(newAction);
3339
        }
3340
        dbg.Location(372, 2);
3341
3342
        }
3343
        finally {
3344
            dbg.ExitRule(GrammarFileName, "namedAction");
3345
            DecRuleLevel();
3346
            if ( RuleLevel==0 ) {dbg.Terminate();}
3347
        }
3348
3349
        return ;
3350
    }
3351
    // $ANTLR end "namedAction"
3352
3353
3354
    // $ANTLR start "localActionVars"
3355
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:377:1: localActionVars[FunctionIdentifier newMethod] : id1= T_IDENTIFIER T_COLON t1= complexType ( T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType )* ;
3356
    public void localActionVars(FunctionIdentifier newMethod) // throws RecognitionException [1]
3357
    {
3358
        IToken id1 = null;
3359
        IToken id2 = null;
3360
        UlyssesType t1 = default(UlyssesType);
3361
3362
        UlyssesType t2 = default(UlyssesType);
3363
3364
3365
        try {
3366
        	dbg.EnterRule(GrammarFileName, "localActionVars");
3367
        	if ( RuleLevel==0 ) {dbg.Commence();}
3368
        	IncRuleLevel();
3369
        	dbg.Location(377, 1);
3370
3371
        try
3372
    	{
3373
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:378:2: (id1= T_IDENTIFIER T_COLON t1= complexType ( T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType )* )
3374
            dbg.EnterAlt(1);
3375
3376
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:379:3: id1= T_IDENTIFIER T_COLON t1= complexType ( T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType )*
3377
            {
3378
            	dbg.Location(379,6);
3379
            	id1=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_localActionVars1377);
3380
            	dbg.Location(379,20);
3381
            	Match(input,T_COLON,FOLLOW_T_COLON_in_localActionVars1379);
3382
            	dbg.Location(379,30);
3383
            	PushFollow(FOLLOW_complexType_in_localActionVars1383);
3384
            	t1 = complexType();
3385
            	state.followingStackPointer--;
3386
3387
            	dbg.Location(379,44);
3388
            	addLocalVariableToNamedAction(newMethod,id1,t1);
3389
            	dbg.Location(380,4);
3390
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:380:4: ( T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType )*
3391
            	try { dbg.EnterSubRule(41);
3392
3393
            	do
3394
            	{
3395
            	    int alt41 = 2;
3396
            	    try { dbg.EnterDecision(41);
3397
3398
            	    int LA41_0 = input.LA(1);
3399
3400
            	    if ( (LA41_0 == T_SEMICOLON) )
3401
            	    {
3402
            	        alt41 = 1;
3403
            	    }
3404
3405
3406
            	    } finally { dbg.ExitDecision(41); }
3407
3408
            	    switch (alt41)
3409
            		{
3410
            			case 1 :
3411
            			    dbg.EnterAlt(1);
3412
3413
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:380:5: T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType
3414
            			    {
3415
            			    	dbg.Location(380,5);
3416
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_localActionVars1392);
3417
            			    	dbg.Location(380,20);
3418
            			    	id2=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_localActionVars1396);
3419
            			    	dbg.Location(380,34);
3420
            			    	Match(input,T_COLON,FOLLOW_T_COLON_in_localActionVars1398);
3421
            			    	dbg.Location(380,44);
3422
            			    	PushFollow(FOLLOW_complexType_in_localActionVars1402);
3423
            			    	t2 = complexType();
3424
            			    	state.followingStackPointer--;
3425
3426
            			    	dbg.Location(381,4);
3427
            			    	addLocalVariableToNamedAction(newMethod,id2,t2);
3428
3429
            			    }
3430
            			    break;
3431
3432
            			default:
3433
            			    goto loop41;
3434
            	    }
3435
            	} while (true);
3436
3437
            	loop41:
3438
            		;	// Stops C# compiler whining that label 'loop41' has no statements
3439
            	} finally { dbg.ExitSubRule(41); }
3440
3441
3442
            }
3443
3444
        }
3445
        catch (RecognitionException re)
3446
    	{
3447
            ReportError(re);
3448
            Recover(input,re);
3449
        }
3450
        finally
3451
    	{
3452
        }
3453
        dbg.Location(382, 2);
3454
3455
        }
3456
        finally {
3457
            dbg.ExitRule(GrammarFileName, "localActionVars");
3458
            DecRuleLevel();
3459
            if ( RuleLevel==0 ) {dbg.Terminate();}
3460
        }
3461
3462
        return ;
3463
    }
3464
    // $ANTLR end "localActionVars"
3465
3466
3467
    // $ANTLR start "anonymousAction"
3468
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:386:1: anonymousAction returns [GuardedCommand result] : (a= continuousActionBody | b= discreteActionBody );
3469
    public GuardedCommand anonymousAction() // throws RecognitionException [1]
3470
    {
3471
        GuardedCommand result = default(GuardedCommand);
3472
3473
        GuardedCommand a = default(GuardedCommand);
3474
3475
        GuardedCommand b = default(GuardedCommand);
3476
3477
3478
        try {
3479
        	dbg.EnterRule(GrammarFileName, "anonymousAction");
3480
        	if ( RuleLevel==0 ) {dbg.Commence();}
3481
        	IncRuleLevel();
3482
        	dbg.Location(386, 1);
3483
3484
        try
3485
    	{
3486
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:388:2: (a= continuousActionBody | b= discreteActionBody )
3487
            int alt42 = 2;
3488
            try { dbg.EnterDecision(42);
3489
3490
            int LA42_0 = input.LA(1);
3491
3492
            if ( (LA42_0 == T_CONT) )
3493
            {
3494
                alt42 = 1;
3495
            }
3496
            else if ( (LA42_0 == T_REQUIRES) )
3497
            {
3498
                alt42 = 2;
3499
            }
3500
            else
3501
            {
3502
                NoViableAltException nvae_d42s0 =
3503
                    new NoViableAltException("", 42, 0, input);
3504
3505
                dbg.RecognitionException(nvae_d42s0);
3506
                throw nvae_d42s0;
3507
            }
3508
            } finally { dbg.ExitDecision(42); }
3509
3510
            switch (alt42)
3511
            {
3512
                case 1 :
3513
                    dbg.EnterAlt(1);
3514
3515
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:388:4: a= continuousActionBody
3516
                    {
3517
                    	dbg.Location(388,5);
3518
                    	PushFollow(FOLLOW_continuousActionBody_in_anonymousAction1432);
3519
                    	a = continuousActionBody();
3520
                    	state.followingStackPointer--;
3521
3522
                    	dbg.Location(388,27);
3523
                    	result = a;
3524
3525
                    }
3526
                    break;
3527
                case 2 :
3528
                    dbg.EnterAlt(2);
3529
3530
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:389:4: b= discreteActionBody
3531
                    {
3532
                    	dbg.Location(389,5);
3533
                    	PushFollow(FOLLOW_discreteActionBody_in_anonymousAction1441);
3534
                    	b = discreteActionBody();
3535
                    	state.followingStackPointer--;
3536
3537
                    	dbg.Location(389,25);
3538
                    	result = b;
3539
3540
                    }
3541
                    break;
3542
3543
            }
3544
        }
3545
        catch (RecognitionException re)
3546
    	{
3547
            ReportError(re);
3548
            Recover(input,re);
3549
        }
3550
        finally
3551
    	{
3552
        }
3553
        dbg.Location(390, 2);
3554
3555
        }
3556
        finally {
3557
            dbg.ExitRule(GrammarFileName, "anonymousAction");
3558
            DecRuleLevel();
3559
            if ( RuleLevel==0 ) {dbg.Terminate();}
3560
        }
3561
3562
        return result;
3563
    }
3564
    // $ANTLR end "anonymousAction"
3565
3566
3567
    // $ANTLR start "continuousActionBody"
3568
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:392:1: continuousActionBody returns [GuardedCommand result] : T_CONT T_REQUIRES expr= expression T_COLON bdy= qualConstraintList T_END ;
3569
    public GuardedCommand continuousActionBody() // throws RecognitionException [1]
3570
    {
3571
        GuardedCommand result = default(GuardedCommand);
3572
3573
        Expression expr = default(Expression);
3574
3575
        Block bdy = default(Block);
3576
3577
3578
3579
        		result = null;
3580
3581
        try {
3582
        	dbg.EnterRule(GrammarFileName, "continuousActionBody");
3583
        	if ( RuleLevel==0 ) {dbg.Commence();}
3584
        	IncRuleLevel();
3585
        	dbg.Location(392, 1);
3586
3587
        try
3588
    	{
3589
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:397:2: ( T_CONT T_REQUIRES expr= expression T_COLON bdy= qualConstraintList T_END )
3590
            dbg.EnterAlt(1);
3591
3592
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:397:4: T_CONT T_REQUIRES expr= expression T_COLON bdy= qualConstraintList T_END
3593
            {
3594
            	dbg.Location(397,4);
3595
            	Match(input,T_CONT,FOLLOW_T_CONT_in_continuousActionBody1466);
3596
            	dbg.Location(397,11);
3597
            	Match(input,T_REQUIRES,FOLLOW_T_REQUIRES_in_continuousActionBody1468);
3598
            	dbg.Location(397,26);
3599
            	PushFollow(FOLLOW_expression_in_continuousActionBody1472);
3600
            	expr = expression();
3601
            	state.followingStackPointer--;
3602
3603
            	dbg.Location(397,38);
3604
            	Match(input,T_COLON,FOLLOW_T_COLON_in_continuousActionBody1474);
3605
            	dbg.Location(398,7);
3606
            	PushFollow(FOLLOW_qualConstraintList_in_continuousActionBody1481);
3607
            	bdy = qualConstraintList();
3608
            	state.followingStackPointer--;
3609
3610
            	dbg.Location(399,3);
3611
            	Match(input,T_END,FOLLOW_T_END_in_continuousActionBody1486);
3612
            	dbg.Location(400,3);
3613
            	result = createGuardedCommandStatement(expr,bdy,true);
3614
3615
            }
3616
3617
        }
3618
        catch (RecognitionException re)
3619
    	{
3620
            ReportError(re);
3621
            Recover(input,re);
3622
        }
3623
        finally
3624
    	{
3625
        }
3626
        dbg.Location(401, 2);
3627
3628
        }
3629
        finally {
3630
            dbg.ExitRule(GrammarFileName, "continuousActionBody");
3631
            DecRuleLevel();
3632
            if ( RuleLevel==0 ) {dbg.Terminate();}
3633
        }
3634
3635
        return result;
3636
    }
3637
    // $ANTLR end "continuousActionBody"
3638
3639
3640
    // $ANTLR start "qualConstraintList"
3641
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:403:1: qualConstraintList returns [Block result] : stmt= qualConstraint ( T_COMMA ostmt= qualConstraint )* ;
3642
    public Block qualConstraintList() // throws RecognitionException [1]
3643
    {
3644
        Block result = default(Block);
3645
3646
        QualitativeConstraintStatement stmt = default(QualitativeConstraintStatement);
3647
3648
        QualitativeConstraintStatement ostmt = default(QualitativeConstraintStatement);
3649
3650
3651
3652
        		result = createSeqBlock(null);
3653
        		pushBlockToResolveStack(result);
3654
3655
        try {
3656
        	dbg.EnterRule(GrammarFileName, "qualConstraintList");
3657
        	if ( RuleLevel==0 ) {dbg.Commence();}
3658
        	IncRuleLevel();
3659
        	dbg.Location(403, 1);
3660
3661
        try
3662
    	{
3663
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:409:2: (stmt= qualConstraint ( T_COMMA ostmt= qualConstraint )* )
3664
            dbg.EnterAlt(1);
3665
3666
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:409:4: stmt= qualConstraint ( T_COMMA ostmt= qualConstraint )*
3667
            {
3668
            	dbg.Location(409,8);
3669
            	PushFollow(FOLLOW_qualConstraint_in_qualConstraintList1514);
3670
            	stmt = qualConstraint();
3671
            	state.followingStackPointer--;
3672
3673
            	dbg.Location(409,24);
3674
            	addToBlockList(result,stmt);
3675
            	dbg.Location(410,3);
3676
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:410:3: ( T_COMMA ostmt= qualConstraint )*
3677
            	try { dbg.EnterSubRule(43);
3678
3679
            	do
3680
            	{
3681
            	    int alt43 = 2;
3682
            	    try { dbg.EnterDecision(43);
3683
3684
            	    int LA43_0 = input.LA(1);
3685
3686
            	    if ( (LA43_0 == T_COMMA) )
3687
            	    {
3688
            	        alt43 = 1;
3689
            	    }
3690
3691
3692
            	    } finally { dbg.ExitDecision(43); }
3693
3694
            	    switch (alt43)
3695
            		{
3696
            			case 1 :
3697
            			    dbg.EnterAlt(1);
3698
3699
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:410:4: T_COMMA ostmt= qualConstraint
3700
            			    {
3701
            			    	dbg.Location(410,4);
3702
            			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_qualConstraintList1521);
3703
            			    	dbg.Location(410,17);
3704
            			    	PushFollow(FOLLOW_qualConstraint_in_qualConstraintList1525);
3705
            			    	ostmt = qualConstraint();
3706
            			    	state.followingStackPointer--;
3707
3708
            			    	dbg.Location(410,33);
3709
            			    	addToBlockList(result,ostmt);
3710
3711
            			    }
3712
            			    break;
3713
3714
            			default:
3715
            			    goto loop43;
3716
            	    }
3717
            	} while (true);
3718
3719
            	loop43:
3720
            		;	// Stops C# compiler whining that label 'loop43' has no statements
3721
            	} finally { dbg.ExitSubRule(43); }
3722
3723
3724
            }
3725
3726
        }
3727
        catch (RecognitionException re)
3728
    	{
3729
            ReportError(re);
3730
            Recover(input,re);
3731
        }
3732
        finally
3733
    	{
3734
            popBlockFromResolveStack(result);
3735
        }
3736
        dbg.Location(411, 2);
3737
3738
        }
3739
        finally {
3740
            dbg.ExitRule(GrammarFileName, "qualConstraintList");
3741
            DecRuleLevel();
3742
            if ( RuleLevel==0 ) {dbg.Terminate();}
3743
        }
3744
3745
        return result;
3746
    }
3747
    // $ANTLR end "qualConstraintList"
3748
3749
3750
    // $ANTLR start "qualConstraint"
3751
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:417: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 | ) ) ;
3752
    public QualitativeConstraintStatement qualConstraint() // throws RecognitionException [1]
3753
    {
3754
        QualitativeConstraintStatement result = default(QualitativeConstraintStatement);
3755
3756
        IToken id1 = null;
3757
        IToken derivid = null;
3758
        IToken id2 = null;
3759
        IToken op = null;
3760
        IToken id3 = null;
3761
3762
        try {
3763
        	dbg.EnterRule(GrammarFileName, "qualConstraint");
3764
        	if ( RuleLevel==0 ) {dbg.Commence();}
3765
        	IncRuleLevel();
3766
        	dbg.Location(417, 1);
3767
3768
        try
3769
    	{
3770
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:419: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 | ) ) )
3771
            dbg.EnterAlt(1);
3772
3773
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:419: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 | ) )
3774
            {
3775
            	dbg.Location(419,7);
3776
            	id1=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_qualConstraint1556);
3777
            	dbg.Location(419,21);
3778
            	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_qualConstraint1558);
3779
            	dbg.Location(420,3);
3780
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:420:3: ( T_DERIV derivid= T_IDENTIFIER | id2= T_IDENTIFIER ( (op= T_SUM | op= T_DIFF | op= T_PROD ) id3= T_IDENTIFIER | ) )
3781
            	int alt46 = 2;
3782
            	try { dbg.EnterSubRule(46);
3783
            	try { dbg.EnterDecision(46);
3784
3785
            	int LA46_0 = input.LA(1);
3786
3787
            	if ( (LA46_0 == T_DERIV) )
3788
            	{
3789
            	    alt46 = 1;
3790
            	}
3791
            	else if ( (LA46_0 == T_IDENTIFIER) )
3792
            	{
3793
            	    alt46 = 2;
3794
            	}
3795
            	else
3796
            	{
3797
            	    NoViableAltException nvae_d46s0 =
3798
            	        new NoViableAltException("", 46, 0, input);
3799
3800
            	    dbg.RecognitionException(nvae_d46s0);
3801
            	    throw nvae_d46s0;
3802
            	}
3803
            	} finally { dbg.ExitDecision(46); }
3804
3805
            	switch (alt46)
3806
            	{
3807
            	    case 1 :
3808
            	        dbg.EnterAlt(1);
3809
3810
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:420:5: T_DERIV derivid= T_IDENTIFIER
3811
            	        {
3812
            	        	dbg.Location(420,5);
3813
            	        	Match(input,T_DERIV,FOLLOW_T_DERIV_in_qualConstraint1565);
3814
            	        	dbg.Location(420,20);
3815
            	        	derivid=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_qualConstraint1569);
3816
            	        	dbg.Location(421,4);
3817
            	        	result = createQualDerivConstraintStatement(id1,derivid);
3818
3819
            	        }
3820
            	        break;
3821
            	    case 2 :
3822
            	        dbg.EnterAlt(2);
3823
3824
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:424:11: id2= T_IDENTIFIER ( (op= T_SUM | op= T_DIFF | op= T_PROD ) id3= T_IDENTIFIER | )
3825
            	        {
3826
            	        	dbg.Location(424,14);
3827
            	        	id2=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_qualConstraint1604);
3828
            	        	dbg.Location(425,11);
3829
            	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:425:11: ( (op= T_SUM | op= T_DIFF | op= T_PROD ) id3= T_IDENTIFIER | )
3830
            	        	int alt45 = 2;
3831
            	        	try { dbg.EnterSubRule(45);
3832
            	        	try { dbg.EnterDecision(45);
3833
3834
            	        	int LA45_0 = input.LA(1);
3835
3836
            	        	if ( ((LA45_0 >= T_SUM && LA45_0 <= T_PROD)) )
3837
            	        	{
3838
            	        	    alt45 = 1;
3839
            	        	}
3840
            	        	else if ( (LA45_0 == T_COMMA || LA45_0 == T_END) )
3841
            	        	{
3842
            	        	    alt45 = 2;
3843
            	        	}
3844
            	        	else
3845
            	        	{
3846
            	        	    NoViableAltException nvae_d45s0 =
3847
            	        	        new NoViableAltException("", 45, 0, input);
3848
3849
            	        	    dbg.RecognitionException(nvae_d45s0);
3850
            	        	    throw nvae_d45s0;
3851
            	        	}
3852
            	        	} finally { dbg.ExitDecision(45); }
3853
3854
            	        	switch (alt45)
3855
            	        	{
3856
            	        	    case 1 :
3857
            	        	        dbg.EnterAlt(1);
3858
3859
            	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:426:12: (op= T_SUM | op= T_DIFF | op= T_PROD ) id3= T_IDENTIFIER
3860
            	        	        {
3861
            	        	        	dbg.Location(426,12);
3862
            	        	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:426:12: (op= T_SUM | op= T_DIFF | op= T_PROD )
3863
            	        	        	int alt44 = 3;
3864
            	        	        	try { dbg.EnterSubRule(44);
3865
            	        	        	try { dbg.EnterDecision(44);
3866
3867
            	        	        	switch ( input.LA(1) )
3868
            	        	        	{
3869
            	        	        	case T_SUM:
3870
            	        	        		{
3871
            	        	        	    alt44 = 1;
3872
            	        	        	    }
3873
            	        	        	    break;
3874
            	        	        	case T_DIFF:
3875
            	        	        		{
3876
            	        	        	    alt44 = 2;
3877
            	        	        	    }
3878
            	        	        	    break;
3879
            	        	        	case T_PROD:
3880
            	        	        		{
3881
            	        	        	    alt44 = 3;
3882
            	        	        	    }
3883
            	        	        	    break;
3884
            	        	        		default:
3885
            	        	        		    NoViableAltException nvae_d44s0 =
3886
            	        	        		        new NoViableAltException("", 44, 0, input);
3887
3888
            	        	        		    dbg.RecognitionException(nvae_d44s0);
3889
            	        	        		    throw nvae_d44s0;
3890
            	        	        	}
3891
3892
            	        	        	} finally { dbg.ExitDecision(44); }
3893
3894
            	        	        	switch (alt44)
3895
            	        	        	{
3896
            	        	        	    case 1 :
3897
            	        	        	        dbg.EnterAlt(1);
3898
3899
            	        	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:426:14: op= T_SUM
3900
            	        	        	        {
3901
            	        	        	        	dbg.Location(426,16);
3902
            	        	        	        	op=(IToken)Match(input,T_SUM,FOLLOW_T_SUM_in_qualConstraint1635);
3903
3904
            	        	        	        }
3905
            	        	        	        break;
3906
            	        	        	    case 2 :
3907
            	        	        	        dbg.EnterAlt(2);
3908
3909
            	        	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:427:14: op= T_DIFF
3910
            	        	        	        {
3911
            	        	        	        	dbg.Location(427,16);
3912
            	        	        	        	op=(IToken)Match(input,T_DIFF,FOLLOW_T_DIFF_in_qualConstraint1652);
3913
3914
            	        	        	        }
3915
            	        	        	        break;
3916
            	        	        	    case 3 :
3917
            	        	        	        dbg.EnterAlt(3);
3918
3919
            	        	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:428:14: op= T_PROD
3920
            	        	        	        {
3921
            	        	        	        	dbg.Location(428,16);
3922
            	        	        	        	op=(IToken)Match(input,T_PROD,FOLLOW_T_PROD_in_qualConstraint1669);
3923
3924
            	        	        	        }
3925
            	        	        	        break;
3926
3927
            	        	        	}
3928
            	        	        	} finally { dbg.ExitSubRule(44); }
3929
3930
            	        	        	dbg.Location(430,15);
3931
            	        	        	id3=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_qualConstraint1698);
3932
            	        	        	dbg.Location(431,12);
3933
            	        	        	result = createQualArithConstraintStatement(id1,id2,id3,op);
3934
3935
            	        	        }
3936
            	        	        break;
3937
            	        	    case 2 :
3938
            	        	        dbg.EnterAlt(2);
3939
3940
            	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:433:12:
3941
            	        	        {
3942
            	        	        	dbg.Location(433,12);
3943
            	        	        	result = createQualEqualConstraintStatement(id1,id2);
3944
3945
            	        	        }
3946
            	        	        break;
3947
3948
            	        	}
3949
            	        	} finally { dbg.ExitSubRule(45); }
3950
3951
3952
            	        }
3953
            	        break;
3954
3955
            	}
3956
            	} finally { dbg.ExitSubRule(46); }
3957
3958
3959
            }
3960
3961
        }
3962
        catch (RecognitionException re)
3963
    	{
3964
            ReportError(re);
3965
            Recover(input,re);
3966
        }
3967
        finally
3968
    	{
3969
        }
3970
        dbg.Location(436, 2);
3971
3972
        }
3973
        finally {
3974
            dbg.ExitRule(GrammarFileName, "qualConstraint");
3975
            DecRuleLevel();
3976
            if ( RuleLevel==0 ) {dbg.Terminate();}
3977
        }
3978
3979
        return result;
3980
    }
3981
    // $ANTLR end "qualConstraint"
3982
3983
3984
    // $ANTLR start "discreteActionBody"
3985
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:441:1: discreteActionBody returns [GuardedCommand result] : T_REQUIRES expr= expression T_COLON bdy= actionBody[null] T_END ;
3986
    public GuardedCommand discreteActionBody() // throws RecognitionException [1]
3987
    {
3988
        GuardedCommand result = default(GuardedCommand);
3989
3990
        Expression expr = default(Expression);
3991
3992
        Block bdy = default(Block);
3993
3994
3995
3996
        		result = null;
3997
3998
        try {
3999
        	dbg.EnterRule(GrammarFileName, "discreteActionBody");
4000
        	if ( RuleLevel==0 ) {dbg.Commence();}
4001
        	IncRuleLevel();
4002
        	dbg.Location(441, 1);
4003
4004
        try
4005
    	{
4006
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:446:2: ( T_REQUIRES expr= expression T_COLON bdy= actionBody[null] T_END )
4007
            dbg.EnterAlt(1);
4008
4009
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:447:3: T_REQUIRES expr= expression T_COLON bdy= actionBody[null] T_END
4010
            {
4011
            	dbg.Location(447,3);
4012
            	Match(input,T_REQUIRES,FOLLOW_T_REQUIRES_in_discreteActionBody1788);
4013
            	dbg.Location(447,18);
4014
            	PushFollow(FOLLOW_expression_in_discreteActionBody1792);
4015
            	expr = expression();
4016
            	state.followingStackPointer--;
4017
4018
            	dbg.Location(447,30);
4019
            	Match(input,T_COLON,FOLLOW_T_COLON_in_discreteActionBody1794);
4020
            	dbg.Location(448,7);
4021
            	PushFollow(FOLLOW_actionBody_in_discreteActionBody1801);
4022
            	bdy = actionBody(null);
4023
            	state.followingStackPointer--;
4024
4025
            	dbg.Location(449,3);
4026
            	Match(input,T_END,FOLLOW_T_END_in_discreteActionBody1806);
4027
            	dbg.Location(450,3);
4028
            	result = createGuardedCommandStatement(expr,bdy);
4029
4030
            }
4031
4032
        }
4033
        catch (RecognitionException re)
4034
    	{
4035
            ReportError(re);
4036
            Recover(input,re);
4037
        }
4038
        finally
4039
    	{
4040
        }
4041
        dbg.Location(451, 2);
4042
4043
        }
4044
        finally {
4045
            dbg.ExitRule(GrammarFileName, "discreteActionBody");
4046
            DecRuleLevel();
4047
            if ( RuleLevel==0 ) {dbg.Terminate();}
4048
        }
4049
4050
        return result;
4051
    }
4052
    // $ANTLR end "discreteActionBody"
4053
4054
4055
    // $ANTLR start "actionBlock"
4056
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:458:1: actionBlock[Block top] returns [Block prioList] : actionBlockParallel[prioList] ( T_PRIO actionBlockParallel[prioList] )* ;
4057
    public Block actionBlock(Block top) // throws RecognitionException [1]
4058
    {
4059
        Block prioList = default(Block);
4060
4061
        try {
4062
        	dbg.EnterRule(GrammarFileName, "actionBlock");
4063
        	if ( RuleLevel==0 ) {dbg.Commence();}
4064
        	IncRuleLevel();
4065
        	dbg.Location(458, 1);
4066
4067
        try
4068
    	{
4069
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:460:2: ( actionBlockParallel[prioList] ( T_PRIO actionBlockParallel[prioList] )* )
4070
            dbg.EnterAlt(1);
4071
4072
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:460:6: actionBlockParallel[prioList] ( T_PRIO actionBlockParallel[prioList] )*
4073
            {
4074
            	dbg.Location(460,6);
4075
            	prioList = createPrioBlock(top);
4076
            	dbg.Location(461,4);
4077
            	PushFollow(FOLLOW_actionBlockParallel_in_actionBlock1842);
4078
            	actionBlockParallel(prioList);
4079
            	state.followingStackPointer--;
4080
4081
            	dbg.Location(461,34);
4082
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:461:34: ( T_PRIO actionBlockParallel[prioList] )*
4083
            	try { dbg.EnterSubRule(47);
4084
4085
            	do
4086
            	{
4087
            	    int alt47 = 2;
4088
            	    try { dbg.EnterDecision(47);
4089
4090
            	    int LA47_0 = input.LA(1);
4091
4092
            	    if ( (LA47_0 == T_PRIO) )
4093
            	    {
4094
            	        alt47 = 1;
4095
            	    }
4096
4097
4098
            	    } finally { dbg.ExitDecision(47); }
4099
4100
            	    switch (alt47)
4101
            		{
4102
            			case 1 :
4103
            			    dbg.EnterAlt(1);
4104
4105
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:461:35: T_PRIO actionBlockParallel[prioList]
4106
            			    {
4107
            			    	dbg.Location(461,35);
4108
            			    	Match(input,T_PRIO,FOLLOW_T_PRIO_in_actionBlock1846);
4109
            			    	dbg.Location(461,42);
4110
            			    	PushFollow(FOLLOW_actionBlockParallel_in_actionBlock1848);
4111
            			    	actionBlockParallel(prioList);
4112
            			    	state.followingStackPointer--;
4113
4114
4115
            			    }
4116
            			    break;
4117
4118
            			default:
4119
            			    goto loop47;
4120
            	    }
4121
            	} while (true);
4122
4123
            	loop47:
4124
            		;	// Stops C# compiler whining that label 'loop47' has no statements
4125
            	} finally { dbg.ExitSubRule(47); }
4126
4127
4128
            }
4129
4130
        }
4131
        catch (RecognitionException re)
4132
    	{
4133
            ReportError(re);
4134
            Recover(input,re);
4135
        }
4136
        finally
4137
    	{
4138
        }
4139
        dbg.Location(462, 2);
4140
4141
        }
4142
        finally {
4143
            dbg.ExitRule(GrammarFileName, "actionBlock");
4144
            DecRuleLevel();
4145
            if ( RuleLevel==0 ) {dbg.Terminate();}
4146
        }
4147
4148
        return prioList;
4149
    }
4150
    // $ANTLR end "actionBlock"
4151
4152
4153
    // $ANTLR start "actionBlockParallel"
4154
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:464:1: actionBlockParallel[Block top] : actionBlockSequential[parList] ( T_NONDET actionBlockSequential[parList] )* ;
4155
    public void actionBlockParallel(Block top) // throws RecognitionException [1]
4156
    {
4157
        try {
4158
        	dbg.EnterRule(GrammarFileName, "actionBlockParallel");
4159
        	if ( RuleLevel==0 ) {dbg.Commence();}
4160
        	IncRuleLevel();
4161
        	dbg.Location(464, 1);
4162
4163
        try
4164
    	{
4165
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:465:2: ( actionBlockSequential[parList] ( T_NONDET actionBlockSequential[parList] )* )
4166
            dbg.EnterAlt(1);
4167
4168
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:465:6: actionBlockSequential[parList] ( T_NONDET actionBlockSequential[parList] )*
4169
            {
4170
            	dbg.Location(465,6);
4171
            	Block parList = createNondetBlock(top);
4172
            	dbg.Location(466,3);
4173
            	PushFollow(FOLLOW_actionBlockSequential_in_actionBlockParallel1873);
4174
            	actionBlockSequential(parList);
4175
            	state.followingStackPointer--;
4176
4177
            	dbg.Location(466,34);
4178
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:466:34: ( T_NONDET actionBlockSequential[parList] )*
4179
            	try { dbg.EnterSubRule(48);
4180
4181
            	do
4182
            	{
4183
            	    int alt48 = 2;
4184
            	    try { dbg.EnterDecision(48);
4185
4186
            	    int LA48_0 = input.LA(1);
4187
4188
            	    if ( (LA48_0 == T_NONDET) )
4189
            	    {
4190
            	        alt48 = 1;
4191
            	    }
4192
4193
4194
            	    } finally { dbg.ExitDecision(48); }
4195
4196
            	    switch (alt48)
4197
            		{
4198
            			case 1 :
4199
            			    dbg.EnterAlt(1);
4200
4201
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:466:35: T_NONDET actionBlockSequential[parList]
4202
            			    {
4203
            			    	dbg.Location(466,35);
4204
            			    	Match(input,T_NONDET,FOLLOW_T_NONDET_in_actionBlockParallel1877);
4205
            			    	dbg.Location(466,44);
4206
            			    	PushFollow(FOLLOW_actionBlockSequential_in_actionBlockParallel1879);
4207
            			    	actionBlockSequential(parList);
4208
            			    	state.followingStackPointer--;
4209
4210
4211
            			    }
4212
            			    break;
4213
4214
            			default:
4215
            			    goto loop48;
4216
            	    }
4217
            	} while (true);
4218
4219
            	loop48:
4220
            		;	// Stops C# compiler whining that label 'loop48' has no statements
4221
            	} finally { dbg.ExitSubRule(48); }
4222
4223
4224
            }
4225
4226
        }
4227
        catch (RecognitionException re)
4228
    	{
4229
            ReportError(re);
4230
            Recover(input,re);
4231
        }
4232
        finally
4233
    	{
4234
        }
4235
        dbg.Location(467, 2);
4236
4237
        }
4238
        finally {
4239
            dbg.ExitRule(GrammarFileName, "actionBlockParallel");
4240
            DecRuleLevel();
4241
            if ( RuleLevel==0 ) {dbg.Terminate();}
4242
        }
4243
4244
        return ;
4245
    }
4246
    // $ANTLR end "actionBlockParallel"
4247
4248
4249
    // $ANTLR start "actionBlockSequential"
4250
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:470:1: actionBlockSequential[Block top] : ( T_VAR syms= blockvarlist[seqList] ( '&' sexpr= expression )? T_COLON )? actionBlockParen[seqList] ( T_SEMICOLON actionBlockParen[seqList] )* ;
4251
    public void actionBlockSequential(Block top) // throws RecognitionException [1]
4252
    {
4253
        Expression sexpr = default(Expression);
4254
4255
4256
4257
        			Block seqList = createSeqBlock(top);
4258
        			pushBlockToResolveStack(seqList);
4259
4260
        try {
4261
        	dbg.EnterRule(GrammarFileName, "actionBlockSequential");
4262
        	if ( RuleLevel==0 ) {dbg.Commence();}
4263
        	IncRuleLevel();
4264
        	dbg.Location(470, 1);
4265
4266
        try
4267
    	{
4268
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:475:2: ( ( T_VAR syms= blockvarlist[seqList] ( '&' sexpr= expression )? T_COLON )? actionBlockParen[seqList] ( T_SEMICOLON actionBlockParen[seqList] )* )
4269
            dbg.EnterAlt(1);
4270
4271
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:475:5: ( T_VAR syms= blockvarlist[seqList] ( '&' sexpr= expression )? T_COLON )? actionBlockParen[seqList] ( T_SEMICOLON actionBlockParen[seqList] )*
4272
            {
4273
            	dbg.Location(475,5);
4274
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:475:5: ( T_VAR syms= blockvarlist[seqList] ( '&' sexpr= expression )? T_COLON )?
4275
            	int alt50 = 2;
4276
            	try { dbg.EnterSubRule(50);
4277
            	try { dbg.EnterDecision(50);
4278
4279
            	int LA50_0 = input.LA(1);
4280
4281
            	if ( (LA50_0 == T_VAR) )
4282
            	{
4283
            	    alt50 = 1;
4284
            	}
4285
            	} finally { dbg.ExitDecision(50); }
4286
4287
            	switch (alt50)
4288
            	{
4289
            	    case 1 :
4290
            	        dbg.EnterAlt(1);
4291
4292
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:475:6: T_VAR syms= blockvarlist[seqList] ( '&' sexpr= expression )? T_COLON
4293
            	        {
4294
            	        	dbg.Location(475,6);
4295
            	        	Match(input,T_VAR,FOLLOW_T_VAR_in_actionBlockSequential1908);
4296
            	        	dbg.Location(475,16);
4297
            	        	PushFollow(FOLLOW_blockvarlist_in_actionBlockSequential1912);
4298
            	        	blockvarlist(seqList);
4299
            	        	state.followingStackPointer--;
4300
4301
            	        	dbg.Location(475,39);
4302
            	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:475:39: ( '&' sexpr= expression )?
4303
            	        	int alt49 = 2;
4304
            	        	try { dbg.EnterSubRule(49);
4305
            	        	try { dbg.EnterDecision(49);
4306
4307
            	        	int LA49_0 = input.LA(1);
4308
4309
            	        	if ( (LA49_0 == 120) )
4310
            	        	{
4311
            	        	    alt49 = 1;
4312
            	        	}
4313
            	        	} finally { dbg.ExitDecision(49); }
4314
4315
            	        	switch (alt49)
4316
            	        	{
4317
            	        	    case 1 :
4318
            	        	        dbg.EnterAlt(1);
4319
4320
            	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:475:40: '&' sexpr= expression
4321
            	        	        {
4322
            	        	        	dbg.Location(475,40);
4323
            	        	        	Match(input,120,FOLLOW_120_in_actionBlockSequential1916);
4324
            	        	        	dbg.Location(475,49);
4325
            	        	        	PushFollow(FOLLOW_expression_in_actionBlockSequential1920);
4326
            	        	        	sexpr = expression();
4327
            	        	        	state.followingStackPointer--;
4328
4329
            	        	        	dbg.Location(475,61);
4330
            	        	        	addSeqBlockExpression(seqList,sexpr);
4331
4332
            	        	        }
4333
            	        	        break;
4334
4335
            	        	}
4336
            	        	} finally { dbg.ExitSubRule(49); }
4337
4338
            	        	dbg.Location(475,104);
4339
            	        	Match(input,T_COLON,FOLLOW_T_COLON_in_actionBlockSequential1927);
4340
4341
            	        }
4342
            	        break;
4343
4344
            	}
4345
            	} finally { dbg.ExitSubRule(50); }
4346
4347
            	dbg.Location(476,4);
4348
            	PushFollow(FOLLOW_actionBlockParen_in_actionBlockSequential1936);
4349
            	actionBlockParen(seqList);
4350
            	state.followingStackPointer--;
4351
4352
            	dbg.Location(476,30);
4353
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:476:30: ( T_SEMICOLON actionBlockParen[seqList] )*
4354
            	try { dbg.EnterSubRule(51);
4355
4356
            	do
4357
            	{
4358
            	    int alt51 = 2;
4359
            	    try { dbg.EnterDecision(51);
4360
4361
            	    int LA51_0 = input.LA(1);
4362
4363
            	    if ( (LA51_0 == T_SEMICOLON) )
4364
            	    {
4365
            	        alt51 = 1;
4366
            	    }
4367
4368
4369
            	    } finally { dbg.ExitDecision(51); }
4370
4371
            	    switch (alt51)
4372
            		{
4373
            			case 1 :
4374
            			    dbg.EnterAlt(1);
4375
4376
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:476:31: T_SEMICOLON actionBlockParen[seqList]
4377
            			    {
4378
            			    	dbg.Location(476,31);
4379
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_actionBlockSequential1940);
4380
            			    	dbg.Location(476,43);
4381
            			    	PushFollow(FOLLOW_actionBlockParen_in_actionBlockSequential1942);
4382
            			    	actionBlockParen(seqList);
4383
            			    	state.followingStackPointer--;
4384
4385
4386
            			    }
4387
            			    break;
4388
4389
            			default:
4390
            			    goto loop51;
4391
            	    }
4392
            	} while (true);
4393
4394
            	loop51:
4395
            		;	// Stops C# compiler whining that label 'loop51' has no statements
4396
            	} finally { dbg.ExitSubRule(51); }
4397
4398
4399
            }
4400
4401
        }
4402
        catch (RecognitionException re)
4403
    	{
4404
            ReportError(re);
4405
            Recover(input,re);
4406
        }
4407
        finally
4408
    	{
4409
            popBlockFromResolveStack(seqList);
4410
        }
4411
        dbg.Location(477, 2);
4412
4413
        }
4414
        finally {
4415
            dbg.ExitRule(GrammarFileName, "actionBlockSequential");
4416
            DecRuleLevel();
4417
            if ( RuleLevel==0 ) {dbg.Terminate();}
4418
        }
4419
4420
        return ;
4421
    }
4422
    // $ANTLR end "actionBlockSequential"
4423
4424
4425
    // $ANTLR start "actionBlockParen"
4426
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:481:1: actionBlockParen[Block top] : ( T_LPAREN actionBlock[top] T_RPAREN | anonymousOrNamedAction[top] );
4427
    public void actionBlockParen(Block top) // throws RecognitionException [1]
4428
    {
4429
        try {
4430
        	dbg.EnterRule(GrammarFileName, "actionBlockParen");
4431
        	if ( RuleLevel==0 ) {dbg.Commence();}
4432
        	IncRuleLevel();
4433
        	dbg.Location(481, 1);
4434
4435
        try
4436
    	{
4437
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:482:2: ( T_LPAREN actionBlock[top] T_RPAREN | anonymousOrNamedAction[top] )
4438
            int alt52 = 2;
4439
            try { dbg.EnterDecision(52);
4440
4441
            int LA52_0 = input.LA(1);
4442
4443
            if ( (LA52_0 == T_LPAREN) )
4444
            {
4445
                alt52 = 1;
4446
            }
4447
            else if ( (LA52_0 == T_IDENTIFIER || (LA52_0 >= T_CONT && LA52_0 <= T_REQUIRES) || LA52_0 == T_SKIP) )
4448
            {
4449
                alt52 = 2;
4450
            }
4451
            else
4452
            {
4453
                NoViableAltException nvae_d52s0 =
4454
                    new NoViableAltException("", 52, 0, input);
4455
4456
                dbg.RecognitionException(nvae_d52s0);
4457
                throw nvae_d52s0;
4458
            }
4459
            } finally { dbg.ExitDecision(52); }
4460
4461
            switch (alt52)
4462
            {
4463
                case 1 :
4464
                    dbg.EnterAlt(1);
4465
4466
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:482:4: T_LPAREN actionBlock[top] T_RPAREN
4467
                    {
4468
                    	dbg.Location(482,4);
4469
                    	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_actionBlockParen1966);
4470
                    	dbg.Location(482,13);
4471
                    	PushFollow(FOLLOW_actionBlock_in_actionBlockParen1968);
4472
                    	actionBlock(top);
4473
                    	state.followingStackPointer--;
4474
4475
                    	dbg.Location(482,30);
4476
                    	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_actionBlockParen1971);
4477
4478
                    }
4479
                    break;
4480
                case 2 :
4481
                    dbg.EnterAlt(2);
4482
4483
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:483:4: anonymousOrNamedAction[top]
4484
                    {
4485
                    	dbg.Location(483,4);
4486
                    	PushFollow(FOLLOW_anonymousOrNamedAction_in_actionBlockParen1976);
4487
                    	anonymousOrNamedAction(top);
4488
                    	state.followingStackPointer--;
4489
4490
4491
                    }
4492
                    break;
4493
4494
            }
4495
        }
4496
        catch (RecognitionException re)
4497
    	{
4498
            ReportError(re);
4499
            Recover(input,re);
4500
        }
4501
        finally
4502
    	{
4503
        }
4504
        dbg.Location(484, 2);
4505
4506
        }
4507
        finally {
4508
            dbg.ExitRule(GrammarFileName, "actionBlockParen");
4509
            DecRuleLevel();
4510
            if ( RuleLevel==0 ) {dbg.Terminate();}
4511
        }
4512
4513
        return ;
4514
    }
4515
    // $ANTLR end "actionBlockParen"
4516
4517
4518
    // $ANTLR start "anonymousOrNamedAction"
4519
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:486: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 );
4520
    public void anonymousOrNamedAction(Block top) // throws RecognitionException [1]
4521
    {
4522
        IToken aname = null;
4523
        IToken amap = null;
4524
        GuardedCommand gcmd = default(GuardedCommand);
4525
4526
        System.Collections.Generic.List<Expression> m_params = default(System.Collections.Generic.List<Expression>);
4527
4528
        Expression amapexpr = default(Expression);
4529
4530
4531
        try {
4532
        	dbg.EnterRule(GrammarFileName, "anonymousOrNamedAction");
4533
        	if ( RuleLevel==0 ) {dbg.Commence();}
4534
        	IncRuleLevel();
4535
        	dbg.Location(486, 1);
4536
4537
        try
4538
    	{
4539
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:487:2: (gcmd= anonymousAction | aname= T_IDENTIFIER ( T_LPAREN m_params= methodCallParams T_RPAREN )? (amap= ( T_FOLDLR | T_FOLDRL ) '(' amapexpr= expression ')' )? | T_SKIP )
4540
            int alt55 = 3;
4541
            try { dbg.EnterDecision(55);
4542
4543
            switch ( input.LA(1) )
4544
            {
4545
            case T_CONT:
4546
            case T_REQUIRES:
4547
            	{
4548
                alt55 = 1;
4549
                }
4550
                break;
4551
            case T_IDENTIFIER:
4552
            	{
4553
                alt55 = 2;
4554
                }
4555
                break;
4556
            case T_SKIP:
4557
            	{
4558
                alt55 = 3;
4559
                }
4560
                break;
4561
            	default:
4562
            	    NoViableAltException nvae_d55s0 =
4563
            	        new NoViableAltException("", 55, 0, input);
4564
4565
            	    dbg.RecognitionException(nvae_d55s0);
4566
            	    throw nvae_d55s0;
4567
            }
4568
4569
            } finally { dbg.ExitDecision(55); }
4570
4571
            switch (alt55)
4572
            {
4573
                case 1 :
4574
                    dbg.EnterAlt(1);
4575
4576
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:487:4: gcmd= anonymousAction
4577
                    {
4578
                    	dbg.Location(487,8);
4579
                    	PushFollow(FOLLOW_anonymousAction_in_anonymousOrNamedAction1993);
4580
                    	gcmd = anonymousAction();
4581
                    	state.followingStackPointer--;
4582
4583
                    	dbg.Location(487,25);
4584
                    	addToBlockList(top,gcmd);
4585
4586
                    }
4587
                    break;
4588
                case 2 :
4589
                    dbg.EnterAlt(2);
4590
4591
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:488:4: aname= T_IDENTIFIER ( T_LPAREN m_params= methodCallParams T_RPAREN )? (amap= ( T_FOLDLR | T_FOLDRL ) '(' amapexpr= expression ')' )?
4592
                    {
4593
                    	dbg.Location(488,9);
4594
                    	aname=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_anonymousOrNamedAction2002);
4595
                    	dbg.Location(489,11);
4596
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:489:11: ( T_LPAREN m_params= methodCallParams T_RPAREN )?
4597
                    	int alt53 = 2;
4598
                    	try { dbg.EnterSubRule(53);
4599
                    	try { dbg.EnterDecision(53);
4600
4601
                    	int LA53_0 = input.LA(1);
4602
4603
                    	if ( (LA53_0 == T_LPAREN) )
4604
                    	{
4605
                    	    alt53 = 1;
4606
                    	}
4607
                    	} finally { dbg.ExitDecision(53); }
4608
4609
                    	switch (alt53)
4610
                    	{
4611
                    	    case 1 :
4612
                    	        dbg.EnterAlt(1);
4613
4614
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:489:12: T_LPAREN m_params= methodCallParams T_RPAREN
4615
                    	        {
4616
                    	        	dbg.Location(489,12);
4617
                    	        	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_anonymousOrNamedAction2016);
4618
                    	        	dbg.Location(489,30);
4619
                    	        	PushFollow(FOLLOW_methodCallParams_in_anonymousOrNamedAction2021);
4620
                    	        	m_params = methodCallParams();
4621
                    	        	state.followingStackPointer--;
4622
4623
                    	        	dbg.Location(489,48);
4624
                    	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_anonymousOrNamedAction2023);
4625
4626
                    	        }
4627
                    	        break;
4628
4629
                    	}
4630
                    	} finally { dbg.ExitSubRule(53); }
4631
4632
                    	dbg.Location(490,11);
4633
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:490:11: (amap= ( T_FOLDLR | T_FOLDRL ) '(' amapexpr= expression ')' )?
4634
                    	int alt54 = 2;
4635
                    	try { dbg.EnterSubRule(54);
4636
                    	try { dbg.EnterDecision(54);
4637
4638
                    	int LA54_0 = input.LA(1);
4639
4640
                    	if ( ((LA54_0 >= T_FOLDLR && LA54_0 <= T_FOLDRL)) )
4641
                    	{
4642
                    	    alt54 = 1;
4643
                    	}
4644
                    	} finally { dbg.ExitDecision(54); }
4645
4646
                    	switch (alt54)
4647
                    	{
4648
                    	    case 1 :
4649
                    	        dbg.EnterAlt(1);
4650
4651
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:490:12: amap= ( T_FOLDLR | T_FOLDRL ) '(' amapexpr= expression ')'
4652
                    	        {
4653
                    	        	dbg.Location(490,16);
4654
                    	        	amap = (IToken)input.LT(1);
4655
                    	        	if ( (input.LA(1) >= T_FOLDLR && input.LA(1) <= T_FOLDRL) )
4656
                    	        	{
4657
                    	        	    input.Consume();
4658
                    	        	    state.errorRecovery = false;
4659
                    	        	}
4660
                    	        	else
4661
                    	        	{
4662
                    	        	    MismatchedSetException mse = new MismatchedSetException(null,input);
4663
                    	        	    dbg.RecognitionException(mse);
4664
                    	        	    throw mse;
4665
                    	        	}
4666
4667
                    	        	dbg.Location(490,37);
4668
                    	        	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_anonymousOrNamedAction2047);
4669
                    	        	dbg.Location(490,49);
4670
                    	        	PushFollow(FOLLOW_expression_in_anonymousOrNamedAction2051);
4671
                    	        	amapexpr = expression();
4672
                    	        	state.followingStackPointer--;
4673
4674
                    	        	dbg.Location(490,61);
4675
                    	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_anonymousOrNamedAction2053);
4676
4677
                    	        }
4678
                    	        break;
4679
4680
                    	}
4681
                    	} finally { dbg.ExitSubRule(54); }
4682
4683
                    	dbg.Location(491,3);
4684
                    	addNamedActionCallToBlockList(top,aname,m_params,amap,amapexpr);
4685
4686
                    }
4687
                    break;
4688
                case 3 :
4689
                    dbg.EnterAlt(3);
4690
4691
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:492:4: T_SKIP
4692
                    {
4693
                    	dbg.Location(492,4);
4694
                    	Match(input,T_SKIP,FOLLOW_T_SKIP_in_anonymousOrNamedAction2064);
4695
                    	dbg.Location(492,11);
4696
                    	addSkipStatementToBlockList(top);
4697
4698
                    }
4699
                    break;
4700
4701
            }
4702
        }
4703
        catch (RecognitionException re)
4704
    	{
4705
            ReportError(re);
4706
            Recover(input,re);
4707
        }
4708
        finally
4709
    	{
4710
        }
4711
        dbg.Location(493, 2);
4712
4713
        }
4714
        finally {
4715
            dbg.ExitRule(GrammarFileName, "anonymousOrNamedAction");
4716
            DecRuleLevel();
4717
            if ( RuleLevel==0 ) {dbg.Terminate();}
4718
        }
4719
4720
        return ;
4721
    }
4722
    // $ANTLR end "anonymousOrNamedAction"
4723
4724
4725
    // $ANTLR start "blockvarlist"
4726
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:496:1: blockvarlist[Block seqList] : blockvar[seqList] ( T_SEMICOLON blockvar[seqList] )* ;
4727
    public void blockvarlist(Block seqList) // throws RecognitionException [1]
4728
    {
4729
        try {
4730
        	dbg.EnterRule(GrammarFileName, "blockvarlist");
4731
        	if ( RuleLevel==0 ) {dbg.Commence();}
4732
        	IncRuleLevel();
4733
        	dbg.Location(496, 1);
4734
4735
        try
4736
    	{
4737
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:497:2: ( blockvar[seqList] ( T_SEMICOLON blockvar[seqList] )* )
4738
            dbg.EnterAlt(1);
4739
4740
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:497:4: blockvar[seqList] ( T_SEMICOLON blockvar[seqList] )*
4741
            {
4742
            	dbg.Location(497,4);
4743
            	PushFollow(FOLLOW_blockvar_in_blockvarlist2080);
4744
            	blockvar(seqList);
4745
            	state.followingStackPointer--;
4746
4747
            	dbg.Location(497,23);
4748
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:497:23: ( T_SEMICOLON blockvar[seqList] )*
4749
            	try { dbg.EnterSubRule(56);
4750
4751
            	do
4752
            	{
4753
            	    int alt56 = 2;
4754
            	    try { dbg.EnterDecision(56);
4755
4756
            	    int LA56_0 = input.LA(1);
4757
4758
            	    if ( (LA56_0 == T_SEMICOLON) )
4759
            	    {
4760
            	        alt56 = 1;
4761
            	    }
4762
4763
4764
            	    } finally { dbg.ExitDecision(56); }
4765
4766
            	    switch (alt56)
4767
            		{
4768
            			case 1 :
4769
            			    dbg.EnterAlt(1);
4770
4771
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:497:24: T_SEMICOLON blockvar[seqList]
4772
            			    {
4773
            			    	dbg.Location(497,24);
4774
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_blockvarlist2085);
4775
            			    	dbg.Location(497,36);
4776
            			    	PushFollow(FOLLOW_blockvar_in_blockvarlist2087);
4777
            			    	blockvar(seqList);
4778
            			    	state.followingStackPointer--;
4779
4780
4781
            			    }
4782
            			    break;
4783
4784
            			default:
4785
            			    goto loop56;
4786
            	    }
4787
            	} while (true);
4788
4789
            	loop56:
4790
            		;	// Stops C# compiler whining that label 'loop56' has no statements
4791
            	} finally { dbg.ExitSubRule(56); }
4792
4793
4794
            }
4795
4796
        }
4797
        catch (RecognitionException re)
4798
    	{
4799
            ReportError(re);
4800
            Recover(input,re);
4801
        }
4802
        finally
4803
    	{
4804
        }
4805
        dbg.Location(498, 2);
4806
4807
        }
4808
        finally {
4809
            dbg.ExitRule(GrammarFileName, "blockvarlist");
4810
            DecRuleLevel();
4811
            if ( RuleLevel==0 ) {dbg.Terminate();}
4812
        }
4813
4814
        return ;
4815
    }
4816
    // $ANTLR end "blockvarlist"
4817
4818
4819
    // $ANTLR start "blockvar"
4820
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:500:1: blockvar[Block seqList] : varname= T_IDENTIFIER T_COLON aType= complexType ;
4821
    public void blockvar(Block seqList) // throws RecognitionException [1]
4822
    {
4823
        IToken varname = null;
4824
        UlyssesType aType = default(UlyssesType);
4825
4826
4827
        try {
4828
        	dbg.EnterRule(GrammarFileName, "blockvar");
4829
        	if ( RuleLevel==0 ) {dbg.Commence();}
4830
        	IncRuleLevel();
4831
        	dbg.Location(500, 1);
4832
4833
        try
4834
    	{
4835
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:501:2: (varname= T_IDENTIFIER T_COLON aType= complexType )
4836
            dbg.EnterAlt(1);
4837
4838
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:501:5: varname= T_IDENTIFIER T_COLON aType= complexType
4839
            {
4840
            	dbg.Location(501,12);
4841
            	varname=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_blockvar2107);
4842
            	dbg.Location(501,27);
4843
            	Match(input,T_COLON,FOLLOW_T_COLON_in_blockvar2110);
4844
            	dbg.Location(501,40);
4845
            	PushFollow(FOLLOW_complexType_in_blockvar2114);
4846
            	aType = complexType();
4847
            	state.followingStackPointer--;
4848
4849
            	dbg.Location(502,3);
4850
            	addBlockVariable(seqList,varname,aType);
4851
4852
            }
4853
4854
        }
4855
        catch (RecognitionException re)
4856
    	{
4857
            ReportError(re);
4858
            Recover(input,re);
4859
        }
4860
        finally
4861
    	{
4862
        }
4863
        dbg.Location(503, 2);
4864
4865
        }
4866
        finally {
4867
            dbg.ExitRule(GrammarFileName, "blockvar");
4868
            DecRuleLevel();
4869
            if ( RuleLevel==0 ) {dbg.Terminate();}
4870
        }
4871
4872
        return ;
4873
    }
4874
    // $ANTLR end "blockvar"
4875
4876
4877
    // $ANTLR start "actionBody"
4878
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:511:1: actionBody[Block top] returns [Block result] : actionBodyParallel[result] ( T_PRIO actionBodyParallel[result] )? ;
4879
    public Block actionBody(Block top) // throws RecognitionException [1]
4880
    {
4881
        Block result = default(Block);
4882
4883
        try {
4884
        	dbg.EnterRule(GrammarFileName, "actionBody");
4885
        	if ( RuleLevel==0 ) {dbg.Commence();}
4886
        	IncRuleLevel();
4887
        	dbg.Location(511, 1);
4888
4889
        try
4890
    	{
4891
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:513:2: ( actionBodyParallel[result] ( T_PRIO actionBodyParallel[result] )? )
4892
            dbg.EnterAlt(1);
4893
4894
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:513:4: actionBodyParallel[result] ( T_PRIO actionBodyParallel[result] )?
4895
            {
4896
            	dbg.Location(513,4);
4897
            	result = createPrioBlock(top);
4898
            	dbg.Location(514,3);
4899
            	PushFollow(FOLLOW_actionBodyParallel_in_actionBody2149);
4900
            	actionBodyParallel(result);
4901
            	state.followingStackPointer--;
4902
4903
            	dbg.Location(514,30);
4904
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:514:30: ( T_PRIO actionBodyParallel[result] )?
4905
            	int alt57 = 2;
4906
            	try { dbg.EnterSubRule(57);
4907
            	try { dbg.EnterDecision(57);
4908
4909
            	int LA57_0 = input.LA(1);
4910
4911
            	if ( (LA57_0 == T_PRIO) )
4912
            	{
4913
            	    alt57 = 1;
4914
            	}
4915
            	} finally { dbg.ExitDecision(57); }
4916
4917
            	switch (alt57)
4918
            	{
4919
            	    case 1 :
4920
            	        dbg.EnterAlt(1);
4921
4922
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:514:31: T_PRIO actionBodyParallel[result]
4923
            	        {
4924
            	        	dbg.Location(514,31);
4925
            	        	Match(input,T_PRIO,FOLLOW_T_PRIO_in_actionBody2153);
4926
            	        	dbg.Location(514,38);
4927
            	        	PushFollow(FOLLOW_actionBodyParallel_in_actionBody2155);
4928
            	        	actionBodyParallel(result);
4929
            	        	state.followingStackPointer--;
4930
4931
4932
            	        }
4933
            	        break;
4934
4935
            	}
4936
            	} finally { dbg.ExitSubRule(57); }
4937
4938
4939
            }
4940
4941
        }
4942
        catch (RecognitionException re)
4943
    	{
4944
            ReportError(re);
4945
            Recover(input,re);
4946
        }
4947
        finally
4948
    	{
4949
        }
4950
        dbg.Location(515, 2);
4951
4952
        }
4953
        finally {
4954
            dbg.ExitRule(GrammarFileName, "actionBody");
4955
            DecRuleLevel();
4956
            if ( RuleLevel==0 ) {dbg.Terminate();}
4957
        }
4958
4959
        return result;
4960
    }
4961
    // $ANTLR end "actionBody"
4962
4963
4964
    // $ANTLR start "actionBodyParallel"
4965
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:517:1: actionBodyParallel[Block top] returns [Block result] : actionBodySequential[result] ( T_NONDET olst= actionBodySequential[result] )* ;
4966
    public Block actionBodyParallel(Block top) // throws RecognitionException [1]
4967
    {
4968
        Block result = default(Block);
4969
4970
        Block olst = default(Block);
4971
4972
4973
        try {
4974
        	dbg.EnterRule(GrammarFileName, "actionBodyParallel");
4975
        	if ( RuleLevel==0 ) {dbg.Commence();}
4976
        	IncRuleLevel();
4977
        	dbg.Location(517, 1);
4978
4979
        try
4980
    	{
4981
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:519:2: ( actionBodySequential[result] ( T_NONDET olst= actionBodySequential[result] )* )
4982
            dbg.EnterAlt(1);
4983
4984
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:519:4: actionBodySequential[result] ( T_NONDET olst= actionBodySequential[result] )*
4985
            {
4986
            	dbg.Location(519,4);
4987
            	result = createNondetBlock(top);
4988
            	dbg.Location(520,3);
4989
            	PushFollow(FOLLOW_actionBodySequential_in_actionBodyParallel2183);
4990
            	actionBodySequential(result);
4991
            	state.followingStackPointer--;
4992
4993
            	dbg.Location(521,3);
4994
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:521:3: ( T_NONDET olst= actionBodySequential[result] )*
4995
            	try { dbg.EnterSubRule(58);
4996
4997
            	do
4998
            	{
4999
            	    int alt58 = 2;
5000
            	    try { dbg.EnterDecision(58);
5001
5002
            	    int LA58_0 = input.LA(1);
5003
5004
            	    if ( (LA58_0 == T_NONDET) )
5005
            	    {
5006
            	        alt58 = 1;
5007
            	    }
5008
5009
5010
            	    } finally { dbg.ExitDecision(58); }
5011
5012
            	    switch (alt58)
5013
            		{
5014
            			case 1 :
5015
            			    dbg.EnterAlt(1);
5016
5017
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:521:4: T_NONDET olst= actionBodySequential[result]
5018
            			    {
5019
            			    	dbg.Location(521,4);
5020
            			    	Match(input,T_NONDET,FOLLOW_T_NONDET_in_actionBodyParallel2189);
5021
            			    	dbg.Location(521,17);
5022
            			    	PushFollow(FOLLOW_actionBodySequential_in_actionBodyParallel2193);
5023
            			    	olst = actionBodySequential(result);
5024
            			    	state.followingStackPointer--;
5025
5026
5027
            			    }
5028
            			    break;
5029
5030
            			default:
5031
            			    goto loop58;
5032
            	    }
5033
            	} while (true);
5034
5035
            	loop58:
5036
            		;	// Stops C# compiler whining that label 'loop58' has no statements
5037
            	} finally { dbg.ExitSubRule(58); }
5038
5039
5040
            }
5041
5042
        }
5043
        catch (RecognitionException re)
5044
    	{
5045
            ReportError(re);
5046
            Recover(input,re);
5047
        }
5048
        finally
5049
    	{
5050
        }
5051
        dbg.Location(522, 2);
5052
5053
        }
5054
        finally {
5055
            dbg.ExitRule(GrammarFileName, "actionBodyParallel");
5056
            DecRuleLevel();
5057
            if ( RuleLevel==0 ) {dbg.Terminate();}
5058
        }
5059
5060
        return result;
5061
    }
5062
    // $ANTLR end "actionBodyParallel"
5063
5064
5065
    // $ANTLR start "actionBodySequential"
5066
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:525:1: actionBodySequential[Block top] returns [Block result] : actionBodyParen[result] ( T_SEMICOLON actionBodyParen[result] )* ;
5067
    public Block actionBodySequential(Block top) // throws RecognitionException [1]
5068
    {
5069
        Block result = default(Block);
5070
5071
        try {
5072
        	dbg.EnterRule(GrammarFileName, "actionBodySequential");
5073
        	if ( RuleLevel==0 ) {dbg.Commence();}
5074
        	IncRuleLevel();
5075
        	dbg.Location(525, 1);
5076
5077
        try
5078
    	{
5079
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:527:2: ( actionBodyParen[result] ( T_SEMICOLON actionBodyParen[result] )* )
5080
            dbg.EnterAlt(1);
5081
5082
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:527:4: actionBodyParen[result] ( T_SEMICOLON actionBodyParen[result] )*
5083
            {
5084
            	dbg.Location(527,4);
5085
            	result = createSeqBlock(top);
5086
            	dbg.Location(528,3);
5087
            	PushFollow(FOLLOW_actionBodyParen_in_actionBodySequential2220);
5088
            	actionBodyParen(result);
5089
            	state.followingStackPointer--;
5090
5091
            	dbg.Location(528,27);
5092
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:528:27: ( T_SEMICOLON actionBodyParen[result] )*
5093
            	try { dbg.EnterSubRule(59);
5094
5095
            	do
5096
            	{
5097
            	    int alt59 = 2;
5098
            	    try { dbg.EnterDecision(59);
5099
5100
            	    int LA59_0 = input.LA(1);
5101
5102
            	    if ( (LA59_0 == T_SEMICOLON) )
5103
            	    {
5104
            	        alt59 = 1;
5105
            	    }
5106
5107
5108
            	    } finally { dbg.ExitDecision(59); }
5109
5110
            	    switch (alt59)
5111
            		{
5112
            			case 1 :
5113
            			    dbg.EnterAlt(1);
5114
5115
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:528:28: T_SEMICOLON actionBodyParen[result]
5116
            			    {
5117
            			    	dbg.Location(528,28);
5118
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_actionBodySequential2224);
5119
            			    	dbg.Location(528,40);
5120
            			    	PushFollow(FOLLOW_actionBodyParen_in_actionBodySequential2226);
5121
            			    	actionBodyParen(result);
5122
            			    	state.followingStackPointer--;
5123
5124
5125
            			    }
5126
            			    break;
5127
5128
            			default:
5129
            			    goto loop59;
5130
            	    }
5131
            	} while (true);
5132
5133
            	loop59:
5134
            		;	// Stops C# compiler whining that label 'loop59' has no statements
5135
            	} finally { dbg.ExitSubRule(59); }
5136
5137
5138
            }
5139
5140
        }
5141
        catch (RecognitionException re)
5142
    	{
5143
            ReportError(re);
5144
            Recover(input,re);
5145
        }
5146
        finally
5147
    	{
5148
        }
5149
        dbg.Location(529, 2);
5150
5151
        }
5152
        finally {
5153
            dbg.ExitRule(GrammarFileName, "actionBodySequential");
5154
            DecRuleLevel();
5155
            if ( RuleLevel==0 ) {dbg.Terminate();}
5156
        }
5157
5158
        return result;
5159
    }
5160
    // $ANTLR end "actionBodySequential"
5161
5162
5163
    // $ANTLR start "actionBodyParen"
5164
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:531:1: actionBodyParen[Block top] : ( T_LPAREN actionBody[top] T_RPAREN | stmt= statement );
5165
    public void actionBodyParen(Block top) // throws RecognitionException [1]
5166
    {
5167
        Statement stmt = default(Statement);
5168
5169
5170
        try {
5171
        	dbg.EnterRule(GrammarFileName, "actionBodyParen");
5172
        	if ( RuleLevel==0 ) {dbg.Commence();}
5173
        	IncRuleLevel();
5174
        	dbg.Location(531, 1);
5175
5176
        try
5177
    	{
5178
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:532:2: ( T_LPAREN actionBody[top] T_RPAREN | stmt= statement )
5179
            int alt60 = 2;
5180
            try { dbg.EnterDecision(60);
5181
5182
            int LA60_0 = input.LA(1);
5183
5184
            if ( (LA60_0 == T_LPAREN) )
5185
            {
5186
                alt60 = 1;
5187
            }
5188
            else if ( (LA60_0 == T_IDENTIFIER || LA60_0 == T_REQUIRES || (LA60_0 >= T_SKIP && LA60_0 <= T_SELF)) )
5189
            {
5190
                alt60 = 2;
5191
            }
5192
            else
5193
            {
5194
                NoViableAltException nvae_d60s0 =
5195
                    new NoViableAltException("", 60, 0, input);
5196
5197
                dbg.RecognitionException(nvae_d60s0);
5198
                throw nvae_d60s0;
5199
            }
5200
            } finally { dbg.ExitDecision(60); }
5201
5202
            switch (alt60)
5203
            {
5204
                case 1 :
5205
                    dbg.EnterAlt(1);
5206
5207
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:532:4: T_LPAREN actionBody[top] T_RPAREN
5208
                    {
5209
                    	dbg.Location(532,4);
5210
                    	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_actionBodyParen2244);
5211
                    	dbg.Location(532,13);
5212
                    	PushFollow(FOLLOW_actionBody_in_actionBodyParen2246);
5213
                    	actionBody(top);
5214
                    	state.followingStackPointer--;
5215
5216
                    	dbg.Location(532,29);
5217
                    	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_actionBodyParen2249);
5218
5219
                    }
5220
                    break;
5221
                case 2 :
5222
                    dbg.EnterAlt(2);
5223
5224
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:533:4: stmt= statement
5225
                    {
5226
                    	dbg.Location(533,8);
5227
                    	PushFollow(FOLLOW_statement_in_actionBodyParen2256);
5228
                    	stmt = statement();
5229
                    	state.followingStackPointer--;
5230
5231
                    	dbg.Location(534,3);
5232
                    	addToStatementList(top,stmt);
5233
5234
                    }
5235
                    break;
5236
5237
            }
5238
        }
5239
        catch (RecognitionException re)
5240
    	{
5241
            ReportError(re);
5242
            Recover(input,re);
5243
        }
5244
        finally
5245
    	{
5246
        }
5247
        dbg.Location(535, 2);
5248
5249
        }
5250
        finally {
5251
            dbg.ExitRule(GrammarFileName, "actionBodyParen");
5252
            DecRuleLevel();
5253
            if ( RuleLevel==0 ) {dbg.Terminate();}
5254
        }
5255
5256
        return ;
5257
    }
5258
    // $ANTLR end "actionBodyParen"
5259
5260
5261
    // $ANTLR start "statement"
5262
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:538: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 )? | ) );
5263
    public Statement statement() // throws RecognitionException [1]
5264
    {
5265
        Statement result = default(Statement);
5266
5267
        IToken aname = null;
5268
        GuardedCommand gc = default(GuardedCommand);
5269
5270
        Expression aqname = default(Expression);
5271
5272
        Expression aexp = default(Expression);
5273
5274
        Expression ndexp = default(Expression);
5275
5276
        Expression malhs = default(Expression);
5277
5278
        Expression mexp = default(Expression);
5279
5280
        Expression mexp2 = default(Expression);
5281
5282
        Expression ndex2 = default(Expression);
5283
5284
5285
5286
        		bool popFromResolveStack = false;
5287
        		result = null;
5288
5289
        try {
5290
        	dbg.EnterRule(GrammarFileName, "statement");
5291
        	if ( RuleLevel==0 ) {dbg.Commence();}
5292
        	IncRuleLevel();
5293
        	dbg.Location(538, 1);
5294
5295
        try
5296
    	{
5297
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:544: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 )? | ) )
5298
            int alt66 = 5;
5299
            try { dbg.EnterDecision(66);
5300
5301
            switch ( input.LA(1) )
5302
            {
5303
            case T_ABORT:
5304
            	{
5305
                alt66 = 1;
5306
                }
5307
                break;
5308
            case T_SKIP:
5309
            	{
5310
                alt66 = 2;
5311
                }
5312
                break;
5313
            case T_KILL:
5314
            	{
5315
                alt66 = 3;
5316
                }
5317
                break;
5318
            case T_REQUIRES:
5319
            	{
5320
                alt66 = 4;
5321
                }
5322
                break;
5323
            case T_IDENTIFIER:
5324
            case T_SELF:
5325
            	{
5326
                alt66 = 5;
5327
                }
5328
                break;
5329
            	default:
5330
            	    NoViableAltException nvae_d66s0 =
5331
            	        new NoViableAltException("", 66, 0, input);
5332
5333
            	    dbg.RecognitionException(nvae_d66s0);
5334
            	    throw nvae_d66s0;
5335
            }
5336
5337
            } finally { dbg.ExitDecision(66); }
5338
5339
            switch (alt66)
5340
            {
5341
                case 1 :
5342
                    dbg.EnterAlt(1);
5343
5344
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:544:4: T_ABORT
5345
                    {
5346
                    	dbg.Location(544,4);
5347
                    	Match(input,T_ABORT,FOLLOW_T_ABORT_in_statement2284);
5348
                    	dbg.Location(544,12);
5349
                    	result = createAbortStatement();
5350
5351
                    }
5352
                    break;
5353
                case 2 :
5354
                    dbg.EnterAlt(2);
5355
5356
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:545:4: T_SKIP
5357
                    {
5358
                    	dbg.Location(545,4);
5359
                    	Match(input,T_SKIP,FOLLOW_T_SKIP_in_statement2291);
5360
                    	dbg.Location(545,11);
5361
                    	result = createSkipStatement();
5362
5363
                    }
5364
                    break;
5365
                case 3 :
5366
                    dbg.EnterAlt(3);
5367
5368
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:546:4: T_KILL T_LPAREN aname= ( T_IDENTIFIER | T_SELF ) T_RPAREN
5369
                    {
5370
                    	dbg.Location(546,4);
5371
                    	Match(input,T_KILL,FOLLOW_T_KILL_in_statement2298);
5372
                    	dbg.Location(546,11);
5373
                    	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_statement2300);
5374
                    	dbg.Location(546,25);
5375
                    	aname = (IToken)input.LT(1);
5376
                    	if ( input.LA(1) == T_IDENTIFIER || input.LA(1) == T_SELF )
5377
                    	{
5378
                    	    input.Consume();
5379
                    	    state.errorRecovery = false;
5380
                    	}
5381
                    	else
5382
                    	{
5383
                    	    MismatchedSetException mse = new MismatchedSetException(null,input);
5384
                    	    dbg.RecognitionException(mse);
5385
                    	    throw mse;
5386
                    	}
5387
5388
                    	dbg.Location(546,50);
5389
                    	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_statement2312);
5390
                    	dbg.Location(546,59);
5391
                    	result = createKillStatement(aname);
5392
5393
                    }
5394
                    break;
5395
                case 4 :
5396
                    dbg.EnterAlt(4);
5397
5398
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:547:5: gc= discreteActionBody
5399
                    {
5400
                    	dbg.Location(547,7);
5401
                    	PushFollow(FOLLOW_discreteActionBody_in_statement2322);
5402
                    	gc = discreteActionBody();
5403
                    	state.followingStackPointer--;
5404
5405
                    	dbg.Location(547,27);
5406
                    	result = gc;
5407
5408
                    }
5409
                    break;
5410
                case 5 :
5411
                    dbg.EnterAlt(5);
5412
5413
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:548: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 )? | )
5414
                    {
5415
                    	dbg.Location(548,10);
5416
                    	PushFollow(FOLLOW_reference_in_statement2331);
5417
                    	aqname = reference();
5418
                    	state.followingStackPointer--;
5419
5420
                    	dbg.Location(549,7);
5421
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:549: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 )? | )
5422
                    	int alt65 = 3;
5423
                    	try { dbg.EnterSubRule(65);
5424
                    	try { dbg.EnterDecision(65);
5425
5426
                    	switch ( input.LA(1) )
5427
                    	{
5428
                    	case T_ASSIGNMENT:
5429
                    		{
5430
                    	    alt65 = 1;
5431
                    	    }
5432
                    	    break;
5433
                    	case T_COMMA:
5434
                    		{
5435
                    	    alt65 = 2;
5436
                    	    }
5437
                    	    break;
5438
                    	case T_SEMICOLON:
5439
                    	case T_PRIO:
5440
                    	case T_NONDET:
5441
                    	case T_RPAREN:
5442
                    	case T_END:
5443
                    		{
5444
                    	    alt65 = 3;
5445
                    	    }
5446
                    	    break;
5447
                    		default:
5448
                    		    NoViableAltException nvae_d65s0 =
5449
                    		        new NoViableAltException("", 65, 0, input);
5450
5451
                    		    dbg.RecognitionException(nvae_d65s0);
5452
                    		    throw nvae_d65s0;
5453
                    	}
5454
5455
                    	} finally { dbg.ExitDecision(65); }
5456
5457
                    	switch (alt65)
5458
                    	{
5459
                    	    case 1 :
5460
                    	        dbg.EnterAlt(1);
5461
5462
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:550:12: T_ASSIGNMENT aexp= expression ( T_WITH ndexp= expression )?
5463
                    	        {
5464
                    	        	dbg.Location(550,12);
5465
                    	        	Match(input,T_ASSIGNMENT,FOLLOW_T_ASSIGNMENT_in_statement2359);
5466
                    	        	dbg.Location(550,30);
5467
                    	        	PushFollow(FOLLOW_expression_in_statement2364);
5468
                    	        	aexp = expression();
5469
                    	        	state.followingStackPointer--;
5470
5471
                    	        	dbg.Location(550,43);
5472
                    	        	result = createSingleAssignmentStatement(aqname,aexp);
5473
                    	        	dbg.Location(551,15);
5474
                    	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:551:15: ( T_WITH ndexp= expression )?
5475
                    	        	int alt61 = 2;
5476
                    	        	try { dbg.EnterSubRule(61);
5477
                    	        	try { dbg.EnterDecision(61);
5478
5479
                    	        	int LA61_0 = input.LA(1);
5480
5481
                    	        	if ( (LA61_0 == T_WITH) )
5482
                    	        	{
5483
                    	        	    alt61 = 1;
5484
                    	        	}
5485
                    	        	} finally { dbg.ExitDecision(61); }
5486
5487
                    	        	switch (alt61)
5488
                    	        	{
5489
                    	        	    case 1 :
5490
                    	        	        dbg.EnterAlt(1);
5491
5492
                    	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:551:16: T_WITH ndexp= expression
5493
                    	        	        {
5494
                    	        	        	dbg.Location(551,16);
5495
                    	        	        	Match(input,T_WITH,FOLLOW_T_WITH_in_statement2384);
5496
                    	        	        	dbg.Location(551,28);
5497
                    	        	        	PushFollow(FOLLOW_expression_in_statement2388);
5498
                    	        	        	ndexp = expression();
5499
                    	        	        	state.followingStackPointer--;
5500
5501
                    	        	        	dbg.Location(551,40);
5502
                    	        	        	addConstraintToAssignment(result,ndexp);
5503
5504
                    	        	        }
5505
                    	        	        break;
5506
5507
                    	        	}
5508
                    	        	} finally { dbg.ExitSubRule(61); }
5509
5510
5511
                    	        }
5512
                    	        break;
5513
                    	    case 2 :
5514
                    	        dbg.EnterAlt(2);
5515
5516
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:554:8: ( T_COMMA malhs= reference )+ T_ASSIGNMENT mexp= expression ( T_COMMA mexp2= expression )+ ( T_WITH ndex2= expression )?
5517
                    	        {
5518
                    	        	dbg.Location(554,8);
5519
                    	        	result = createMultipleAssignmentStatementLHS(aqname);
5520
                    	        	dbg.Location(555,7);
5521
                    	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:555:7: ( T_COMMA malhs= reference )+
5522
                    	        	int cnt62 = 0;
5523
                    	        	try { dbg.EnterSubRule(62);
5524
5525
                    	        	do
5526
                    	        	{
5527
                    	        	    int alt62 = 2;
5528
                    	        	    try { dbg.EnterDecision(62);
5529
5530
                    	        	    int LA62_0 = input.LA(1);
5531
5532
                    	        	    if ( (LA62_0 == T_COMMA) )
5533
                    	        	    {
5534
                    	        	        alt62 = 1;
5535
                    	        	    }
5536
5537
5538
                    	        	    } finally { dbg.ExitDecision(62); }
5539
5540
                    	        	    switch (alt62)
5541
                    	        		{
5542
                    	        			case 1 :
5543
                    	        			    dbg.EnterAlt(1);
5544
5545
                    	        			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:555:8: T_COMMA malhs= reference
5546
                    	        			    {
5547
                    	        			    	dbg.Location(555,8);
5548
                    	        			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_statement2441);
5549
                    	        			    	dbg.Location(555,21);
5550
                    	        			    	PushFollow(FOLLOW_reference_in_statement2445);
5551
                    	        			    	malhs = reference();
5552
                    	        			    	state.followingStackPointer--;
5553
5554
                    	        			    	dbg.Location(555,33);
5555
                    	        			    	addMultipleAssignmentStatementLHS(result,malhs);
5556
5557
                    	        			    }
5558
                    	        			    break;
5559
5560
                    	        			default:
5561
                    	        			    if ( cnt62 >= 1 ) goto loop62;
5562
                    	        		            EarlyExitException eee62 =
5563
                    	        		                new EarlyExitException(62, input);
5564
                    	        		            dbg.RecognitionException(eee62);
5565
5566
                    	        		            throw eee62;
5567
                    	        	    }
5568
                    	        	    cnt62++;
5569
                    	        	} while (true);
5570
5571
                    	        	loop62:
5572
                    	        		;	// Stops C# compiler whining that label 'loop62' has no statements
5573
                    	        	} finally { dbg.ExitSubRule(62); }
5574
5575
                    	        	dbg.Location(556,8);
5576
                    	        	Match(input,T_ASSIGNMENT,FOLLOW_T_ASSIGNMENT_in_statement2460);
5577
                    	        	dbg.Location(557,8);
5578
                    	        	pushAssignmentOnResolveStack(result); popFromResolveStack = true;
5579
                    	        	dbg.Location(558,12);
5580
                    	        	PushFollow(FOLLOW_expression_in_statement2482);
5581
                    	        	mexp = expression();
5582
                    	        	state.followingStackPointer--;
5583
5584
                    	        	dbg.Location(559,8);
5585
                    	        	addMutlipleAssignmentStatementRHS(result,mexp);
5586
                    	        	dbg.Location(560,8);
5587
                    	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:560:8: ( T_COMMA mexp2= expression )+
5588
                    	        	int cnt63 = 0;
5589
                    	        	try { dbg.EnterSubRule(63);
5590
5591
                    	        	do
5592
                    	        	{
5593
                    	        	    int alt63 = 2;
5594
                    	        	    try { dbg.EnterDecision(63);
5595
5596
                    	        	    int LA63_0 = input.LA(1);
5597
5598
                    	        	    if ( (LA63_0 == T_COMMA) )
5599
                    	        	    {
5600
                    	        	        alt63 = 1;
5601
                    	        	    }
5602
5603
5604
                    	        	    } finally { dbg.ExitDecision(63); }
5605
5606
                    	        	    switch (alt63)
5607
                    	        		{
5608
                    	        			case 1 :
5609
                    	        			    dbg.EnterAlt(1);
5610
5611
                    	        			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:560:9: T_COMMA mexp2= expression
5612
                    	        			    {
5613
                    	        			    	dbg.Location(560,9);
5614
                    	        			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_statement2501);
5615
                    	        			    	dbg.Location(560,22);
5616
                    	        			    	PushFollow(FOLLOW_expression_in_statement2505);
5617
                    	        			    	mexp2 = expression();
5618
                    	        			    	state.followingStackPointer--;
5619
5620
                    	        			    	dbg.Location(560,34);
5621
                    	        			    	addMutlipleAssignmentStatementRHS(result,mexp2);
5622
5623
                    	        			    }
5624
                    	        			    break;
5625
5626
                    	        			default:
5627
                    	        			    if ( cnt63 >= 1 ) goto loop63;
5628
                    	        		            EarlyExitException eee63 =
5629
                    	        		                new EarlyExitException(63, input);
5630
                    	        		            dbg.RecognitionException(eee63);
5631
5632
                    	        		            throw eee63;
5633
                    	        	    }
5634
                    	        	    cnt63++;
5635
                    	        	} while (true);
5636
5637
                    	        	loop63:
5638
                    	        		;	// Stops C# compiler whining that label 'loop63' has no statements
5639
                    	        	} finally { dbg.ExitSubRule(63); }
5640
5641
                    	        	dbg.Location(561,8);
5642
                    	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:561:8: ( T_WITH ndex2= expression )?
5643
                    	        	int alt64 = 2;
5644
                    	        	try { dbg.EnterSubRule(64);
5645
                    	        	try { dbg.EnterDecision(64);
5646
5647
                    	        	int LA64_0 = input.LA(1);
5648
5649
                    	        	if ( (LA64_0 == T_WITH) )
5650
                    	        	{
5651
                    	        	    alt64 = 1;
5652
                    	        	}
5653
                    	        	} finally { dbg.ExitDecision(64); }
5654
5655
                    	        	switch (alt64)
5656
                    	        	{
5657
                    	        	    case 1 :
5658
                    	        	        dbg.EnterAlt(1);
5659
5660
                    	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:561:9: T_WITH ndex2= expression
5661
                    	        	        {
5662
                    	        	        	dbg.Location(561,9);
5663
                    	        	        	Match(input,T_WITH,FOLLOW_T_WITH_in_statement2519);
5664
                    	        	        	dbg.Location(561,21);
5665
                    	        	        	PushFollow(FOLLOW_expression_in_statement2523);
5666
                    	        	        	ndex2 = expression();
5667
                    	        	        	state.followingStackPointer--;
5668
5669
                    	        	        	dbg.Location(561,33);
5670
                    	        	        	addConstraintToAssignment(result,ndex2);
5671
5672
                    	        	        }
5673
                    	        	        break;
5674
5675
                    	        	}
5676
                    	        	} finally { dbg.ExitSubRule(64); }
5677
5678
5679
                    	        }
5680
                    	        break;
5681
                    	    case 3 :
5682
                    	        dbg.EnterAlt(3);
5683
5684
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:564:7:
5685
                    	        {
5686
                    	        	dbg.Location(564,7);
5687
                    	        	result = createCallStatement(aqname);
5688
5689
                    	        }
5690
                    	        break;
5691
5692
                    	}
5693
                    	} finally { dbg.ExitSubRule(65); }
5694
5695
5696
                    }
5697
                    break;
5698
5699
            }
5700
        }
5701
        catch (RecognitionException re)
5702
    	{
5703
            ReportError(re);
5704
            Recover(input,re);
5705
        }
5706
        finally
5707
    	{
5708
5709
            	       if (popFromResolveStack == true)
5710
            	            popAssignmentOffResolveStack(result);
5711
5712
        }
5713
        dbg.Location(566, 2);
5714
5715
        }
5716
        finally {
5717
            dbg.ExitRule(GrammarFileName, "statement");
5718
            DecRuleLevel();
5719
            if ( RuleLevel==0 ) {dbg.Terminate();}
5720
        }
5721
5722
        return result;
5723
    }
5724
    // $ANTLR end "statement"
5725
5726
5727
    // $ANTLR start "expression"
5728
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:575:1: expression returns [Expression expr] : left= atomExpression (op= binoperator right= atomExpression )* ;
5729
    public Expression expression() // throws RecognitionException [1]
5730
    {
5731
        Expression expr = default(Expression);
5732
5733
        Expression left = default(Expression);
5734
5735
        BinaryOperator op = default(BinaryOperator);
5736
5737
        Expression right = default(Expression);
5738
5739
5740
5741
        		System.Collections.Generic.List<BinaryOperator> operators = new System.Collections.Generic.List<BinaryOperator>();
5742
        		System.Collections.Generic.List<Expression> expressions = new System.Collections.Generic.List<Expression>();
5743
5744
        try {
5745
        	dbg.EnterRule(GrammarFileName, "expression");
5746
        	if ( RuleLevel==0 ) {dbg.Commence();}
5747
        	IncRuleLevel();
5748
        	dbg.Location(575, 1);
5749
5750
        try
5751
    	{
5752
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:581:2: (left= atomExpression (op= binoperator right= atomExpression )* )
5753
            dbg.EnterAlt(1);
5754
5755
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:581:4: left= atomExpression (op= binoperator right= atomExpression )*
5756
            {
5757
            	dbg.Location(581,8);
5758
            	PushFollow(FOLLOW_atomExpression_in_expression2598);
5759
            	left = atomExpression();
5760
            	state.followingStackPointer--;
5761
5762
            	dbg.Location(582,3);
5763
            	expressions.Add(left);
5764
            	dbg.Location(583,3);
5765
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:583:3: (op= binoperator right= atomExpression )*
5766
            	try { dbg.EnterSubRule(67);
5767
5768
            	do
5769
            	{
5770
            	    int alt67 = 2;
5771
            	    try { dbg.EnterDecision(67);
5772
5773
            	    try
5774
            	    {
5775
            	        isCyclicDecision = true;
5776
            	        alt67 = dfa67.Predict(input);
5777
            	    }
5778
            	    catch (NoViableAltException nvae)
5779
            	    {
5780
            	        dbg.RecognitionException(nvae);
5781
            	        throw nvae;
5782
            	    }
5783
            	    } finally { dbg.ExitDecision(67); }
5784
5785
            	    switch (alt67)
5786
            		{
5787
            			case 1 :
5788
            			    dbg.EnterAlt(1);
5789
5790
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:583:5: op= binoperator right= atomExpression
5791
            			    {
5792
            			    	dbg.Location(583,7);
5793
            			    	PushFollow(FOLLOW_binoperator_in_expression2611);
5794
            			    	op = binoperator();
5795
            			    	state.followingStackPointer--;
5796
5797
            			    	dbg.Location(584,10);
5798
            			    	PushFollow(FOLLOW_atomExpression_in_expression2619);
5799
            			    	right = atomExpression();
5800
            			    	state.followingStackPointer--;
5801
5802
            			    	dbg.Location(585,5);
5803
5804
            			    			  	operators.Add(op);
5805
            			    			  	expressions.Add(right);
5806
5807
5808
            			    }
5809
            			    break;
5810
5811
            			default:
5812
            			    goto loop67;
5813
            	    }
5814
            	} while (true);
5815
5816
            	loop67:
5817
            		;	// Stops C# compiler whining that label 'loop67' has no statements
5818
            	} finally { dbg.ExitSubRule(67); }
5819
5820
            	dbg.Location(590,3);
5821
            	expr = createPrecedenceTree(expressions,operators);
5822
5823
            }
5824
5825
        }
5826
        catch (RecognitionException re)
5827
    	{
5828
            ReportError(re);
5829
            Recover(input,re);
5830
        }
5831
        finally
5832
    	{
5833
        }
5834
        dbg.Location(591, 2);
5835
5836
        }
5837
        finally {
5838
            dbg.ExitRule(GrammarFileName, "expression");
5839
            DecRuleLevel();
5840
            if ( RuleLevel==0 ) {dbg.Terminate();}
5841
        }
5842
5843
        return expr;
5844
    }
5845
    // $ANTLR end "expression"
5846
5847
5848
    // $ANTLR start "binoperator"
5849
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:594: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 );
5850
    public BinaryOperator binoperator() // throws RecognitionException [1]
5851
    {
5852
        BinaryOperator binop = default(BinaryOperator);
5853
5854
        try {
5855
        	dbg.EnterRule(GrammarFileName, "binoperator");
5856
        	if ( RuleLevel==0 ) {dbg.Commence();}
5857
        	IncRuleLevel();
5858
        	dbg.Location(594, 1);
5859
5860
        try
5861
    	{
5862
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:596: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 )
5863
            int alt70 = 30;
5864
            try { dbg.EnterDecision(70);
5865
5866
            try
5867
            {
5868
                isCyclicDecision = true;
5869
                alt70 = dfa70.Predict(input);
5870
            }
5871
            catch (NoViableAltException nvae)
5872
            {
5873
                dbg.RecognitionException(nvae);
5874
                throw nvae;
5875
            }
5876
            } finally { dbg.ExitDecision(70); }
5877
5878
            switch (alt70)
5879
            {
5880
                case 1 :
5881
                    dbg.EnterAlt(1);
5882
5883
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:596:4: T_BIIMPLIES
5884
                    {
5885
                    	dbg.Location(596,4);
5886
                    	Match(input,T_BIIMPLIES,FOLLOW_T_BIIMPLIES_in_binoperator2652);
5887
                    	dbg.Location(597,3);
5888
                    	binop = createBinaryOperator(ExpressionKind.biimplies);
5889
5890
                    }
5891
                    break;
5892
                case 2 :
5893
                    dbg.EnterAlt(2);
5894
5895
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:598:4: T_GREATER
5896
                    {
5897
                    	dbg.Location(598,4);
5898
                    	Match(input,T_GREATER,FOLLOW_T_GREATER_in_binoperator2661);
5899
                    	dbg.Location(599,3);
5900
                    	binop = createBinaryOperator(ExpressionKind.greater);
5901
5902
                    }
5903
                    break;
5904
                case 3 :
5905
                    dbg.EnterAlt(3);
5906
5907
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:600:4: T_GREATEREQUAL
5908
                    {
5909
                    	dbg.Location(600,4);
5910
                    	Match(input,T_GREATEREQUAL,FOLLOW_T_GREATEREQUAL_in_binoperator2671);
5911
                    	dbg.Location(601,3);
5912
                    	binop = createBinaryOperator(ExpressionKind.greaterequal);
5913
5914
                    }
5915
                    break;
5916
                case 4 :
5917
                    dbg.EnterAlt(4);
5918
5919
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:602:4: T_LESS
5920
                    {
5921
                    	dbg.Location(602,4);
5922
                    	Match(input,T_LESS,FOLLOW_T_LESS_in_binoperator2680);
5923
                    	dbg.Location(603,3);
5924
                    	binop = createBinaryOperator(ExpressionKind.less);
5925
5926
                    }
5927
                    break;
5928
                case 5 :
5929
                    dbg.EnterAlt(5);
5930
5931
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:604:4: T_LESSEQUAL
5932
                    {
5933
                    	dbg.Location(604,4);
5934
                    	Match(input,T_LESSEQUAL,FOLLOW_T_LESSEQUAL_in_binoperator2690);
5935
                    	dbg.Location(605,3);
5936
                    	binop = createBinaryOperator(ExpressionKind.lessequal);
5937
5938
                    }
5939
                    break;
5940
                case 6 :
5941
                    dbg.EnterAlt(6);
5942
5943
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:606:4: T_EQUAL
5944
                    {
5945
                    	dbg.Location(606,4);
5946
                    	Match(input,T_EQUAL,FOLLOW_T_EQUAL_in_binoperator2699);
5947
                    	dbg.Location(607,3);
5948
                    	binop = createBinaryOperator(ExpressionKind.equal);
5949
5950
                    }
5951
                    break;
5952
                case 7 :
5953
                    dbg.EnterAlt(7);
5954
5955
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:608:4: T_NOTEQUAL
5956
                    {
5957
                    	dbg.Location(608,4);
5958
                    	Match(input,T_NOTEQUAL,FOLLOW_T_NOTEQUAL_in_binoperator2711);
5959
                    	dbg.Location(609,3);
5960
                    	binop = createBinaryOperator(ExpressionKind.notequal);
5961
5962
                    }
5963
                    break;
5964
                case 8 :
5965
                    dbg.EnterAlt(8);
5966
5967
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:610:4: T_IMPLIES
5968
                    {
5969
                    	dbg.Location(610,4);
5970
                    	Match(input,T_IMPLIES,FOLLOW_T_IMPLIES_in_binoperator2722);
5971
                    	dbg.Location(611,3);
5972
                    	binop = createBinaryOperator(ExpressionKind.implies);
5973
5974
                    }
5975
                    break;
5976
                case 9 :
5977
                    dbg.EnterAlt(9);
5978
5979
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:612:4: T_MINUS
5980
                    {
5981
                    	dbg.Location(612,4);
5982
                    	Match(input,T_MINUS,FOLLOW_T_MINUS_in_binoperator2731);
5983
                    	dbg.Location(613,3);
5984
                    	binop = createBinaryOperator(ExpressionKind.minus);
5985
5986
                    }
5987
                    break;
5988
                case 10 :
5989
                    dbg.EnterAlt(10);
5990
5991
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:614:4: T_SUM
5992
                    {
5993
                    	dbg.Location(614,4);
5994
                    	Match(input,T_SUM,FOLLOW_T_SUM_in_binoperator2741);
5995
                    	dbg.Location(615,3);
5996
                    	binop = createBinaryOperator(ExpressionKind.sum);
5997
5998
                    }
5999
                    break;
6000
                case 11 :
6001
                    dbg.EnterAlt(11);
6002
6003
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:616:4: T_IN ( T_SET )?
6004
                    {
6005
                    	dbg.Location(616,4);
6006
                    	Match(input,T_IN,FOLLOW_T_IN_in_binoperator2751);
6007
                    	dbg.Location(616,9);
6008
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:616:9: ( T_SET )?
6009
                    	int alt68 = 2;
6010
                    	try { dbg.EnterSubRule(68);
6011
                    	try { dbg.EnterDecision(68);
6012
6013
                    	try
6014
                    	{
6015
                    	    isCyclicDecision = true;
6016
                    	    alt68 = dfa68.Predict(input);
6017
                    	}
6018
                    	catch (NoViableAltException nvae)
6019
                    	{
6020
                    	    dbg.RecognitionException(nvae);
6021
                    	    throw nvae;
6022
                    	}
6023
                    	} finally { dbg.ExitDecision(68); }
6024
6025
                    	switch (alt68)
6026
                    	{
6027
                    	    case 1 :
6028
                    	        dbg.EnterAlt(1);
6029
6030
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:616:9: T_SET
6031
                    	        {
6032
                    	        	dbg.Location(616,9);
6033
                    	        	Match(input,T_SET,FOLLOW_T_SET_in_binoperator2753);
6034
6035
                    	        }
6036
                    	        break;
6037
6038
                    	}
6039
                    	} finally { dbg.ExitSubRule(68); }
6040
6041
                    	dbg.Location(617,3);
6042
                    	binop = createBinaryOperator(ExpressionKind.elemin);
6043
6044
                    }
6045
                    break;
6046
                case 12 :
6047
                    dbg.EnterAlt(12);
6048
6049
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:618:4: T_NOT T_IN ( T_SET )?
6050
                    {
6051
                    	dbg.Location(618,4);
6052
                    	Match(input,T_NOT,FOLLOW_T_NOT_in_binoperator2764);
6053
                    	dbg.Location(618,10);
6054
                    	Match(input,T_IN,FOLLOW_T_IN_in_binoperator2766);
6055
                    	dbg.Location(618,15);
6056
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:618:15: ( T_SET )?
6057
                    	int alt69 = 2;
6058
                    	try { dbg.EnterSubRule(69);
6059
                    	try { dbg.EnterDecision(69);
6060
6061
                    	try
6062
                    	{
6063
                    	    isCyclicDecision = true;
6064
                    	    alt69 = dfa69.Predict(input);
6065
                    	}
6066
                    	catch (NoViableAltException nvae)
6067
                    	{
6068
                    	    dbg.RecognitionException(nvae);
6069
                    	    throw nvae;
6070
                    	}
6071
                    	} finally { dbg.ExitDecision(69); }
6072
6073
                    	switch (alt69)
6074
                    	{
6075
                    	    case 1 :
6076
                    	        dbg.EnterAlt(1);
6077
6078
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:618:15: T_SET
6079
                    	        {
6080
                    	        	dbg.Location(618,15);
6081
                    	        	Match(input,T_SET,FOLLOW_T_SET_in_binoperator2768);
6082
6083
                    	        }
6084
                    	        break;
6085
6086
                    	}
6087
                    	} finally { dbg.ExitSubRule(69); }
6088
6089
                    	dbg.Location(619,3);
6090
                    	binop = createBinaryOperator(ExpressionKind.notelemin);
6091
6092
                    }
6093
                    break;
6094
                case 13 :
6095
                    dbg.EnterAlt(13);
6096
6097
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:620:4: T_SUBSET
6098
                    {
6099
                    	dbg.Location(620,4);
6100
                    	Match(input,T_SUBSET,FOLLOW_T_SUBSET_in_binoperator2779);
6101
                    	dbg.Location(621,3);
6102
                    	binop = createBinaryOperator(ExpressionKind.subset);
6103
6104
                    }
6105
                    break;
6106
                case 14 :
6107
                    dbg.EnterAlt(14);
6108
6109
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:622:4: T_OR
6110
                    {
6111
                    	dbg.Location(622,4);
6112
                    	Match(input,T_OR,FOLLOW_T_OR_in_binoperator2789);
6113
                    	dbg.Location(623,3);
6114
                    	binop = createBinaryOperator(ExpressionKind.or);
6115
6116
                    }
6117
                    break;
6118
                case 15 :
6119
                    dbg.EnterAlt(15);
6120
6121
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:624:4: T_DIV
6122
                    {
6123
                    	dbg.Location(624,4);
6124
                    	Match(input,T_DIV,FOLLOW_T_DIV_in_binoperator2798);
6125
                    	dbg.Location(625,3);
6126
                    	binop = createBinaryOperator(ExpressionKind.div);
6127
6128
                    }
6129
                    break;
6130
                case 16 :
6131
                    dbg.EnterAlt(16);
6132
6133
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:626:4: T_PROD
6134
                    {
6135
                    	dbg.Location(626,4);
6136
                    	Match(input,T_PROD,FOLLOW_T_PROD_in_binoperator2807);
6137
                    	dbg.Location(627,3);
6138
                    	binop = createBinaryOperator(ExpressionKind.prod);
6139
6140
                    }
6141
                    break;
6142
                case 17 :
6143
                    dbg.EnterAlt(17);
6144
6145
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:628:4: T_IDIV
6146
                    {
6147
                    	dbg.Location(628,4);
6148
                    	Match(input,T_IDIV,FOLLOW_T_IDIV_in_binoperator2817);
6149
                    	dbg.Location(629,3);
6150
                    	binop = createBinaryOperator(ExpressionKind.idiv);
6151
6152
                    }
6153
                    break;
6154
                case 18 :
6155
                    dbg.EnterAlt(18);
6156
6157
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:630:4: T_MOD
6158
                    {
6159
                    	dbg.Location(630,4);
6160
                    	Match(input,T_MOD,FOLLOW_T_MOD_in_binoperator2827);
6161
                    	dbg.Location(631,3);
6162
                    	binop = createBinaryOperator(ExpressionKind.mod);
6163
6164
                    }
6165
                    break;
6166
                case 19 :
6167
                    dbg.EnterAlt(19);
6168
6169
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:632:4: T_UNION
6170
                    {
6171
                    	dbg.Location(632,4);
6172
                    	Match(input,T_UNION,FOLLOW_T_UNION_in_binoperator2837);
6173
                    	dbg.Location(633,3);
6174
                    	binop = createBinaryOperator(ExpressionKind.union);
6175
6176
                    }
6177
                    break;
6178
                case 20 :
6179
                    dbg.EnterAlt(20);
6180
6181
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:634:4: T_DIFF
6182
                    {
6183
                    	dbg.Location(634,4);
6184
                    	Match(input,T_DIFF,FOLLOW_T_DIFF_in_binoperator2848);
6185
                    	dbg.Location(635,3);
6186
                    	binop = createBinaryOperator(ExpressionKind.diff);
6187
6188
                    }
6189
                    break;
6190
                case 21 :
6191
                    dbg.EnterAlt(21);
6192
6193
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:636:4: T_INTER
6194
                    {
6195
                    	dbg.Location(636,4);
6196
                    	Match(input,T_INTER,FOLLOW_T_INTER_in_binoperator2859);
6197
                    	dbg.Location(637,3);
6198
                    	binop = createBinaryOperator(ExpressionKind.inter);
6199
6200
                    }
6201
                    break;
6202
                case 22 :
6203
                    dbg.EnterAlt(22);
6204
6205
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:638:4: T_AND
6206
                    {
6207
                    	dbg.Location(638,4);
6208
                    	Match(input,T_AND,FOLLOW_T_AND_in_binoperator2870);
6209
                    	dbg.Location(639,3);
6210
                    	binop = createBinaryOperator(ExpressionKind.and);
6211
6212
                    }
6213
                    break;
6214
                case 23 :
6215
                    dbg.EnterAlt(23);
6216
6217
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:640:4: T_POW
6218
                    {
6219
                    	dbg.Location(640,4);
6220
                    	Match(input,T_POW,FOLLOW_T_POW_in_binoperator2885);
6221
                    	dbg.Location(641,3);
6222
                    	binop = createBinaryOperator(ExpressionKind.pow);
6223
6224
                    }
6225
                    break;
6226
                case 24 :
6227
                    dbg.EnterAlt(24);
6228
6229
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:642:4: T_CONC
6230
                    {
6231
                    	dbg.Location(642,4);
6232
                    	Match(input,T_CONC,FOLLOW_T_CONC_in_binoperator2900);
6233
                    	dbg.Location(643,3);
6234
                    	binop = createBinaryOperator(ExpressionKind.conc);
6235
6236
                    }
6237
                    break;
6238
                case 25 :
6239
                    dbg.EnterAlt(25);
6240
6241
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:644:4: T_DOMRESBY
6242
                    {
6243
                    	dbg.Location(644,4);
6244
                    	Match(input,T_DOMRESBY,FOLLOW_T_DOMRESBY_in_binoperator2913);
6245
                    	dbg.Location(645,3);
6246
                    	binop = createBinaryOperator(ExpressionKind.domresby);
6247
6248
                    }
6249
                    break;
6250
                case 26 :
6251
                    dbg.EnterAlt(26);
6252
6253
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:646:4: T_DOMRESTO
6254
                    {
6255
                    	dbg.Location(646,4);
6256
                    	Match(input,T_DOMRESTO,FOLLOW_T_DOMRESTO_in_binoperator2923);
6257
                    	dbg.Location(647,3);
6258
                    	binop = createBinaryOperator(ExpressionKind.domresto);
6259
6260
                    }
6261
                    break;
6262
                case 27 :
6263
                    dbg.EnterAlt(27);
6264
6265
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:648:4: T_RNGRESBY
6266
                    {
6267
                    	dbg.Location(648,4);
6268
                    	Match(input,T_RNGRESBY,FOLLOW_T_RNGRESBY_in_binoperator2933);
6269
                    	dbg.Location(649,3);
6270
                    	binop = createBinaryOperator(ExpressionKind.rngresby);
6271
6272
                    }
6273
                    break;
6274
                case 28 :
6275
                    dbg.EnterAlt(28);
6276
6277
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:650:4: T_RNGRESTO
6278
                    {
6279
                    	dbg.Location(650,4);
6280
                    	Match(input,T_RNGRESTO,FOLLOW_T_RNGRESTO_in_binoperator2943);
6281
                    	dbg.Location(651,3);
6282
                    	binop = createBinaryOperator(ExpressionKind.rngresto);
6283
6284
                    }
6285
                    break;
6286
                case 29 :
6287
                    dbg.EnterAlt(29);
6288
6289
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:652:4: T_MUNION
6290
                    {
6291
                    	dbg.Location(652,4);
6292
                    	Match(input,T_MUNION,FOLLOW_T_MUNION_in_binoperator2953);
6293
                    	dbg.Location(653,3);
6294
                    	binop = createBinaryOperator(ExpressionKind.munion);
6295
6296
                    }
6297
                    break;
6298
                case 30 :
6299
                    dbg.EnterAlt(30);
6300
6301
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:654:4: T_SEQMOD_MAPOVERRIDE
6302
                    {
6303
                    	dbg.Location(654,4);
6304
                    	Match(input,T_SEQMOD_MAPOVERRIDE,FOLLOW_T_SEQMOD_MAPOVERRIDE_in_binoperator2963);
6305
                    	dbg.Location(656,3);
6306
                    	binop = createBinaryOperator(ExpressionKind.seqmod_mapoverride);
6307
6308
                    }
6309
                    break;
6310
6311
            }
6312
        }
6313
        catch (RecognitionException re)
6314
    	{
6315
            ReportError(re);
6316
            Recover(input,re);
6317
        }
6318
        finally
6319
    	{
6320
        }
6321
        dbg.Location(657, 2);
6322
6323
        }
6324
        finally {
6325
            dbg.ExitRule(GrammarFileName, "binoperator");
6326
            DecRuleLevel();
6327
            if ( RuleLevel==0 ) {dbg.Terminate();}
6328
        }
6329
6330
        return binop;
6331
    }
6332
    // $ANTLR end "binoperator"
6333
6334
6335
    // $ANTLR start "atomExpression"
6336
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:660: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 );
6337
    public Expression atomExpression() // throws RecognitionException [1]
6338
    {
6339
        Expression expr = default(Expression);
6340
6341
        IToken idn = null;
6342
        IToken cid = null;
6343
        IToken ie = null;
6344
        UnaryOperator unexpr = default(UnaryOperator);
6345
6346
        Expression e = default(Expression);
6347
6348
        Expression res = default(Expression);
6349
6350
        Expression ce = default(Expression);
6351
6352
        Expression te = default(Expression);
6353
6354
        Expression ee = default(Expression);
6355
6356
6357
6358
        		expr = null;
6359
6360
        try {
6361
        	dbg.EnterRule(GrammarFileName, "atomExpression");
6362
        	if ( RuleLevel==0 ) {dbg.Commence();}
6363
        	IncRuleLevel();
6364
        	dbg.Location(660, 1);
6365
6366
        try
6367
    	{
6368
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:665: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 )
6369
            int alt77 = 2;
6370
            try { dbg.EnterDecision(77);
6371
6372
            try
6373
            {
6374
                isCyclicDecision = true;
6375
                alt77 = dfa77.Predict(input);
6376
            }
6377
            catch (NoViableAltException nvae)
6378
            {
6379
                dbg.RecognitionException(nvae);
6380
                throw nvae;
6381
            }
6382
            } finally { dbg.ExitDecision(77); }
6383
6384
            switch (alt77)
6385
            {
6386
                case 1 :
6387
                    dbg.EnterAlt(1);
6388
6389
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:665: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 )? )
6390
                    {
6391
                    	dbg.Location(665,4);
6392
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:665: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 )? )
6393
                    	dbg.EnterAlt(1);
6394
6395
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:665: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 )?
6396
                    	{
6397
                    		dbg.Location(665,11);
6398
                    		// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:665:11: (unexpr= op_un )?
6399
                    		int alt71 = 2;
6400
                    		try { dbg.EnterSubRule(71);
6401
                    		try { dbg.EnterDecision(71);
6402
6403
                    		try
6404
                    		{
6405
                    		    isCyclicDecision = true;
6406
                    		    alt71 = dfa71.Predict(input);
6407
                    		}
6408
                    		catch (NoViableAltException nvae)
6409
                    		{
6410
                    		    dbg.RecognitionException(nvae);
6411
                    		    throw nvae;
6412
                    		}
6413
                    		} finally { dbg.ExitDecision(71); }
6414
6415
                    		switch (alt71)
6416
                    		{
6417
                    		    case 1 :
6418
                    		        dbg.EnterAlt(1);
6419
6420
                    		        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:665:11: unexpr= op_un
6421
                    		        {
6422
                    		        	dbg.Location(665,11);
6423
                    		        	PushFollow(FOLLOW_op_un_in_atomExpression3001);
6424
                    		        	unexpr = op_un();
6425
                    		        	state.followingStackPointer--;
6426
6427
6428
                    		        }
6429
                    		        break;
6430
6431
                    		}
6432
                    		} finally { dbg.ExitSubRule(71); }
6433
6434
                    		dbg.Location(665,19);
6435
                    		// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:665: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] )? )
6436
                    		int alt75 = 6;
6437
                    		try { dbg.EnterSubRule(75);
6438
                    		try { dbg.EnterDecision(75);
6439
6440
                    		try
6441
                    		{
6442
                    		    isCyclicDecision = true;
6443
                    		    alt75 = dfa75.Predict(input);
6444
                    		}
6445
                    		catch (NoViableAltException nvae)
6446
                    		{
6447
                    		    dbg.RecognitionException(nvae);
6448
                    		    throw nvae;
6449
                    		}
6450
                    		} finally { dbg.ExitDecision(75); }
6451
6452
                    		switch (alt75)
6453
                    		{
6454
                    		    case 1 :
6455
                    		        dbg.EnterAlt(1);
6456
6457
                    		        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:666:8: e= identifierExpression
6458
                    		        {
6459
                    		        	dbg.Location(666,9);
6460
                    		        	PushFollow(FOLLOW_identifierExpression_in_atomExpression3018);
6461
                    		        	e = identifierExpression();
6462
                    		        	state.followingStackPointer--;
6463
6464
6465
                    		        }
6466
                    		        break;
6467
                    		    case 2 :
6468
                    		        dbg.EnterAlt(2);
6469
6470
                    		        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:667:8: e= qvalExpression
6471
                    		        {
6472
                    		        	dbg.Location(667,9);
6473
                    		        	PushFollow(FOLLOW_qvalExpression_in_atomExpression3029);
6474
                    		        	e = qvalExpression();
6475
                    		        	state.followingStackPointer--;
6476
6477
6478
                    		        }
6479
                    		        break;
6480
                    		    case 3 :
6481
                    		        dbg.EnterAlt(3);
6482
6483
                    		        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:668:8: e= constant
6484
                    		        {
6485
                    		        	dbg.Location(668,9);
6486
                    		        	PushFollow(FOLLOW_constant_in_atomExpression3040);
6487
                    		        	e = constant();
6488
                    		        	state.followingStackPointer--;
6489
6490
6491
                    		        }
6492
                    		        break;
6493
                    		    case 4 :
6494
                    		        dbg.EnterAlt(4);
6495
6496
                    		        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:669:8: e= initializedComplexType
6497
                    		        {
6498
                    		        	dbg.Location(669,9);
6499
                    		        	PushFollow(FOLLOW_initializedComplexType_in_atomExpression3051);
6500
                    		        	e = initializedComplexType();
6501
                    		        	state.followingStackPointer--;
6502
6503
6504
                    		        }
6505
                    		        break;
6506
                    		    case 5 :
6507
                    		        dbg.EnterAlt(5);
6508
6509
                    		        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:670:8: e= quantifierExpression
6510
                    		        {
6511
                    		        	dbg.Location(670,9);
6512
                    		        	PushFollow(FOLLOW_quantifierExpression_in_atomExpression3063);
6513
                    		        	e = quantifierExpression();
6514
                    		        	state.followingStackPointer--;
6515
6516
6517
                    		        }
6518
                    		        break;
6519
                    		    case 6 :
6520
                    		        dbg.EnterAlt(6);
6521
6522
                    		        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:671:8: T_LPAREN e= expression T_RPAREN ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[e] )? | e= accessExpression[e] )?
6523
                    		        {
6524
                    		        	dbg.Location(671,8);
6525
                    		        	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_atomExpression3072);
6526
                    		        	dbg.Location(671,18);
6527
                    		        	PushFollow(FOLLOW_expression_in_atomExpression3076);
6528
                    		        	e = expression();
6529
                    		        	state.followingStackPointer--;
6530
6531
                    		        	dbg.Location(671,30);
6532
                    		        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_atomExpression3078);
6533
                    		        	dbg.Location(672,8);
6534
                    		        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:672:8: ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[e] )? | e= accessExpression[e] )?
6535
                    		        	int alt74 = 3;
6536
                    		        	try { dbg.EnterSubRule(74);
6537
                    		        	try { dbg.EnterDecision(74);
6538
6539
                    		        	try
6540
                    		        	{
6541
                    		        	    isCyclicDecision = true;
6542
                    		        	    alt74 = dfa74.Predict(input);
6543
                    		        	}
6544
                    		        	catch (NoViableAltException nvae)
6545
                    		        	{
6546
                    		        	    dbg.RecognitionException(nvae);
6547
                    		        	    throw nvae;
6548
                    		        	}
6549
                    		        	} finally { dbg.ExitDecision(74); }
6550
6551
                    		        	switch (alt74)
6552
                    		        	{
6553
                    		        	    case 1 :
6554
                    		        	        dbg.EnterAlt(1);
6555
6556
                    		        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:673:6: ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[e] )?
6557
                    		        	        {
6558
                    		        	        	dbg.Location(673,6);
6559
                    		        	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:673:6: ( T_POINT idn= T_IDENTIFIER )+
6560
                    		        	        	int cnt72 = 0;
6561
                    		        	        	try { dbg.EnterSubRule(72);
6562
6563
                    		        	        	do
6564
                    		        	        	{
6565
                    		        	        	    int alt72 = 2;
6566
                    		        	        	    try { dbg.EnterDecision(72);
6567
6568
                    		        	        	    try
6569
                    		        	        	    {
6570
                    		        	        	        isCyclicDecision = true;
6571
                    		        	        	        alt72 = dfa72.Predict(input);
6572
                    		        	        	    }
6573
                    		        	        	    catch (NoViableAltException nvae)
6574
                    		        	        	    {
6575
                    		        	        	        dbg.RecognitionException(nvae);
6576
                    		        	        	        throw nvae;
6577
                    		        	        	    }
6578
                    		        	        	    } finally { dbg.ExitDecision(72); }
6579
6580
                    		        	        	    switch (alt72)
6581
                    		        	        		{
6582
                    		        	        			case 1 :
6583
                    		        	        			    dbg.EnterAlt(1);
6584
6585
                    		        	        			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:673:7: T_POINT idn= T_IDENTIFIER
6586
                    		        	        			    {
6587
                    		        	        			    	dbg.Location(673,7);
6588
                    		        	        			    	Match(input,T_POINT,FOLLOW_T_POINT_in_atomExpression3101);
6589
                    		        	        			    	dbg.Location(674,11);
6590
                    		        	        			    	idn=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_atomExpression3113);
6591
                    		        	        			    	dbg.Location(675,8);
6592
                    		        	        			    	e = addIdentifierAccessExpression(e,idn);
6593
6594
                    		        	        			    }
6595
                    		        	        			    break;
6596
6597
                    		        	        			default:
6598
                    		        	        			    if ( cnt72 >= 1 ) goto loop72;
6599
                    		        	        		            EarlyExitException eee72 =
6600
                    		        	        		                new EarlyExitException(72, input);
6601
                    		        	        		            dbg.RecognitionException(eee72);
6602
6603
                    		        	        		            throw eee72;
6604
                    		        	        	    }
6605
                    		        	        	    cnt72++;
6606
                    		        	        	} while (true);
6607
6608
                    		        	        	loop72:
6609
                    		        	        		;	// Stops C# compiler whining that label 'loop72' has no statements
6610
                    		        	        	} finally { dbg.ExitSubRule(72); }
6611
6612
                    		        	        	dbg.Location(676,8);
6613
                    		        	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:676:8: (res= accessExpression[e] )?
6614
                    		        	        	int alt73 = 2;
6615
                    		        	        	try { dbg.EnterSubRule(73);
6616
                    		        	        	try { dbg.EnterDecision(73);
6617
6618
                    		        	        	try
6619
                    		        	        	{
6620
                    		        	        	    isCyclicDecision = true;
6621
                    		        	        	    alt73 = dfa73.Predict(input);
6622
                    		        	        	}
6623
                    		        	        	catch (NoViableAltException nvae)
6624
                    		        	        	{
6625
                    		        	        	    dbg.RecognitionException(nvae);
6626
                    		        	        	    throw nvae;
6627
                    		        	        	}
6628
                    		        	        	} finally { dbg.ExitDecision(73); }
6629
6630
                    		        	        	switch (alt73)
6631
                    		        	        	{
6632
                    		        	        	    case 1 :
6633
                    		        	        	        dbg.EnterAlt(1);
6634
6635
                    		        	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:676:9: res= accessExpression[e]
6636
                    		        	        	        {
6637
                    		        	        	        	dbg.Location(676,12);
6638
                    		        	        	        	PushFollow(FOLLOW_accessExpression_in_atomExpression3137);
6639
                    		        	        	        	res = accessExpression(e);
6640
                    		        	        	        	state.followingStackPointer--;
6641
6642
                    		        	        	        	dbg.Location(676,33);
6643
                    		        	        	        	e=res;
6644
6645
                    		        	        	        }
6646
                    		        	        	        break;
6647
6648
                    		        	        	}
6649
                    		        	        	} finally { dbg.ExitSubRule(73); }
6650
6651
6652
                    		        	        }
6653
                    		        	        break;
6654
                    		        	    case 2 :
6655
                    		        	        dbg.EnterAlt(2);
6656
6657
                    		        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:678:6: e= accessExpression[e]
6658
                    		        	        {
6659
                    		        	        	dbg.Location(678,7);
6660
                    		        	        	PushFollow(FOLLOW_accessExpression_in_atomExpression3157);
6661
                    		        	        	e = accessExpression(e);
6662
                    		        	        	state.followingStackPointer--;
6663
6664
6665
                    		        	        }
6666
                    		        	        break;
6667
6668
                    		        	}
6669
                    		        	} finally { dbg.ExitSubRule(74); }
6670
6671
6672
                    		        }
6673
                    		        break;
6674
6675
                    		}
6676
                    		} finally { dbg.ExitSubRule(75); }
6677
6678
                    		dbg.Location(680,5);
6679
                    		// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:680:5: ( 'as' cid= T_IDENTIFIER )?
6680
                    		int alt76 = 2;
6681
                    		try { dbg.EnterSubRule(76);
6682
                    		try { dbg.EnterDecision(76);
6683
6684
                    		try
6685
                    		{
6686
                    		    isCyclicDecision = true;
6687
                    		    alt76 = dfa76.Predict(input);
6688
                    		}
6689
                    		catch (NoViableAltException nvae)
6690
                    		{
6691
                    		    dbg.RecognitionException(nvae);
6692
                    		    throw nvae;
6693
                    		}
6694
                    		} finally { dbg.ExitDecision(76); }
6695
6696
                    		switch (alt76)
6697
                    		{
6698
                    		    case 1 :
6699
                    		        dbg.EnterAlt(1);
6700
6701
                    		        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:680:6: 'as' cid= T_IDENTIFIER
6702
                    		        {
6703
                    		        	dbg.Location(680,6);
6704
                    		        	Match(input,121,FOLLOW_121_in_atomExpression3176);
6705
                    		        	dbg.Location(680,14);
6706
                    		        	cid=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_atomExpression3180);
6707
                    		        	dbg.Location(680,28);
6708
                    		        	e=addCastExpression(e,cid);
6709
6710
                    		        }
6711
                    		        break;
6712
6713
                    		}
6714
                    		} finally { dbg.ExitSubRule(76); }
6715
6716
                    		dbg.Location(681,3);
6717
                    		expr = addUnaryExpression(unexpr,e);
6718
6719
                    	}
6720
6721
6722
                    }
6723
                    break;
6724
                case 2 :
6725
                    dbg.EnterAlt(2);
6726
6727
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:683:6: ie= T_IF ce= expression T_THEN te= expression T_ELSE ee= expression T_END
6728
                    {
6729
                    	dbg.Location(683,8);
6730
                    	ie=(IToken)Match(input,T_IF,FOLLOW_T_IF_in_atomExpression3201);
6731
                    	dbg.Location(683,16);
6732
                    	PushFollow(FOLLOW_expression_in_atomExpression3205);
6733
                    	ce = expression();
6734
                    	state.followingStackPointer--;
6735
6736
                    	dbg.Location(683,28);
6737
                    	Match(input,T_THEN,FOLLOW_T_THEN_in_atomExpression3207);
6738
                    	dbg.Location(683,37);
6739
                    	PushFollow(FOLLOW_expression_in_atomExpression3211);
6740
                    	te = expression();
6741
                    	state.followingStackPointer--;
6742
6743
                    	dbg.Location(683,49);
6744
                    	Match(input,T_ELSE,FOLLOW_T_ELSE_in_atomExpression3213);
6745
                    	dbg.Location(683,58);
6746
                    	PushFollow(FOLLOW_expression_in_atomExpression3217);
6747
                    	ee = expression();
6748
                    	state.followingStackPointer--;
6749
6750
                    	dbg.Location(683,70);
6751
                    	Match(input,T_END,FOLLOW_T_END_in_atomExpression3219);
6752
                    	dbg.Location(684,3);
6753
                    	expr = createConditionalExpression(ce,te,ee,ie);
6754
6755
                    }
6756
                    break;
6757
6758
            }
6759
        }
6760
        catch (RecognitionException re)
6761
    	{
6762
            ReportError(re);
6763
            Recover(input,re);
6764
        }
6765
        finally
6766
    	{
6767
        }
6768
        dbg.Location(685, 2);
6769
6770
        }
6771
        finally {
6772
            dbg.ExitRule(GrammarFileName, "atomExpression");
6773
            DecRuleLevel();
6774
            if ( RuleLevel==0 ) {dbg.Terminate();}
6775
        }
6776
6777
        return expr;
6778
    }
6779
    // $ANTLR end "atomExpression"
6780
6781
6782
    // $ANTLR start "quantifierExpression"
6783
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:688: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 ;
6784
    public Quantifier quantifierExpression() // throws RecognitionException [1]
6785
    {
6786
        Quantifier result = default(Quantifier);
6787
6788
        IToken t = null;
6789
        IToken id = null;
6790
        IToken id2 = null;
6791
        UlyssesType id_type = default(UlyssesType);
6792
6793
        UlyssesType id_type2 = default(UlyssesType);
6794
6795
        Expression e = default(Expression);
6796
6797
6798
6799
        		result = null;
6800
6801
        try {
6802
        	dbg.EnterRule(GrammarFileName, "quantifierExpression");
6803
        	if ( RuleLevel==0 ) {dbg.Commence();}
6804
        	IncRuleLevel();
6805
        	dbg.Location(688, 1);
6806
6807
        try
6808
    	{
6809
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:693: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 )
6810
            dbg.EnterAlt(1);
6811
6812
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:693: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
6813
            {
6814
            	dbg.Location(693,6);
6815
            	t = (IToken)input.LT(1);
6816
            	if ( (input.LA(1) >= T_FORALL && input.LA(1) <= T_EXISTS) )
6817
            	{
6818
            	    input.Consume();
6819
            	    state.errorRecovery = false;
6820
            	}
6821
            	else
6822
            	{
6823
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
6824
            	    dbg.RecognitionException(mse);
6825
            	    throw mse;
6826
            	}
6827
6828
            	dbg.Location(694,3);
6829
            	result = createQuantifierExpression(t);
6830
            	dbg.Location(695,3);
6831
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:695:3: (id= T_IDENTIFIER ( T_COLON id_type= simpleType ) ( T_COMMA id2= T_IDENTIFIER ( T_COLON id_type2= simpleType ) )* )
6832
            	dbg.EnterAlt(1);
6833
6834
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:695:4: id= T_IDENTIFIER ( T_COLON id_type= simpleType ) ( T_COMMA id2= T_IDENTIFIER ( T_COLON id_type2= simpleType ) )*
6835
            	{
6836
            		dbg.Location(695,6);
6837
            		id=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_quantifierExpression3268);
6838
            		dbg.Location(695,20);
6839
            		// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:695:20: ( T_COLON id_type= simpleType )
6840
            		dbg.EnterAlt(1);
6841
6842
            		// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:695:21: T_COLON id_type= simpleType
6843
            		{
6844
            			dbg.Location(695,21);
6845
            			Match(input,T_COLON,FOLLOW_T_COLON_in_quantifierExpression3271);
6846
            			dbg.Location(695,36);
6847
            			PushFollow(FOLLOW_simpleType_in_quantifierExpression3275);
6848
            			id_type = simpleType();
6849
            			state.followingStackPointer--;
6850
6851
            			dbg.Location(695,48);
6852
            			addBoundVarToQuantifierExpression(result,id,id_type);
6853
6854
            		}
6855
6856
            		dbg.Location(696,5);
6857
            		// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:696:5: ( T_COMMA id2= T_IDENTIFIER ( T_COLON id_type2= simpleType ) )*
6858
            		try { dbg.EnterSubRule(78);
6859
6860
            		do
6861
            		{
6862
            		    int alt78 = 2;
6863
            		    try { dbg.EnterDecision(78);
6864
6865
            		    int LA78_0 = input.LA(1);
6866
6867
            		    if ( (LA78_0 == T_COMMA) )
6868
            		    {
6869
            		        alt78 = 1;
6870
            		    }
6871
6872
6873
            		    } finally { dbg.ExitDecision(78); }
6874
6875
            		    switch (alt78)
6876
            			{
6877
            				case 1 :
6878
            				    dbg.EnterAlt(1);
6879
6880
            				    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:696:6: T_COMMA id2= T_IDENTIFIER ( T_COLON id_type2= simpleType )
6881
            				    {
6882
            				    	dbg.Location(696,6);
6883
            				    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_quantifierExpression3286);
6884
            				    	dbg.Location(696,17);
6885
            				    	id2=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_quantifierExpression3290);
6886
            				    	dbg.Location(696,31);
6887
            				    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:696:31: ( T_COLON id_type2= simpleType )
6888
            				    	dbg.EnterAlt(1);
6889
6890
            				    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:696:32: T_COLON id_type2= simpleType
6891
            				    	{
6892
            				    		dbg.Location(696,32);
6893
            				    		Match(input,T_COLON,FOLLOW_T_COLON_in_quantifierExpression3293);
6894
            				    		dbg.Location(696,48);
6895
            				    		PushFollow(FOLLOW_simpleType_in_quantifierExpression3297);
6896
            				    		id_type2 = simpleType();
6897
            				    		state.followingStackPointer--;
6898
6899
6900
            				    	}
6901
6902
            				    	dbg.Location(696,60);
6903
            				    	addBoundVarToQuantifierExpression(result,id2,id_type2);
6904
6905
            				    }
6906
            				    break;
6907
6908
            				default:
6909
            				    goto loop78;
6910
            		    }
6911
            		} while (true);
6912
6913
            		loop78:
6914
            			;	// Stops C# compiler whining that label 'loop78' has no statements
6915
            		} finally { dbg.ExitSubRule(78); }
6916
6917
6918
            	}
6919
6920
            	dbg.Location(697,3);
6921
            	Match(input,T_COLON,FOLLOW_T_COLON_in_quantifierExpression3307);
6922
            	dbg.Location(697,11);
6923
            	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_quantifierExpression3309);
6924
            	dbg.Location(697,21);
6925
            	PushFollow(FOLLOW_expression_in_quantifierExpression3313);
6926
            	e = expression();
6927
            	state.followingStackPointer--;
6928
6929
            	dbg.Location(697,33);
6930
            	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_quantifierExpression3315);
6931
            	dbg.Location(698,3);
6932
            	addExpressionToQuantifier(result,e);
6933
6934
            }
6935
6936
        }
6937
        catch (RecognitionException re)
6938
    	{
6939
            ReportError(re);
6940
            Recover(input,re);
6941
        }
6942
        finally
6943
    	{
6944
            removeBoundVarsFromResolveStack(result);
6945
        }
6946
        dbg.Location(699, 2);
6947
6948
        }
6949
        finally {
6950
            dbg.ExitRule(GrammarFileName, "quantifierExpression");
6951
            DecRuleLevel();
6952
            if ( RuleLevel==0 ) {dbg.Terminate();}
6953
        }
6954
6955
        return result;
6956
    }
6957
    // $ANTLR end "quantifierExpression"
6958
6959
6960
    // $ANTLR start "constant"
6961
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:703: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 );
6962
    public LeafExpression constant() // throws RecognitionException [1]
6963
    {
6964
        LeafExpression result = default(LeafExpression);
6965
6966
        IToken t_fl = null;
6967
        IToken t_in = null;
6968
        IToken t_l = null;
6969
6970
6971
        		result = null;
6972
6973
        try {
6974
        	dbg.EnterRule(GrammarFileName, "constant");
6975
        	if ( RuleLevel==0 ) {dbg.Commence();}
6976
        	IncRuleLevel();
6977
        	dbg.Location(703, 1);
6978
6979
        try
6980
    	{
6981
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:708:2: ( T_TRUE | T_FALSE | T_NIL | T_SELF | t_fl= T_FLOATNUMBER | t_in= T_INTNUMBER | t_l= T_STRINGLITERAL )
6982
            int alt79 = 7;
6983
            try { dbg.EnterDecision(79);
6984
6985
            switch ( input.LA(1) )
6986
            {
6987
            case T_TRUE:
6988
            	{
6989
                alt79 = 1;
6990
                }
6991
                break;
6992
            case T_FALSE:
6993
            	{
6994
                alt79 = 2;
6995
                }
6996
                break;
6997
            case T_NIL:
6998
            	{
6999
                alt79 = 3;
7000
                }
7001
                break;
7002
            case T_SELF:
7003
            	{
7004
                alt79 = 4;
7005
                }
7006
                break;
7007
            case T_FLOATNUMBER:
7008
            	{
7009
                alt79 = 5;
7010
                }
7011
                break;
7012
            case T_INTNUMBER:
7013
            	{
7014
                alt79 = 6;
7015
                }
7016
                break;
7017
            case T_STRINGLITERAL:
7018
            	{
7019
                alt79 = 7;
7020
                }
7021
                break;
7022
            	default:
7023
            	    NoViableAltException nvae_d79s0 =
7024
            	        new NoViableAltException("", 79, 0, input);
7025
7026
            	    dbg.RecognitionException(nvae_d79s0);
7027
            	    throw nvae_d79s0;
7028
            }
7029
7030
            } finally { dbg.ExitDecision(79); }
7031
7032
            switch (alt79)
7033
            {
7034
                case 1 :
7035
                    dbg.EnterAlt(1);
7036
7037
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:708:5: T_TRUE
7038
                    {
7039
                    	dbg.Location(708,5);
7040
                    	Match(input,T_TRUE,FOLLOW_T_TRUE_in_constant3349);
7041
                    	dbg.Location(708,13);
7042
                    	result = createBoolConstant(true);
7043
7044
                    }
7045
                    break;
7046
                case 2 :
7047
                    dbg.EnterAlt(2);
7048
7049
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:709:4: T_FALSE
7050
                    {
7051
                    	dbg.Location(709,4);
7052
                    	Match(input,T_FALSE,FOLLOW_T_FALSE_in_constant3357);
7053
                    	dbg.Location(709,12);
7054
                    	result = createBoolConstant(false);
7055
7056
                    }
7057
                    break;
7058
                case 3 :
7059
                    dbg.EnterAlt(3);
7060
7061
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:710:4: T_NIL
7062
                    {
7063
                    	dbg.Location(710,4);
7064
                    	Match(input,T_NIL,FOLLOW_T_NIL_in_constant3364);
7065
                    	dbg.Location(710,11);
7066
                    	result = createNullPointerConstant();
7067
7068
                    }
7069
                    break;
7070
                case 4 :
7071
                    dbg.EnterAlt(4);
7072
7073
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:711:4: T_SELF
7074
                    {
7075
                    	dbg.Location(711,4);
7076
                    	Match(input,T_SELF,FOLLOW_T_SELF_in_constant3372);
7077
                    	dbg.Location(711,12);
7078
                    	result = createSelfPointer();
7079
7080
                    }
7081
                    break;
7082
                case 5 :
7083
                    dbg.EnterAlt(5);
7084
7085
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:712:5: t_fl= T_FLOATNUMBER
7086
                    {
7087
                    	dbg.Location(712,9);
7088
                    	t_fl=(IToken)Match(input,T_FLOATNUMBER,FOLLOW_T_FLOATNUMBER_in_constant3383);
7089
                    	dbg.Location(712,24);
7090
                    	result = createFloatConstant(t_fl);
7091
7092
                    }
7093
                    break;
7094
                case 6 :
7095
                    dbg.EnterAlt(6);
7096
7097
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:713:4: t_in= T_INTNUMBER
7098
                    {
7099
                    	dbg.Location(713,8);
7100
                    	t_in=(IToken)Match(input,T_INTNUMBER,FOLLOW_T_INTNUMBER_in_constant3392);
7101
                    	dbg.Location(713,21);
7102
                    	result = createIntConstant(t_in);
7103
7104
                    }
7105
                    break;
7106
                case 7 :
7107
                    dbg.EnterAlt(7);
7108
7109
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:714:4: t_l= T_STRINGLITERAL
7110
                    {
7111
                    	dbg.Location(714,7);
7112
                    	t_l=(IToken)Match(input,T_STRINGLITERAL,FOLLOW_T_STRINGLITERAL_in_constant3401);
7113
                    	dbg.Location(714,24);
7114
                    	result = createStringConstant(t_l);
7115
7116
                    }
7117
                    break;
7118
7119
            }
7120
        }
7121
        catch (RecognitionException re)
7122
    	{
7123
            ReportError(re);
7124
            Recover(input,re);
7125
        }
7126
        finally
7127
    	{
7128
        }
7129
        dbg.Location(715, 2);
7130
7131
        }
7132
        finally {
7133
            dbg.ExitRule(GrammarFileName, "constant");
7134
            DecRuleLevel();
7135
            if ( RuleLevel==0 ) {dbg.Terminate();}
7136
        }
7137
7138
        return result;
7139
    }
7140
    // $ANTLR end "constant"
7141
7142
7143
    // $ANTLR start "initializedComplexType"
7144
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:717: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 ) );
7145
    public Expression initializedComplexType() // throws RecognitionException [1]
7146
    {
7147
        Expression result = default(Expression);
7148
7149
        IToken anid = null;
7150
        IToken aname = null;
7151
        Expression res = default(Expression);
7152
7153
7154
7155
        		result = null;
7156
7157
        try {
7158
        	dbg.EnterRule(GrammarFileName, "initializedComplexType");
7159
        	if ( RuleLevel==0 ) {dbg.Commence();}
7160
        	IncRuleLevel();
7161
        	dbg.Location(717, 1);
7162
7163
        try
7164
    	{
7165
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:722:2: (res= initializedListType | res= initializedSetType | T_NEW T_LPAREN anid= T_IDENTIFIER ( T_COMMA aname= T_STRINGLITERAL T_RPAREN | T_RPAREN ) )
7166
            int alt81 = 3;
7167
            try { dbg.EnterDecision(81);
7168
7169
            switch ( input.LA(1) )
7170
            {
7171
            case T_LSQPAREN:
7172
            	{
7173
                alt81 = 1;
7174
                }
7175
                break;
7176
            case T_CBRL:
7177
            	{
7178
                alt81 = 2;
7179
                }
7180
                break;
7181
            case T_NEW:
7182
            	{
7183
                alt81 = 3;
7184
                }
7185
                break;
7186
            	default:
7187
            	    NoViableAltException nvae_d81s0 =
7188
            	        new NoViableAltException("", 81, 0, input);
7189
7190
            	    dbg.RecognitionException(nvae_d81s0);
7191
            	    throw nvae_d81s0;
7192
            }
7193
7194
            } finally { dbg.ExitDecision(81); }
7195
7196
            switch (alt81)
7197
            {
7198
                case 1 :
7199
                    dbg.EnterAlt(1);
7200
7201
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:722:4: res= initializedListType
7202
                    {
7203
                    	dbg.Location(722,7);
7204
                    	PushFollow(FOLLOW_initializedListType_in_initializedComplexType3428);
7205
                    	res = initializedListType();
7206
                    	state.followingStackPointer--;
7207
7208
                    	dbg.Location(722,28);
7209
                    	result = res;
7210
7211
                    }
7212
                    break;
7213
                case 2 :
7214
                    dbg.EnterAlt(2);
7215
7216
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:723:4: res= initializedSetType
7217
                    {
7218
                    	dbg.Location(723,7);
7219
                    	PushFollow(FOLLOW_initializedSetType_in_initializedComplexType3437);
7220
                    	res = initializedSetType();
7221
                    	state.followingStackPointer--;
7222
7223
                    	dbg.Location(723,27);
7224
                    	result = res;
7225
7226
                    }
7227
                    break;
7228
                case 3 :
7229
                    dbg.EnterAlt(3);
7230
7231
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:724:5: T_NEW T_LPAREN anid= T_IDENTIFIER ( T_COMMA aname= T_STRINGLITERAL T_RPAREN | T_RPAREN )
7232
                    {
7233
                    	dbg.Location(724,5);
7234
                    	Match(input,T_NEW,FOLLOW_T_NEW_in_initializedComplexType3445);
7235
                    	dbg.Location(724,11);
7236
                    	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_initializedComplexType3447);
7237
                    	dbg.Location(724,24);
7238
                    	anid=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_initializedComplexType3451);
7239
                    	dbg.Location(725,4);
7240
                    	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:725:4: ( T_COMMA aname= T_STRINGLITERAL T_RPAREN | T_RPAREN )
7241
                    	int alt80 = 2;
7242
                    	try { dbg.EnterSubRule(80);
7243
                    	try { dbg.EnterDecision(80);
7244
7245
                    	int LA80_0 = input.LA(1);
7246
7247
                    	if ( (LA80_0 == T_COMMA) )
7248
                    	{
7249
                    	    alt80 = 1;
7250
                    	}
7251
                    	else if ( (LA80_0 == T_RPAREN) )
7252
                    	{
7253
                    	    alt80 = 2;
7254
                    	}
7255
                    	else
7256
                    	{
7257
                    	    NoViableAltException nvae_d80s0 =
7258
                    	        new NoViableAltException("", 80, 0, input);
7259
7260
                    	    dbg.RecognitionException(nvae_d80s0);
7261
                    	    throw nvae_d80s0;
7262
                    	}
7263
                    	} finally { dbg.ExitDecision(80); }
7264
7265
                    	switch (alt80)
7266
                    	{
7267
                    	    case 1 :
7268
                    	        dbg.EnterAlt(1);
7269
7270
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:726:5: T_COMMA aname= T_STRINGLITERAL T_RPAREN
7271
                    	        {
7272
                    	        	dbg.Location(726,5);
7273
                    	        	Match(input,T_COMMA,FOLLOW_T_COMMA_in_initializedComplexType3463);
7274
                    	        	dbg.Location(726,19);
7275
                    	        	aname=(IToken)Match(input,T_STRINGLITERAL,FOLLOW_T_STRINGLITERAL_in_initializedComplexType3468);
7276
                    	        	dbg.Location(726,36);
7277
                    	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_initializedComplexType3470);
7278
                    	        	dbg.Location(726,45);
7279
                    	        	result = createNamedObject(anid, aname);
7280
7281
                    	        }
7282
                    	        break;
7283
                    	    case 2 :
7284
                    	        dbg.EnterAlt(2);
7285
7286
                    	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:727:6: T_RPAREN
7287
                    	        {
7288
                    	        	dbg.Location(727,6);
7289
                    	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_initializedComplexType3479);
7290
                    	        	dbg.Location(727,15);
7291
                    	        	result = createObject(anid);
7292
7293
                    	        }
7294
                    	        break;
7295
7296
                    	}
7297
                    	} finally { dbg.ExitSubRule(80); }
7298
7299
7300
                    }
7301
                    break;
7302
7303
            }
7304
        }
7305
        catch (RecognitionException re)
7306
    	{
7307
            ReportError(re);
7308
            Recover(input,re);
7309
        }
7310
        finally
7311
    	{
7312
        }
7313
        dbg.Location(729, 2);
7314
7315
        }
7316
        finally {
7317
            dbg.ExitRule(GrammarFileName, "initializedComplexType");
7318
            DecRuleLevel();
7319
            if ( RuleLevel==0 ) {dbg.Terminate();}
7320
        }
7321
7322
        return result;
7323
    }
7324
    // $ANTLR end "initializedComplexType"
7325
7326
7327
    // $ANTLR start "initializedListType"
7328
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:731:1: initializedListType returns [ListConstructor result] : T_LSQPAREN e= expression ( ( T_COMMA e2= expression )+ | listComprehension[result] )? T_RSQPAREN ;
7329
    public ListConstructor initializedListType() // throws RecognitionException [1]
7330
    {
7331
        ListConstructor result = default(ListConstructor);
7332
7333
        Expression e = default(Expression);
7334
7335
        Expression e2 = default(Expression);
7336
7337
7338
7339
        		result = createInitializedList();
7340
        		pushListVarsOnResolveStack(result); // need this here for list comprehension
7341
7342
        try {
7343
        	dbg.EnterRule(GrammarFileName, "initializedListType");
7344
        	if ( RuleLevel==0 ) {dbg.Commence();}
7345
        	IncRuleLevel();
7346
        	dbg.Location(731, 1);
7347
7348
        try
7349
    	{
7350
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:737:2: ( T_LSQPAREN e= expression ( ( T_COMMA e2= expression )+ | listComprehension[result] )? T_RSQPAREN )
7351
            dbg.EnterAlt(1);
7352
7353
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:737:4: T_LSQPAREN e= expression ( ( T_COMMA e2= expression )+ | listComprehension[result] )? T_RSQPAREN
7354
            {
7355
            	dbg.Location(737,4);
7356
            	Match(input,T_LSQPAREN,FOLLOW_T_LSQPAREN_in_initializedListType3510);
7357
            	dbg.Location(737,16);
7358
            	PushFollow(FOLLOW_expression_in_initializedListType3514);
7359
            	e = expression();
7360
            	state.followingStackPointer--;
7361
7362
            	dbg.Location(737,28);
7363
            	addListElement(result,e);
7364
            	dbg.Location(737,56);
7365
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:737:56: ( ( T_COMMA e2= expression )+ | listComprehension[result] )?
7366
            	int alt83 = 3;
7367
            	try { dbg.EnterSubRule(83);
7368
            	try { dbg.EnterDecision(83);
7369
7370
            	int LA83_0 = input.LA(1);
7371
7372
            	if ( (LA83_0 == T_COMMA) )
7373
            	{
7374
            	    alt83 = 1;
7375
            	}
7376
            	else if ( (LA83_0 == T_BAR) )
7377
            	{
7378
            	    alt83 = 2;
7379
            	}
7380
            	} finally { dbg.ExitDecision(83); }
7381
7382
            	switch (alt83)
7383
            	{
7384
            	    case 1 :
7385
            	        dbg.EnterAlt(1);
7386
7387
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:738:4: ( T_COMMA e2= expression )+
7388
            	        {
7389
            	        	dbg.Location(738,4);
7390
            	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:738:4: ( T_COMMA e2= expression )+
7391
            	        	int cnt82 = 0;
7392
            	        	try { dbg.EnterSubRule(82);
7393
7394
            	        	do
7395
            	        	{
7396
            	        	    int alt82 = 2;
7397
            	        	    try { dbg.EnterDecision(82);
7398
7399
            	        	    int LA82_0 = input.LA(1);
7400
7401
            	        	    if ( (LA82_0 == T_COMMA) )
7402
            	        	    {
7403
            	        	        alt82 = 1;
7404
            	        	    }
7405
7406
7407
            	        	    } finally { dbg.ExitDecision(82); }
7408
7409
            	        	    switch (alt82)
7410
            	        		{
7411
            	        			case 1 :
7412
            	        			    dbg.EnterAlt(1);
7413
7414
            	        			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:738:5: T_COMMA e2= expression
7415
            	        			    {
7416
            	        			    	dbg.Location(738,5);
7417
            	        			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_initializedListType3525);
7418
            	        			    	dbg.Location(738,15);
7419
            	        			    	PushFollow(FOLLOW_expression_in_initializedListType3529);
7420
            	        			    	e2 = expression();
7421
            	        			    	state.followingStackPointer--;
7422
7423
            	        			    	dbg.Location(738,27);
7424
            	        			    	addListElement(result,e2);
7425
7426
            	        			    }
7427
            	        			    break;
7428
7429
            	        			default:
7430
            	        			    if ( cnt82 >= 1 ) goto loop82;
7431
            	        		            EarlyExitException eee82 =
7432
            	        		                new EarlyExitException(82, input);
7433
            	        		            dbg.RecognitionException(eee82);
7434
7435
            	        		            throw eee82;
7436
            	        	    }
7437
            	        	    cnt82++;
7438
            	        	} while (true);
7439
7440
            	        	loop82:
7441
            	        		;	// Stops C# compiler whining that label 'loop82' has no statements
7442
            	        	} finally { dbg.ExitSubRule(82); }
7443
7444
7445
            	        }
7446
            	        break;
7447
            	    case 2 :
7448
            	        dbg.EnterAlt(2);
7449
7450
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:739:6: listComprehension[result]
7451
            	        {
7452
            	        	dbg.Location(739,6);
7453
            	        	PushFollow(FOLLOW_listComprehension_in_initializedListType3541);
7454
            	        	listComprehension(result);
7455
            	        	state.followingStackPointer--;
7456
7457
7458
            	        }
7459
            	        break;
7460
7461
            	}
7462
            	} finally { dbg.ExitSubRule(83); }
7463
7464
            	dbg.Location(740,6);
7465
            	Match(input,T_RSQPAREN,FOLLOW_T_RSQPAREN_in_initializedListType3549);
7466
7467
            }
7468
7469
        }
7470
        catch (RecognitionException re)
7471
    	{
7472
            ReportError(re);
7473
            Recover(input,re);
7474
        }
7475
        finally
7476
    	{
7477
            popListVarsFromResolveStack(result);
7478
        }
7479
        dbg.Location(741, 2);
7480
7481
        }
7482
        finally {
7483
            dbg.ExitRule(GrammarFileName, "initializedListType");
7484
            DecRuleLevel();
7485
            if ( RuleLevel==0 ) {dbg.Terminate();}
7486
        }
7487
7488
        return result;
7489
    }
7490
    // $ANTLR end "initializedListType"
7491
7492
7493
    // $ANTLR start "listComprehension"
7494
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:745:1: listComprehension[ListConstructor result] : T_BAR T_VAR id= T_IDENTIFIER T_COLON t1= complexType ( T_SEMICOLON id2= T_IDENTIFIER t2= complexType )* ( '&' e= expression )? ;
7495
    public void listComprehension(ListConstructor result) // throws RecognitionException [1]
7496
    {
7497
        IToken id = null;
7498
        IToken id2 = null;
7499
        UlyssesType t1 = default(UlyssesType);
7500
7501
        UlyssesType t2 = default(UlyssesType);
7502
7503
        Expression e = default(Expression);
7504
7505
7506
7507
        		result.SetHasComprehension(true);
7508
7509
        try {
7510
        	dbg.EnterRule(GrammarFileName, "listComprehension");
7511
        	if ( RuleLevel==0 ) {dbg.Commence();}
7512
        	IncRuleLevel();
7513
        	dbg.Location(745, 1);
7514
7515
        try
7516
    	{
7517
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:749:2: ( T_BAR T_VAR id= T_IDENTIFIER T_COLON t1= complexType ( T_SEMICOLON id2= T_IDENTIFIER t2= complexType )* ( '&' e= expression )? )
7518
            dbg.EnterAlt(1);
7519
7520
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:750:3: T_BAR T_VAR id= T_IDENTIFIER T_COLON t1= complexType ( T_SEMICOLON id2= T_IDENTIFIER t2= complexType )* ( '&' e= expression )?
7521
            {
7522
            	dbg.Location(750,3);
7523
            	Match(input,T_BAR,FOLLOW_T_BAR_in_listComprehension3580);
7524
            	dbg.Location(750,9);
7525
            	Match(input,T_VAR,FOLLOW_T_VAR_in_listComprehension3582);
7526
            	dbg.Location(751,5);
7527
            	id=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_listComprehension3588);
7528
            	dbg.Location(751,20);
7529
            	Match(input,T_COLON,FOLLOW_T_COLON_in_listComprehension3591);
7530
            	dbg.Location(751,30);
7531
            	PushFollow(FOLLOW_complexType_in_listComprehension3595);
7532
            	t1 = complexType();
7533
            	state.followingStackPointer--;
7534
7535
            	dbg.Location(751,43);
7536
            	addListComprVar(result,id,t1);
7537
            	dbg.Location(752,4);
7538
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:752:4: ( T_SEMICOLON id2= T_IDENTIFIER t2= complexType )*
7539
            	try { dbg.EnterSubRule(84);
7540
7541
            	do
7542
            	{
7543
            	    int alt84 = 2;
7544
            	    try { dbg.EnterDecision(84);
7545
7546
            	    int LA84_0 = input.LA(1);
7547
7548
            	    if ( (LA84_0 == T_SEMICOLON) )
7549
            	    {
7550
            	        alt84 = 1;
7551
            	    }
7552
7553
7554
            	    } finally { dbg.ExitDecision(84); }
7555
7556
            	    switch (alt84)
7557
            		{
7558
            			case 1 :
7559
            			    dbg.EnterAlt(1);
7560
7561
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:752:5: T_SEMICOLON id2= T_IDENTIFIER t2= complexType
7562
            			    {
7563
            			    	dbg.Location(752,5);
7564
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_listComprehension3604);
7565
            			    	dbg.Location(752,20);
7566
            			    	id2=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_listComprehension3608);
7567
            			    	dbg.Location(752,37);
7568
            			    	PushFollow(FOLLOW_complexType_in_listComprehension3613);
7569
            			    	t2 = complexType();
7570
            			    	state.followingStackPointer--;
7571
7572
            			    	dbg.Location(752,50);
7573
            			    	addListComprVar(result,id2,t2);
7574
7575
            			    }
7576
            			    break;
7577
7578
            			default:
7579
            			    goto loop84;
7580
            	    }
7581
            	} while (true);
7582
7583
            	loop84:
7584
            		;	// Stops C# compiler whining that label 'loop84' has no statements
7585
            	} finally { dbg.ExitSubRule(84); }
7586
7587
            	dbg.Location(753,3);
7588
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:753:3: ( '&' e= expression )?
7589
            	int alt85 = 2;
7590
            	try { dbg.EnterSubRule(85);
7591
            	try { dbg.EnterDecision(85);
7592
7593
            	int LA85_0 = input.LA(1);
7594
7595
            	if ( (LA85_0 == 120) )
7596
            	{
7597
            	    alt85 = 1;
7598
            	}
7599
            	} finally { dbg.ExitDecision(85); }
7600
7601
            	switch (alt85)
7602
            	{
7603
            	    case 1 :
7604
            	        dbg.EnterAlt(1);
7605
7606
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:753:4: '&' e= expression
7607
            	        {
7608
            	        	dbg.Location(753,4);
7609
            	        	Match(input,120,FOLLOW_120_in_listComprehension3623);
7610
            	        	dbg.Location(754,4);
7611
            	        	PushFollow(FOLLOW_expression_in_listComprehension3629);
7612
            	        	e = expression();
7613
            	        	state.followingStackPointer--;
7614
7615
            	        	dbg.Location(754,16);
7616
            	        	addListComprExpr(result,e);
7617
7618
            	        }
7619
            	        break;
7620
7621
            	}
7622
            	} finally { dbg.ExitSubRule(85); }
7623
7624
7625
            }
7626
7627
        }
7628
        catch (RecognitionException re)
7629
    	{
7630
            ReportError(re);
7631
            Recover(input,re);
7632
        }
7633
        finally
7634
    	{
7635
        }
7636
        dbg.Location(755, 2);
7637
7638
        }
7639
        finally {
7640
            dbg.ExitRule(GrammarFileName, "listComprehension");
7641
            DecRuleLevel();
7642
            if ( RuleLevel==0 ) {dbg.Terminate();}
7643
        }
7644
7645
        return ;
7646
    }
7647
    // $ANTLR end "listComprehension"
7648
7649
7650
    // $ANTLR start "initializedSetType"
7651
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:757:1: initializedSetType returns [Expression result] : ( T_CBRL T_MAPS T_CBRR | res= initializedSet );
7652
    public Expression initializedSetType() // throws RecognitionException [1]
7653
    {
7654
        Expression result = default(Expression);
7655
7656
        Expression res = default(Expression);
7657
7658
7659
7660
        		result = null;
7661
7662
        try {
7663
        	dbg.EnterRule(GrammarFileName, "initializedSetType");
7664
        	if ( RuleLevel==0 ) {dbg.Commence();}
7665
        	IncRuleLevel();
7666
        	dbg.Location(757, 1);
7667
7668
        try
7669
    	{
7670
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:762:2: ( T_CBRL T_MAPS T_CBRR | res= initializedSet )
7671
            int alt86 = 2;
7672
            try { dbg.EnterDecision(86);
7673
7674
            try
7675
            {
7676
                isCyclicDecision = true;
7677
                alt86 = dfa86.Predict(input);
7678
            }
7679
            catch (NoViableAltException nvae)
7680
            {
7681
                dbg.RecognitionException(nvae);
7682
                throw nvae;
7683
            }
7684
            } finally { dbg.ExitDecision(86); }
7685
7686
            switch (alt86)
7687
            {
7688
                case 1 :
7689
                    dbg.EnterAlt(1);
7690
7691
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:762:4: T_CBRL T_MAPS T_CBRR
7692
                    {
7693
                    	dbg.Location(762,4);
7694
                    	Match(input,T_CBRL,FOLLOW_T_CBRL_in_initializedSetType3655);
7695
                    	dbg.Location(762,11);
7696
                    	Match(input,T_MAPS,FOLLOW_T_MAPS_in_initializedSetType3657);
7697
                    	dbg.Location(762,18);
7698
                    	Match(input,T_CBRR,FOLLOW_T_CBRR_in_initializedSetType3659);
7699
                    	dbg.Location(762,25);
7700
                    	result = createEmptyMap();
7701
7702
                    }
7703
                    break;
7704
                case 2 :
7705
                    dbg.EnterAlt(2);
7706
7707
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:763:4: res= initializedSet
7708
                    {
7709
                    	dbg.Location(763,7);
7710
                    	PushFollow(FOLLOW_initializedSet_in_initializedSetType3670);
7711
                    	res = initializedSet();
7712
                    	state.followingStackPointer--;
7713
7714
                    	dbg.Location(763,23);
7715
                    	result = res;
7716
7717
                    }
7718
                    break;
7719
7720
            }
7721
        }
7722
        catch (RecognitionException re)
7723
    	{
7724
            ReportError(re);
7725
            Recover(input,re);
7726
        }
7727
        finally
7728
    	{
7729
        }
7730
        dbg.Location(764, 2);
7731
7732
        }
7733
        finally {
7734
            dbg.ExitRule(GrammarFileName, "initializedSetType");
7735
            DecRuleLevel();
7736
            if ( RuleLevel==0 ) {dbg.Terminate();}
7737
        }
7738
7739
        return result;
7740
    }
7741
    // $ANTLR end "initializedSetType"
7742
7743
7744
    // $ANTLR start "initializedSet"
7745
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:766:1: initializedSet returns [Expression result] : T_CBRL e1= expression ( ( T_COMMA e2= expression )+ | m= map[result, e1] | setComprehension[(SetConstructor)result] )? T_CBRR ;
7746
    public Expression initializedSet() // throws RecognitionException [1]
7747
    {
7748
        Expression result = default(Expression);
7749
7750
        Expression e1 = default(Expression);
7751
7752
        Expression e2 = default(Expression);
7753
7754
        Expression m = default(Expression);
7755
7756
7757
7758
        		SetConstructor theset = createSet();
7759
        		pushSetVarsOnResolveStack(theset); // need this here for set comprehension
7760
        		result = theset;
7761
7762
        try {
7763
        	dbg.EnterRule(GrammarFileName, "initializedSet");
7764
        	if ( RuleLevel==0 ) {dbg.Commence();}
7765
        	IncRuleLevel();
7766
        	dbg.Location(766, 1);
7767
7768
        try
7769
    	{
7770
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:773:2: ( T_CBRL e1= expression ( ( T_COMMA e2= expression )+ | m= map[result, e1] | setComprehension[(SetConstructor)result] )? T_CBRR )
7771
            dbg.EnterAlt(1);
7772
7773
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:773:4: T_CBRL e1= expression ( ( T_COMMA e2= expression )+ | m= map[result, e1] | setComprehension[(SetConstructor)result] )? T_CBRR
7774
            {
7775
            	dbg.Location(773,4);
7776
            	Match(input,T_CBRL,FOLLOW_T_CBRL_in_initializedSet3696);
7777
            	dbg.Location(773,13);
7778
            	PushFollow(FOLLOW_expression_in_initializedSet3700);
7779
            	e1 = expression();
7780
            	state.followingStackPointer--;
7781
7782
            	dbg.Location(774,10);
7783
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:774:10: ( ( T_COMMA e2= expression )+ | m= map[result, e1] | setComprehension[(SetConstructor)result] )?
7784
            	int alt88 = 4;
7785
            	try { dbg.EnterSubRule(88);
7786
            	try { dbg.EnterDecision(88);
7787
7788
            	switch ( input.LA(1) )
7789
            	{
7790
            	    case T_COMMA:
7791
            	    	{
7792
            	        alt88 = 1;
7793
            	        }
7794
            	        break;
7795
            	    case T_MAPS:
7796
            	    	{
7797
            	        alt88 = 2;
7798
            	        }
7799
            	        break;
7800
            	    case T_BAR:
7801
            	    	{
7802
            	        alt88 = 3;
7803
            	        }
7804
            	        break;
7805
            	}
7806
7807
            	} finally { dbg.ExitDecision(88); }
7808
7809
            	switch (alt88)
7810
            	{
7811
            	    case 1 :
7812
            	        dbg.EnterAlt(1);
7813
7814
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:775:4: ( T_COMMA e2= expression )+
7815
            	        {
7816
            	        	dbg.Location(775,4);
7817
            	        	addToSet(result,e1);
7818
            	        	dbg.Location(776,4);
7819
            	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:776:4: ( T_COMMA e2= expression )+
7820
            	        	int cnt87 = 0;
7821
            	        	try { dbg.EnterSubRule(87);
7822
7823
            	        	do
7824
            	        	{
7825
            	        	    int alt87 = 2;
7826
            	        	    try { dbg.EnterDecision(87);
7827
7828
            	        	    int LA87_0 = input.LA(1);
7829
7830
            	        	    if ( (LA87_0 == T_COMMA) )
7831
            	        	    {
7832
            	        	        alt87 = 1;
7833
            	        	    }
7834
7835
7836
            	        	    } finally { dbg.ExitDecision(87); }
7837
7838
            	        	    switch (alt87)
7839
            	        		{
7840
            	        			case 1 :
7841
            	        			    dbg.EnterAlt(1);
7842
7843
            	        			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:776:5: T_COMMA e2= expression
7844
            	        			    {
7845
            	        			    	dbg.Location(776,5);
7846
            	        			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_initializedSet3730);
7847
            	        			    	dbg.Location(776,15);
7848
            	        			    	PushFollow(FOLLOW_expression_in_initializedSet3734);
7849
            	        			    	e2 = expression();
7850
            	        			    	state.followingStackPointer--;
7851
7852
            	        			    	dbg.Location(776,27);
7853
            	        			    	addToSet(result,e2);
7854
7855
            	        			    }
7856
            	        			    break;
7857
7858
            	        			default:
7859
            	        			    if ( cnt87 >= 1 ) goto loop87;
7860
            	        		            EarlyExitException eee87 =
7861
            	        		                new EarlyExitException(87, input);
7862
            	        		            dbg.RecognitionException(eee87);
7863
7864
            	        		            throw eee87;
7865
            	        	    }
7866
            	        	    cnt87++;
7867
            	        	} while (true);
7868
7869
            	        	loop87:
7870
            	        		;	// Stops C# compiler whining that label 'loop87' has no statements
7871
            	        	} finally { dbg.ExitSubRule(87); }
7872
7873
7874
            	        }
7875
            	        break;
7876
            	    case 2 :
7877
            	        dbg.EnterAlt(2);
7878
7879
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:777:6: m= map[result, e1]
7880
            	        {
7881
            	        	dbg.Location(777,7);
7882
            	        	PushFollow(FOLLOW_map_in_initializedSet3752);
7883
            	        	m = map(result, e1);
7884
            	        	state.followingStackPointer--;
7885
7886
            	        	dbg.Location(777,24);
7887
            	        	result = m;
7888
7889
            	        }
7890
            	        break;
7891
            	    case 3 :
7892
            	        dbg.EnterAlt(3);
7893
7894
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:778:5: setComprehension[(SetConstructor)result]
7895
            	        {
7896
            	        	dbg.Location(778,5);
7897
            	        	addToSet(result,e1);
7898
            	        	dbg.Location(778,28);
7899
            	        	PushFollow(FOLLOW_setComprehension_in_initializedSet3765);
7900
            	        	setComprehension((SetConstructor)result);
7901
            	        	state.followingStackPointer--;
7902
7903
7904
            	        }
7905
            	        break;
7906
7907
            	}
7908
            	} finally { dbg.ExitSubRule(88); }
7909
7910
            	dbg.Location(779,6);
7911
            	Match(input,T_CBRR,FOLLOW_T_CBRR_in_initializedSet3776);
7912
7913
            }
7914
7915
        }
7916
        catch (RecognitionException re)
7917
    	{
7918
            ReportError(re);
7919
            Recover(input,re);
7920
        }
7921
        finally
7922
    	{
7923
            popSetVarsFromResolveStack(theset);
7924
        }
7925
        dbg.Location(780, 2);
7926
7927
        }
7928
        finally {
7929
            dbg.ExitRule(GrammarFileName, "initializedSet");
7930
            DecRuleLevel();
7931
            if ( RuleLevel==0 ) {dbg.Terminate();}
7932
        }
7933
7934
        return result;
7935
    }
7936
    // $ANTLR end "initializedSet"
7937
7938
7939
    // $ANTLR start "map"
7940
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:784:1: map[Expression _map, Expression e1] returns [Expression result] : am= T_MAPS e2= expression ( T_COMMA e3= expression T_MAPS e4= expression )* ;
7941
    public Expression map(Expression _map, Expression e1) // throws RecognitionException [1]
7942
    {
7943
        Expression result = default(Expression);
7944
7945
        IToken am = null;
7946
        Expression e2 = default(Expression);
7947
7948
        Expression e3 = default(Expression);
7949
7950
        Expression e4 = default(Expression);
7951
7952
7953
7954
        		result = null;
7955
7956
        try {
7957
        	dbg.EnterRule(GrammarFileName, "map");
7958
        	if ( RuleLevel==0 ) {dbg.Commence();}
7959
        	IncRuleLevel();
7960
        	dbg.Location(784, 1);
7961
7962
        try
7963
    	{
7964
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:789:2: (am= T_MAPS e2= expression ( T_COMMA e3= expression T_MAPS e4= expression )* )
7965
            dbg.EnterAlt(1);
7966
7967
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:789:4: am= T_MAPS e2= expression ( T_COMMA e3= expression T_MAPS e4= expression )*
7968
            {
7969
            	dbg.Location(789,6);
7970
            	am=(IToken)Match(input,T_MAPS,FOLLOW_T_MAPS_in_map3812);
7971
            	dbg.Location(789,16);
7972
            	PushFollow(FOLLOW_expression_in_map3816);
7973
            	e2 = expression();
7974
            	state.followingStackPointer--;
7975
7976
            	dbg.Location(789,29);
7977
            	result = createMap(e1,e2,am);
7978
            	dbg.Location(789,63);
7979
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:789:63: ( T_COMMA e3= expression T_MAPS e4= expression )*
7980
            	try { dbg.EnterSubRule(89);
7981
7982
            	do
7983
            	{
7984
            	    int alt89 = 2;
7985
            	    try { dbg.EnterDecision(89);
7986
7987
            	    int LA89_0 = input.LA(1);
7988
7989
            	    if ( (LA89_0 == T_COMMA) )
7990
            	    {
7991
            	        alt89 = 1;
7992
            	    }
7993
7994
7995
            	    } finally { dbg.ExitDecision(89); }
7996
7997
            	    switch (alt89)
7998
            		{
7999
            			case 1 :
8000
            			    dbg.EnterAlt(1);
8001
8002
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:789:64: T_COMMA e3= expression T_MAPS e4= expression
8003
            			    {
8004
            			    	dbg.Location(789,64);
8005
            			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_map3824);
8006
            			    	dbg.Location(789,74);
8007
            			    	PushFollow(FOLLOW_expression_in_map3828);
8008
            			    	e3 = expression();
8009
            			    	state.followingStackPointer--;
8010
8011
            			    	dbg.Location(789,86);
8012
            			    	Match(input,T_MAPS,FOLLOW_T_MAPS_in_map3830);
8013
            			    	dbg.Location(789,95);
8014
            			    	PushFollow(FOLLOW_expression_in_map3834);
8015
            			    	e4 = expression();
8016
            			    	state.followingStackPointer--;
8017
8018
            			    	dbg.Location(789,107);
8019
            			    	addToMap(result,e3,e4);
8020
8021
            			    }
8022
            			    break;
8023
8024
            			default:
8025
            			    goto loop89;
8026
            	    }
8027
            	} while (true);
8028
8029
            	loop89:
8030
            		;	// Stops C# compiler whining that label 'loop89' has no statements
8031
            	} finally { dbg.ExitSubRule(89); }
8032
8033
8034
            }
8035
8036
        }
8037
        catch (RecognitionException re)
8038
    	{
8039
            ReportError(re);
8040
            Recover(input,re);
8041
        }
8042
        finally
8043
    	{
8044
        }
8045
        dbg.Location(790, 2);
8046
8047
        }
8048
        finally {
8049
            dbg.ExitRule(GrammarFileName, "map");
8050
            DecRuleLevel();
8051
            if ( RuleLevel==0 ) {dbg.Terminate();}
8052
        }
8053
8054
        return result;
8055
    }
8056
    // $ANTLR end "map"
8057
8058
8059
    // $ANTLR start "setComprehension"
8060
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:792: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 )? ;
8061
    public void setComprehension(SetConstructor _set) // throws RecognitionException [1]
8062
    {
8063
        IToken id1 = null;
8064
        IToken id2 = null;
8065
        UlyssesType t1 = default(UlyssesType);
8066
8067
        UlyssesType t2 = default(UlyssesType);
8068
8069
        Expression epx = default(Expression);
8070
8071
8072
8073
        		_set.SetHasComprehension(true);
8074
8075
        try {
8076
        	dbg.EnterRule(GrammarFileName, "setComprehension");
8077
        	if ( RuleLevel==0 ) {dbg.Commence();}
8078
        	IncRuleLevel();
8079
        	dbg.Location(792, 1);
8080
8081
        try
8082
    	{
8083
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:796:2: ( T_BAR T_VAR (id1= T_IDENTIFIER T_COLON t1= complexType T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType )* ( '&' epx= expression )? )
8084
            dbg.EnterAlt(1);
8085
8086
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:796:4: T_BAR T_VAR (id1= T_IDENTIFIER T_COLON t1= complexType T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType )* ( '&' epx= expression )?
8087
            {
8088
            	dbg.Location(796,4);
8089
            	Match(input,T_BAR,FOLLOW_T_BAR_in_setComprehension3856);
8090
            	dbg.Location(796,10);
8091
            	Match(input,T_VAR,FOLLOW_T_VAR_in_setComprehension3858);
8092
            	dbg.Location(796,16);
8093
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:796:16: (id1= T_IDENTIFIER T_COLON t1= complexType T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType )*
8094
            	try { dbg.EnterSubRule(90);
8095
8096
            	do
8097
            	{
8098
            	    int alt90 = 2;
8099
            	    try { dbg.EnterDecision(90);
8100
8101
            	    int LA90_0 = input.LA(1);
8102
8103
            	    if ( (LA90_0 == T_IDENTIFIER) )
8104
            	    {
8105
            	        alt90 = 1;
8106
            	    }
8107
8108
8109
            	    } finally { dbg.ExitDecision(90); }
8110
8111
            	    switch (alt90)
8112
            		{
8113
            			case 1 :
8114
            			    dbg.EnterAlt(1);
8115
8116
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:796:17: id1= T_IDENTIFIER T_COLON t1= complexType T_SEMICOLON id2= T_IDENTIFIER T_COLON t2= complexType
8117
            			    {
8118
            			    	dbg.Location(796,20);
8119
            			    	id1=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_setComprehension3863);
8120
            			    	dbg.Location(796,35);
8121
            			    	Match(input,T_COLON,FOLLOW_T_COLON_in_setComprehension3866);
8122
            			    	dbg.Location(796,45);
8123
            			    	PushFollow(FOLLOW_complexType_in_setComprehension3870);
8124
            			    	t1 = complexType();
8125
            			    	state.followingStackPointer--;
8126
8127
            			    	dbg.Location(797,3);
8128
            			    	 addSetComprVar(_set, id1, t1);
8129
            			    	dbg.Location(798,3);
8130
            			    	Match(input,T_SEMICOLON,FOLLOW_T_SEMICOLON_in_setComprehension3879);
8131
            			    	dbg.Location(798,18);
8132
            			    	id2=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_setComprehension3883);
8133
            			    	dbg.Location(798,32);
8134
            			    	Match(input,T_COLON,FOLLOW_T_COLON_in_setComprehension3885);
8135
            			    	dbg.Location(798,42);
8136
            			    	PushFollow(FOLLOW_complexType_in_setComprehension3889);
8137
            			    	t2 = complexType();
8138
            			    	state.followingStackPointer--;
8139
8140
            			    	dbg.Location(799,4);
8141
            			    	 addSetComprVar(_set, id2, t2);
8142
8143
            			    }
8144
            			    break;
8145
8146
            			default:
8147
            			    goto loop90;
8148
            	    }
8149
            	} while (true);
8150
8151
            	loop90:
8152
            		;	// Stops C# compiler whining that label 'loop90' has no statements
8153
            	} finally { dbg.ExitSubRule(90); }
8154
8155
            	dbg.Location(800,3);
8156
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:800:3: ( '&' epx= expression )?
8157
            	int alt91 = 2;
8158
            	try { dbg.EnterSubRule(91);
8159
            	try { dbg.EnterDecision(91);
8160
8161
            	int LA91_0 = input.LA(1);
8162
8163
            	if ( (LA91_0 == 120) )
8164
            	{
8165
            	    alt91 = 1;
8166
            	}
8167
            	} finally { dbg.ExitDecision(91); }
8168
8169
            	switch (alt91)
8170
            	{
8171
            	    case 1 :
8172
            	        dbg.EnterAlt(1);
8173
8174
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:800:4: '&' epx= expression
8175
            	        {
8176
            	        	dbg.Location(800,4);
8177
            	        	Match(input,120,FOLLOW_120_in_setComprehension3903);
8178
            	        	dbg.Location(801,6);
8179
            	        	PushFollow(FOLLOW_expression_in_setComprehension3909);
8180
            	        	epx = expression();
8181
            	        	state.followingStackPointer--;
8182
8183
            	        	dbg.Location(802,3);
8184
            	        	 addSetComprExpr(_set,epx);
8185
8186
            	        }
8187
            	        break;
8188
8189
            	}
8190
            	} finally { dbg.ExitSubRule(91); }
8191
8192
8193
            }
8194
8195
        }
8196
        catch (RecognitionException re)
8197
    	{
8198
            ReportError(re);
8199
            Recover(input,re);
8200
        }
8201
        finally
8202
    	{
8203
        }
8204
        dbg.Location(803, 2);
8205
8206
        }
8207
        finally {
8208
            dbg.ExitRule(GrammarFileName, "setComprehension");
8209
            DecRuleLevel();
8210
            if ( RuleLevel==0 ) {dbg.Terminate();}
8211
        }
8212
8213
        return ;
8214
    }
8215
    // $ANTLR end "setComprehension"
8216
8217
8218
    // $ANTLR start "qvalExpression"
8219
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:806: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 ;
8220
    public QValConstructor qvalExpression() // throws RecognitionException [1]
8221
    {
8222
        QValConstructor result = default(QValConstructor);
8223
8224
        IToken aval = null;
8225
        Expression expr = default(Expression);
8226
8227
        Expression expr2 = default(Expression);
8228
8229
8230
8231
        		bool minus = false;
8232
        		result = null;
8233
8234
        try {
8235
        	dbg.EnterRule(GrammarFileName, "qvalExpression");
8236
        	if ( RuleLevel==0 ) {dbg.Commence();}
8237
        	IncRuleLevel();
8238
        	dbg.Location(806, 1);
8239
8240
        try
8241
    	{
8242
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:812: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 )
8243
            dbg.EnterAlt(1);
8244
8245
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:813: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
8246
            {
8247
            	dbg.Location(813,7);
8248
            	aval=(IToken)Match(input,122,FOLLOW_122_in_qvalExpression3944);
8249
            	dbg.Location(813,15);
8250
            	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_qvalExpression3946);
8251
            	dbg.Location(814,3);
8252
            	result = createQualitativeValue(aval);
8253
            	dbg.Location(815,3);
8254
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:815:3: ( T_NIL | (expr= qualifiedIdentifier | ( '-' )? T_INFTY ) ( T_RANGETO (expr2= qualifiedIdentifier | T_INFTY ) )? )
8255
            	int alt96 = 2;
8256
            	try { dbg.EnterSubRule(96);
8257
            	try { dbg.EnterDecision(96);
8258
8259
            	int LA96_0 = input.LA(1);
8260
8261
            	if ( (LA96_0 == T_NIL) )
8262
            	{
8263
            	    alt96 = 1;
8264
            	}
8265
            	else if ( (LA96_0 == T_IDENTIFIER || (LA96_0 >= T_MINUS && LA96_0 <= T_INFTY) || LA96_0 == T_SELF) )
8266
            	{
8267
            	    alt96 = 2;
8268
            	}
8269
            	else
8270
            	{
8271
            	    NoViableAltException nvae_d96s0 =
8272
            	        new NoViableAltException("", 96, 0, input);
8273
8274
            	    dbg.RecognitionException(nvae_d96s0);
8275
            	    throw nvae_d96s0;
8276
            	}
8277
            	} finally { dbg.ExitDecision(96); }
8278
8279
            	switch (alt96)
8280
            	{
8281
            	    case 1 :
8282
            	        dbg.EnterAlt(1);
8283
8284
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:816:4: T_NIL
8285
            	        {
8286
            	        	dbg.Location(816,4);
8287
            	        	Match(input,T_NIL,FOLLOW_T_NIL_in_qvalExpression3960);
8288
            	        	dbg.Location(817,4);
8289
            	        	setQualitativeValueDontCare(result);
8290
8291
            	        }
8292
            	        break;
8293
            	    case 2 :
8294
            	        dbg.EnterAlt(2);
8295
8296
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:819:4: (expr= qualifiedIdentifier | ( '-' )? T_INFTY ) ( T_RANGETO (expr2= qualifiedIdentifier | T_INFTY ) )?
8297
            	        {
8298
            	        	dbg.Location(819,4);
8299
            	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:819:4: (expr= qualifiedIdentifier | ( '-' )? T_INFTY )
8300
            	        	int alt93 = 2;
8301
            	        	try { dbg.EnterSubRule(93);
8302
            	        	try { dbg.EnterDecision(93);
8303
8304
            	        	int LA93_0 = input.LA(1);
8305
8306
            	        	if ( (LA93_0 == T_IDENTIFIER || LA93_0 == T_SELF) )
8307
            	        	{
8308
            	        	    alt93 = 1;
8309
            	        	}
8310
            	        	else if ( ((LA93_0 >= T_MINUS && LA93_0 <= T_INFTY)) )
8311
            	        	{
8312
            	        	    alt93 = 2;
8313
            	        	}
8314
            	        	else
8315
            	        	{
8316
            	        	    NoViableAltException nvae_d93s0 =
8317
            	        	        new NoViableAltException("", 93, 0, input);
8318
8319
            	        	    dbg.RecognitionException(nvae_d93s0);
8320
            	        	    throw nvae_d93s0;
8321
            	        	}
8322
            	        	} finally { dbg.ExitDecision(93); }
8323
8324
            	        	switch (alt93)
8325
            	        	{
8326
            	        	    case 1 :
8327
            	        	        dbg.EnterAlt(1);
8328
8329
            	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:819:6: expr= qualifiedIdentifier
8330
            	        	        {
8331
            	        	        	dbg.Location(819,10);
8332
            	        	        	PushFollow(FOLLOW_qualifiedIdentifier_in_qvalExpression3981);
8333
            	        	        	expr = qualifiedIdentifier();
8334
            	        	        	state.followingStackPointer--;
8335
8336
            	        	        	dbg.Location(820,6);
8337
            	        	        	setQualitativeValueLandmark(result,expr);
8338
8339
            	        	        }
8340
            	        	        break;
8341
            	        	    case 2 :
8342
            	        	        dbg.EnterAlt(2);
8343
8344
            	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:822:5: ( '-' )? T_INFTY
8345
            	        	        {
8346
            	        	        	dbg.Location(822,5);
8347
            	        	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:822:5: ( '-' )?
8348
            	        	        	int alt92 = 2;
8349
            	        	        	try { dbg.EnterSubRule(92);
8350
            	        	        	try { dbg.EnterDecision(92);
8351
8352
            	        	        	int LA92_0 = input.LA(1);
8353
8354
            	        	        	if ( (LA92_0 == T_MINUS) )
8355
            	        	        	{
8356
            	        	        	    alt92 = 1;
8357
            	        	        	}
8358
            	        	        	} finally { dbg.ExitDecision(92); }
8359
8360
            	        	        	switch (alt92)
8361
            	        	        	{
8362
            	        	        	    case 1 :
8363
            	        	        	        dbg.EnterAlt(1);
8364
8365
            	        	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:822:6: '-'
8366
            	        	        	        {
8367
            	        	        	        	dbg.Location(822,6);
8368
            	        	        	        	Match(input,T_MINUS,FOLLOW_T_MINUS_in_qvalExpression4000);
8369
            	        	        	        	dbg.Location(822,10);
8370
            	        	        	        	minus = true;
8371
8372
            	        	        	        }
8373
            	        	        	        break;
8374
8375
            	        	        	}
8376
            	        	        	} finally { dbg.ExitSubRule(92); }
8377
8378
            	        	        	dbg.Location(822,28);
8379
            	        	        	Match(input,T_INFTY,FOLLOW_T_INFTY_in_qvalExpression4006);
8380
            	        	        	dbg.Location(823,5);
8381
            	        	        	setQualitativeValueInfinity(result,minus);
8382
8383
            	        	        }
8384
            	        	        break;
8385
8386
            	        	}
8387
            	        	} finally { dbg.ExitSubRule(93); }
8388
8389
            	        	dbg.Location(825,4);
8390
            	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:825:4: ( T_RANGETO (expr2= qualifiedIdentifier | T_INFTY ) )?
8391
            	        	int alt95 = 2;
8392
            	        	try { dbg.EnterSubRule(95);
8393
            	        	try { dbg.EnterDecision(95);
8394
8395
            	        	int LA95_0 = input.LA(1);
8396
8397
            	        	if ( (LA95_0 == T_RANGETO) )
8398
            	        	{
8399
            	        	    alt95 = 1;
8400
            	        	}
8401
            	        	} finally { dbg.ExitDecision(95); }
8402
8403
            	        	switch (alt95)
8404
            	        	{
8405
            	        	    case 1 :
8406
            	        	        dbg.EnterAlt(1);
8407
8408
            	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:825:5: T_RANGETO (expr2= qualifiedIdentifier | T_INFTY )
8409
            	        	        {
8410
            	        	        	dbg.Location(825,5);
8411
            	        	        	Match(input,T_RANGETO,FOLLOW_T_RANGETO_in_qvalExpression4024);
8412
            	        	        	dbg.Location(826,4);
8413
            	        	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:826:4: (expr2= qualifiedIdentifier | T_INFTY )
8414
            	        	        	int alt94 = 2;
8415
            	        	        	try { dbg.EnterSubRule(94);
8416
            	        	        	try { dbg.EnterDecision(94);
8417
8418
            	        	        	int LA94_0 = input.LA(1);
8419
8420
            	        	        	if ( (LA94_0 == T_IDENTIFIER || LA94_0 == T_SELF) )
8421
            	        	        	{
8422
            	        	        	    alt94 = 1;
8423
            	        	        	}
8424
            	        	        	else if ( (LA94_0 == T_INFTY) )
8425
            	        	        	{
8426
            	        	        	    alt94 = 2;
8427
            	        	        	}
8428
            	        	        	else
8429
            	        	        	{
8430
            	        	        	    NoViableAltException nvae_d94s0 =
8431
            	        	        	        new NoViableAltException("", 94, 0, input);
8432
8433
            	        	        	    dbg.RecognitionException(nvae_d94s0);
8434
            	        	        	    throw nvae_d94s0;
8435
            	        	        	}
8436
            	        	        	} finally { dbg.ExitDecision(94); }
8437
8438
            	        	        	switch (alt94)
8439
            	        	        	{
8440
            	        	        	    case 1 :
8441
            	        	        	        dbg.EnterAlt(1);
8442
8443
            	        	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:826:6: expr2= qualifiedIdentifier
8444
            	        	        	        {
8445
            	        	        	        	dbg.Location(826,11);
8446
            	        	        	        	PushFollow(FOLLOW_qualifiedIdentifier_in_qvalExpression4034);
8447
            	        	        	        	expr2 = qualifiedIdentifier();
8448
            	        	        	        	state.followingStackPointer--;
8449
8450
            	        	        	        	dbg.Location(827,5);
8451
            	        	        	        	setQualitativeValueRange(result,expr2);
8452
8453
            	        	        	        }
8454
            	        	        	        break;
8455
            	        	        	    case 2 :
8456
            	        	        	        dbg.EnterAlt(2);
8457
8458
            	        	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:829:5: T_INFTY
8459
            	        	        	        {
8460
            	        	        	        	dbg.Location(829,5);
8461
            	        	        	        	Match(input,T_INFTY,FOLLOW_T_INFTY_in_qvalExpression4052);
8462
            	        	        	        	dbg.Location(830,5);
8463
            	        	        	        	setQualitativeValueRangeInfinity(result,false);
8464
8465
            	        	        	        }
8466
            	        	        	        break;
8467
8468
            	        	        	}
8469
            	        	        	} finally { dbg.ExitSubRule(94); }
8470
8471
8472
            	        	        }
8473
            	        	        break;
8474
8475
            	        	}
8476
            	        	} finally { dbg.ExitSubRule(95); }
8477
8478
8479
            	        }
8480
            	        break;
8481
8482
            	}
8483
            	} finally { dbg.ExitSubRule(96); }
8484
8485
            	dbg.Location(833,3);
8486
            	Match(input,T_COMMA,FOLLOW_T_COMMA_in_qvalExpression4076);
8487
            	dbg.Location(834,3);
8488
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:834:3: ( T_NIL | ( 'steady' | 'inc' | 'dec' ) )
8489
            	int alt98 = 2;
8490
            	try { dbg.EnterSubRule(98);
8491
            	try { dbg.EnterDecision(98);
8492
8493
            	int LA98_0 = input.LA(1);
8494
8495
            	if ( (LA98_0 == T_NIL) )
8496
            	{
8497
            	    alt98 = 1;
8498
            	}
8499
            	else if ( ((LA98_0 >= 123 && LA98_0 <= 125)) )
8500
            	{
8501
            	    alt98 = 2;
8502
            	}
8503
            	else
8504
            	{
8505
            	    NoViableAltException nvae_d98s0 =
8506
            	        new NoViableAltException("", 98, 0, input);
8507
8508
            	    dbg.RecognitionException(nvae_d98s0);
8509
            	    throw nvae_d98s0;
8510
            	}
8511
            	} finally { dbg.ExitDecision(98); }
8512
8513
            	switch (alt98)
8514
            	{
8515
            	    case 1 :
8516
            	        dbg.EnterAlt(1);
8517
8518
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:835:4: T_NIL
8519
            	        {
8520
            	        	dbg.Location(835,4);
8521
            	        	Match(input,T_NIL,FOLLOW_T_NIL_in_qvalExpression4086);
8522
            	        	dbg.Location(836,4);
8523
            	        	setQualitativeDerivDontCare(result);
8524
8525
            	        }
8526
            	        break;
8527
            	    case 2 :
8528
            	        dbg.EnterAlt(2);
8529
8530
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:838:4: ( 'steady' | 'inc' | 'dec' )
8531
            	        {
8532
            	        	dbg.Location(838,4);
8533
            	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:838:4: ( 'steady' | 'inc' | 'dec' )
8534
            	        	int alt97 = 3;
8535
            	        	try { dbg.EnterSubRule(97);
8536
            	        	try { dbg.EnterDecision(97);
8537
8538
            	        	switch ( input.LA(1) )
8539
            	        	{
8540
            	        	case 123:
8541
            	        		{
8542
            	        	    alt97 = 1;
8543
            	        	    }
8544
            	        	    break;
8545
            	        	case 124:
8546
            	        		{
8547
            	        	    alt97 = 2;
8548
            	        	    }
8549
            	        	    break;
8550
            	        	case 125:
8551
            	        		{
8552
            	        	    alt97 = 3;
8553
            	        	    }
8554
            	        	    break;
8555
            	        		default:
8556
            	        		    NoViableAltException nvae_d97s0 =
8557
            	        		        new NoViableAltException("", 97, 0, input);
8558
8559
            	        		    dbg.RecognitionException(nvae_d97s0);
8560
            	        		    throw nvae_d97s0;
8561
            	        	}
8562
8563
            	        	} finally { dbg.ExitDecision(97); }
8564
8565
            	        	switch (alt97)
8566
            	        	{
8567
            	        	    case 1 :
8568
            	        	        dbg.EnterAlt(1);
8569
8570
            	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:838:6: 'steady'
8571
            	        	        {
8572
            	        	        	dbg.Location(838,6);
8573
            	        	        	Match(input,123,FOLLOW_123_in_qvalExpression4102);
8574
            	        	        	dbg.Location(839,5);
8575
            	        	        	setQualitativeDerivSteady(result);
8576
8577
            	        	        }
8578
            	        	        break;
8579
            	        	    case 2 :
8580
            	        	        dbg.EnterAlt(2);
8581
8582
            	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:840:6: 'inc'
8583
            	        	        {
8584
            	        	        	dbg.Location(840,6);
8585
            	        	        	Match(input,124,FOLLOW_124_in_qvalExpression4115);
8586
            	        	        	dbg.Location(841,5);
8587
            	        	        	setQualitativeDerivInc(result);
8588
8589
            	        	        }
8590
            	        	        break;
8591
            	        	    case 3 :
8592
            	        	        dbg.EnterAlt(3);
8593
8594
            	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:842:6: 'dec'
8595
            	        	        {
8596
            	        	        	dbg.Location(842,6);
8597
            	        	        	Match(input,125,FOLLOW_125_in_qvalExpression4128);
8598
            	        	        	dbg.Location(843,5);
8599
            	        	        	setQualitativeDerivDec(result);
8600
8601
            	        	        }
8602
            	        	        break;
8603
8604
            	        	}
8605
            	        	} finally { dbg.ExitSubRule(97); }
8606
8607
8608
            	        }
8609
            	        break;
8610
8611
            	}
8612
            	} finally { dbg.ExitSubRule(98); }
8613
8614
            	dbg.Location(846,3);
8615
            	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_qvalExpression4150);
8616
8617
            }
8618
8619
        }
8620
        catch (RecognitionException re)
8621
    	{
8622
            ReportError(re);
8623
            Recover(input,re);
8624
        }
8625
        finally
8626
    	{
8627
        }
8628
        dbg.Location(847, 2);
8629
8630
        }
8631
        finally {
8632
            dbg.ExitRule(GrammarFileName, "qvalExpression");
8633
            DecRuleLevel();
8634
            if ( RuleLevel==0 ) {dbg.Terminate();}
8635
        }
8636
8637
        return result;
8638
    }
8639
    // $ANTLR end "qvalExpression"
8640
8641
8642
    // $ANTLR start "identifierExpression"
8643
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:850:1: identifierExpression returns [Expression result] : ({...}?aName= T_IDENTIFIER T_LPAREN m_params= methodCallParams T_RPAREN | res= reference );
8644
    public Expression identifierExpression() // throws RecognitionException [1]
8645
    {
8646
        Expression result = default(Expression);
8647
8648
        IToken aName = null;
8649
        System.Collections.Generic.List<Expression> m_params = default(System.Collections.Generic.List<Expression>);
8650
8651
        Expression res = default(Expression);
8652
8653
8654
        try {
8655
        	dbg.EnterRule(GrammarFileName, "identifierExpression");
8656
        	if ( RuleLevel==0 ) {dbg.Commence();}
8657
        	IncRuleLevel();
8658
        	dbg.Location(850, 1);
8659
8660
        try
8661
    	{
8662
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:852:2: ({...}?aName= T_IDENTIFIER T_LPAREN m_params= methodCallParams T_RPAREN | res= reference )
8663
            int alt99 = 2;
8664
            try { dbg.EnterDecision(99);
8665
8666
            try
8667
            {
8668
                isCyclicDecision = true;
8669
                alt99 = dfa99.Predict(input);
8670
            }
8671
            catch (NoViableAltException nvae)
8672
            {
8673
                dbg.RecognitionException(nvae);
8674
                throw nvae;
8675
            }
8676
            } finally { dbg.ExitDecision(99); }
8677
8678
            switch (alt99)
8679
            {
8680
                case 1 :
8681
                    dbg.EnterAlt(1);
8682
8683
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:853:3: {...}?aName= T_IDENTIFIER T_LPAREN m_params= methodCallParams T_RPAREN
8684
                    {
8685
                    	dbg.Location(853,3);
8686
                    	if ( !(EvalPredicate(isTuple(input.LT(1).Text),"isTuple(input.LT(1).Text)")) )
8687
                    	{
8688
                    	    throw new FailedPredicateException(input, "identifierExpression", "isTuple(input.LT(1).Text)");
8689
                    	}
8690
                    	dbg.Location(854,8);
8691
                    	aName=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_identifierExpression4183);
8692
                    	dbg.Location(854,22);
8693
                    	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_identifierExpression4185);
8694
                    	dbg.Location(854,39);
8695
                    	PushFollow(FOLLOW_methodCallParams_in_identifierExpression4189);
8696
                    	m_params = methodCallParams();
8697
                    	state.followingStackPointer--;
8698
8699
                    	dbg.Location(854,57);
8700
                    	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_identifierExpression4191);
8701
                    	dbg.Location(855,3);
8702
                    	result = createInitializedTuple(aName,m_params);
8703
8704
                    }
8705
                    break;
8706
                case 2 :
8707
                    dbg.EnterAlt(2);
8708
8709
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:857:3: res= reference
8710
                    {
8711
                    	dbg.Location(857,6);
8712
                    	PushFollow(FOLLOW_reference_in_identifierExpression4206);
8713
                    	res = reference();
8714
                    	state.followingStackPointer--;
8715
8716
                    	dbg.Location(858,5);
8717
                    	result = res;
8718
8719
                    }
8720
                    break;
8721
8722
            }
8723
        }
8724
        catch (RecognitionException re)
8725
    	{
8726
            ReportError(re);
8727
            Recover(input,re);
8728
        }
8729
        finally
8730
    	{
8731
        }
8732
        dbg.Location(859, 2);
8733
8734
        }
8735
        finally {
8736
            dbg.ExitRule(GrammarFileName, "identifierExpression");
8737
            DecRuleLevel();
8738
            if ( RuleLevel==0 ) {dbg.Terminate();}
8739
        }
8740
8741
        return result;
8742
    }
8743
    // $ANTLR end "identifierExpression"
8744
8745
8746
    // $ANTLR start "reference"
8747
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:862: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 )? ;
8748
    public Expression reference() // throws RecognitionException [1]
8749
    {
8750
        Expression result = default(Expression);
8751
8752
        IToken pr = null;
8753
        IToken afold = null;
8754
        Expression aName = default(Expression);
8755
8756
        Expression output = default(Expression);
8757
8758
        Expression init = default(Expression);
8759
8760
        Expression anexpr = default(Expression);
8761
8762
8763
8764
        		result = null;
8765
        		init = null;
8766
8767
        try {
8768
        	dbg.EnterRule(GrammarFileName, "reference");
8769
        	if ( RuleLevel==0 ) {dbg.Commence();}
8770
        	IncRuleLevel();
8771
        	dbg.Location(862, 1);
8772
8773
        try
8774
    	{
8775
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:868: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 )? )
8776
            dbg.EnterAlt(1);
8777
8778
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:868: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 )?
8779
            {
8780
            	dbg.Location(868,4);
8781
            	if ( !(EvalPredicate(!isTuple(input.LT(1).Text),"!isTuple(input.LT(1).Text)")) )
8782
            	{
8783
            	    throw new FailedPredicateException(input, "reference", "!isTuple(input.LT(1).Text)");
8784
            	}
8785
            	dbg.Location(869,8);
8786
            	PushFollow(FOLLOW_qualifiedIdentifier_in_reference4244);
8787
            	aName = qualifiedIdentifier();
8788
            	state.followingStackPointer--;
8789
8790
            	dbg.Location(869,29);
8791
            	result = aName;
8792
            	dbg.Location(870,3);
8793
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:870:3: (output= accessExpression[result] | )
8794
            	int alt100 = 2;
8795
            	try { dbg.EnterSubRule(100);
8796
            	try { dbg.EnterDecision(100);
8797
8798
            	try
8799
            	{
8800
            	    isCyclicDecision = true;
8801
            	    alt100 = dfa100.Predict(input);
8802
            	}
8803
            	catch (NoViableAltException nvae)
8804
            	{
8805
            	    dbg.RecognitionException(nvae);
8806
            	    throw nvae;
8807
            	}
8808
            	} finally { dbg.ExitDecision(100); }
8809
8810
            	switch (alt100)
8811
            	{
8812
            	    case 1 :
8813
            	        dbg.EnterAlt(1);
8814
8815
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:870:5: output= accessExpression[result]
8816
            	        {
8817
            	        	dbg.Location(870,11);
8818
            	        	PushFollow(FOLLOW_accessExpression_in_reference4256);
8819
            	        	output = accessExpression(result);
8820
            	        	state.followingStackPointer--;
8821
8822
            	        	dbg.Location(870,37);
8823
            	        	result = output;
8824
8825
            	        }
8826
            	        break;
8827
            	    case 2 :
8828
            	        dbg.EnterAlt(2);
8829
8830
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:873:3:
8831
            	        {
8832
            	        }
8833
            	        break;
8834
8835
            	}
8836
            	} finally { dbg.ExitSubRule(100); }
8837
8838
            	dbg.Location(874,3);
8839
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:874:3: (pr= T_PRIMED | ( '::' T_LPAREN init= expression T_RPAREN )? afold= ( T_FOLDLR | T_FOLDRL ) T_LPAREN anexpr= expression T_RPAREN )?
8840
            	int alt102 = 3;
8841
            	try { dbg.EnterSubRule(102);
8842
            	try { dbg.EnterDecision(102);
8843
8844
            	try
8845
            	{
8846
            	    isCyclicDecision = true;
8847
            	    alt102 = dfa102.Predict(input);
8848
            	}
8849
            	catch (NoViableAltException nvae)
8850
            	{
8851
            	    dbg.RecognitionException(nvae);
8852
            	    throw nvae;
8853
            	}
8854
            	} finally { dbg.ExitDecision(102); }
8855
8856
            	switch (alt102)
8857
            	{
8858
            	    case 1 :
8859
            	        dbg.EnterAlt(1);
8860
8861
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:874:6: pr= T_PRIMED
8862
            	        {
8863
            	        	dbg.Location(874,8);
8864
            	        	pr=(IToken)Match(input,T_PRIMED,FOLLOW_T_PRIMED_in_reference4281);
8865
            	        	dbg.Location(874,18);
8866
            	        	setIdentifierExpressionPrimed(ref result,pr);
8867
8868
            	        }
8869
            	        break;
8870
            	    case 2 :
8871
            	        dbg.EnterAlt(2);
8872
8873
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:876:5: ( '::' T_LPAREN init= expression T_RPAREN )? afold= ( T_FOLDLR | T_FOLDRL ) T_LPAREN anexpr= expression T_RPAREN
8874
            	        {
8875
            	        	dbg.Location(876,5);
8876
            	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:876:5: ( '::' T_LPAREN init= expression T_RPAREN )?
8877
            	        	int alt101 = 2;
8878
            	        	try { dbg.EnterSubRule(101);
8879
            	        	try { dbg.EnterDecision(101);
8880
8881
            	        	int LA101_0 = input.LA(1);
8882
8883
            	        	if ( (LA101_0 == 126) )
8884
            	        	{
8885
            	        	    alt101 = 1;
8886
            	        	}
8887
            	        	} finally { dbg.ExitDecision(101); }
8888
8889
            	        	switch (alt101)
8890
            	        	{
8891
            	        	    case 1 :
8892
            	        	        dbg.EnterAlt(1);
8893
8894
            	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:876:6: '::' T_LPAREN init= expression T_RPAREN
8895
            	        	        {
8896
            	        	        	dbg.Location(876,6);
8897
            	        	        	Match(input,126,FOLLOW_126_in_reference4297);
8898
            	        	        	dbg.Location(876,11);
8899
            	        	        	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_reference4299);
8900
            	        	        	dbg.Location(876,24);
8901
            	        	        	PushFollow(FOLLOW_expression_in_reference4303);
8902
            	        	        	init = expression();
8903
            	        	        	state.followingStackPointer--;
8904
8905
            	        	        	dbg.Location(876,36);
8906
            	        	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_reference4305);
8907
8908
            	        	        }
8909
            	        	        break;
8910
8911
            	        	}
8912
            	        	} finally { dbg.ExitSubRule(101); }
8913
8914
            	        	dbg.Location(876,52);
8915
            	        	afold = (IToken)input.LT(1);
8916
            	        	if ( (input.LA(1) >= T_FOLDLR && input.LA(1) <= T_FOLDRL) )
8917
            	        	{
8918
            	        	    input.Consume();
8919
            	        	    state.errorRecovery = false;
8920
            	        	}
8921
            	        	else
8922
            	        	{
8923
            	        	    MismatchedSetException mse = new MismatchedSetException(null,input);
8924
            	        	    dbg.RecognitionException(mse);
8925
            	        	    throw mse;
8926
            	        	}
8927
8928
            	        	dbg.Location(876,73);
8929
            	        	Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_reference4317);
8930
            	        	dbg.Location(876,88);
8931
            	        	PushFollow(FOLLOW_expression_in_reference4321);
8932
            	        	anexpr = expression();
8933
            	        	state.followingStackPointer--;
8934
8935
            	        	dbg.Location(876,100);
8936
            	        	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_reference4323);
8937
            	        	dbg.Location(877,5);
8938
            	        	result = createFoldExpression(result,afold,init,anexpr);
8939
8940
            	        }
8941
            	        break;
8942
8943
            	}
8944
            	} finally { dbg.ExitSubRule(102); }
8945
8946
8947
            }
8948
8949
        }
8950
        catch (RecognitionException re)
8951
    	{
8952
            ReportError(re);
8953
            Recover(input,re);
8954
        }
8955
        finally
8956
    	{
8957
        }
8958
        dbg.Location(879, 2);
8959
8960
        }
8961
        finally {
8962
            dbg.ExitRule(GrammarFileName, "reference");
8963
            DecRuleLevel();
8964
            if ( RuleLevel==0 ) {dbg.Terminate();}
8965
        }
8966
8967
        return result;
8968
    }
8969
    // $ANTLR end "reference"
8970
8971
8972
    // $ANTLR start "accessExpression"
8973
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:881: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] )? )? ;
8974
    public Expression accessExpression(Expression subexpr) // throws RecognitionException [1]
8975
    {
8976
        Expression result = default(Expression);
8977
8978
        IToken tcall = null;
8979
        IToken bcall = null;
8980
        IToken idn = null;
8981
        Expression ac = default(Expression);
8982
8983
        System.Collections.Generic.List<Expression> m_params = default(System.Collections.Generic.List<Expression>);
8984
8985
        Expression res = default(Expression);
8986
8987
8988
8989
        		UnaryOperator newExpr = null;
8990
        		result = subexpr;
8991
8992
        try {
8993
        	dbg.EnterRule(GrammarFileName, "accessExpression");
8994
        	if ( RuleLevel==0 ) {dbg.Commence();}
8995
        	IncRuleLevel();
8996
        	dbg.Location(881, 1);
8997
8998
        try
8999
    	{
9000
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:887:2: ( (tcall= T_LSQPAREN ac= expression T_RSQPAREN | bcall= T_LPAREN m_params= methodCallParams T_RPAREN )+ ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[result] )? )? )
9001
            dbg.EnterAlt(1);
9002
9003
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:888:7: (tcall= T_LSQPAREN ac= expression T_RSQPAREN | bcall= T_LPAREN m_params= methodCallParams T_RPAREN )+ ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[result] )? )?
9004
            {
9005
            	dbg.Location(888,7);
9006
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:888:7: (tcall= T_LSQPAREN ac= expression T_RSQPAREN | bcall= T_LPAREN m_params= methodCallParams T_RPAREN )+
9007
            	int cnt103 = 0;
9008
            	try { dbg.EnterSubRule(103);
9009
9010
            	do
9011
            	{
9012
            	    int alt103 = 3;
9013
            	    try { dbg.EnterDecision(103);
9014
9015
            	    try
9016
            	    {
9017
            	        isCyclicDecision = true;
9018
            	        alt103 = dfa103.Predict(input);
9019
            	    }
9020
            	    catch (NoViableAltException nvae)
9021
            	    {
9022
            	        dbg.RecognitionException(nvae);
9023
            	        throw nvae;
9024
            	    }
9025
            	    } finally { dbg.ExitDecision(103); }
9026
9027
            	    switch (alt103)
9028
            		{
9029
            			case 1 :
9030
            			    dbg.EnterAlt(1);
9031
9032
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:888:9: tcall= T_LSQPAREN ac= expression T_RSQPAREN
9033
            			    {
9034
            			    	dbg.Location(888,14);
9035
            			    	tcall=(IToken)Match(input,T_LSQPAREN,FOLLOW_T_LSQPAREN_in_accessExpression4368);
9036
            			    	dbg.Location(888,28);
9037
            			    	PushFollow(FOLLOW_expression_in_accessExpression4372);
9038
            			    	ac = expression();
9039
            			    	state.followingStackPointer--;
9040
9041
            			    	dbg.Location(888,40);
9042
            			    	Match(input,T_RSQPAREN,FOLLOW_T_RSQPAREN_in_accessExpression4374);
9043
            			    	dbg.Location(889,8);
9044
            			    	 result = createTupleMapAccessExpression(result,ac,tcall);
9045
9046
            			    }
9047
            			    break;
9048
            			case 2 :
9049
            			    dbg.EnterAlt(2);
9050
9051
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:890:10: bcall= T_LPAREN m_params= methodCallParams T_RPAREN
9052
            			    {
9053
            			    	dbg.Location(890,15);
9054
            			    	bcall=(IToken)Match(input,T_LPAREN,FOLLOW_T_LPAREN_in_accessExpression4401);
9055
            			    	dbg.Location(890,33);
9056
            			    	PushFollow(FOLLOW_methodCallParams_in_accessExpression4405);
9057
            			    	m_params = methodCallParams();
9058
            			    	state.followingStackPointer--;
9059
9060
            			    	dbg.Location(890,51);
9061
            			    	Match(input,T_RPAREN,FOLLOW_T_RPAREN_in_accessExpression4407);
9062
            			    	dbg.Location(891,4);
9063
            			    	 result = createMethodAccessExpression(result,m_params,bcall);
9064
9065
            			    }
9066
            			    break;
9067
9068
            			default:
9069
            			    if ( cnt103 >= 1 ) goto loop103;
9070
            		            EarlyExitException eee103 =
9071
            		                new EarlyExitException(103, input);
9072
            		            dbg.RecognitionException(eee103);
9073
9074
            		            throw eee103;
9075
            	    }
9076
            	    cnt103++;
9077
            	} while (true);
9078
9079
            	loop103:
9080
            		;	// Stops C# compiler whining that label 'loop103' has no statements
9081
            	} finally { dbg.ExitSubRule(103); }
9082
9083
            	dbg.Location(893,3);
9084
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:893:3: ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[result] )? )?
9085
            	int alt106 = 2;
9086
            	try { dbg.EnterSubRule(106);
9087
            	try { dbg.EnterDecision(106);
9088
9089
            	try
9090
            	{
9091
            	    isCyclicDecision = true;
9092
            	    alt106 = dfa106.Predict(input);
9093
            	}
9094
            	catch (NoViableAltException nvae)
9095
            	{
9096
            	    dbg.RecognitionException(nvae);
9097
            	    throw nvae;
9098
            	}
9099
            	} finally { dbg.ExitDecision(106); }
9100
9101
            	switch (alt106)
9102
            	{
9103
            	    case 1 :
9104
            	        dbg.EnterAlt(1);
9105
9106
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:894:4: ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[result] )?
9107
            	        {
9108
            	        	dbg.Location(894,4);
9109
            	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:894:4: ( T_POINT idn= T_IDENTIFIER )+
9110
            	        	int cnt104 = 0;
9111
            	        	try { dbg.EnterSubRule(104);
9112
9113
            	        	do
9114
            	        	{
9115
            	        	    int alt104 = 2;
9116
            	        	    try { dbg.EnterDecision(104);
9117
9118
            	        	    try
9119
            	        	    {
9120
            	        	        isCyclicDecision = true;
9121
            	        	        alt104 = dfa104.Predict(input);
9122
            	        	    }
9123
            	        	    catch (NoViableAltException nvae)
9124
            	        	    {
9125
            	        	        dbg.RecognitionException(nvae);
9126
            	        	        throw nvae;
9127
            	        	    }
9128
            	        	    } finally { dbg.ExitDecision(104); }
9129
9130
            	        	    switch (alt104)
9131
            	        		{
9132
            	        			case 1 :
9133
            	        			    dbg.EnterAlt(1);
9134
9135
            	        			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:894:5: T_POINT idn= T_IDENTIFIER
9136
            	        			    {
9137
            	        			    	dbg.Location(894,5);
9138
            	        			    	Match(input,T_POINT,FOLLOW_T_POINT_in_accessExpression4429);
9139
            	        			    	dbg.Location(895,7);
9140
            	        			    	idn=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_accessExpression4437);
9141
            	        			    	dbg.Location(896,4);
9142
            	        			    	result = addIdentifierAccessExpression(result,idn);
9143
9144
            	        			    }
9145
            	        			    break;
9146
9147
            	        			default:
9148
            	        			    if ( cnt104 >= 1 ) goto loop104;
9149
            	        		            EarlyExitException eee104 =
9150
            	        		                new EarlyExitException(104, input);
9151
            	        		            dbg.RecognitionException(eee104);
9152
9153
            	        		            throw eee104;
9154
            	        	    }
9155
            	        	    cnt104++;
9156
            	        	} while (true);
9157
9158
            	        	loop104:
9159
            	        		;	// Stops C# compiler whining that label 'loop104' has no statements
9160
            	        	} finally { dbg.ExitSubRule(104); }
9161
9162
            	        	dbg.Location(897,4);
9163
            	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:897:4: (res= accessExpression[result] )?
9164
            	        	int alt105 = 2;
9165
            	        	try { dbg.EnterSubRule(105);
9166
            	        	try { dbg.EnterDecision(105);
9167
9168
            	        	try
9169
            	        	{
9170
            	        	    isCyclicDecision = true;
9171
            	        	    alt105 = dfa105.Predict(input);
9172
            	        	}
9173
            	        	catch (NoViableAltException nvae)
9174
            	        	{
9175
            	        	    dbg.RecognitionException(nvae);
9176
            	        	    throw nvae;
9177
            	        	}
9178
            	        	} finally { dbg.ExitDecision(105); }
9179
9180
            	        	switch (alt105)
9181
            	        	{
9182
            	        	    case 1 :
9183
            	        	        dbg.EnterAlt(1);
9184
9185
            	        	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:897:5: res= accessExpression[result]
9186
            	        	        {
9187
            	        	        	dbg.Location(897,8);
9188
            	        	        	PushFollow(FOLLOW_accessExpression_in_accessExpression4453);
9189
            	        	        	res = accessExpression(result);
9190
            	        	        	state.followingStackPointer--;
9191
9192
            	        	        	dbg.Location(897,34);
9193
            	        	        	result=res;
9194
9195
            	        	        }
9196
            	        	        break;
9197
9198
            	        	}
9199
            	        	} finally { dbg.ExitSubRule(105); }
9200
9201
9202
            	        }
9203
            	        break;
9204
9205
            	}
9206
            	} finally { dbg.ExitSubRule(106); }
9207
9208
9209
            }
9210
9211
        }
9212
        catch (RecognitionException re)
9213
    	{
9214
            ReportError(re);
9215
            Recover(input,re);
9216
        }
9217
        finally
9218
    	{
9219
        }
9220
        dbg.Location(899, 2);
9221
9222
        }
9223
        finally {
9224
            dbg.ExitRule(GrammarFileName, "accessExpression");
9225
            DecRuleLevel();
9226
            if ( RuleLevel==0 ) {dbg.Terminate();}
9227
        }
9228
9229
        return result;
9230
    }
9231
    // $ANTLR end "accessExpression"
9232
9233
9234
    // $ANTLR start "qualifiedIdentifier"
9235
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:901:1: qualifiedIdentifier returns [Expression top] : (self= T_SELF T_POINT )? idb= T_IDENTIFIER ( T_POINT idd= T_IDENTIFIER )* ;
9236
    public Expression qualifiedIdentifier() // throws RecognitionException [1]
9237
    {
9238
        Expression top = default(Expression);
9239
9240
        IToken self = null;
9241
        IToken idb = null;
9242
        IToken idd = null;
9243
9244
9245
        		IdentifierExpression selfexpr = null;
9246
        		top = null;
9247
9248
        try {
9249
        	dbg.EnterRule(GrammarFileName, "qualifiedIdentifier");
9250
        	if ( RuleLevel==0 ) {dbg.Commence();}
9251
        	IncRuleLevel();
9252
        	dbg.Location(901, 1);
9253
9254
        try
9255
    	{
9256
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:907:2: ( (self= T_SELF T_POINT )? idb= T_IDENTIFIER ( T_POINT idd= T_IDENTIFIER )* )
9257
            dbg.EnterAlt(1);
9258
9259
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:908:3: (self= T_SELF T_POINT )? idb= T_IDENTIFIER ( T_POINT idd= T_IDENTIFIER )*
9260
            {
9261
            	dbg.Location(908,3);
9262
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:908:3: (self= T_SELF T_POINT )?
9263
            	int alt107 = 2;
9264
            	try { dbg.EnterSubRule(107);
9265
            	try { dbg.EnterDecision(107);
9266
9267
            	int LA107_0 = input.LA(1);
9268
9269
            	if ( (LA107_0 == T_SELF) )
9270
            	{
9271
            	    alt107 = 1;
9272
            	}
9273
            	} finally { dbg.ExitDecision(107); }
9274
9275
            	switch (alt107)
9276
            	{
9277
            	    case 1 :
9278
            	        dbg.EnterAlt(1);
9279
9280
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:908:4: self= T_SELF T_POINT
9281
            	        {
9282
            	        	dbg.Location(908,8);
9283
            	        	self=(IToken)Match(input,T_SELF,FOLLOW_T_SELF_in_qualifiedIdentifier4492);
9284
            	        	dbg.Location(908,16);
9285
            	        	Match(input,T_POINT,FOLLOW_T_POINT_in_qualifiedIdentifier4494);
9286
            	        	dbg.Location(908,25);
9287
            	        	selfexpr = createSelfIdentifierExpression(self);
9288
9289
            	        }
9290
            	        break;
9291
9292
            	}
9293
            	} finally { dbg.ExitSubRule(107); }
9294
9295
            	dbg.Location(909,6);
9296
            	idb=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_qualifiedIdentifier4506);
9297
            	dbg.Location(909,22);
9298
            	top = createIdentifierAccessExpression(selfexpr,idb);
9299
            	dbg.Location(910,3);
9300
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:910:3: ( T_POINT idd= T_IDENTIFIER )*
9301
            	try { dbg.EnterSubRule(108);
9302
9303
            	do
9304
            	{
9305
            	    int alt108 = 2;
9306
            	    try { dbg.EnterDecision(108);
9307
9308
            	    try
9309
            	    {
9310
            	        isCyclicDecision = true;
9311
            	        alt108 = dfa108.Predict(input);
9312
            	    }
9313
            	    catch (NoViableAltException nvae)
9314
            	    {
9315
            	        dbg.RecognitionException(nvae);
9316
            	        throw nvae;
9317
            	    }
9318
            	    } finally { dbg.ExitDecision(108); }
9319
9320
            	    switch (alt108)
9321
            		{
9322
            			case 1 :
9323
            			    dbg.EnterAlt(1);
9324
9325
            			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:910:4: T_POINT idd= T_IDENTIFIER
9326
            			    {
9327
            			    	dbg.Location(910,4);
9328
            			    	Match(input,T_POINT,FOLLOW_T_POINT_in_qualifiedIdentifier4515);
9329
            			    	dbg.Location(910,15);
9330
            			    	idd=(IToken)Match(input,T_IDENTIFIER,FOLLOW_T_IDENTIFIER_in_qualifiedIdentifier4519);
9331
            			    	dbg.Location(910,30);
9332
            			    	top = addIdentifierAccessExpression(top,idd);
9333
9334
            			    }
9335
            			    break;
9336
9337
            			default:
9338
            			    goto loop108;
9339
            	    }
9340
            	} while (true);
9341
9342
            	loop108:
9343
            		;	// Stops C# compiler whining that label 'loop108' has no statements
9344
            	} finally { dbg.ExitSubRule(108); }
9345
9346
9347
            }
9348
9349
        }
9350
        catch (RecognitionException re)
9351
    	{
9352
            ReportError(re);
9353
            Recover(input,re);
9354
        }
9355
        finally
9356
    	{
9357
        }
9358
        dbg.Location(911, 2);
9359
9360
        }
9361
        finally {
9362
            dbg.ExitRule(GrammarFileName, "qualifiedIdentifier");
9363
            DecRuleLevel();
9364
            if ( RuleLevel==0 ) {dbg.Terminate();}
9365
        }
9366
9367
        return top;
9368
    }
9369
    // $ANTLR end "qualifiedIdentifier"
9370
9371
9372
    // $ANTLR start "methodCallParams"
9373
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:914:1: methodCallParams returns [System.Collections.Generic.List<Expression> result] : (expa= expression ( T_COMMA expb= expression )* )? ;
9374
    public System.Collections.Generic.List<Expression> methodCallParams() // throws RecognitionException [1]
9375
    {
9376
        System.Collections.Generic.List<Expression> result = default(System.Collections.Generic.List<Expression>);
9377
9378
        Expression expa = default(Expression);
9379
9380
        Expression expb = default(Expression);
9381
9382
9383
9384
        		result = new System.Collections.Generic.List<Expression>();
9385
9386
        try {
9387
        	dbg.EnterRule(GrammarFileName, "methodCallParams");
9388
        	if ( RuleLevel==0 ) {dbg.Commence();}
9389
        	IncRuleLevel();
9390
        	dbg.Location(914, 1);
9391
9392
        try
9393
    	{
9394
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:919:2: ( (expa= expression ( T_COMMA expb= expression )* )? )
9395
            dbg.EnterAlt(1);
9396
9397
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:919:4: (expa= expression ( T_COMMA expb= expression )* )?
9398
            {
9399
            	dbg.Location(919,4);
9400
            	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:919:4: (expa= expression ( T_COMMA expb= expression )* )?
9401
            	int alt110 = 2;
9402
            	try { dbg.EnterSubRule(110);
9403
            	try { dbg.EnterDecision(110);
9404
9405
            	try
9406
            	{
9407
            	    isCyclicDecision = true;
9408
            	    alt110 = dfa110.Predict(input);
9409
            	}
9410
            	catch (NoViableAltException nvae)
9411
            	{
9412
            	    dbg.RecognitionException(nvae);
9413
            	    throw nvae;
9414
            	}
9415
            	} finally { dbg.ExitDecision(110); }
9416
9417
            	switch (alt110)
9418
            	{
9419
            	    case 1 :
9420
            	        dbg.EnterAlt(1);
9421
9422
            	        // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:919:5: expa= expression ( T_COMMA expb= expression )*
9423
            	        {
9424
            	        	dbg.Location(919,9);
9425
            	        	PushFollow(FOLLOW_expression_in_methodCallParams4552);
9426
            	        	expa = expression();
9427
            	        	state.followingStackPointer--;
9428
9429
            	        	dbg.Location(919,21);
9430
            	        	result.Add(expa);
9431
            	        	dbg.Location(919,41);
9432
            	        	// C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:919:41: ( T_COMMA expb= expression )*
9433
            	        	try { dbg.EnterSubRule(109);
9434
9435
            	        	do
9436
            	        	{
9437
            	        	    int alt109 = 2;
9438
            	        	    try { dbg.EnterDecision(109);
9439
9440
            	        	    int LA109_0 = input.LA(1);
9441
9442
            	        	    if ( (LA109_0 == T_COMMA) )
9443
            	        	    {
9444
            	        	        alt109 = 1;
9445
            	        	    }
9446
9447
9448
            	        	    } finally { dbg.ExitDecision(109); }
9449
9450
            	        	    switch (alt109)
9451
            	        		{
9452
            	        			case 1 :
9453
            	        			    dbg.EnterAlt(1);
9454
9455
            	        			    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:919:42: T_COMMA expb= expression
9456
            	        			    {
9457
            	        			    	dbg.Location(919,42);
9458
            	        			    	Match(input,T_COMMA,FOLLOW_T_COMMA_in_methodCallParams4557);
9459
            	        			    	dbg.Location(919,54);
9460
            	        			    	PushFollow(FOLLOW_expression_in_methodCallParams4561);
9461
            	        			    	expb = expression();
9462
            	        			    	state.followingStackPointer--;
9463
9464
            	        			    	dbg.Location(919,66);
9465
            	        			    	result.Add(expb);
9466
9467
            	        			    }
9468
            	        			    break;
9469
9470
            	        			default:
9471
            	        			    goto loop109;
9472
            	        	    }
9473
            	        	} while (true);
9474
9475
            	        	loop109:
9476
            	        		;	// Stops C# compiler whining that label 'loop109' has no statements
9477
            	        	} finally { dbg.ExitSubRule(109); }
9478
9479
9480
            	        }
9481
            	        break;
9482
9483
            	}
9484
            	} finally { dbg.ExitSubRule(110); }
9485
9486
9487
            }
9488
9489
        }
9490
        catch (RecognitionException re)
9491
    	{
9492
            ReportError(re);
9493
            Recover(input,re);
9494
        }
9495
        finally
9496
    	{
9497
        }
9498
        dbg.Location(920, 2);
9499
9500
        }
9501
        finally {
9502
            dbg.ExitRule(GrammarFileName, "methodCallParams");
9503
            DecRuleLevel();
9504
            if ( RuleLevel==0 ) {dbg.Terminate();}
9505
        }
9506
9507
        return result;
9508
    }
9509
    // $ANTLR end "methodCallParams"
9510
9511
9512
    // $ANTLR start "op_un"
9513
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:929:1: op_un returns [UnaryOperator expr] : (r= op_un_set_list | r2= op_un_map | T_MINUS | T_NOT | T_ABS );
9514
    public UnaryOperator op_un() // throws RecognitionException [1]
9515
    {
9516
        UnaryOperator expr = default(UnaryOperator);
9517
9518
        UnaryOperator r = default(UnaryOperator);
9519
9520
        UnaryOperator r2 = default(UnaryOperator);
9521
9522
9523
9524
        		expr = null;
9525
9526
        try {
9527
        	dbg.EnterRule(GrammarFileName, "op_un");
9528
        	if ( RuleLevel==0 ) {dbg.Commence();}
9529
        	IncRuleLevel();
9530
        	dbg.Location(929, 1);
9531
9532
        try
9533
    	{
9534
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:934:2: (r= op_un_set_list | r2= op_un_map | T_MINUS | T_NOT | T_ABS )
9535
            int alt111 = 5;
9536
            try { dbg.EnterDecision(111);
9537
9538
            try
9539
            {
9540
                isCyclicDecision = true;
9541
                alt111 = dfa111.Predict(input);
9542
            }
9543
            catch (NoViableAltException nvae)
9544
            {
9545
                dbg.RecognitionException(nvae);
9546
                throw nvae;
9547
            }
9548
            } finally { dbg.ExitDecision(111); }
9549
9550
            switch (alt111)
9551
            {
9552
                case 1 :
9553
                    dbg.EnterAlt(1);
9554
9555
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:934:4: r= op_un_set_list
9556
                    {
9557
                    	dbg.Location(934,5);
9558
                    	PushFollow(FOLLOW_op_un_set_list_in_op_un4600);
9559
                    	r = op_un_set_list();
9560
                    	state.followingStackPointer--;
9561
9562
                    	dbg.Location(934,21);
9563
                    	expr = r;
9564
9565
                    }
9566
                    break;
9567
                case 2 :
9568
                    dbg.EnterAlt(2);
9569
9570
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:935:4: r2= op_un_map
9571
                    {
9572
                    	dbg.Location(935,6);
9573
                    	PushFollow(FOLLOW_op_un_map_in_op_un4609);
9574
                    	r2 = op_un_map();
9575
                    	state.followingStackPointer--;
9576
9577
                    	dbg.Location(935,18);
9578
                    	expr = r2;
9579
9580
                    }
9581
                    break;
9582
                case 3 :
9583
                    dbg.EnterAlt(3);
9584
9585
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:936:4: T_MINUS
9586
                    {
9587
                    	dbg.Location(936,4);
9588
                    	Match(input,T_MINUS,FOLLOW_T_MINUS_in_op_un4617);
9589
                    	dbg.Location(936,13);
9590
                    	expr = createUnaryOperator(ExpressionKind.unminus);
9591
9592
                    }
9593
                    break;
9594
                case 4 :
9595
                    dbg.EnterAlt(4);
9596
9597
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:937:4: T_NOT
9598
                    {
9599
                    	dbg.Location(937,4);
9600
                    	Match(input,T_NOT,FOLLOW_T_NOT_in_op_un4625);
9601
                    	dbg.Location(937,11);
9602
                    	expr = createUnaryOperator(ExpressionKind.not);
9603
9604
                    }
9605
                    break;
9606
                case 5 :
9607
                    dbg.EnterAlt(5);
9608
9609
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:938:4: T_ABS
9610
                    {
9611
                    	dbg.Location(938,4);
9612
                    	Match(input,T_ABS,FOLLOW_T_ABS_in_op_un4633);
9613
                    	dbg.Location(938,11);
9614
                    	expr = createUnaryOperator(ExpressionKind.abs);
9615
9616
                    }
9617
                    break;
9618
9619
            }
9620
        }
9621
        catch (RecognitionException re)
9622
    	{
9623
            ReportError(re);
9624
            Recover(input,re);
9625
        }
9626
        finally
9627
    	{
9628
        }
9629
        dbg.Location(939, 2);
9630
9631
        }
9632
        finally {
9633
            dbg.ExitRule(GrammarFileName, "op_un");
9634
            DecRuleLevel();
9635
            if ( RuleLevel==0 ) {dbg.Terminate();}
9636
        }
9637
9638
        return expr;
9639
    }
9640
    // $ANTLR end "op_un"
9641
9642
9643
    // $ANTLR start "op_un_set_list"
9644
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:942: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 );
9645
    public UnaryOperator op_un_set_list() // throws RecognitionException [1]
9646
    {
9647
        UnaryOperator expr = default(UnaryOperator);
9648
9649
9650
        		expr = null;
9651
9652
        try {
9653
        	dbg.EnterRule(GrammarFileName, "op_un_set_list");
9654
        	if ( RuleLevel==0 ) {dbg.Commence();}
9655
        	IncRuleLevel();
9656
        	dbg.Location(942, 1);
9657
9658
        try
9659
    	{
9660
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:947:2: ( T_CARD | T_DCONC | T_DINTER | T_DUNION | T_ELEMS | T_HEAD | T_INDS | T_LEN | T_TAIL )
9661
            int alt112 = 9;
9662
            try { dbg.EnterDecision(112);
9663
9664
            try
9665
            {
9666
                isCyclicDecision = true;
9667
                alt112 = dfa112.Predict(input);
9668
            }
9669
            catch (NoViableAltException nvae)
9670
            {
9671
                dbg.RecognitionException(nvae);
9672
                throw nvae;
9673
            }
9674
            } finally { dbg.ExitDecision(112); }
9675
9676
            switch (alt112)
9677
            {
9678
                case 1 :
9679
                    dbg.EnterAlt(1);
9680
9681
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:947:4: T_CARD
9682
                    {
9683
                    	dbg.Location(947,4);
9684
                    	Match(input,T_CARD,FOLLOW_T_CARD_in_op_un_set_list4660);
9685
                    	dbg.Location(948,3);
9686
                    	expr = createUnaryOperator(ExpressionKind.card);
9687
9688
                    }
9689
                    break;
9690
                case 2 :
9691
                    dbg.EnterAlt(2);
9692
9693
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:949:4: T_DCONC
9694
                    {
9695
                    	dbg.Location(949,4);
9696
                    	Match(input,T_DCONC,FOLLOW_T_DCONC_in_op_un_set_list4671);
9697
                    	dbg.Location(950,3);
9698
                    	expr = createUnaryOperator(ExpressionKind.dconc);
9699
9700
                    }
9701
                    break;
9702
                case 3 :
9703
                    dbg.EnterAlt(3);
9704
9705
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:951:4: T_DINTER
9706
                    {
9707
                    	dbg.Location(951,4);
9708
                    	Match(input,T_DINTER,FOLLOW_T_DINTER_in_op_un_set_list4682);
9709
                    	dbg.Location(952,3);
9710
                    	expr = createUnaryOperator(ExpressionKind.dinter);
9711
9712
                    }
9713
                    break;
9714
                case 4 :
9715
                    dbg.EnterAlt(4);
9716
9717
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:953:4: T_DUNION
9718
                    {
9719
                    	dbg.Location(953,4);
9720
                    	Match(input,T_DUNION,FOLLOW_T_DUNION_in_op_un_set_list4692);
9721
                    	dbg.Location(954,3);
9722
                    	expr = createUnaryOperator(ExpressionKind.dunion);
9723
9724
                    }
9725
                    break;
9726
                case 5 :
9727
                    dbg.EnterAlt(5);
9728
9729
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:955:4: T_ELEMS
9730
                    {
9731
                    	dbg.Location(955,4);
9732
                    	Match(input,T_ELEMS,FOLLOW_T_ELEMS_in_op_un_set_list4702);
9733
                    	dbg.Location(956,3);
9734
                    	expr = createUnaryOperator(ExpressionKind.elems);
9735
9736
                    }
9737
                    break;
9738
                case 6 :
9739
                    dbg.EnterAlt(6);
9740
9741
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:957:4: T_HEAD
9742
                    {
9743
                    	dbg.Location(957,4);
9744
                    	Match(input,T_HEAD,FOLLOW_T_HEAD_in_op_un_set_list4713);
9745
                    	dbg.Location(958,3);
9746
                    	expr = createUnaryOperator(ExpressionKind.head);
9747
9748
                    }
9749
                    break;
9750
                case 7 :
9751
                    dbg.EnterAlt(7);
9752
9753
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:959:4: T_INDS
9754
                    {
9755
                    	dbg.Location(959,4);
9756
                    	Match(input,T_INDS,FOLLOW_T_INDS_in_op_un_set_list4724);
9757
                    	dbg.Location(960,3);
9758
                    	expr = createUnaryOperator(ExpressionKind.inds);
9759
9760
                    }
9761
                    break;
9762
                case 8 :
9763
                    dbg.EnterAlt(8);
9764
9765
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:961:4: T_LEN
9766
                    {
9767
                    	dbg.Location(961,4);
9768
                    	Match(input,T_LEN,FOLLOW_T_LEN_in_op_un_set_list4735);
9769
                    	dbg.Location(962,3);
9770
                    	expr = createUnaryOperator(ExpressionKind.len);
9771
9772
                    }
9773
                    break;
9774
                case 9 :
9775
                    dbg.EnterAlt(9);
9776
9777
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:963:4: T_TAIL
9778
                    {
9779
                    	dbg.Location(963,4);
9780
                    	Match(input,T_TAIL,FOLLOW_T_TAIL_in_op_un_set_list4746);
9781
                    	dbg.Location(964,3);
9782
                    	expr = createUnaryOperator(ExpressionKind.tail);
9783
9784
                    }
9785
                    break;
9786
9787
            }
9788
        }
9789
        catch (RecognitionException re)
9790
    	{
9791
            ReportError(re);
9792
            Recover(input,re);
9793
        }
9794
        finally
9795
    	{
9796
        }
9797
        dbg.Location(965, 2);
9798
9799
        }
9800
        finally {
9801
            dbg.ExitRule(GrammarFileName, "op_un_set_list");
9802
            DecRuleLevel();
9803
            if ( RuleLevel==0 ) {dbg.Terminate();}
9804
        }
9805
9806
        return expr;
9807
    }
9808
    // $ANTLR end "op_un_set_list"
9809
9810
9811
    // $ANTLR start "op_un_map"
9812
    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:968:1: op_un_map returns [UnaryOperator expr] : ( T_DOM | T_RNG | T_MERGE );
9813
    public UnaryOperator op_un_map() // throws RecognitionException [1]
9814
    {
9815
        UnaryOperator expr = default(UnaryOperator);
9816
9817
9818
        		expr = null;
9819
9820
        try {
9821
        	dbg.EnterRule(GrammarFileName, "op_un_map");
9822
        	if ( RuleLevel==0 ) {dbg.Commence();}
9823
        	IncRuleLevel();
9824
        	dbg.Location(968, 1);
9825
9826
        try
9827
    	{
9828
            // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:973:2: ( T_DOM | T_RNG | T_MERGE )
9829
            int alt113 = 3;
9830
            try { dbg.EnterDecision(113);
9831
9832
            switch ( input.LA(1) )
9833
            {
9834
            case T_DOM:
9835
            	{
9836
                alt113 = 1;
9837
                }
9838
                break;
9839
            case T_RNG:
9840
            	{
9841
                alt113 = 2;
9842
                }
9843
                break;
9844
            case T_MERGE:
9845
            	{
9846
                alt113 = 3;
9847
                }
9848
                break;
9849
            	default:
9850
            	    NoViableAltException nvae_d113s0 =
9851
            	        new NoViableAltException("", 113, 0, input);
9852
9853
            	    dbg.RecognitionException(nvae_d113s0);
9854
            	    throw nvae_d113s0;
9855
            }
9856
9857
            } finally { dbg.ExitDecision(113); }
9858
9859
            switch (alt113)
9860
            {
9861
                case 1 :
9862
                    dbg.EnterAlt(1);
9863
9864
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:973:4: T_DOM
9865
                    {
9866
                    	dbg.Location(973,4);
9867
                    	Match(input,T_DOM,FOLLOW_T_DOM_in_op_un_map4775);
9868
                    	dbg.Location(974,3);
9869
                    	expr = createUnaryOperator(ExpressionKind.dom);
9870
9871
                    }
9872
                    break;
9873
                case 2 :
9874
                    dbg.EnterAlt(2);
9875
9876
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:975:4: T_RNG
9877
                    {
9878
                    	dbg.Location(975,4);
9879
                    	Match(input,T_RNG,FOLLOW_T_RNG_in_op_un_map4786);
9880
                    	dbg.Location(976,3);
9881
                    	expr = createUnaryOperator(ExpressionKind.range);
9882
9883
                    }
9884
                    break;
9885
                case 3 :
9886
                    dbg.EnterAlt(3);
9887
9888
                    // C:\\Users\\stiran\\homer\\argos\\trunk\\src\\ooa.g:977:4: T_MERGE
9889
                    {
9890
                    	dbg.Location(977,4);
9891
                    	Match(input,T_MERGE,FOLLOW_T_MERGE_in_op_un_map4797);
9892
                    	dbg.Location(978,3);
9893
                    	expr = createUnaryOperator(ExpressionKind.merge);
9894
9895
                    }
9896
                    break;
9897
9898
            }
9899
        }
9900
        catch (RecognitionException re)
9901
    	{
9902
            ReportError(re);
9903
            Recover(input,re);
9904
        }
9905
        finally
9906
    	{
9907
        }
9908
        dbg.Location(979, 2);
9909
9910
        }
9911
        finally {
9912
            dbg.ExitRule(GrammarFileName, "op_un_map");
9913
            DecRuleLevel();
9914
            if ( RuleLevel==0 ) {dbg.Terminate();}
9915
        }
9916
9917
        return expr;
9918
    }
9919
    // $ANTLR end "op_un_map"
9920
9921
    // Delegated rules
9922
9923
9924
   	protected DFA4 dfa4;
9925
   	protected DFA14 dfa14;
9926
   	protected DFA67 dfa67;
9927
   	protected DFA70 dfa70;
9928
   	protected DFA68 dfa68;
9929
   	protected DFA69 dfa69;
9930
   	protected DFA77 dfa77;
9931
   	protected DFA71 dfa71;
9932
   	protected DFA75 dfa75;
9933
   	protected DFA74 dfa74;
9934
   	protected DFA72 dfa72;
9935
   	protected DFA73 dfa73;
9936
   	protected DFA76 dfa76;
9937
   	protected DFA86 dfa86;
9938
   	protected DFA99 dfa99;
9939
   	protected DFA100 dfa100;
9940
   	protected DFA102 dfa102;
9941
   	protected DFA103 dfa103;
9942
   	protected DFA106 dfa106;
9943
   	protected DFA104 dfa104;
9944
   	protected DFA105 dfa105;
9945
   	protected DFA108 dfa108;
9946
   	protected DFA110 dfa110;
9947
   	protected DFA111 dfa111;
9948
   	protected DFA112 dfa112;
9949
	private void InitializeCyclicDFAs(IDebugEventListener dbg)
9950
	{
9951
    	this.dfa4 = new DFA4(this, dbg);
9952
    	this.dfa14 = new DFA14(this, dbg);
9953
    	this.dfa67 = new DFA67(this, dbg);
9954
    	this.dfa70 = new DFA70(this, dbg);
9955
    	this.dfa68 = new DFA68(this, dbg);
9956
    	this.dfa69 = new DFA69(this, dbg);
9957
    	this.dfa77 = new DFA77(this, dbg);
9958
    	this.dfa71 = new DFA71(this, dbg);
9959
    	this.dfa75 = new DFA75(this, dbg);
9960
    	this.dfa74 = new DFA74(this, dbg);
9961
    	this.dfa72 = new DFA72(this, dbg);
9962
    	this.dfa73 = new DFA73(this, dbg);
9963
    	this.dfa76 = new DFA76(this, dbg);
9964
    	this.dfa86 = new DFA86(this, dbg);
9965
    	this.dfa99 = new DFA99(this, dbg);
9966
    	this.dfa100 = new DFA100(this, dbg);
9967
    	this.dfa102 = new DFA102(this, dbg);
9968
    	this.dfa103 = new DFA103(this, dbg);
9969
    	this.dfa106 = new DFA106(this, dbg);
9970
    	this.dfa104 = new DFA104(this, dbg);
9971
    	this.dfa105 = new DFA105(this, dbg);
9972
    	this.dfa108 = new DFA108(this, dbg);
9973
    	this.dfa110 = new DFA110(this, dbg);
9974
    	this.dfa111 = new DFA111(this, dbg);
9975
    	this.dfa112 = new DFA112(this, dbg);
9976
	    this.dfa99.specialStateTransitionHandler = new DFA.SpecialStateTransitionHandler(DFA99_SpecialStateTransition);
9977
	}
9978
9979
    const string DFA4_eotS =
9980
        "\x0e\uffff";
9981
    const string DFA4_eofS =
9982
        "\x0e\uffff";
9983
    const string DFA4_minS =
9984
        "\x01\x06\x0d\uffff";
9985
    const string DFA4_maxS =
9986
        "\x01\x21\x0d\uffff";
9987
    const string DFA4_acceptS =
9988
        "\x01\uffff\x01\x01\x0a\uffff\x01\x02\x01\uffff";
9989
    const string DFA4_specialS =
9990
        "\x0e\uffff}>";
9991
    static readonly string[] DFA4_transitionS = {
9992
            "\x01\x0c\x01\uffff\x01\x01\x03\uffff\x01\x01\x01\uffff\x02"+
9993
            "\x01\x04\uffff\x01\x01\x01\uffff\x01\x01\x02\uffff\x02\x01\x01"+
9994
            "\uffff\x01\x01\x01\uffff\x02\x01\x01\uffff\x01\x0c",
9995
            "",
9996
            "",
9997
            "",
9998
            "",
9999
            "",
10000
            "",
10001
            "",
10002
            "",
10003
            "",
10004
            "",
10005
            "",
10006
            "",
10007
            ""
10008
    };
10009
10010
    static readonly short[] DFA4_eot = DFA.UnpackEncodedString(DFA4_eotS);
10011
    static readonly short[] DFA4_eof = DFA.UnpackEncodedString(DFA4_eofS);
10012
    static readonly char[] DFA4_min = DFA.UnpackEncodedStringToUnsignedChars(DFA4_minS);
10013
    static readonly char[] DFA4_max = DFA.UnpackEncodedStringToUnsignedChars(DFA4_maxS);
10014
    static readonly short[] DFA4_accept = DFA.UnpackEncodedString(DFA4_acceptS);
10015
    static readonly short[] DFA4_special = DFA.UnpackEncodedString(DFA4_specialS);
10016
    static readonly short[][] DFA4_transition = DFA.UnpackEncodedStringArray(DFA4_transitionS);
10017
10018
    protected class DFA4 : DFA
10019
    {
10020
        IDebugEventListener dbg;
10021
10022
        public DFA4(BaseRecognizer recognizer)
10023
        {
10024
            this.recognizer = recognizer;
10025
            this.decisionNumber = 4;
10026
            this.eot = DFA4_eot;
10027
            this.eof = DFA4_eof;
10028
            this.min = DFA4_min;
10029
            this.max = DFA4_max;
10030
            this.accept = DFA4_accept;
10031
            this.special = DFA4_special;
10032
            this.transition = DFA4_transition;
10033
10034
        }
10035
            public DFA4(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
10036
            {
10037
        		this.dbg = dbg;
10038
            }
10039
10040
        override public string Description
10041
        {
10042
            get { return "175:3: (aType= complexType | anOoaType= ooActionSystem )"; }
10043
        }
10044
10045
        public override void Error(NoViableAltException nvae)
10046
        {
10047
            dbg.RecognitionException(nvae);
10048
        }
10049
    }
10050
10051
    const string DFA14_eotS =
10052
        "\x0c\uffff";
10053
    const string DFA14_eofS =
10054
        "\x0c\uffff";
10055
    const string DFA14_minS =
10056
        "\x01\x08\x0b\uffff";
10057
    const string DFA14_maxS =
10058
        "\x01\x1f\x0b\uffff";
10059
    const string DFA14_acceptS =
10060
        "\x01\uffff\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x05"+
10061
        "\uffff";
10062
    const string DFA14_specialS =
10063
        "\x0c\uffff}>";
10064
    static readonly string[] DFA14_transitionS = {
10065
            "\x01\x06\x03\uffff\x01\x05\x01\uffff\x01\x01\x01\x02\x04\uffff"+
10066
            "\x01\x03\x01\uffff\x01\x04\x02\uffff\x02\x06\x01\uffff\x01\x06"+
10067
            "\x01\uffff\x02\x06",
10068
            "",
10069
            "",
10070
            "",
10071
            "",
10072
            "",
10073
            "",
10074
            "",
10075
            "",
10076
            "",
10077
            "",
10078
            ""
10079
    };
10080
10081
    static readonly short[] DFA14_eot = DFA.UnpackEncodedString(DFA14_eotS);
10082
    static readonly short[] DFA14_eof = DFA.UnpackEncodedString(DFA14_eofS);
10083
    static readonly char[] DFA14_min = DFA.UnpackEncodedStringToUnsignedChars(DFA14_minS);
10084
    static readonly char[] DFA14_max = DFA.UnpackEncodedStringToUnsignedChars(DFA14_maxS);
10085
    static readonly short[] DFA14_accept = DFA.UnpackEncodedString(DFA14_acceptS);
10086
    static readonly short[] DFA14_special = DFA.UnpackEncodedString(DFA14_specialS);
10087
    static readonly short[][] DFA14_transition = DFA.UnpackEncodedStringArray(DFA14_transitionS);
10088
10089
    protected class DFA14 : DFA
10090
    {
10091
        IDebugEventListener dbg;
10092
10093
        public DFA14(BaseRecognizer recognizer)
10094
        {
10095
            this.recognizer = recognizer;
10096
            this.decisionNumber = 14;
10097
            this.eot = DFA14_eot;
10098
            this.eof = DFA14_eof;
10099
            this.min = DFA14_min;
10100
            this.max = DFA14_max;
10101
            this.accept = DFA14_accept;
10102
            this.special = DFA14_special;
10103
            this.transition = DFA14_transition;
10104
10105
        }
10106
            public DFA14(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
10107
            {
10108
        		this.dbg = dbg;
10109
            }
10110
10111
        override public string Description
10112
        {
10113
            get { return "209: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 );"; }
10114
        }
10115
10116
        public override void Error(NoViableAltException nvae)
10117
        {
10118
            dbg.RecognitionException(nvae);
10119
        }
10120
    }
10121
10122
    const string DFA67_eotS =
10123
        "\x32\uffff";
10124
    const string DFA67_eofS =
10125
        "\x32\uffff";
10126
    const string DFA67_minS =
10127
        "\x01\x05\x31\uffff";
10128
    const string DFA67_maxS =
10129
        "\x01\x76\x31\uffff";
10130
    const string DFA67_acceptS =
10131
        "\x01\uffff\x01\x02\x12\uffff\x01\x01\x1d\uffff";
10132
    const string DFA67_specialS =
10133
        "\x32\uffff}>";
10134
    static readonly string[] DFA67_transitionS = {
10135
            "\x01\x01\x01\uffff\x01\x01\x01\uffff\x01\x14\x02\x01\x01\uffff"+
10136
            "\x01\x01\x03\uffff\x01\x01\x01\uffff\x01\x01\x03\uffff\x01\x14"+
10137
            "\x08\uffff\x01\x01\x02\uffff\x03\x01\x04\uffff\x02\x01\x03\uffff"+
10138
            "\x03\x14\x07\uffff\x01\x01\x08\x14\x01\uffff\x11\x14\x02\uffff"+
10139
            "\x02\x01\x07\uffff\x02\x01\x15\uffff\x01\x01",
10140
            "",
10141
            "",
10142
            "",
10143
            "",
10144
            "",
10145
            "",
10146
            "",
10147
            "",
10148
            "",
10149
            "",
10150
            "",
10151
            "",
10152
            "",
10153
            "",
10154
            "",
10155
            "",
10156
            "",
10157
            "",
10158
            "",
10159
            "",
10160
            "",
10161
            "",
10162
            "",
10163
            "",
10164
            "",
10165
            "",
10166
            "",
10167
            "",
10168
            "",
10169
            "",
10170
            "",
10171
            "",
10172
            "",
10173
            "",
10174
            "",
10175
            "",
10176
            "",
10177
            "",
10178
            "",
10179
            "",
10180
            "",
10181
            "",
10182
            "",
10183
            "",
10184
            "",
10185
            "",
10186
            "",
10187
            "",
10188
            ""
10189
    };
10190
10191
    static readonly short[] DFA67_eot = DFA.UnpackEncodedString(DFA67_eotS);
10192
    static readonly short[] DFA67_eof = DFA.UnpackEncodedString(DFA67_eofS);
10193
    static readonly char[] DFA67_min = DFA.UnpackEncodedStringToUnsignedChars(DFA67_minS);
10194
    static readonly char[] DFA67_max = DFA.UnpackEncodedStringToUnsignedChars(DFA67_maxS);
10195
    static readonly short[] DFA67_accept = DFA.UnpackEncodedString(DFA67_acceptS);
10196
    static readonly short[] DFA67_special = DFA.UnpackEncodedString(DFA67_specialS);
10197
    static readonly short[][] DFA67_transition = DFA.UnpackEncodedStringArray(DFA67_transitionS);
10198
10199
    protected class DFA67 : DFA
10200
    {
10201
        IDebugEventListener dbg;
10202
10203
        public DFA67(BaseRecognizer recognizer)
10204
        {
10205
            this.recognizer = recognizer;
10206
            this.decisionNumber = 67;
10207
            this.eot = DFA67_eot;
10208
            this.eof = DFA67_eof;
10209
            this.min = DFA67_min;
10210
            this.max = DFA67_max;
10211
            this.accept = DFA67_accept;
10212
            this.special = DFA67_special;
10213
            this.transition = DFA67_transition;
10214
10215
        }
10216
            public DFA67(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
10217
            {
10218
        		this.dbg = dbg;
10219
            }
10220
10221
        override public string Description
10222
        {
10223
            get { return "()* loopback of 583:3: (op= binoperator right= atomExpression )*"; }
10224
        }
10225
10226
        public override void Error(NoViableAltException nvae)
10227
        {
10228
            dbg.RecognitionException(nvae);
10229
        }
10230
    }
10231
10232
    const string DFA70_eotS =
10233
        "\x1f\uffff";
10234
    const string DFA70_eofS =
10235
        "\x1f\uffff";
10236
    const string DFA70_minS =
10237
        "\x01\x09\x1e\uffff";
10238
    const string DFA70_maxS =
10239
        "\x01\x53\x1e\uffff";
10240
    const string DFA70_acceptS =
10241
        "\x01\uffff\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01"+
10242
        "\x07\x01\x08\x01\x09\x01\x0a\x01\x0b\x01\x0c\x01\x0d\x01\x0e\x01"+
10243
        "\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01"+
10244
        "\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e";
10245
    const string DFA70_specialS =
10246
        "\x1f\uffff}>";
10247
    static readonly string[] DFA70_transitionS = {
10248
            "\x01\x06\x0d\uffff\x01\x09\x17\uffff\x01\x0a\x01\x14\x01\x10"+
10249
            "\x08\uffff\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x07\x01"+
10250
            "\x08\x01\x0b\x01\uffff\x01\x0c\x01\x0d\x01\x0e\x01\x0f\x01\x11"+
10251
            "\x01\x12\x01\x13\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01"+
10252
            "\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e",
10253
            "",
10254
            "",
10255
            "",
10256
            "",
10257
            "",
10258
            "",
10259
            "",
10260
            "",
10261
            "",
10262
            "",
10263
            "",
10264
            "",
10265
            "",
10266
            "",
10267
            "",
10268
            "",
10269
            "",
10270
            "",
10271
            "",
10272
            "",
10273
            "",
10274
            "",
10275
            "",
10276
            "",
10277
            "",
10278
            "",
10279
            "",
10280
            "",
10281
            "",
10282
            ""
10283
    };
10284
10285
    static readonly short[] DFA70_eot = DFA.UnpackEncodedString(DFA70_eotS);
10286
    static readonly short[] DFA70_eof = DFA.UnpackEncodedString(DFA70_eofS);
10287
    static readonly char[] DFA70_min = DFA.UnpackEncodedStringToUnsignedChars(DFA70_minS);
10288
    static readonly char[] DFA70_max = DFA.UnpackEncodedStringToUnsignedChars(DFA70_maxS);
10289
    static readonly short[] DFA70_accept = DFA.UnpackEncodedString(DFA70_acceptS);
10290
    static readonly short[] DFA70_special = DFA.UnpackEncodedString(DFA70_specialS);
10291
    static readonly short[][] DFA70_transition = DFA.UnpackEncodedStringArray(DFA70_transitionS);
10292
10293
    protected class DFA70 : DFA
10294
    {
10295
        IDebugEventListener dbg;
10296
10297
        public DFA70(BaseRecognizer recognizer)
10298
        {
10299
            this.recognizer = recognizer;
10300
            this.decisionNumber = 70;
10301
            this.eot = DFA70_eot;
10302
            this.eof = DFA70_eof;
10303
            this.min = DFA70_min;
10304
            this.max = DFA70_max;
10305
            this.accept = DFA70_accept;
10306
            this.special = DFA70_special;
10307
            this.transition = DFA70_transition;
10308
10309
        }
10310
            public DFA70(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
10311
            {
10312
        		this.dbg = dbg;
10313
            }
10314
10315
        override public string Description
10316
        {
10317
            get { return "594: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 );"; }
10318
        }
10319
10320
        public override void Error(NoViableAltException nvae)
10321
        {
10322
            dbg.RecognitionException(nvae);
10323
        }
10324
    }
10325
10326
    const string DFA68_eotS =
10327
        "\x20\uffff";
10328
    const string DFA68_eofS =
10329
        "\x20\uffff";
10330
    const string DFA68_minS =
10331
        "\x01\x08\x1f\uffff";
10332
    const string DFA68_maxS =
10333
        "\x01\x7a\x1f\uffff";
10334
    const string DFA68_acceptS =
10335
        "\x01\uffff\x01\x01\x01\x02\x1d\uffff";
10336
    const string DFA68_specialS =
10337
        "\x20\uffff}>";
10338
    static readonly string[] DFA68_transitionS = {
10339
            "\x01\x02\x03\uffff\x01\x02\x02\uffff\x02\x02\x06\uffff\x01"+
10340
            "\x02\x05\uffff\x01\x02\x01\uffff\x01\x02\x17\uffff\x01\x02\x0a"+
10341
            "\uffff\x01\x01\x01\x02\x11\uffff\x01\x02\x02\uffff\x07\x02\x03"+
10342
            "\uffff\x0d\x02\x0b\uffff\x01\x02",
10343
            "",
10344
            "",
10345
            "",
10346
            "",
10347
            "",
10348
            "",
10349
            "",
10350
            "",
10351
            "",
10352
            "",
10353
            "",
10354
            "",
10355
            "",
10356
            "",
10357
            "",
10358
            "",
10359
            "",
10360
            "",
10361
            "",
10362
            "",
10363
            "",
10364
            "",
10365
            "",
10366
            "",
10367
            "",
10368
            "",
10369
            "",
10370
            "",
10371
            "",
10372
            "",
10373
            ""
10374
    };
10375
10376
    static readonly short[] DFA68_eot = DFA.UnpackEncodedString(DFA68_eotS);
10377
    static readonly short[] DFA68_eof = DFA.UnpackEncodedString(DFA68_eofS);
10378
    static readonly char[] DFA68_min = DFA.UnpackEncodedStringToUnsignedChars(DFA68_minS);
10379
    static readonly char[] DFA68_max = DFA.UnpackEncodedStringToUnsignedChars(DFA68_maxS);
10380
    static readonly short[] DFA68_accept = DFA.UnpackEncodedString(DFA68_acceptS);
10381
    static readonly short[] DFA68_special = DFA.UnpackEncodedString(DFA68_specialS);
10382
    static readonly short[][] DFA68_transition = DFA.UnpackEncodedStringArray(DFA68_transitionS);
10383
10384
    protected class DFA68 : DFA
10385
    {
10386
        IDebugEventListener dbg;
10387
10388
        public DFA68(BaseRecognizer recognizer)
10389
        {
10390
            this.recognizer = recognizer;
10391
            this.decisionNumber = 68;
10392
            this.eot = DFA68_eot;
10393
            this.eof = DFA68_eof;
10394
            this.min = DFA68_min;
10395
            this.max = DFA68_max;
10396
            this.accept = DFA68_accept;
10397
            this.special = DFA68_special;
10398
            this.transition = DFA68_transition;
10399
10400
        }
10401
            public DFA68(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
10402
            {
10403
        		this.dbg = dbg;
10404
            }
10405
10406
        override public string Description
10407
        {
10408
            get { return "616:9: ( T_SET )?"; }
10409
        }
10410
10411
        public override void Error(NoViableAltException nvae)
10412
        {
10413
            dbg.RecognitionException(nvae);
10414
        }
10415
    }
10416
10417
    const string DFA69_eotS =
10418
        "\x20\uffff";
10419
    const string DFA69_eofS =
10420
        "\x20\uffff";
10421
    const string DFA69_minS =
10422
        "\x01\x08\x1f\uffff";
10423
    const string DFA69_maxS =
10424
        "\x01\x7a\x1f\uffff";
10425
    const string DFA69_acceptS =
10426
        "\x01\uffff\x01\x01\x01\x02\x1d\uffff";
10427
    const string DFA69_specialS =
10428
        "\x20\uffff}>";
10429
    static readonly string[] DFA69_transitionS = {
10430
            "\x01\x02\x03\uffff\x01\x02\x02\uffff\x02\x02\x06\uffff\x01"+
10431
            "\x02\x05\uffff\x01\x02\x01\uffff\x01\x02\x17\uffff\x01\x02\x0a"+
10432
            "\uffff\x01\x01\x01\x02\x11\uffff\x01\x02\x02\uffff\x07\x02\x03"+
10433
            "\uffff\x0d\x02\x0b\uffff\x01\x02",
10434
            "",
10435
            "",
10436
            "",
10437
            "",
10438
            "",
10439
            "",
10440
            "",
10441
            "",
10442
            "",
10443
            "",
10444
            "",
10445
            "",
10446
            "",
10447
            "",
10448
            "",
10449
            "",
10450
            "",
10451
            "",
10452
            "",
10453
            "",
10454
            "",
10455
            "",
10456
            "",
10457
            "",
10458
            "",
10459
            "",
10460
            "",
10461
            "",
10462
            "",
10463
            "",
10464
            ""
10465
    };
10466
10467
    static readonly short[] DFA69_eot = DFA.UnpackEncodedString(DFA69_eotS);
10468
    static readonly short[] DFA69_eof = DFA.UnpackEncodedString(DFA69_eofS);
10469
    static readonly char[] DFA69_min = DFA.UnpackEncodedStringToUnsignedChars(DFA69_minS);
10470
    static readonly char[] DFA69_max = DFA.UnpackEncodedStringToUnsignedChars(DFA69_maxS);
10471
    static readonly short[] DFA69_accept = DFA.UnpackEncodedString(DFA69_acceptS);
10472
    static readonly short[] DFA69_special = DFA.UnpackEncodedString(DFA69_specialS);
10473
    static readonly short[][] DFA69_transition = DFA.UnpackEncodedStringArray(DFA69_transitionS);
10474
10475
    protected class DFA69 : DFA
10476
    {
10477
        IDebugEventListener dbg;
10478
10479
        public DFA69(BaseRecognizer recognizer)
10480
        {
10481
            this.recognizer = recognizer;
10482
            this.decisionNumber = 69;
10483
            this.eot = DFA69_eot;
10484
            this.eof = DFA69_eof;
10485
            this.min = DFA69_min;
10486
            this.max = DFA69_max;
10487
            this.accept = DFA69_accept;
10488
            this.special = DFA69_special;
10489
            this.transition = DFA69_transition;
10490
10491
        }
10492
            public DFA69(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
10493
            {
10494
        		this.dbg = dbg;
10495
            }
10496
10497
        override public string Description
10498
        {
10499
            get { return "618:15: ( T_SET )?"; }
10500
        }
10501
10502
        public override void Error(NoViableAltException nvae)
10503
        {
10504
            dbg.RecognitionException(nvae);
10505
        }
10506
    }
10507
10508
    const string DFA77_eotS =
10509
        "\x1f\uffff";
10510
    const string DFA77_eofS =
10511
        "\x1f\uffff";
10512
    const string DFA77_minS =
10513
        "\x01\x08\x1e\uffff";
10514
    const string DFA77_maxS =
10515
        "\x01\x7a\x1e\uffff";
10516
    const string DFA77_acceptS =
10517
        "\x01\uffff\x01\x01\x1c\uffff\x01\x02";
10518
    const string DFA77_specialS =
10519
        "\x1f\uffff}>";
10520
    static readonly string[] DFA77_transitionS = {
10521
            "\x01\x01\x03\uffff\x01\x01\x02\uffff\x02\x01\x06\uffff\x01"+
10522
            "\x01\x05\uffff\x01\x01\x01\uffff\x01\x01\x17\uffff\x01\x01\x0b"+
10523
            "\uffff\x01\x01\x11\uffff\x01\x1e\x02\uffff\x07\x01\x03\uffff"+
10524
            "\x0d\x01\x0b\uffff\x01\x01",
10525
            "",
10526
            "",
10527
            "",
10528
            "",
10529
            "",
10530
            "",
10531
            "",
10532
            "",
10533
            "",
10534
            "",
10535
            "",
10536
            "",
10537
            "",
10538
            "",
10539
            "",
10540
            "",
10541
            "",
10542
            "",
10543
            "",
10544
            "",
10545
            "",
10546
            "",
10547
            "",
10548
            "",
10549
            "",
10550
            "",
10551
            "",
10552
            "",
10553
            "",
10554
            ""
10555
    };
10556
10557
    static readonly short[] DFA77_eot = DFA.UnpackEncodedString(DFA77_eotS);
10558
    static readonly short[] DFA77_eof = DFA.UnpackEncodedString(DFA77_eofS);
10559
    static readonly char[] DFA77_min = DFA.UnpackEncodedStringToUnsignedChars(DFA77_minS);
10560
    static readonly char[] DFA77_max = DFA.UnpackEncodedStringToUnsignedChars(DFA77_maxS);
10561
    static readonly short[] DFA77_accept = DFA.UnpackEncodedString(DFA77_acceptS);
10562
    static readonly short[] DFA77_special = DFA.UnpackEncodedString(DFA77_specialS);
10563
    static readonly short[][] DFA77_transition = DFA.UnpackEncodedStringArray(DFA77_transitionS);
10564
10565
    protected class DFA77 : DFA
10566
    {
10567
        IDebugEventListener dbg;
10568
10569
        public DFA77(BaseRecognizer recognizer)
10570
        {
10571
            this.recognizer = recognizer;
10572
            this.decisionNumber = 77;
10573
            this.eot = DFA77_eot;
10574
            this.eof = DFA77_eof;
10575
            this.min = DFA77_min;
10576
            this.max = DFA77_max;
10577
            this.accept = DFA77_accept;
10578
            this.special = DFA77_special;
10579
            this.transition = DFA77_transition;
10580
10581
        }
10582
            public DFA77(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
10583
            {
10584
        		this.dbg = dbg;
10585
            }
10586
10587
        override public string Description
10588
        {
10589
            get { return "660: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 );"; }
10590
        }
10591
10592
        public override void Error(NoViableAltException nvae)
10593
        {
10594
            dbg.RecognitionException(nvae);
10595
        }
10596
    }
10597
10598
    const string DFA71_eotS =
10599
        "\x1e\uffff";
10600
    const string DFA71_eofS =
10601
        "\x1e\uffff";
10602
    const string DFA71_minS =
10603
        "\x01\x08\x1d\uffff";
10604
    const string DFA71_maxS =
10605
        "\x01\x7a\x1d\uffff";
10606
    const string DFA71_acceptS =
10607
        "\x01\uffff\x01\x01\x0e\uffff\x01\x02\x0d\uffff";
10608
    const string DFA71_specialS =
10609
        "\x1e\uffff}>";
10610
    static readonly string[] DFA71_transitionS = {
10611
            "\x01\x10\x03\uffff\x01\x10\x02\uffff\x02\x10\x06\uffff\x01"+
10612
            "\x01\x05\uffff\x01\x10\x01\uffff\x01\x10\x17\uffff\x01\x10\x0b"+
10613
            "\uffff\x01\x01\x14\uffff\x07\x10\x03\uffff\x0d\x01\x0b\uffff"+
10614
            "\x01\x10",
10615
            "",
10616
            "",
10617
            "",
10618
            "",
10619
            "",
10620
            "",
10621
            "",
10622
            "",
10623
            "",
10624
            "",
10625
            "",
10626
            "",
10627
            "",
10628
            "",
10629
            "",
10630
            "",
10631
            "",
10632
            "",
10633
            "",
10634
            "",
10635
            "",
10636
            "",
10637
            "",
10638
            "",
10639
            "",
10640
            "",
10641
            "",
10642
            "",
10643
            ""
10644
    };
10645
10646
    static readonly short[] DFA71_eot = DFA.UnpackEncodedString(DFA71_eotS);
10647
    static readonly short[] DFA71_eof = DFA.UnpackEncodedString(DFA71_eofS);
10648
    static readonly char[] DFA71_min = DFA.UnpackEncodedStringToUnsignedChars(DFA71_minS);
10649
    static readonly char[] DFA71_max = DFA.UnpackEncodedStringToUnsignedChars(DFA71_maxS);
10650
    static readonly short[] DFA71_accept = DFA.UnpackEncodedString(DFA71_acceptS);
10651
    static readonly short[] DFA71_special = DFA.UnpackEncodedString(DFA71_specialS);
10652
    static readonly short[][] DFA71_transition = DFA.UnpackEncodedStringArray(DFA71_transitionS);
10653
10654
    protected class DFA71 : DFA
10655
    {
10656
        IDebugEventListener dbg;
10657
10658
        public DFA71(BaseRecognizer recognizer)
10659
        {
10660
            this.recognizer = recognizer;
10661
            this.decisionNumber = 71;
10662
            this.eot = DFA71_eot;
10663
            this.eof = DFA71_eof;
10664
            this.min = DFA71_min;
10665
            this.max = DFA71_max;
10666
            this.accept = DFA71_accept;
10667
            this.special = DFA71_special;
10668
            this.transition = DFA71_transition;
10669
10670
        }
10671
            public DFA71(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
10672
            {
10673
        		this.dbg = dbg;
10674
            }
10675
10676
        override public string Description
10677
        {
10678
            get { return "665:11: (unexpr= op_un )?"; }
10679
        }
10680
10681
        public override void Error(NoViableAltException nvae)
10682
        {
10683
            dbg.RecognitionException(nvae);
10684
        }
10685
    }
10686
10687
    const string DFA75_eotS =
10688
        "\x42\uffff";
10689
    const string DFA75_eofS =
10690
        "\x42\uffff";
10691
    const string DFA75_minS =
10692
        "\x01\x08\x01\uffff\x01\x05\x3f\uffff";
10693
    const string DFA75_maxS =
10694
        "\x01\x7a\x01\uffff\x01\x79\x3f\uffff";
10695
    const string DFA75_acceptS =
10696
        "\x01\uffff\x01\x01\x01\uffff\x01\x02\x01\x03\x05\uffff\x01\x04"+
10697
        "\x02\uffff\x01\x05\x01\x06\x33\uffff";
10698
    const string DFA75_specialS =
10699
        "\x42\uffff}>";
10700
    static readonly string[] DFA75_transitionS = {
10701
            "\x01\x01\x03\uffff\x01\x0e\x02\uffff\x01\x0a\x01\x04\x0c\uffff"+
10702
            "\x01\x04\x01\uffff\x01\x0a\x17\uffff\x01\x02\x20\uffff\x02\x0d"+
10703
            "\x04\x04\x01\x0a\x1b\uffff\x01\x03",
10704
            "",
10705
            "\x01\x04\x01\uffff\x01\x04\x01\uffff\x03\x04\x01\uffff\x01"+
10706
            "\x04\x03\uffff\x01\x04\x01\uffff\x01\x04\x03\uffff\x01\x04\x08"+
10707
            "\uffff\x01\x04\x02\uffff\x03\x04\x04\uffff\x02\x04\x03\uffff"+
10708
            "\x03\x04\x07\uffff\x09\x04\x01\uffff\x11\x04\x01\x01\x01\uffff"+
10709
            "\x02\x04\x07\uffff\x02\x04\x15\uffff\x01\x04\x02\uffff\x01\x04",
10710
            "",
10711
            "",
10712
            "",
10713
            "",
10714
            "",
10715
            "",
10716
            "",
10717
            "",
10718
            "",
10719
            "",
10720
            "",
10721
            "",
10722
            "",
10723
            "",
10724
            "",
10725
            "",
10726
            "",
10727
            "",
10728
            "",
10729
            "",
10730
            "",
10731
            "",
10732
            "",
10733
            "",
10734
            "",
10735
            "",
10736
            "",
10737
            "",
10738
            "",
10739
            "",
10740
            "",
10741
            "",
10742
            "",
10743
            "",
10744
            "",
10745
            "",
10746
            "",
10747
            "",
10748
            "",
10749
            "",
10750
            "",
10751
            "",
10752
            "",
10753
            "",
10754
            "",
10755
            "",
10756
            "",
10757
            "",
10758
            "",
10759
            "",
10760
            "",
10761
            "",
10762
            "",
10763
            "",
10764
            "",
10765
            "",
10766
            "",
10767
            "",
10768
            "",
10769
            "",
10770
            "",
10771
            "",
10772
            ""
10773
    };
10774
10775
    static readonly short[] DFA75_eot = DFA.UnpackEncodedString(DFA75_eotS);
10776
    static readonly short[] DFA75_eof = DFA.UnpackEncodedString(DFA75_eofS);
10777
    static readonly char[] DFA75_min = DFA.UnpackEncodedStringToUnsignedChars(DFA75_minS);
10778
    static readonly char[] DFA75_max = DFA.UnpackEncodedStringToUnsignedChars(DFA75_maxS);
10779
    static readonly short[] DFA75_accept = DFA.UnpackEncodedString(DFA75_acceptS);
10780
    static readonly short[] DFA75_special = DFA.UnpackEncodedString(DFA75_specialS);
10781
    static readonly short[][] DFA75_transition = DFA.UnpackEncodedStringArray(DFA75_transitionS);
10782
10783
    protected class DFA75 : DFA
10784
    {
10785
        IDebugEventListener dbg;
10786
10787
        public DFA75(BaseRecognizer recognizer)
10788
        {
10789
            this.recognizer = recognizer;
10790
            this.decisionNumber = 75;
10791
            this.eot = DFA75_eot;
10792
            this.eof = DFA75_eof;
10793
            this.min = DFA75_min;
10794
            this.max = DFA75_max;
10795
            this.accept = DFA75_accept;
10796
            this.special = DFA75_special;
10797
            this.transition = DFA75_transition;
10798
10799
        }
10800
            public DFA75(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
10801
            {
10802
        		this.dbg = dbg;
10803
            }
10804
10805
        override public string Description
10806
        {
10807
            get { return "665: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] )? )"; }
10808
        }
10809
10810
        public override void Error(NoViableAltException nvae)
10811
        {
10812
            dbg.RecognitionException(nvae);
10813
        }
10814
    }
10815
10816
    const string DFA74_eotS =
10817
        "\x36\uffff";
10818
    const string DFA74_eofS =
10819
        "\x36\uffff";
10820
    const string DFA74_minS =
10821
        "\x01\x05\x35\uffff";
10822
    const string DFA74_maxS =
10823
        "\x01\x79\x35\uffff";
10824
    const string DFA74_acceptS =
10825
        "\x01\uffff\x01\x01\x01\x02\x01\uffff\x01\x03\x31\uffff";
10826
    const string DFA74_specialS =
10827
        "\x36\uffff}>";
10828
    static readonly string[] DFA74_transitionS = {
10829
            "\x01\x04\x01\uffff\x01\x04\x01\uffff\x03\x04\x01\x02\x01\x04"+
10830
            "\x01\uffff\x01\x02\x01\uffff\x01\x04\x01\uffff\x01\x04\x03\uffff"+
10831
            "\x01\x04\x08\uffff\x01\x04\x02\uffff\x03\x04\x04\uffff\x02\x04"+
10832
            "\x03\uffff\x03\x04\x07\uffff\x09\x04\x01\uffff\x11\x04\x01\x01"+
10833
            "\x01\uffff\x02\x04\x07\uffff\x02\x04\x15\uffff\x01\x04\x02\uffff"+
10834
            "\x01\x04",
10835
            "",
10836
            "",
10837
            "",
10838
            "",
10839
            "",
10840
            "",
10841
            "",
10842
            "",
10843
            "",
10844
            "",
10845
            "",
10846
            "",
10847
            "",
10848
            "",
10849
            "",
10850
            "",
10851
            "",
10852
            "",
10853
            "",
10854
            "",
10855
            "",
10856
            "",
10857
            "",
10858
            "",
10859
            "",
10860
            "",
10861
            "",
10862
            "",
10863
            "",
10864
            "",
10865
            "",
10866
            "",
10867
            "",
10868
            "",
10869
            "",
10870
            "",
10871
            "",
10872
            "",
10873
            "",
10874
            "",
10875
            "",
10876
            "",
10877
            "",
10878
            "",
10879
            "",
10880
            "",
10881
            "",
10882
            "",
10883
            "",
10884
            "",
10885
            "",
10886
            "",
10887
            ""
10888
    };
10889
10890
    static readonly short[] DFA74_eot = DFA.UnpackEncodedString(DFA74_eotS);
10891
    static readonly short[] DFA74_eof = DFA.UnpackEncodedString(DFA74_eofS);
10892
    static readonly char[] DFA74_min = DFA.UnpackEncodedStringToUnsignedChars(DFA74_minS);
10893
    static readonly char[] DFA74_max = DFA.UnpackEncodedStringToUnsignedChars(DFA74_maxS);
10894
    static readonly short[] DFA74_accept = DFA.UnpackEncodedString(DFA74_acceptS);
10895
    static readonly short[] DFA74_special = DFA.UnpackEncodedString(DFA74_specialS);
10896
    static readonly short[][] DFA74_transition = DFA.UnpackEncodedStringArray(DFA74_transitionS);
10897
10898
    protected class DFA74 : DFA
10899
    {
10900
        IDebugEventListener dbg;
10901
10902
        public DFA74(BaseRecognizer recognizer)
10903
        {
10904
            this.recognizer = recognizer;
10905
            this.decisionNumber = 74;
10906
            this.eot = DFA74_eot;
10907
            this.eof = DFA74_eof;
10908
            this.min = DFA74_min;
10909
            this.max = DFA74_max;
10910
            this.accept = DFA74_accept;
10911
            this.special = DFA74_special;
10912
            this.transition = DFA74_transition;
10913
10914
        }
10915
            public DFA74(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
10916
            {
10917
        		this.dbg = dbg;
10918
            }
10919
10920
        override public string Description
10921
        {
10922
            get { return "672:8: ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[e] )? | e= accessExpression[e] )?"; }
10923
        }
10924
10925
        public override void Error(NoViableAltException nvae)
10926
        {
10927
            dbg.RecognitionException(nvae);
10928
        }
10929
    }
10930
10931
    const string DFA72_eotS =
10932
        "\x36\uffff";
10933
    const string DFA72_eofS =
10934
        "\x36\uffff";
10935
    const string DFA72_minS =
10936
        "\x01\x05\x35\uffff";
10937
    const string DFA72_maxS =
10938
        "\x01\x79\x35\uffff";
10939
    const string DFA72_acceptS =
10940
        "\x01\uffff\x01\x02\x33\uffff\x01\x01";
10941
    const string DFA72_specialS =
10942
        "\x36\uffff}>";
10943
    static readonly string[] DFA72_transitionS = {
10944
            "\x01\x01\x01\uffff\x01\x01\x01\uffff\x05\x01\x01\uffff\x01"+
10945
            "\x01\x01\uffff\x01\x01\x01\uffff\x01\x01\x03\uffff\x01\x01\x08"+
10946
            "\uffff\x01\x01\x02\uffff\x03\x01\x04\uffff\x02\x01\x03\uffff"+
10947
            "\x03\x01\x07\uffff\x09\x01\x01\uffff\x11\x01\x01\x35\x01\uffff"+
10948
            "\x02\x01\x07\uffff\x02\x01\x15\uffff\x01\x01\x02\uffff\x01\x01",
10949
            "",
10950
            "",
10951
            "",
10952
            "",
10953
            "",
10954
            "",
10955
            "",
10956
            "",
10957
            "",
10958
            "",
10959
            "",
10960
            "",
10961
            "",
10962
            "",
10963
            "",
10964
            "",
10965
            "",
10966
            "",
10967
            "",
10968
            "",
10969
            "",
10970
            "",
10971
            "",
10972
            "",
10973
            "",
10974
            "",
10975
            "",
10976
            "",
10977
            "",
10978
            "",
10979
            "",
10980
            "",
10981
            "",
10982
            "",
10983
            "",
10984
            "",
10985
            "",
10986
            "",
10987
            "",
10988
            "",
10989
            "",
10990
            "",
10991
            "",
10992
            "",
10993
            "",
10994
            "",
10995
            "",
10996
            "",
10997
            "",
10998
            "",
10999
            "",
11000
            "",
11001
            ""
11002
    };
11003
11004
    static readonly short[] DFA72_eot = DFA.UnpackEncodedString(DFA72_eotS);
11005
    static readonly short[] DFA72_eof = DFA.UnpackEncodedString(DFA72_eofS);
11006
    static readonly char[] DFA72_min = DFA.UnpackEncodedStringToUnsignedChars(DFA72_minS);
11007
    static readonly char[] DFA72_max = DFA.UnpackEncodedStringToUnsignedChars(DFA72_maxS);
11008
    static readonly short[] DFA72_accept = DFA.UnpackEncodedString(DFA72_acceptS);
11009
    static readonly short[] DFA72_special = DFA.UnpackEncodedString(DFA72_specialS);
11010
    static readonly short[][] DFA72_transition = DFA.UnpackEncodedStringArray(DFA72_transitionS);
11011
11012
    protected class DFA72 : DFA
11013
    {
11014
        IDebugEventListener dbg;
11015
11016
        public DFA72(BaseRecognizer recognizer)
11017
        {
11018
            this.recognizer = recognizer;
11019
            this.decisionNumber = 72;
11020
            this.eot = DFA72_eot;
11021
            this.eof = DFA72_eof;
11022
            this.min = DFA72_min;
11023
            this.max = DFA72_max;
11024
            this.accept = DFA72_accept;
11025
            this.special = DFA72_special;
11026
            this.transition = DFA72_transition;
11027
11028
        }
11029
            public DFA72(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
11030
            {
11031
        		this.dbg = dbg;
11032
            }
11033
11034
        override public string Description
11035
        {
11036
            get { return "()+ loopback of 673:6: ( T_POINT idn= T_IDENTIFIER )+"; }
11037
        }
11038
11039
        public override void Error(NoViableAltException nvae)
11040
        {
11041
            dbg.RecognitionException(nvae);
11042
        }
11043
    }
11044
11045
    const string DFA73_eotS =
11046
        "\x35\uffff";
11047
    const string DFA73_eofS =
11048
        "\x35\uffff";
11049
    const string DFA73_minS =
11050
        "\x01\x05\x34\uffff";
11051
    const string DFA73_maxS =
11052
        "\x01\x79\x34\uffff";
11053
    const string DFA73_acceptS =
11054
        "\x01\uffff\x01\x01\x01\uffff\x01\x02\x31\uffff";
11055
    const string DFA73_specialS =
11056
        "\x35\uffff}>";
11057
    static readonly string[] DFA73_transitionS = {
11058
            "\x01\x03\x01\uffff\x01\x03\x01\uffff\x03\x03\x01\x01\x01\x03"+
11059
            "\x01\uffff\x01\x01\x01\uffff\x01\x03\x01\uffff\x01\x03\x03\uffff"+
11060
            "\x01\x03\x08\uffff\x01\x03\x02\uffff\x03\x03\x04\uffff\x02\x03"+
11061
            "\x03\uffff\x03\x03\x07\uffff\x09\x03\x01\uffff\x11\x03\x02\uffff"+
11062
            "\x02\x03\x07\uffff\x02\x03\x15\uffff\x01\x03\x02\uffff\x01\x03",
11063
            "",
11064
            "",
11065
            "",
11066
            "",
11067
            "",
11068
            "",
11069
            "",
11070
            "",
11071
            "",
11072
            "",
11073
            "",
11074
            "",
11075
            "",
11076
            "",
11077
            "",
11078
            "",
11079
            "",
11080
            "",
11081
            "",
11082
            "",
11083
            "",
11084
            "",
11085
            "",
11086
            "",
11087
            "",
11088
            "",
11089
            "",
11090
            "",
11091
            "",
11092
            "",
11093
            "",
11094
            "",
11095
            "",
11096
            "",
11097
            "",
11098
            "",
11099
            "",
11100
            "",
11101
            "",
11102
            "",
11103
            "",
11104
            "",
11105
            "",
11106
            "",
11107
            "",
11108
            "",
11109
            "",
11110
            "",
11111
            "",
11112
            "",
11113
            "",
11114
            ""
11115
    };
11116
11117
    static readonly short[] DFA73_eot = DFA.UnpackEncodedString(DFA73_eotS);
11118
    static readonly short[] DFA73_eof = DFA.UnpackEncodedString(DFA73_eofS);
11119
    static readonly char[] DFA73_min = DFA.UnpackEncodedStringToUnsignedChars(DFA73_minS);
11120
    static readonly char[] DFA73_max = DFA.UnpackEncodedStringToUnsignedChars(DFA73_maxS);
11121
    static readonly short[] DFA73_accept = DFA.UnpackEncodedString(DFA73_acceptS);
11122
    static readonly short[] DFA73_special = DFA.UnpackEncodedString(DFA73_specialS);
11123
    static readonly short[][] DFA73_transition = DFA.UnpackEncodedStringArray(DFA73_transitionS);
11124
11125
    protected class DFA73 : DFA
11126
    {
11127
        IDebugEventListener dbg;
11128
11129
        public DFA73(BaseRecognizer recognizer)
11130
        {
11131
            this.recognizer = recognizer;
11132
            this.decisionNumber = 73;
11133
            this.eot = DFA73_eot;
11134
            this.eof = DFA73_eof;
11135
            this.min = DFA73_min;
11136
            this.max = DFA73_max;
11137
            this.accept = DFA73_accept;
11138
            this.special = DFA73_special;
11139
            this.transition = DFA73_transition;
11140
11141
        }
11142
            public DFA73(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
11143
            {
11144
        		this.dbg = dbg;
11145
            }
11146
11147
        override public string Description
11148
        {
11149
            get { return "676:8: (res= accessExpression[e] )?"; }
11150
        }
11151
11152
        public override void Error(NoViableAltException nvae)
11153
        {
11154
            dbg.RecognitionException(nvae);
11155
        }
11156
    }
11157
11158
    const string DFA76_eotS =
11159
        "\x33\uffff";
11160
    const string DFA76_eofS =
11161
        "\x33\uffff";
11162
    const string DFA76_minS =
11163
        "\x01\x05\x32\uffff";
11164
    const string DFA76_maxS =
11165
        "\x01\x79\x32\uffff";
11166
    const string DFA76_acceptS =
11167
        "\x01\uffff\x01\x01\x01\x02\x30\uffff";
11168
    const string DFA76_specialS =
11169
        "\x33\uffff}>";
11170
    static readonly string[] DFA76_transitionS = {
11171
            "\x01\x02\x01\uffff\x01\x02\x01\uffff\x03\x02\x01\uffff\x01"+
11172
            "\x02\x03\uffff\x01\x02\x01\uffff\x01\x02\x03\uffff\x01\x02\x08"+
11173
            "\uffff\x01\x02\x02\uffff\x03\x02\x04\uffff\x02\x02\x03\uffff"+
11174
            "\x03\x02\x07\uffff\x09\x02\x01\uffff\x11\x02\x02\uffff\x02\x02"+
11175
            "\x07\uffff\x02\x02\x15\uffff\x01\x02\x02\uffff\x01\x01",
11176
            "",
11177
            "",
11178
            "",
11179
            "",
11180
            "",
11181
            "",
11182
            "",
11183
            "",
11184
            "",
11185
            "",
11186
            "",
11187
            "",
11188
            "",
11189
            "",
11190
            "",
11191
            "",
11192
            "",
11193
            "",
11194
            "",
11195
            "",
11196
            "",
11197
            "",
11198
            "",
11199
            "",
11200
            "",
11201
            "",
11202
            "",
11203
            "",
11204
            "",
11205
            "",
11206
            "",
11207
            "",
11208
            "",
11209
            "",
11210
            "",
11211
            "",
11212
            "",
11213
            "",
11214
            "",
11215
            "",
11216
            "",
11217
            "",
11218
            "",
11219
            "",
11220
            "",
11221
            "",
11222
            "",
11223
            "",
11224
            "",
11225
            ""
11226
    };
11227
11228
    static readonly short[] DFA76_eot = DFA.UnpackEncodedString(DFA76_eotS);
11229
    static readonly short[] DFA76_eof = DFA.UnpackEncodedString(DFA76_eofS);
11230
    static readonly char[] DFA76_min = DFA.UnpackEncodedStringToUnsignedChars(DFA76_minS);
11231
    static readonly char[] DFA76_max = DFA.UnpackEncodedStringToUnsignedChars(DFA76_maxS);
11232
    static readonly short[] DFA76_accept = DFA.UnpackEncodedString(DFA76_acceptS);
11233
    static readonly short[] DFA76_special = DFA.UnpackEncodedString(DFA76_specialS);
11234
    static readonly short[][] DFA76_transition = DFA.UnpackEncodedStringArray(DFA76_transitionS);
11235
11236
    protected class DFA76 : DFA
11237
    {
11238
        IDebugEventListener dbg;
11239
11240
        public DFA76(BaseRecognizer recognizer)
11241
        {
11242
            this.recognizer = recognizer;
11243
            this.decisionNumber = 76;
11244
            this.eot = DFA76_eot;
11245
            this.eof = DFA76_eof;
11246
            this.min = DFA76_min;
11247
            this.max = DFA76_max;
11248
            this.accept = DFA76_accept;
11249
            this.special = DFA76_special;
11250
            this.transition = DFA76_transition;
11251
11252
        }
11253
            public DFA76(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
11254
            {
11255
        		this.dbg = dbg;
11256
            }
11257
11258
        override public string Description
11259
        {
11260
            get { return "680:5: ( 'as' cid= T_IDENTIFIER )?"; }
11261
        }
11262
11263
        public override void Error(NoViableAltException nvae)
11264
        {
11265
            dbg.RecognitionException(nvae);
11266
        }
11267
    }
11268
11269
    const string DFA86_eotS =
11270
        "\x21\uffff";
11271
    const string DFA86_eofS =
11272
        "\x21\uffff";
11273
    const string DFA86_minS =
11274
        "\x01\x1f\x01\x08\x1f\uffff";
11275
    const string DFA86_maxS =
11276
        "\x01\x1f\x01\x7a\x1f\uffff";
11277
    const string DFA86_acceptS =
11278
        "\x02\uffff\x01\x01\x01\x02\x1d\uffff";
11279
    const string DFA86_specialS =
11280
        "\x21\uffff}>";
11281
    static readonly string[] DFA86_transitionS = {
11282
            "\x01\x01",
11283
            "\x01\x03\x03\uffff\x01\x03\x02\uffff\x02\x03\x06\uffff\x01"+
11284
            "\x03\x05\uffff\x01\x03\x01\uffff\x01\x03\x17\uffff\x01\x03\x0b"+
11285
            "\uffff\x01\x03\x11\uffff\x01\x03\x02\uffff\x07\x03\x01\uffff"+
11286
            "\x01\x02\x01\uffff\x0d\x03\x0b\uffff\x01\x03",
11287
            "",
11288
            "",
11289
            "",
11290
            "",
11291
            "",
11292
            "",
11293
            "",
11294
            "",
11295
            "",
11296
            "",
11297
            "",
11298
            "",
11299
            "",
11300
            "",
11301
            "",
11302
            "",
11303
            "",
11304
            "",
11305
            "",
11306
            "",
11307
            "",
11308
            "",
11309
            "",
11310
            "",
11311
            "",
11312
            "",
11313
            "",
11314
            "",
11315
            "",
11316
            "",
11317
            ""
11318
    };
11319
11320
    static readonly short[] DFA86_eot = DFA.UnpackEncodedString(DFA86_eotS);
11321
    static readonly short[] DFA86_eof = DFA.UnpackEncodedString(DFA86_eofS);
11322
    static readonly char[] DFA86_min = DFA.UnpackEncodedStringToUnsignedChars(DFA86_minS);
11323
    static readonly char[] DFA86_max = DFA.UnpackEncodedStringToUnsignedChars(DFA86_maxS);
11324
    static readonly short[] DFA86_accept = DFA.UnpackEncodedString(DFA86_acceptS);
11325
    static readonly short[] DFA86_special = DFA.UnpackEncodedString(DFA86_specialS);
11326
    static readonly short[][] DFA86_transition = DFA.UnpackEncodedStringArray(DFA86_transitionS);
11327
11328
    protected class DFA86 : DFA
11329
    {
11330
        IDebugEventListener dbg;
11331
11332
        public DFA86(BaseRecognizer recognizer)
11333
        {
11334
            this.recognizer = recognizer;
11335
            this.decisionNumber = 86;
11336
            this.eot = DFA86_eot;
11337
            this.eof = DFA86_eof;
11338
            this.min = DFA86_min;
11339
            this.max = DFA86_max;
11340
            this.accept = DFA86_accept;
11341
            this.special = DFA86_special;
11342
            this.transition = DFA86_transition;
11343
11344
        }
11345
            public DFA86(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
11346
            {
11347
        		this.dbg = dbg;
11348
            }
11349
11350
        override public string Description
11351
        {
11352
            get { return "757:1: initializedSetType returns [Expression result] : ( T_CBRL T_MAPS T_CBRR | res= initializedSet );"; }
11353
        }
11354
11355
        public override void Error(NoViableAltException nvae)
11356
        {
11357
            dbg.RecognitionException(nvae);
11358
        }
11359
    }
11360
11361
    const string DFA99_eotS =
11362
        "\x3c\uffff";
11363
    const string DFA99_eofS =
11364
        "\x3c\uffff";
11365
    const string DFA99_minS =
11366
        "\x01\x08\x01\x05\x01\uffff\x01\x00\x38\uffff";
11367
    const string DFA99_maxS =
11368
        "\x01\x37\x01\x7e\x01\uffff\x01\x00\x38\uffff";
11369
    const string DFA99_acceptS =
11370
        "\x02\uffff\x01\x02\x38\uffff\x01\x01";
11371
    const string DFA99_specialS =
11372
        "\x03\uffff\x01\x00\x38\uffff}>";
11373
    static readonly string[] DFA99_transitionS = {
11374
            "\x01\x01\x2e\uffff\x01\x02",
11375
            "\x01\x02\x01\uffff\x01\x02\x01\uffff\x03\x02\x01\x03\x01\x02"+
11376
            "\x01\uffff\x01\x02\x01\uffff\x01\x02\x01\uffff\x01\x02\x03\uffff"+
11377
            "\x01\x02\x08\uffff\x01\x02\x02\uffff\x03\x02\x04\uffff\x02\x02"+
11378
            "\x03\uffff\x05\x02\x05\uffff\x09\x02\x01\uffff\x12\x02\x01\uffff"+
11379
            "\x02\x02\x07\uffff\x03\x02\x14\uffff\x01\x02\x02\uffff\x01\x02"+
11380
            "\x04\uffff\x01\x02",
11381
            "",
11382
            "\x01\uffff",
11383
            "",
11384
            "",
11385
            "",
11386
            "",
11387
            "",
11388
            "",
11389
            "",
11390
            "",
11391
            "",
11392
            "",
11393
            "",
11394
            "",
11395
            "",
11396
            "",
11397
            "",
11398
            "",
11399
            "",
11400
            "",
11401
            "",
11402
            "",
11403
            "",
11404
            "",
11405
            "",
11406
            "",
11407
            "",
11408
            "",
11409
            "",
11410
            "",
11411
            "",
11412
            "",
11413
            "",
11414
            "",
11415
            "",
11416
            "",
11417
            "",
11418
            "",
11419
            "",
11420
            "",
11421
            "",
11422
            "",
11423
            "",
11424
            "",
11425
            "",
11426
            "",
11427
            "",
11428
            "",
11429
            "",
11430
            "",
11431
            "",
11432
            "",
11433
            "",
11434
            "",
11435
            "",
11436
            "",
11437
            "",
11438
            ""
11439
    };
11440
11441
    static readonly short[] DFA99_eot = DFA.UnpackEncodedString(DFA99_eotS);
11442
    static readonly short[] DFA99_eof = DFA.UnpackEncodedString(DFA99_eofS);
11443
    static readonly char[] DFA99_min = DFA.UnpackEncodedStringToUnsignedChars(DFA99_minS);
11444
    static readonly char[] DFA99_max = DFA.UnpackEncodedStringToUnsignedChars(DFA99_maxS);
11445
    static readonly short[] DFA99_accept = DFA.UnpackEncodedString(DFA99_acceptS);
11446
    static readonly short[] DFA99_special = DFA.UnpackEncodedString(DFA99_specialS);
11447
    static readonly short[][] DFA99_transition = DFA.UnpackEncodedStringArray(DFA99_transitionS);
11448
11449
    protected class DFA99 : DFA
11450
    {
11451
        IDebugEventListener dbg;
11452
11453
        public DFA99(BaseRecognizer recognizer)
11454
        {
11455
            this.recognizer = recognizer;
11456
            this.decisionNumber = 99;
11457
            this.eot = DFA99_eot;
11458
            this.eof = DFA99_eof;
11459
            this.min = DFA99_min;
11460
            this.max = DFA99_max;
11461
            this.accept = DFA99_accept;
11462
            this.special = DFA99_special;
11463
            this.transition = DFA99_transition;
11464
11465
        }
11466
            public DFA99(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
11467
            {
11468
        		this.dbg = dbg;
11469
            }
11470
11471
        override public string Description
11472
        {
11473
            get { return "850:1: identifierExpression returns [Expression result] : ({...}?aName= T_IDENTIFIER T_LPAREN m_params= methodCallParams T_RPAREN | res= reference );"; }
11474
        }
11475
11476
        public override void Error(NoViableAltException nvae)
11477
        {
11478
            dbg.RecognitionException(nvae);
11479
        }
11480
    }
11481
11482
11483
    protected internal int DFA99_SpecialStateTransition(DFA dfa, int s, IIntStream _input) //throws NoViableAltException
11484
    {
11485
            ITokenStream input = (ITokenStream)_input;
11486
    	int _s = s;
11487
        switch ( s )
11488
        {
11489
               	case 0 :
11490
                   	int LA99_3 = input.LA(1);
11491
11492
11493
                   	int index99_3 = input.Index();
11494
                   	input.Rewind();
11495
                   	s = -1;
11496
                   	if ( (EvalPredicate(isTuple(input.LT(1).Text),"isTuple(input.LT(1).Text)")) ) { s = 59; }
11497
11498
                   	else if ( (EvalPredicate(!isTuple(input.LT(1).Text),"!isTuple(input.LT(1).Text)")) ) { s = 2; }
11499
11500
11501
                   	input.Seek(index99_3);
11502
                   	if ( s >= 0 ) return s;
11503
                   	break;
11504
        }
11505
        NoViableAltException nvae99 =
11506
            new NoViableAltException(dfa.Description, 99, _s, input);
11507
        dfa.Error(nvae99);
11508
        throw nvae99;
11509
    }
11510
    const string DFA100_eotS =
11511
        "\x39\uffff";
11512
    const string DFA100_eofS =
11513
        "\x39\uffff";
11514
    const string DFA100_minS =
11515
        "\x01\x05\x38\uffff";
11516
    const string DFA100_maxS =
11517
        "\x01\x7e\x38\uffff";
11518
    const string DFA100_acceptS =
11519
        "\x01\uffff\x01\x01\x01\uffff\x01\x02\x35\uffff";
11520
    const string DFA100_specialS =
11521
        "\x39\uffff}>";
11522
    static readonly string[] DFA100_transitionS = {
11523
            "\x01\x03\x01\uffff\x01\x03\x01\uffff\x03\x03\x01\x01\x01\x03"+
11524
            "\x01\uffff\x01\x01\x01\uffff\x01\x03\x01\uffff\x01\x03\x03\uffff"+
11525
            "\x01\x03\x08\uffff\x01\x03\x02\uffff\x03\x03\x04\uffff\x02\x03"+
11526
            "\x03\uffff\x05\x03\x04\uffff\x0a\x03\x01\uffff\x11\x03\x02\uffff"+
11527
            "\x02\x03\x07\uffff\x03\x03\x14\uffff\x01\x03\x02\uffff\x01\x03"+
11528
            "\x04\uffff\x01\x03",
11529
            "",
11530
            "",
11531
            "",
11532
            "",
11533
            "",
11534
            "",
11535
            "",
11536
            "",
11537
            "",
11538
            "",
11539
            "",
11540
            "",
11541
            "",
11542
            "",
11543
            "",
11544
            "",
11545
            "",
11546
            "",
11547
            "",
11548
            "",
11549
            "",
11550
            "",
11551
            "",
11552
            "",
11553
            "",
11554
            "",
11555
            "",
11556
            "",
11557
            "",
11558
            "",
11559
            "",
11560
            "",
11561
            "",
11562
            "",
11563
            "",
11564
            "",
11565
            "",
11566
            "",
11567
            "",
11568
            "",
11569
            "",
11570
            "",
11571
            "",
11572
            "",
11573
            "",
11574
            "",
11575
            "",
11576
            "",
11577
            "",
11578
            "",
11579
            "",
11580
            "",
11581
            "",
11582
            "",
11583
            "",
11584
            ""
11585
    };
11586
11587
    static readonly short[] DFA100_eot = DFA.UnpackEncodedString(DFA100_eotS);
11588
    static readonly short[] DFA100_eof = DFA.UnpackEncodedString(DFA100_eofS);
11589
    static readonly char[] DFA100_min = DFA.UnpackEncodedStringToUnsignedChars(DFA100_minS);
11590
    static readonly char[] DFA100_max = DFA.UnpackEncodedStringToUnsignedChars(DFA100_maxS);
11591
    static readonly short[] DFA100_accept = DFA.UnpackEncodedString(DFA100_acceptS);
11592
    static readonly short[] DFA100_special = DFA.UnpackEncodedString(DFA100_specialS);
11593
    static readonly short[][] DFA100_transition = DFA.UnpackEncodedStringArray(DFA100_transitionS);
11594
11595
    protected class DFA100 : DFA
11596
    {
11597
        IDebugEventListener dbg;
11598
11599
        public DFA100(BaseRecognizer recognizer)
11600
        {
11601
            this.recognizer = recognizer;
11602
            this.decisionNumber = 100;
11603
            this.eot = DFA100_eot;
11604
            this.eof = DFA100_eof;
11605
            this.min = DFA100_min;
11606
            this.max = DFA100_max;
11607
            this.accept = DFA100_accept;
11608
            this.special = DFA100_special;
11609
            this.transition = DFA100_transition;
11610
11611
        }
11612
            public DFA100(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
11613
            {
11614
        		this.dbg = dbg;
11615
            }
11616
11617
        override public string Description
11618
        {
11619
            get { return "870:3: (output= accessExpression[result] | )"; }
11620
        }
11621
11622
        public override void Error(NoViableAltException nvae)
11623
        {
11624
            dbg.RecognitionException(nvae);
11625
        }
11626
    }
11627
11628
    const string DFA102_eotS =
11629
        "\x37\uffff";
11630
    const string DFA102_eofS =
11631
        "\x37\uffff";
11632
    const string DFA102_minS =
11633
        "\x01\x05\x36\uffff";
11634
    const string DFA102_maxS =
11635
        "\x01\x7e\x36\uffff";
11636
    const string DFA102_acceptS =
11637
        "\x01\uffff\x01\x01\x01\x02\x01\uffff\x01\x03\x32\uffff";
11638
    const string DFA102_specialS =
11639
        "\x37\uffff}>";
11640
    static readonly string[] DFA102_transitionS = {
11641
            "\x01\x04\x01\uffff\x01\x04\x01\uffff\x03\x04\x01\uffff\x01"+
11642
            "\x04\x03\uffff\x01\x04\x01\uffff\x01\x04\x03\uffff\x01\x04\x08"+
11643
            "\uffff\x01\x04\x02\uffff\x03\x04\x04\uffff\x02\x04\x03\uffff"+
11644
            "\x03\x04\x02\x02\x04\uffff\x0a\x04\x01\uffff\x11\x04\x02\uffff"+
11645
            "\x02\x04\x07\uffff\x02\x04\x01\x01\x14\uffff\x01\x04\x02\uffff"+
11646
            "\x01\x04\x04\uffff\x01\x02",
11647
            "",
11648
            "",
11649
            "",
11650
            "",
11651
            "",
11652
            "",
11653
            "",
11654
            "",
11655
            "",
11656
            "",
11657
            "",
11658
            "",
11659
            "",
11660
            "",
11661
            "",
11662
            "",
11663
            "",
11664
            "",
11665
            "",
11666
            "",
11667
            "",
11668
            "",
11669
            "",
11670
            "",
11671
            "",
11672
            "",
11673
            "",
11674
            "",
11675
            "",
11676
            "",
11677
            "",
11678
            "",
11679
            "",
11680
            "",
11681
            "",
11682
            "",
11683
            "",
11684
            "",
11685
            "",
11686
            "",
11687
            "",
11688
            "",
11689
            "",
11690
            "",
11691
            "",
11692
            "",
11693
            "",
11694
            "",
11695
            "",
11696
            "",
11697
            "",
11698
            "",
11699
            "",
11700
            ""
11701
    };
11702
11703
    static readonly short[] DFA102_eot = DFA.UnpackEncodedString(DFA102_eotS);
11704
    static readonly short[] DFA102_eof = DFA.UnpackEncodedString(DFA102_eofS);
11705
    static readonly char[] DFA102_min = DFA.UnpackEncodedStringToUnsignedChars(DFA102_minS);
11706
    static readonly char[] DFA102_max = DFA.UnpackEncodedStringToUnsignedChars(DFA102_maxS);
11707
    static readonly short[] DFA102_accept = DFA.UnpackEncodedString(DFA102_acceptS);
11708
    static readonly short[] DFA102_special = DFA.UnpackEncodedString(DFA102_specialS);
11709
    static readonly short[][] DFA102_transition = DFA.UnpackEncodedStringArray(DFA102_transitionS);
11710
11711
    protected class DFA102 : DFA
11712
    {
11713
        IDebugEventListener dbg;
11714
11715
        public DFA102(BaseRecognizer recognizer)
11716
        {
11717
            this.recognizer = recognizer;
11718
            this.decisionNumber = 102;
11719
            this.eot = DFA102_eot;
11720
            this.eof = DFA102_eof;
11721
            this.min = DFA102_min;
11722
            this.max = DFA102_max;
11723
            this.accept = DFA102_accept;
11724
            this.special = DFA102_special;
11725
            this.transition = DFA102_transition;
11726
11727
        }
11728
            public DFA102(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
11729
            {
11730
        		this.dbg = dbg;
11731
            }
11732
11733
        override public string Description
11734
        {
11735
            get { return "874:3: (pr= T_PRIMED | ( '::' T_LPAREN init= expression T_RPAREN )? afold= ( T_FOLDLR | T_FOLDRL ) T_LPAREN anexpr= expression T_RPAREN )?"; }
11736
        }
11737
11738
        public override void Error(NoViableAltException nvae)
11739
        {
11740
            dbg.RecognitionException(nvae);
11741
        }
11742
    }
11743
11744
    const string DFA103_eotS =
11745
        "\x3a\uffff";
11746
    const string DFA103_eofS =
11747
        "\x3a\uffff";
11748
    const string DFA103_minS =
11749
        "\x01\x05\x39\uffff";
11750
    const string DFA103_maxS =
11751
        "\x01\x7e\x39\uffff";
11752
    const string DFA103_acceptS =
11753
        "\x01\uffff\x01\x03\x36\uffff\x01\x01\x01\x02";
11754
    const string DFA103_specialS =
11755
        "\x3a\uffff}>";
11756
    static readonly string[] DFA103_transitionS = {
11757
            "\x01\x01\x01\uffff\x01\x01\x01\uffff\x03\x01\x01\x39\x01\x01"+
11758
            "\x01\uffff\x01\x38\x01\uffff\x01\x01\x01\uffff\x01\x01\x03\uffff"+
11759
            "\x01\x01\x08\uffff\x01\x01\x02\uffff\x03\x01\x04\uffff\x02\x01"+
11760
            "\x03\uffff\x05\x01\x04\uffff\x0a\x01\x01\uffff\x12\x01\x01\uffff"+
11761
            "\x02\x01\x07\uffff\x03\x01\x14\uffff\x01\x01\x02\uffff\x01\x01"+
11762
            "\x04\uffff\x01\x01",
11763
            "",
11764
            "",
11765
            "",
11766
            "",
11767
            "",
11768
            "",
11769
            "",
11770
            "",
11771
            "",
11772
            "",
11773
            "",
11774
            "",
11775
            "",
11776
            "",
11777
            "",
11778
            "",
11779
            "",
11780
            "",
11781
            "",
11782
            "",
11783
            "",
11784
            "",
11785
            "",
11786
            "",
11787
            "",
11788
            "",
11789
            "",
11790
            "",
11791
            "",
11792
            "",
11793
            "",
11794
            "",
11795
            "",
11796
            "",
11797
            "",
11798
            "",
11799
            "",
11800
            "",
11801
            "",
11802
            "",
11803
            "",
11804
            "",
11805
            "",
11806
            "",
11807
            "",
11808
            "",
11809
            "",
11810
            "",
11811
            "",
11812
            "",
11813
            "",
11814
            "",
11815
            "",
11816
            "",
11817
            "",
11818
            "",
11819
            ""
11820
    };
11821
11822
    static readonly short[] DFA103_eot = DFA.UnpackEncodedString(DFA103_eotS);
11823
    static readonly short[] DFA103_eof = DFA.UnpackEncodedString(DFA103_eofS);
11824
    static readonly char[] DFA103_min = DFA.UnpackEncodedStringToUnsignedChars(DFA103_minS);
11825
    static readonly char[] DFA103_max = DFA.UnpackEncodedStringToUnsignedChars(DFA103_maxS);
11826
    static readonly short[] DFA103_accept = DFA.UnpackEncodedString(DFA103_acceptS);
11827
    static readonly short[] DFA103_special = DFA.UnpackEncodedString(DFA103_specialS);
11828
    static readonly short[][] DFA103_transition = DFA.UnpackEncodedStringArray(DFA103_transitionS);
11829
11830
    protected class DFA103 : DFA
11831
    {
11832
        IDebugEventListener dbg;
11833
11834
        public DFA103(BaseRecognizer recognizer)
11835
        {
11836
            this.recognizer = recognizer;
11837
            this.decisionNumber = 103;
11838
            this.eot = DFA103_eot;
11839
            this.eof = DFA103_eof;
11840
            this.min = DFA103_min;
11841
            this.max = DFA103_max;
11842
            this.accept = DFA103_accept;
11843
            this.special = DFA103_special;
11844
            this.transition = DFA103_transition;
11845
11846
        }
11847
            public DFA103(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
11848
            {
11849
        		this.dbg = dbg;
11850
            }
11851
11852
        override public string Description
11853
        {
11854
            get { return "()+ loopback of 888:7: (tcall= T_LSQPAREN ac= expression T_RSQPAREN | bcall= T_LPAREN m_params= methodCallParams T_RPAREN )+"; }
11855
        }
11856
11857
        public override void Error(NoViableAltException nvae)
11858
        {
11859
            dbg.RecognitionException(nvae);
11860
        }
11861
    }
11862
11863
    const string DFA106_eotS =
11864
        "\x38\uffff";
11865
    const string DFA106_eofS =
11866
        "\x38\uffff";
11867
    const string DFA106_minS =
11868
        "\x01\x05\x37\uffff";
11869
    const string DFA106_maxS =
11870
        "\x01\x7e\x37\uffff";
11871
    const string DFA106_acceptS =
11872
        "\x01\uffff\x01\x01\x01\x02\x35\uffff";
11873
    const string DFA106_specialS =
11874
        "\x38\uffff}>";
11875
    static readonly string[] DFA106_transitionS = {
11876
            "\x01\x02\x01\uffff\x01\x02\x01\uffff\x03\x02\x01\uffff\x01"+
11877
            "\x02\x03\uffff\x01\x02\x01\uffff\x01\x02\x03\uffff\x01\x02\x08"+
11878
            "\uffff\x01\x02\x02\uffff\x03\x02\x04\uffff\x02\x02\x03\uffff"+
11879
            "\x05\x02\x04\uffff\x0a\x02\x01\uffff\x11\x02\x01\x01\x01\uffff"+
11880
            "\x02\x02\x07\uffff\x03\x02\x14\uffff\x01\x02\x02\uffff\x01\x02"+
11881
            "\x04\uffff\x01\x02",
11882
            "",
11883
            "",
11884
            "",
11885
            "",
11886
            "",
11887
            "",
11888
            "",
11889
            "",
11890
            "",
11891
            "",
11892
            "",
11893
            "",
11894
            "",
11895
            "",
11896
            "",
11897
            "",
11898
            "",
11899
            "",
11900
            "",
11901
            "",
11902
            "",
11903
            "",
11904
            "",
11905
            "",
11906
            "",
11907
            "",
11908
            "",
11909
            "",
11910
            "",
11911
            "",
11912
            "",
11913
            "",
11914
            "",
11915
            "",
11916
            "",
11917
            "",
11918
            "",
11919
            "",
11920
            "",
11921
            "",
11922
            "",
11923
            "",
11924
            "",
11925
            "",
11926
            "",
11927
            "",
11928
            "",
11929
            "",
11930
            "",
11931
            "",
11932
            "",
11933
            "",
11934
            "",
11935
            "",
11936
            ""
11937
    };
11938
11939
    static readonly short[] DFA106_eot = DFA.UnpackEncodedString(DFA106_eotS);
11940
    static readonly short[] DFA106_eof = DFA.UnpackEncodedString(DFA106_eofS);
11941
    static readonly char[] DFA106_min = DFA.UnpackEncodedStringToUnsignedChars(DFA106_minS);
11942
    static readonly char[] DFA106_max = DFA.UnpackEncodedStringToUnsignedChars(DFA106_maxS);
11943
    static readonly short[] DFA106_accept = DFA.UnpackEncodedString(DFA106_acceptS);
11944
    static readonly short[] DFA106_special = DFA.UnpackEncodedString(DFA106_specialS);
11945
    static readonly short[][] DFA106_transition = DFA.UnpackEncodedStringArray(DFA106_transitionS);
11946
11947
    protected class DFA106 : DFA
11948
    {
11949
        IDebugEventListener dbg;
11950
11951
        public DFA106(BaseRecognizer recognizer)
11952
        {
11953
            this.recognizer = recognizer;
11954
            this.decisionNumber = 106;
11955
            this.eot = DFA106_eot;
11956
            this.eof = DFA106_eof;
11957
            this.min = DFA106_min;
11958
            this.max = DFA106_max;
11959
            this.accept = DFA106_accept;
11960
            this.special = DFA106_special;
11961
            this.transition = DFA106_transition;
11962
11963
        }
11964
            public DFA106(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
11965
            {
11966
        		this.dbg = dbg;
11967
            }
11968
11969
        override public string Description
11970
        {
11971
            get { return "893:3: ( ( T_POINT idn= T_IDENTIFIER )+ (res= accessExpression[result] )? )?"; }
11972
        }
11973
11974
        public override void Error(NoViableAltException nvae)
11975
        {
11976
            dbg.RecognitionException(nvae);
11977
        }
11978
    }
11979
11980
    const string DFA104_eotS =
11981
        "\x3a\uffff";
11982
    const string DFA104_eofS =
11983
        "\x3a\uffff";
11984
    const string DFA104_minS =
11985
        "\x01\x05\x39\uffff";
11986
    const string DFA104_maxS =
11987
        "\x01\x7e\x39\uffff";
11988
    const string DFA104_acceptS =
11989
        "\x01\uffff\x01\x02\x37\uffff\x01\x01";
11990
    const string DFA104_specialS =
11991
        "\x3a\uffff}>";
11992
    static readonly string[] DFA104_transitionS = {
11993
            "\x01\x01\x01\uffff\x01\x01\x01\uffff\x05\x01\x01\uffff\x01"+
11994
            "\x01\x01\uffff\x01\x01\x01\uffff\x01\x01\x03\uffff\x01\x01\x08"+
11995
            "\uffff\x01\x01\x02\uffff\x03\x01\x04\uffff\x02\x01\x03\uffff"+
11996
            "\x05\x01\x04\uffff\x0a\x01\x01\uffff\x11\x01\x01\x39\x01\uffff"+
11997
            "\x02\x01\x07\uffff\x03\x01\x14\uffff\x01\x01\x02\uffff\x01\x01"+
11998
            "\x04\uffff\x01\x01",
11999
            "",
12000
            "",
12001
            "",
12002
            "",
12003
            "",
12004
            "",
12005
            "",
12006
            "",
12007
            "",
12008
            "",
12009
            "",
12010
            "",
12011
            "",
12012
            "",
12013
            "",
12014
            "",
12015
            "",
12016
            "",
12017
            "",
12018
            "",
12019
            "",
12020
            "",
12021
            "",
12022
            "",
12023
            "",
12024
            "",
12025
            "",
12026
            "",
12027
            "",
12028
            "",
12029
            "",
12030
            "",
12031
            "",
12032
            "",
12033
            "",
12034
            "",
12035
            "",
12036
            "",
12037
            "",
12038
            "",
12039
            "",
12040
            "",
12041
            "",
12042
            "",
12043
            "",
12044
            "",
12045
            "",
12046
            "",
12047
            "",
12048
            "",
12049
            "",
12050
            "",
12051
            "",
12052
            "",
12053
            "",
12054
            "",
12055
            ""
12056
    };
12057
12058
    static readonly short[] DFA104_eot = DFA.UnpackEncodedString(DFA104_eotS);
12059
    static readonly short[] DFA104_eof = DFA.UnpackEncodedString(DFA104_eofS);
12060
    static readonly char[] DFA104_min = DFA.UnpackEncodedStringToUnsignedChars(DFA104_minS);
12061
    static readonly char[] DFA104_max = DFA.UnpackEncodedStringToUnsignedChars(DFA104_maxS);
12062
    static readonly short[] DFA104_accept = DFA.UnpackEncodedString(DFA104_acceptS);
12063
    static readonly short[] DFA104_special = DFA.UnpackEncodedString(DFA104_specialS);
12064
    static readonly short[][] DFA104_transition = DFA.UnpackEncodedStringArray(DFA104_transitionS);
12065
12066
    protected class DFA104 : DFA
12067
    {
12068
        IDebugEventListener dbg;
12069
12070
        public DFA104(BaseRecognizer recognizer)
12071
        {
12072
            this.recognizer = recognizer;
12073
            this.decisionNumber = 104;
12074
            this.eot = DFA104_eot;
12075
            this.eof = DFA104_eof;
12076
            this.min = DFA104_min;
12077
            this.max = DFA104_max;
12078
            this.accept = DFA104_accept;
12079
            this.special = DFA104_special;
12080
            this.transition = DFA104_transition;
12081
12082
        }
12083
            public DFA104(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
12084
            {
12085
        		this.dbg = dbg;
12086
            }
12087
12088
        override public string Description
12089
        {
12090
            get { return "()+ loopback of 894:4: ( T_POINT idn= T_IDENTIFIER )+"; }
12091
        }
12092
12093
        public override void Error(NoViableAltException nvae)
12094
        {
12095
            dbg.RecognitionException(nvae);
12096
        }
12097
    }
12098
12099
    const string DFA105_eotS =
12100
        "\x39\uffff";
12101
    const string DFA105_eofS =
12102
        "\x39\uffff";
12103
    const string DFA105_minS =
12104
        "\x01\x05\x38\uffff";
12105
    const string DFA105_maxS =
12106
        "\x01\x7e\x38\uffff";
12107
    const string DFA105_acceptS =
12108
        "\x01\uffff\x01\x01\x01\uffff\x01\x02\x35\uffff";
12109
    const string DFA105_specialS =
12110
        "\x39\uffff}>";
12111
    static readonly string[] DFA105_transitionS = {
12112
            "\x01\x03\x01\uffff\x01\x03\x01\uffff\x03\x03\x01\x01\x01\x03"+
12113
            "\x01\uffff\x01\x01\x01\uffff\x01\x03\x01\uffff\x01\x03\x03\uffff"+
12114
            "\x01\x03\x08\uffff\x01\x03\x02\uffff\x03\x03\x04\uffff\x02\x03"+
12115
            "\x03\uffff\x05\x03\x04\uffff\x0a\x03\x01\uffff\x11\x03\x02\uffff"+
12116
            "\x02\x03\x07\uffff\x03\x03\x14\uffff\x01\x03\x02\uffff\x01\x03"+
12117
            "\x04\uffff\x01\x03",
12118
            "",
12119
            "",
12120
            "",
12121
            "",
12122
            "",
12123
            "",
12124
            "",
12125
            "",
12126
            "",
12127
            "",
12128
            "",
12129
            "",
12130
            "",
12131
            "",
12132
            "",
12133
            "",
12134
            "",
12135
            "",
12136
            "",
12137
            "",
12138
            "",
12139
            "",
12140
            "",
12141
            "",
12142
            "",
12143
            "",
12144
            "",
12145
            "",
12146
            "",
12147
            "",
12148
            "",
12149
            "",
12150
            "",
12151
            "",
12152
            "",
12153
            "",
12154
            "",
12155
            "",
12156
            "",
12157
            "",
12158
            "",
12159
            "",
12160
            "",
12161
            "",
12162
            "",
12163
            "",
12164
            "",
12165
            "",
12166
            "",
12167
            "",
12168
            "",
12169
            "",
12170
            "",
12171
            "",
12172
            "",
12173
            ""
12174
    };
12175
12176
    static readonly short[] DFA105_eot = DFA.UnpackEncodedString(DFA105_eotS);
12177
    static readonly short[] DFA105_eof = DFA.UnpackEncodedString(DFA105_eofS);
12178
    static readonly char[] DFA105_min = DFA.UnpackEncodedStringToUnsignedChars(DFA105_minS);
12179
    static readonly char[] DFA105_max = DFA.UnpackEncodedStringToUnsignedChars(DFA105_maxS);
12180
    static readonly short[] DFA105_accept = DFA.UnpackEncodedString(DFA105_acceptS);
12181
    static readonly short[] DFA105_special = DFA.UnpackEncodedString(DFA105_specialS);
12182
    static readonly short[][] DFA105_transition = DFA.UnpackEncodedStringArray(DFA105_transitionS);
12183
12184
    protected class DFA105 : DFA
12185
    {
12186
        IDebugEventListener dbg;
12187
12188
        public DFA105(BaseRecognizer recognizer)
12189
        {
12190
            this.recognizer = recognizer;
12191
            this.decisionNumber = 105;
12192
            this.eot = DFA105_eot;
12193
            this.eof = DFA105_eof;
12194
            this.min = DFA105_min;
12195
            this.max = DFA105_max;
12196
            this.accept = DFA105_accept;
12197
            this.special = DFA105_special;
12198
            this.transition = DFA105_transition;
12199
12200
        }
12201
            public DFA105(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
12202
            {
12203
        		this.dbg = dbg;
12204
            }
12205
12206
        override public string Description
12207
        {
12208
            get { return "897:4: (res= accessExpression[result] )?"; }
12209
        }
12210
12211
        public override void Error(NoViableAltException nvae)
12212
        {
12213
            dbg.RecognitionException(nvae);
12214
        }
12215
    }
12216
12217
    const string DFA108_eotS =
12218
        "\x3b\uffff";
12219
    const string DFA108_eofS =
12220
        "\x3b\uffff";
12221
    const string DFA108_minS =
12222
        "\x01\x05\x3a\uffff";
12223
    const string DFA108_maxS =
12224
        "\x01\x7e\x3a\uffff";
12225
    const string DFA108_acceptS =
12226
        "\x01\uffff\x01\x02\x38\uffff\x01\x01";
12227
    const string DFA108_specialS =
12228
        "\x3b\uffff}>";
12229
    static readonly string[] DFA108_transitionS = {
12230
            "\x01\x01\x01\uffff\x01\x01\x01\uffff\x05\x01\x01\uffff\x01"+
12231
            "\x01\x01\uffff\x01\x01\x01\uffff\x01\x01\x03\uffff\x01\x01\x03"+
12232
            "\uffff\x01\x01\x04\uffff\x01\x01\x02\uffff\x03\x01\x04\uffff"+
12233
            "\x02\x01\x03\uffff\x05\x01\x04\uffff\x0a\x01\x01\uffff\x11\x01"+
12234
            "\x01\x3a\x01\uffff\x02\x01\x07\uffff\x03\x01\x14\uffff\x01\x01"+
12235
            "\x02\uffff\x01\x01\x04\uffff\x01\x01",
12236
            "",
12237
            "",
12238
            "",
12239
            "",
12240
            "",
12241
            "",
12242
            "",
12243
            "",
12244
            "",
12245
            "",
12246
            "",
12247
            "",
12248
            "",
12249
            "",
12250
            "",
12251
            "",
12252
            "",
12253
            "",
12254
            "",
12255
            "",
12256
            "",
12257
            "",
12258
            "",
12259
            "",
12260
            "",
12261
            "",
12262
            "",
12263
            "",
12264
            "",
12265
            "",
12266
            "",
12267
            "",
12268
            "",
12269
            "",
12270
            "",
12271
            "",
12272
            "",
12273
            "",
12274
            "",
12275
            "",
12276
            "",
12277
            "",
12278
            "",
12279
            "",
12280
            "",
12281
            "",
12282
            "",
12283
            "",
12284
            "",
12285
            "",
12286
            "",
12287
            "",
12288
            "",
12289
            "",
12290
            "",
12291
            "",
12292
            "",
12293
            ""
12294
    };
12295
12296
    static readonly short[] DFA108_eot = DFA.UnpackEncodedString(DFA108_eotS);
12297
    static readonly short[] DFA108_eof = DFA.UnpackEncodedString(DFA108_eofS);
12298
    static readonly char[] DFA108_min = DFA.UnpackEncodedStringToUnsignedChars(DFA108_minS);
12299
    static readonly char[] DFA108_max = DFA.UnpackEncodedStringToUnsignedChars(DFA108_maxS);
12300
    static readonly short[] DFA108_accept = DFA.UnpackEncodedString(DFA108_acceptS);
12301
    static readonly short[] DFA108_special = DFA.UnpackEncodedString(DFA108_specialS);
12302
    static readonly short[][] DFA108_transition = DFA.UnpackEncodedStringArray(DFA108_transitionS);
12303
12304
    protected class DFA108 : DFA
12305
    {
12306
        IDebugEventListener dbg;
12307
12308
        public DFA108(BaseRecognizer recognizer)
12309
        {
12310
            this.recognizer = recognizer;
12311
            this.decisionNumber = 108;
12312
            this.eot = DFA108_eot;
12313
            this.eof = DFA108_eof;
12314
            this.min = DFA108_min;
12315
            this.max = DFA108_max;
12316
            this.accept = DFA108_accept;
12317
            this.special = DFA108_special;
12318
            this.transition = DFA108_transition;
12319
12320
        }
12321
            public DFA108(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
12322
            {
12323
        		this.dbg = dbg;
12324
            }
12325
12326
        override public string Description
12327
        {
12328
            get { return "()* loopback of 910:3: ( T_POINT idd= T_IDENTIFIER )*"; }
12329
        }
12330
12331
        public override void Error(NoViableAltException nvae)
12332
        {
12333
            dbg.RecognitionException(nvae);
12334
        }
12335
    }
12336
12337
    const string DFA110_eotS =
12338
        "\x20\uffff";
12339
    const string DFA110_eofS =
12340
        "\x20\uffff";
12341
    const string DFA110_minS =
12342
        "\x01\x08\x1f\uffff";
12343
    const string DFA110_maxS =
12344
        "\x01\x7a\x1f\uffff";
12345
    const string DFA110_acceptS =
12346
        "\x01\uffff\x01\x01\x1d\uffff\x01\x02";
12347
    const string DFA110_specialS =
12348
        "\x20\uffff}>";
12349
    static readonly string[] DFA110_transitionS = {
12350
            "\x01\x01\x03\uffff\x01\x01\x01\x1f\x01\uffff\x02\x01\x06\uffff"+
12351
            "\x01\x01\x05\uffff\x01\x01\x01\uffff\x01\x01\x17\uffff\x01\x01"+
12352
            "\x0b\uffff\x01\x01\x11\uffff\x01\x01\x02\uffff\x07\x01\x03\uffff"+
12353
            "\x0d\x01\x0b\uffff\x01\x01",
12354
            "",
12355
            "",
12356
            "",
12357
            "",
12358
            "",
12359
            "",
12360
            "",
12361
            "",
12362
            "",
12363
            "",
12364
            "",
12365
            "",
12366
            "",
12367
            "",
12368
            "",
12369
            "",
12370
            "",
12371
            "",
12372
            "",
12373
            "",
12374
            "",
12375
            "",
12376
            "",
12377
            "",
12378
            "",
12379
            "",
12380
            "",
12381
            "",
12382
            "",
12383
            "",
12384
            ""
12385
    };
12386
12387
    static readonly short[] DFA110_eot = DFA.UnpackEncodedString(DFA110_eotS);
12388
    static readonly short[] DFA110_eof = DFA.UnpackEncodedString(DFA110_eofS);
12389
    static readonly char[] DFA110_min = DFA.UnpackEncodedStringToUnsignedChars(DFA110_minS);
12390
    static readonly char[] DFA110_max = DFA.UnpackEncodedStringToUnsignedChars(DFA110_maxS);
12391
    static readonly short[] DFA110_accept = DFA.UnpackEncodedString(DFA110_acceptS);
12392
    static readonly short[] DFA110_special = DFA.UnpackEncodedString(DFA110_specialS);
12393
    static readonly short[][] DFA110_transition = DFA.UnpackEncodedStringArray(DFA110_transitionS);
12394
12395
    protected class DFA110 : DFA
12396
    {
12397
        IDebugEventListener dbg;
12398
12399
        public DFA110(BaseRecognizer recognizer)
12400
        {
12401
            this.recognizer = recognizer;
12402
            this.decisionNumber = 110;
12403
            this.eot = DFA110_eot;
12404
            this.eof = DFA110_eof;
12405
            this.min = DFA110_min;
12406
            this.max = DFA110_max;
12407
            this.accept = DFA110_accept;
12408
            this.special = DFA110_special;
12409
            this.transition = DFA110_transition;
12410
12411
        }
12412
            public DFA110(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
12413
            {
12414
        		this.dbg = dbg;
12415
            }
12416
12417
        override public string Description
12418
        {
12419
            get { return "919:4: (expa= expression ( T_COMMA expb= expression )* )?"; }
12420
        }
12421
12422
        public override void Error(NoViableAltException nvae)
12423
        {
12424
            dbg.RecognitionException(nvae);
12425
        }
12426
    }
12427
12428
    const string DFA111_eotS =
12429
        "\x10\uffff";
12430
    const string DFA111_eofS =
12431
        "\x10\uffff";
12432
    const string DFA111_minS =
12433
        "\x01\x17\x0f\uffff";
12434
    const string DFA111_maxS =
12435
        "\x01\x6e\x0f\uffff";
12436
    const string DFA111_acceptS =
12437
        "\x01\uffff\x01\x01\x08\uffff\x01\x02\x02\uffff\x01\x03\x01\x04"+
12438
        "\x01\x05";
12439
    const string DFA111_specialS =
12440
        "\x10\uffff}>";
12441
    static readonly string[] DFA111_transitionS = {
12442
            "\x01\x0d\x2b\uffff\x01\x0e\x1e\uffff\x01\x0f\x09\x01\x03\x0a",
12443
            "",
12444
            "",
12445
            "",
12446
            "",
12447
            "",
12448
            "",
12449
            "",
12450
            "",
12451
            "",
12452
            "",
12453
            "",
12454
            "",
12455
            "",
12456
            "",
12457
            ""
12458
    };
12459
12460
    static readonly short[] DFA111_eot = DFA.UnpackEncodedString(DFA111_eotS);
12461
    static readonly short[] DFA111_eof = DFA.UnpackEncodedString(DFA111_eofS);
12462
    static readonly char[] DFA111_min = DFA.UnpackEncodedStringToUnsignedChars(DFA111_minS);
12463
    static readonly char[] DFA111_max = DFA.UnpackEncodedStringToUnsignedChars(DFA111_maxS);
12464
    static readonly short[] DFA111_accept = DFA.UnpackEncodedString(DFA111_acceptS);
12465
    static readonly short[] DFA111_special = DFA.UnpackEncodedString(DFA111_specialS);
12466
    static readonly short[][] DFA111_transition = DFA.UnpackEncodedStringArray(DFA111_transitionS);
12467
12468
    protected class DFA111 : DFA
12469
    {
12470
        IDebugEventListener dbg;
12471
12472
        public DFA111(BaseRecognizer recognizer)
12473
        {
12474
            this.recognizer = recognizer;
12475
            this.decisionNumber = 111;
12476
            this.eot = DFA111_eot;
12477
            this.eof = DFA111_eof;
12478
            this.min = DFA111_min;
12479
            this.max = DFA111_max;
12480
            this.accept = DFA111_accept;
12481
            this.special = DFA111_special;
12482
            this.transition = DFA111_transition;
12483
12484
        }
12485
            public DFA111(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
12486
            {
12487
        		this.dbg = dbg;
12488
            }
12489
12490
        override public string Description
12491
        {
12492
            get { return "929:1: op_un returns [UnaryOperator expr] : (r= op_un_set_list | r2= op_un_map | T_MINUS | T_NOT | T_ABS );"; }
12493
        }
12494
12495
        public override void Error(NoViableAltException nvae)
12496
        {
12497
            dbg.RecognitionException(nvae);
12498
        }
12499
    }
12500
12501
    const string DFA112_eotS =
12502
        "\x0a\uffff";
12503
    const string DFA112_eofS =
12504
        "\x0a\uffff";
12505
    const string DFA112_minS =
12506
        "\x01\x63\x09\uffff";
12507
    const string DFA112_maxS =
12508
        "\x01\x6b\x09\uffff";
12509
    const string DFA112_acceptS =
12510
        "\x01\uffff\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01"+
12511
        "\x07\x01\x08\x01\x09";
12512
    const string DFA112_specialS =
12513
        "\x0a\uffff}>";
12514
    static readonly string[] DFA112_transitionS = {
12515
            "\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01\x07\x01"+
12516
            "\x08\x01\x09",
12517
            "",
12518
            "",
12519
            "",
12520
            "",
12521
            "",
12522
            "",
12523
            "",
12524
            "",
12525
            ""
12526
    };
12527
12528
    static readonly short[] DFA112_eot = DFA.UnpackEncodedString(DFA112_eotS);
12529
    static readonly short[] DFA112_eof = DFA.UnpackEncodedString(DFA112_eofS);
12530
    static readonly char[] DFA112_min = DFA.UnpackEncodedStringToUnsignedChars(DFA112_minS);
12531
    static readonly char[] DFA112_max = DFA.UnpackEncodedStringToUnsignedChars(DFA112_maxS);
12532
    static readonly short[] DFA112_accept = DFA.UnpackEncodedString(DFA112_acceptS);
12533
    static readonly short[] DFA112_special = DFA.UnpackEncodedString(DFA112_specialS);
12534
    static readonly short[][] DFA112_transition = DFA.UnpackEncodedStringArray(DFA112_transitionS);
12535
12536
    protected class DFA112 : DFA
12537
    {
12538
        IDebugEventListener dbg;
12539
12540
        public DFA112(BaseRecognizer recognizer)
12541
        {
12542
            this.recognizer = recognizer;
12543
            this.decisionNumber = 112;
12544
            this.eot = DFA112_eot;
12545
            this.eof = DFA112_eof;
12546
            this.min = DFA112_min;
12547
            this.max = DFA112_max;
12548
            this.accept = DFA112_accept;
12549
            this.special = DFA112_special;
12550
            this.transition = DFA112_transition;
12551
12552
        }
12553
            public DFA112(BaseRecognizer recognizer, IDebugEventListener dbg) : this(recognizer)
12554
            {
12555
        		this.dbg = dbg;
12556
            }
12557
12558
        override public string Description
12559
        {
12560
            get { return "942: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 );"; }
12561
        }
12562
12563
        public override void Error(NoViableAltException nvae)
12564
        {
12565
            dbg.RecognitionException(nvae);
12566
        }
12567
    }
12568
12569
12570
12571
    public static readonly BitSet FOLLOW_T_CONSTS_in_ooActionSystems93 = new BitSet(new ulong[]{0x0000000000000100UL});
12572
    public static readonly BitSet FOLLOW_namedConstList_in_ooActionSystems95 = new BitSet(new ulong[]{0x0000000000000020UL});
12573
    public static readonly BitSet FOLLOW_T_TYPES_in_ooActionSystems105 = new BitSet(new ulong[]{0x0000000000000100UL});
12574
    public static readonly BitSet FOLLOW_namedTypeList_in_ooActionSystems113 = new BitSet(new ulong[]{0x0000000000000040UL});
12575
    public static readonly BitSet FOLLOW_T_SYSTEM_in_ooActionSystems118 = new BitSet(new ulong[]{0x0000000000001100UL});
12576
    public static readonly BitSet FOLLOW_asTypeComposition_in_ooActionSystems125 = new BitSet(new ulong[]{0x0000000000000002UL});
12577
    public static readonly BitSet FOLLOW_namedConst_in_namedConstList148 = new BitSet(new ulong[]{0x0000000000000082UL});
12578
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_namedConstList151 = new BitSet(new ulong[]{0x0000000000000100UL});
12579
    public static readonly BitSet FOLLOW_namedConst_in_namedConstList153 = new BitSet(new ulong[]{0x0000000000000082UL});
12580
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_namedConst169 = new BitSet(new ulong[]{0x0000000000000200UL});
12581
    public static readonly BitSet FOLLOW_T_EQUAL_in_namedConst173 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12582
    public static readonly BitSet FOLLOW_expression_in_namedConst179 = new BitSet(new ulong[]{0x0000000000000002UL});
12583
    public static readonly BitSet FOLLOW_namedType_in_namedTypeList199 = new BitSet(new ulong[]{0x0000000000000082UL});
12584
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_namedTypeList202 = new BitSet(new ulong[]{0x0000000000000100UL});
12585
    public static readonly BitSet FOLLOW_namedType_in_namedTypeList204 = new BitSet(new ulong[]{0x0000000000000082UL});
12586
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_namedType220 = new BitSet(new ulong[]{0x0000000000000200UL});
12587
    public static readonly BitSet FOLLOW_T_EQUAL_in_namedType225 = new BitSet(new ulong[]{0x00000002D650D140UL});
12588
    public static readonly BitSet FOLLOW_complexType_in_namedType237 = new BitSet(new ulong[]{0x0000000000000002UL});
12589
    public static readonly BitSet FOLLOW_ooActionSystem_in_namedType249 = new BitSet(new ulong[]{0x0000000000000002UL});
12590
    public static readonly BitSet FOLLOW_asTypeCompositionParallel_in_asTypeComposition285 = new BitSet(new ulong[]{0x0000000000000402UL});
12591
    public static readonly BitSet FOLLOW_T_PRIO_in_asTypeComposition290 = new BitSet(new ulong[]{0x0000000000001100UL});
12592
    public static readonly BitSet FOLLOW_asTypeCompositionParallel_in_asTypeComposition292 = new BitSet(new ulong[]{0x0000000000000402UL});
12593
    public static readonly BitSet FOLLOW_asTypeCompositionSequential_in_asTypeCompositionParallel315 = new BitSet(new ulong[]{0x0000000000000802UL});
12594
    public static readonly BitSet FOLLOW_T_NONDET_in_asTypeCompositionParallel319 = new BitSet(new ulong[]{0x0000000000001100UL});
12595
    public static readonly BitSet FOLLOW_asTypeCompositionSequential_in_asTypeCompositionParallel321 = new BitSet(new ulong[]{0x0000000000000802UL});
12596
    public static readonly BitSet FOLLOW_asTypeCompositionBlockParen_in_asTypeCompositionSequential343 = new BitSet(new ulong[]{0x0000000000000002UL});
12597
    public static readonly BitSet FOLLOW_T_LPAREN_in_asTypeCompositionBlockParen358 = new BitSet(new ulong[]{0x0000000000001100UL});
12598
    public static readonly BitSet FOLLOW_asTypeComposition_in_asTypeCompositionBlockParen360 = new BitSet(new ulong[]{0x0000000000002000UL});
12599
    public static readonly BitSet FOLLOW_T_RPAREN_in_asTypeCompositionBlockParen363 = new BitSet(new ulong[]{0x0000000000000002UL});
12600
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_asTypeCompositionBlockParen370 = new BitSet(new ulong[]{0x0000000000000002UL});
12601
    public static readonly BitSet FOLLOW_T_LIST_in_complexType401 = new BitSet(new ulong[]{0x0000000000008000UL});
12602
    public static readonly BitSet FOLLOW_T_LSQPAREN_in_complexType404 = new BitSet(new ulong[]{0x0000000000010100UL});
12603
    public static readonly BitSet FOLLOW_set_in_complexType408 = new BitSet(new ulong[]{0x0000000000020000UL});
12604
    public static readonly BitSet FOLLOW_T_RSQPAREN_in_complexType414 = new BitSet(new ulong[]{0x0000000000040000UL});
12605
    public static readonly BitSet FOLLOW_T_OF_in_complexType416 = new BitSet(new ulong[]{0x00000000D650D100UL});
12606
    public static readonly BitSet FOLLOW_complexType_in_complexType421 = new BitSet(new ulong[]{0x0000000000000002UL});
12607
    public static readonly BitSet FOLLOW_T_LSQPAREN_in_complexType436 = new BitSet(new ulong[]{0x0000000000000100UL});
12608
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_complexType440 = new BitSet(new ulong[]{0x00000000000A0000UL});
12609
    public static readonly BitSet FOLLOW_T_COMMA_in_complexType449 = new BitSet(new ulong[]{0x0000000000000100UL});
12610
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_complexType453 = new BitSet(new ulong[]{0x00000000000A0000UL});
12611
    public static readonly BitSet FOLLOW_T_RSQPAREN_in_complexType459 = new BitSet(new ulong[]{0x0000000000000002UL});
12612
    public static readonly BitSet FOLLOW_T_MAP_in_complexType469 = new BitSet(new ulong[]{0x00000000D650D100UL});
12613
    public static readonly BitSet FOLLOW_T_LSQPAREN_in_complexType474 = new BitSet(new ulong[]{0x0000000000010100UL});
12614
    public static readonly BitSet FOLLOW_set_in_complexType478 = new BitSet(new ulong[]{0x0000000000020000UL});
12615
    public static readonly BitSet FOLLOW_T_RSQPAREN_in_complexType484 = new BitSet(new ulong[]{0x00000000D650D100UL});
12616
    public static readonly BitSet FOLLOW_simpleType_in_complexType490 = new BitSet(new ulong[]{0x0000000000200000UL});
12617
    public static readonly BitSet FOLLOW_T_TO_in_complexType492 = new BitSet(new ulong[]{0x00000000D650D100UL});
12618
    public static readonly BitSet FOLLOW_complexType_in_complexType496 = new BitSet(new ulong[]{0x0000000000000002UL});
12619
    public static readonly BitSet FOLLOW_T_QUANTITY_in_complexType510 = new BitSet(new ulong[]{0x0000000000040000UL});
12620
    public static readonly BitSet FOLLOW_T_OF_in_complexType512 = new BitSet(new ulong[]{0x0000000000008000UL});
12621
    public static readonly BitSet FOLLOW_T_LSQPAREN_in_complexType514 = new BitSet(new ulong[]{0x0000000000800100UL});
12622
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_complexType519 = new BitSet(new ulong[]{0x00000000000A0000UL});
12623
    public static readonly BitSet FOLLOW_T_MINUS_in_complexType524 = new BitSet(new ulong[]{0x0000000001000000UL});
12624
    public static readonly BitSet FOLLOW_T_INFTY_in_complexType526 = new BitSet(new ulong[]{0x00000000000A0000UL});
12625
    public static readonly BitSet FOLLOW_T_COMMA_in_complexType536 = new BitSet(new ulong[]{0x0000000001000100UL});
12626
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_complexType541 = new BitSet(new ulong[]{0x00000000000A0000UL});
12627
    public static readonly BitSet FOLLOW_T_INFTY_in_complexType545 = new BitSet(new ulong[]{0x00000000000A0000UL});
12628
    public static readonly BitSet FOLLOW_T_RSQPAREN_in_complexType552 = new BitSet(new ulong[]{0x0000000000000002UL});
12629
    public static readonly BitSet FOLLOW_T_LPAREN_in_complexType562 = new BitSet(new ulong[]{0x00000000D650D100UL});
12630
    public static readonly BitSet FOLLOW_complexType_in_complexType566 = new BitSet(new ulong[]{0x0000000000082000UL});
12631
    public static readonly BitSet FOLLOW_T_COMMA_in_complexType575 = new BitSet(new ulong[]{0x00000000D650D100UL});
12632
    public static readonly BitSet FOLLOW_complexType_in_complexType579 = new BitSet(new ulong[]{0x0000000000082000UL});
12633
    public static readonly BitSet FOLLOW_T_RPAREN_in_complexType586 = new BitSet(new ulong[]{0x0000000000000002UL});
12634
    public static readonly BitSet FOLLOW_simpleType_in_complexType599 = new BitSet(new ulong[]{0x0000000000000002UL});
12635
    public static readonly BitSet FOLLOW_T_BOOL_in_simpleType632 = new BitSet(new ulong[]{0x0000000000000002UL});
12636
    public static readonly BitSet FOLLOW_T_INT_in_simpleType645 = new BitSet(new ulong[]{0x0000000000008000UL});
12637
    public static readonly BitSet FOLLOW_T_LSQPAREN_in_simpleType647 = new BitSet(new ulong[]{0x0000000001010100UL});
12638
    public static readonly BitSet FOLLOW_set_in_simpleType651 = new BitSet(new ulong[]{0x0000000008000000UL});
12639
    public static readonly BitSet FOLLOW_T_RANGETO_in_simpleType659 = new BitSet(new ulong[]{0x0000000001010100UL});
12640
    public static readonly BitSet FOLLOW_set_in_simpleType663 = new BitSet(new ulong[]{0x0000000000020000UL});
12641
    public static readonly BitSet FOLLOW_T_RSQPAREN_in_simpleType671 = new BitSet(new ulong[]{0x0000000000000002UL});
12642
    public static readonly BitSet FOLLOW_T_FLOAT_in_simpleType690 = new BitSet(new ulong[]{0x0000000000008000UL});
12643
    public static readonly BitSet FOLLOW_T_LSQPAREN_in_simpleType693 = new BitSet(new ulong[]{0x0000000021000100UL});
12644
    public static readonly BitSet FOLLOW_set_in_simpleType697 = new BitSet(new ulong[]{0x0000000008000000UL});
12645
    public static readonly BitSet FOLLOW_T_RANGETO_in_simpleType705 = new BitSet(new ulong[]{0x0000000021000100UL});
12646
    public static readonly BitSet FOLLOW_set_in_simpleType709 = new BitSet(new ulong[]{0x0000000000020000UL});
12647
    public static readonly BitSet FOLLOW_T_RSQPAREN_in_simpleType717 = new BitSet(new ulong[]{0x0000000000000002UL});
12648
    public static readonly BitSet FOLLOW_T_CHAR_in_simpleType735 = new BitSet(new ulong[]{0x0000000000000002UL});
12649
    public static readonly BitSet FOLLOW_T_CBRL_in_simpleType751 = new BitSet(new ulong[]{0x0000000000000100UL});
12650
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_simpleType755 = new BitSet(new ulong[]{0x0000000100080200UL});
12651
    public static readonly BitSet FOLLOW_T_EQUAL_in_simpleType758 = new BitSet(new ulong[]{0x0000000000010000UL});
12652
    public static readonly BitSet FOLLOW_T_INTNUMBER_in_simpleType762 = new BitSet(new ulong[]{0x0000000100080000UL});
12653
    public static readonly BitSet FOLLOW_T_COMMA_in_simpleType773 = new BitSet(new ulong[]{0x0000000000000100UL});
12654
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_simpleType777 = new BitSet(new ulong[]{0x0000000100080200UL});
12655
    public static readonly BitSet FOLLOW_T_EQUAL_in_simpleType780 = new BitSet(new ulong[]{0x0000000000010000UL});
12656
    public static readonly BitSet FOLLOW_T_INTNUMBER_in_simpleType784 = new BitSet(new ulong[]{0x0000000100080000UL});
12657
    public static readonly BitSet FOLLOW_T_CBRR_in_simpleType792 = new BitSet(new ulong[]{0x0000000000000002UL});
12658
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_simpleType803 = new BitSet(new ulong[]{0x0000000000000002UL});
12659
    public static readonly BitSet FOLLOW_T_AUTOCONS_in_ooActionSystem846 = new BitSet(new ulong[]{0x0000000000000040UL});
12660
    public static readonly BitSet FOLLOW_T_SYSTEM_in_ooActionSystem855 = new BitSet(new ulong[]{0x0000000000001000UL,0x0020000000000000UL});
12661
    public static readonly BitSet FOLLOW_T_LPAREN_in_ooActionSystem858 = new BitSet(new ulong[]{0x0000000000000100UL});
12662
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_ooActionSystem862 = new BitSet(new ulong[]{0x0000000000002000UL});
12663
    public static readonly BitSet FOLLOW_T_RPAREN_in_ooActionSystem864 = new BitSet(new ulong[]{0x0000000000000000UL,0x0020000000000000UL});
12664
    public static readonly BitSet FOLLOW_117_in_ooActionSystem877 = new BitSet(new ulong[]{0x0000003C00000000UL,0x0040000000000000UL});
12665
    public static readonly BitSet FOLLOW_T_VAR_in_ooActionSystem883 = new BitSet(new ulong[]{0x0000038000000100UL});
12666
    public static readonly BitSet FOLLOW_attrList_in_ooActionSystem885 = new BitSet(new ulong[]{0x0000003800000000UL,0x0040000000000000UL});
12667
    public static readonly BitSet FOLLOW_T_METHODS_in_ooActionSystem893 = new BitSet(new ulong[]{0x0000000000000100UL});
12668
    public static readonly BitSet FOLLOW_methodList_in_ooActionSystem895 = new BitSet(new ulong[]{0x0000003000000000UL,0x0040000000000000UL});
12669
    public static readonly BitSet FOLLOW_T_ACTIONS_in_ooActionSystem903 = new BitSet(new ulong[]{0x0000130000000100UL});
12670
    public static readonly BitSet FOLLOW_namedActionList_in_ooActionSystem905 = new BitSet(new ulong[]{0x0000002000000000UL,0x0040000000000000UL});
12671
    public static readonly BitSet FOLLOW_T_DO_in_ooActionSystem913 = new BitSet(new ulong[]{0x0010304400001100UL});
12672
    public static readonly BitSet FOLLOW_actionBlock_in_ooActionSystem918 = new BitSet(new ulong[]{0x0000004000000000UL});
12673
    public static readonly BitSet FOLLOW_T_OD_in_ooActionSystem925 = new BitSet(new ulong[]{0x0000000000000000UL,0x0040000000000000UL});
12674
    public static readonly BitSet FOLLOW_118_in_ooActionSystem931 = new BitSet(new ulong[]{0x0000000000000002UL});
12675
    public static readonly BitSet FOLLOW_attr_in_attrList962 = new BitSet(new ulong[]{0x0000000000000082UL});
12676
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_attrList965 = new BitSet(new ulong[]{0x0000038000000100UL});
12677
    public static readonly BitSet FOLLOW_attr_in_attrList967 = new BitSet(new ulong[]{0x0000000000000082UL});
12678
    public static readonly BitSet FOLLOW_T_STATIC_in_attr992 = new BitSet(new ulong[]{0x0000030000000100UL});
12679
    public static readonly BitSet FOLLOW_T_OBS_in_attr999 = new BitSet(new ulong[]{0x0000000000000100UL});
12680
    public static readonly BitSet FOLLOW_T_CTRL_in_attr1005 = new BitSet(new ulong[]{0x0000000000000100UL});
12681
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_attr1016 = new BitSet(new ulong[]{0x0000040000000000UL});
12682
    public static readonly BitSet FOLLOW_T_COLON_in_attr1019 = new BitSet(new ulong[]{0x00000000D650D100UL});
12683
    public static readonly BitSet FOLLOW_complexType_in_attr1023 = new BitSet(new ulong[]{0x0000000000000202UL});
12684
    public static readonly BitSet FOLLOW_T_EQUAL_in_attr1026 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12685
    public static readonly BitSet FOLLOW_expression_in_attr1030 = new BitSet(new ulong[]{0x0000000000000002UL});
12686
    public static readonly BitSet FOLLOW_method_in_methodList1052 = new BitSet(new ulong[]{0x0000000000000082UL});
12687
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_methodList1055 = new BitSet(new ulong[]{0x0000000000000100UL});
12688
    public static readonly BitSet FOLLOW_method_in_methodList1057 = new BitSet(new ulong[]{0x0000000000000082UL});
12689
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_method1079 = new BitSet(new ulong[]{0x0000040000001200UL});
12690
    public static readonly BitSet FOLLOW_T_LPAREN_in_method1087 = new BitSet(new ulong[]{0x0000000000000100UL});
12691
    public static readonly BitSet FOLLOW_methodParameterList_in_method1089 = new BitSet(new ulong[]{0x0000000000002000UL});
12692
    public static readonly BitSet FOLLOW_T_RPAREN_in_method1093 = new BitSet(new ulong[]{0x0000040000000200UL});
12693
    public static readonly BitSet FOLLOW_T_COLON_in_method1101 = new BitSet(new ulong[]{0x00000000D650D100UL});
12694
    public static readonly BitSet FOLLOW_complexType_in_method1105 = new BitSet(new ulong[]{0x0000000000000200UL});
12695
    public static readonly BitSet FOLLOW_T_EQUAL_in_method1115 = new BitSet(new ulong[]{0x00F0300400001100UL});
12696
    public static readonly BitSet FOLLOW_T_VAR_in_method1122 = new BitSet(new ulong[]{0x0000000000000100UL});
12697
    public static readonly BitSet FOLLOW_localActionVars_in_method1124 = new BitSet(new ulong[]{0x0000000000000000UL,0x0080000000000000UL});
12698
    public static readonly BitSet FOLLOW_119_in_method1127 = new BitSet(new ulong[]{0x00F0300400001100UL});
12699
    public static readonly BitSet FOLLOW_actionBody_in_method1136 = new BitSet(new ulong[]{0x0000080000000000UL});
12700
    public static readonly BitSet FOLLOW_T_END_in_method1144 = new BitSet(new ulong[]{0x0000000000000002UL});
12701
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_methodParameterList1168 = new BitSet(new ulong[]{0x0000040000000000UL});
12702
    public static readonly BitSet FOLLOW_T_COLON_in_methodParameterList1170 = new BitSet(new ulong[]{0x00000000D650D100UL});
12703
    public static readonly BitSet FOLLOW_complexType_in_methodParameterList1174 = new BitSet(new ulong[]{0x0000000000080002UL});
12704
    public static readonly BitSet FOLLOW_T_COMMA_in_methodParameterList1182 = new BitSet(new ulong[]{0x0000000000000100UL});
12705
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_methodParameterList1186 = new BitSet(new ulong[]{0x0000040000000000UL});
12706
    public static readonly BitSet FOLLOW_T_COLON_in_methodParameterList1188 = new BitSet(new ulong[]{0x00000000D650D100UL});
12707
    public static readonly BitSet FOLLOW_complexType_in_methodParameterList1192 = new BitSet(new ulong[]{0x0000000000080002UL});
12708
    public static readonly BitSet FOLLOW_namedAction_in_namedActionList1219 = new BitSet(new ulong[]{0x0000000000000082UL});
12709
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_namedActionList1222 = new BitSet(new ulong[]{0x0000130000000100UL});
12710
    public static readonly BitSet FOLLOW_namedAction_in_namedActionList1224 = new BitSet(new ulong[]{0x0000000000000082UL});
12711
    public static readonly BitSet FOLLOW_T_CONT_in_namedAction1244 = new BitSet(new ulong[]{0x0000000000000100UL});
12712
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_namedAction1248 = new BitSet(new ulong[]{0x0000000000001200UL});
12713
    public static readonly BitSet FOLLOW_T_LPAREN_in_namedAction1256 = new BitSet(new ulong[]{0x0000000000000100UL});
12714
    public static readonly BitSet FOLLOW_methodParameterList_in_namedAction1258 = new BitSet(new ulong[]{0x0000000000002000UL});
12715
    public static readonly BitSet FOLLOW_T_RPAREN_in_namedAction1262 = new BitSet(new ulong[]{0x0000000000000200UL});
12716
    public static readonly BitSet FOLLOW_T_EQUAL_in_namedAction1269 = new BitSet(new ulong[]{0x0000100000000000UL});
12717
    public static readonly BitSet FOLLOW_continuousActionBody_in_namedAction1273 = new BitSet(new ulong[]{0x0000000000000002UL});
12718
    public static readonly BitSet FOLLOW_T_CTRL_in_namedAction1288 = new BitSet(new ulong[]{0x0000000000000100UL});
12719
    public static readonly BitSet FOLLOW_T_OBS_in_namedAction1293 = new BitSet(new ulong[]{0x0000000000000100UL});
12720
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_namedAction1305 = new BitSet(new ulong[]{0x0000000000001200UL});
12721
    public static readonly BitSet FOLLOW_T_LPAREN_in_namedAction1313 = new BitSet(new ulong[]{0x0000000000000100UL});
12722
    public static readonly BitSet FOLLOW_methodParameterList_in_namedAction1315 = new BitSet(new ulong[]{0x0000000000002000UL});
12723
    public static readonly BitSet FOLLOW_T_RPAREN_in_namedAction1319 = new BitSet(new ulong[]{0x0000000000000200UL});
12724
    public static readonly BitSet FOLLOW_T_EQUAL_in_namedAction1326 = new BitSet(new ulong[]{0x0000300400000000UL});
12725
    public static readonly BitSet FOLLOW_T_VAR_in_namedAction1332 = new BitSet(new ulong[]{0x0000000000000100UL});
12726
    public static readonly BitSet FOLLOW_localActionVars_in_namedAction1334 = new BitSet(new ulong[]{0x0000300000000000UL});
12727
    public static readonly BitSet FOLLOW_discreteActionBody_in_namedAction1345 = new BitSet(new ulong[]{0x0000000000000002UL});
12728
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_localActionVars1377 = new BitSet(new ulong[]{0x0000040000000000UL});
12729
    public static readonly BitSet FOLLOW_T_COLON_in_localActionVars1379 = new BitSet(new ulong[]{0x00000000D650D100UL});
12730
    public static readonly BitSet FOLLOW_complexType_in_localActionVars1383 = new BitSet(new ulong[]{0x0000000000000082UL});
12731
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_localActionVars1392 = new BitSet(new ulong[]{0x0000000000000100UL});
12732
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_localActionVars1396 = new BitSet(new ulong[]{0x0000040000000000UL});
12733
    public static readonly BitSet FOLLOW_T_COLON_in_localActionVars1398 = new BitSet(new ulong[]{0x00000000D650D100UL});
12734
    public static readonly BitSet FOLLOW_complexType_in_localActionVars1402 = new BitSet(new ulong[]{0x0000000000000082UL});
12735
    public static readonly BitSet FOLLOW_continuousActionBody_in_anonymousAction1432 = new BitSet(new ulong[]{0x0000000000000002UL});
12736
    public static readonly BitSet FOLLOW_discreteActionBody_in_anonymousAction1441 = new BitSet(new ulong[]{0x0000000000000002UL});
12737
    public static readonly BitSet FOLLOW_T_CONT_in_continuousActionBody1466 = new BitSet(new ulong[]{0x0000200000000000UL});
12738
    public static readonly BitSet FOLLOW_T_REQUIRES_in_continuousActionBody1468 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12739
    public static readonly BitSet FOLLOW_expression_in_continuousActionBody1472 = new BitSet(new ulong[]{0x0000040000000000UL});
12740
    public static readonly BitSet FOLLOW_T_COLON_in_continuousActionBody1474 = new BitSet(new ulong[]{0x0000000000000100UL});
12741
    public static readonly BitSet FOLLOW_qualConstraintList_in_continuousActionBody1481 = new BitSet(new ulong[]{0x0000080000000000UL});
12742
    public static readonly BitSet FOLLOW_T_END_in_continuousActionBody1486 = new BitSet(new ulong[]{0x0000000000000002UL});
12743
    public static readonly BitSet FOLLOW_qualConstraint_in_qualConstraintList1514 = new BitSet(new ulong[]{0x0000000000080002UL});
12744
    public static readonly BitSet FOLLOW_T_COMMA_in_qualConstraintList1521 = new BitSet(new ulong[]{0x0000000000000100UL});
12745
    public static readonly BitSet FOLLOW_qualConstraint_in_qualConstraintList1525 = new BitSet(new ulong[]{0x0000000000080002UL});
12746
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_qualConstraint1556 = new BitSet(new ulong[]{0x0000000000000200UL});
12747
    public static readonly BitSet FOLLOW_T_EQUAL_in_qualConstraint1558 = new BitSet(new ulong[]{0x0000400000000100UL});
12748
    public static readonly BitSet FOLLOW_T_DERIV_in_qualConstraint1565 = new BitSet(new ulong[]{0x0000000000000100UL});
12749
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_qualConstraint1569 = new BitSet(new ulong[]{0x0000000000000002UL});
12750
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_qualConstraint1604 = new BitSet(new ulong[]{0x0003800000000002UL});
12751
    public static readonly BitSet FOLLOW_T_SUM_in_qualConstraint1635 = new BitSet(new ulong[]{0x0000000000000100UL});
12752
    public static readonly BitSet FOLLOW_T_DIFF_in_qualConstraint1652 = new BitSet(new ulong[]{0x0000000000000100UL});
12753
    public static readonly BitSet FOLLOW_T_PROD_in_qualConstraint1669 = new BitSet(new ulong[]{0x0000000000000100UL});
12754
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_qualConstraint1698 = new BitSet(new ulong[]{0x0000000000000002UL});
12755
    public static readonly BitSet FOLLOW_T_REQUIRES_in_discreteActionBody1788 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12756
    public static readonly BitSet FOLLOW_expression_in_discreteActionBody1792 = new BitSet(new ulong[]{0x0000040000000000UL});
12757
    public static readonly BitSet FOLLOW_T_COLON_in_discreteActionBody1794 = new BitSet(new ulong[]{0x00F0300400001100UL});
12758
    public static readonly BitSet FOLLOW_actionBody_in_discreteActionBody1801 = new BitSet(new ulong[]{0x0000080000000000UL});
12759
    public static readonly BitSet FOLLOW_T_END_in_discreteActionBody1806 = new BitSet(new ulong[]{0x0000000000000002UL});
12760
    public static readonly BitSet FOLLOW_actionBlockParallel_in_actionBlock1842 = new BitSet(new ulong[]{0x0000000000000402UL});
12761
    public static readonly BitSet FOLLOW_T_PRIO_in_actionBlock1846 = new BitSet(new ulong[]{0x0010300400001100UL});
12762
    public static readonly BitSet FOLLOW_actionBlockParallel_in_actionBlock1848 = new BitSet(new ulong[]{0x0000000000000402UL});
12763
    public static readonly BitSet FOLLOW_actionBlockSequential_in_actionBlockParallel1873 = new BitSet(new ulong[]{0x0000000000000802UL});
12764
    public static readonly BitSet FOLLOW_T_NONDET_in_actionBlockParallel1877 = new BitSet(new ulong[]{0x0010300400001100UL});
12765
    public static readonly BitSet FOLLOW_actionBlockSequential_in_actionBlockParallel1879 = new BitSet(new ulong[]{0x0000000000000802UL});
12766
    public static readonly BitSet FOLLOW_T_VAR_in_actionBlockSequential1908 = new BitSet(new ulong[]{0x0000000000000100UL});
12767
    public static readonly BitSet FOLLOW_blockvarlist_in_actionBlockSequential1912 = new BitSet(new ulong[]{0x0000040000000000UL,0x0100000000000000UL});
12768
    public static readonly BitSet FOLLOW_120_in_actionBlockSequential1916 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12769
    public static readonly BitSet FOLLOW_expression_in_actionBlockSequential1920 = new BitSet(new ulong[]{0x0000040000000000UL});
12770
    public static readonly BitSet FOLLOW_T_COLON_in_actionBlockSequential1927 = new BitSet(new ulong[]{0x0010300400001100UL});
12771
    public static readonly BitSet FOLLOW_actionBlockParen_in_actionBlockSequential1936 = new BitSet(new ulong[]{0x0000000000000082UL});
12772
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_actionBlockSequential1940 = new BitSet(new ulong[]{0x0010300400001100UL});
12773
    public static readonly BitSet FOLLOW_actionBlockParen_in_actionBlockSequential1942 = new BitSet(new ulong[]{0x0000000000000082UL});
12774
    public static readonly BitSet FOLLOW_T_LPAREN_in_actionBlockParen1966 = new BitSet(new ulong[]{0x0010300400001100UL});
12775
    public static readonly BitSet FOLLOW_actionBlock_in_actionBlockParen1968 = new BitSet(new ulong[]{0x0000000000002000UL});
12776
    public static readonly BitSet FOLLOW_T_RPAREN_in_actionBlockParen1971 = new BitSet(new ulong[]{0x0000000000000002UL});
12777
    public static readonly BitSet FOLLOW_anonymousOrNamedAction_in_actionBlockParen1976 = new BitSet(new ulong[]{0x0000000000000002UL});
12778
    public static readonly BitSet FOLLOW_anonymousAction_in_anonymousOrNamedAction1993 = new BitSet(new ulong[]{0x0000000000000002UL});
12779
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_anonymousOrNamedAction2002 = new BitSet(new ulong[]{0x000C000000001002UL});
12780
    public static readonly BitSet FOLLOW_T_LPAREN_in_anonymousOrNamedAction2016 = new BitSet(new ulong[]{0x00800000A081B100UL,0x04007FFC7F200008UL});
12781
    public static readonly BitSet FOLLOW_methodCallParams_in_anonymousOrNamedAction2021 = new BitSet(new ulong[]{0x0000000000002000UL});
12782
    public static readonly BitSet FOLLOW_T_RPAREN_in_anonymousOrNamedAction2023 = new BitSet(new ulong[]{0x000C000000000002UL});
12783
    public static readonly BitSet FOLLOW_set_in_anonymousOrNamedAction2041 = new BitSet(new ulong[]{0x0000000000001000UL});
12784
    public static readonly BitSet FOLLOW_T_LPAREN_in_anonymousOrNamedAction2047 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12785
    public static readonly BitSet FOLLOW_expression_in_anonymousOrNamedAction2051 = new BitSet(new ulong[]{0x0000000000002000UL});
12786
    public static readonly BitSet FOLLOW_T_RPAREN_in_anonymousOrNamedAction2053 = new BitSet(new ulong[]{0x0000000000000002UL});
12787
    public static readonly BitSet FOLLOW_T_SKIP_in_anonymousOrNamedAction2064 = new BitSet(new ulong[]{0x0000000000000002UL});
12788
    public static readonly BitSet FOLLOW_blockvar_in_blockvarlist2080 = new BitSet(new ulong[]{0x0000000000000082UL});
12789
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_blockvarlist2085 = new BitSet(new ulong[]{0x0000000000000100UL});
12790
    public static readonly BitSet FOLLOW_blockvar_in_blockvarlist2087 = new BitSet(new ulong[]{0x0000000000000082UL});
12791
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_blockvar2107 = new BitSet(new ulong[]{0x0000040000000000UL});
12792
    public static readonly BitSet FOLLOW_T_COLON_in_blockvar2110 = new BitSet(new ulong[]{0x00000000D650D100UL});
12793
    public static readonly BitSet FOLLOW_complexType_in_blockvar2114 = new BitSet(new ulong[]{0x0000000000000002UL});
12794
    public static readonly BitSet FOLLOW_actionBodyParallel_in_actionBody2149 = new BitSet(new ulong[]{0x0000000000000402UL});
12795
    public static readonly BitSet FOLLOW_T_PRIO_in_actionBody2153 = new BitSet(new ulong[]{0x00F0300400001100UL});
12796
    public static readonly BitSet FOLLOW_actionBodyParallel_in_actionBody2155 = new BitSet(new ulong[]{0x0000000000000002UL});
12797
    public static readonly BitSet FOLLOW_actionBodySequential_in_actionBodyParallel2183 = new BitSet(new ulong[]{0x0000000000000802UL});
12798
    public static readonly BitSet FOLLOW_T_NONDET_in_actionBodyParallel2189 = new BitSet(new ulong[]{0x00F0300400001100UL});
12799
    public static readonly BitSet FOLLOW_actionBodySequential_in_actionBodyParallel2193 = new BitSet(new ulong[]{0x0000000000000802UL});
12800
    public static readonly BitSet FOLLOW_actionBodyParen_in_actionBodySequential2220 = new BitSet(new ulong[]{0x0000000000000082UL});
12801
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_actionBodySequential2224 = new BitSet(new ulong[]{0x00F0300400001100UL});
12802
    public static readonly BitSet FOLLOW_actionBodyParen_in_actionBodySequential2226 = new BitSet(new ulong[]{0x0000000000000082UL});
12803
    public static readonly BitSet FOLLOW_T_LPAREN_in_actionBodyParen2244 = new BitSet(new ulong[]{0x00F0300400001100UL});
12804
    public static readonly BitSet FOLLOW_actionBody_in_actionBodyParen2246 = new BitSet(new ulong[]{0x0000000000002000UL});
12805
    public static readonly BitSet FOLLOW_T_RPAREN_in_actionBodyParen2249 = new BitSet(new ulong[]{0x0000000000000002UL});
12806
    public static readonly BitSet FOLLOW_statement_in_actionBodyParen2256 = new BitSet(new ulong[]{0x0000000000000002UL});
12807
    public static readonly BitSet FOLLOW_T_ABORT_in_statement2284 = new BitSet(new ulong[]{0x0000000000000002UL});
12808
    public static readonly BitSet FOLLOW_T_SKIP_in_statement2291 = new BitSet(new ulong[]{0x0000000000000002UL});
12809
    public static readonly BitSet FOLLOW_T_KILL_in_statement2298 = new BitSet(new ulong[]{0x0000000000001000UL});
12810
    public static readonly BitSet FOLLOW_T_LPAREN_in_statement2300 = new BitSet(new ulong[]{0x0080000000000100UL});
12811
    public static readonly BitSet FOLLOW_set_in_statement2304 = new BitSet(new ulong[]{0x0000000000002000UL});
12812
    public static readonly BitSet FOLLOW_T_RPAREN_in_statement2312 = new BitSet(new ulong[]{0x0000000000000002UL});
12813
    public static readonly BitSet FOLLOW_discreteActionBody_in_statement2322 = new BitSet(new ulong[]{0x0000000000000002UL});
12814
    public static readonly BitSet FOLLOW_reference_in_statement2331 = new BitSet(new ulong[]{0x0100000000080002UL});
12815
    public static readonly BitSet FOLLOW_T_ASSIGNMENT_in_statement2359 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12816
    public static readonly BitSet FOLLOW_expression_in_statement2364 = new BitSet(new ulong[]{0x0200000000000002UL});
12817
    public static readonly BitSet FOLLOW_T_WITH_in_statement2384 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12818
    public static readonly BitSet FOLLOW_expression_in_statement2388 = new BitSet(new ulong[]{0x0000000000000002UL});
12819
    public static readonly BitSet FOLLOW_T_COMMA_in_statement2441 = new BitSet(new ulong[]{0x0080000000000100UL});
12820
    public static readonly BitSet FOLLOW_reference_in_statement2445 = new BitSet(new ulong[]{0x0100000000080000UL});
12821
    public static readonly BitSet FOLLOW_T_ASSIGNMENT_in_statement2460 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12822
    public static readonly BitSet FOLLOW_expression_in_statement2482 = new BitSet(new ulong[]{0x0000000000080000UL});
12823
    public static readonly BitSet FOLLOW_T_COMMA_in_statement2501 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12824
    public static readonly BitSet FOLLOW_expression_in_statement2505 = new BitSet(new ulong[]{0x0200000000080002UL});
12825
    public static readonly BitSet FOLLOW_T_WITH_in_statement2519 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12826
    public static readonly BitSet FOLLOW_expression_in_statement2523 = new BitSet(new ulong[]{0x0000000000000002UL});
12827
    public static readonly BitSet FOLLOW_atomExpression_in_expression2598 = new BitSet(new ulong[]{0xFC03800000800202UL,0x00000000000FFFFBUL});
12828
    public static readonly BitSet FOLLOW_binoperator_in_expression2611 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12829
    public static readonly BitSet FOLLOW_atomExpression_in_expression2619 = new BitSet(new ulong[]{0xFC03800000800202UL,0x00000000000FFFFBUL});
12830
    public static readonly BitSet FOLLOW_T_BIIMPLIES_in_binoperator2652 = new BitSet(new ulong[]{0x0000000000000002UL});
12831
    public static readonly BitSet FOLLOW_T_GREATER_in_binoperator2661 = new BitSet(new ulong[]{0x0000000000000002UL});
12832
    public static readonly BitSet FOLLOW_T_GREATEREQUAL_in_binoperator2671 = new BitSet(new ulong[]{0x0000000000000002UL});
12833
    public static readonly BitSet FOLLOW_T_LESS_in_binoperator2680 = new BitSet(new ulong[]{0x0000000000000002UL});
12834
    public static readonly BitSet FOLLOW_T_LESSEQUAL_in_binoperator2690 = new BitSet(new ulong[]{0x0000000000000002UL});
12835
    public static readonly BitSet FOLLOW_T_EQUAL_in_binoperator2699 = new BitSet(new ulong[]{0x0000000000000002UL});
12836
    public static readonly BitSet FOLLOW_T_NOTEQUAL_in_binoperator2711 = new BitSet(new ulong[]{0x0000000000000002UL});
12837
    public static readonly BitSet FOLLOW_T_IMPLIES_in_binoperator2722 = new BitSet(new ulong[]{0x0000000000000002UL});
12838
    public static readonly BitSet FOLLOW_T_MINUS_in_binoperator2731 = new BitSet(new ulong[]{0x0000000000000002UL});
12839
    public static readonly BitSet FOLLOW_T_SUM_in_binoperator2741 = new BitSet(new ulong[]{0x0000000000000002UL});
12840
    public static readonly BitSet FOLLOW_T_IN_in_binoperator2751 = new BitSet(new ulong[]{0x0000000000000002UL,0x0000000000000004UL});
12841
    public static readonly BitSet FOLLOW_T_SET_in_binoperator2753 = new BitSet(new ulong[]{0x0000000000000002UL});
12842
    public static readonly BitSet FOLLOW_T_NOT_in_binoperator2764 = new BitSet(new ulong[]{0x0000000000000000UL,0x0000000000000002UL});
12843
    public static readonly BitSet FOLLOW_T_IN_in_binoperator2766 = new BitSet(new ulong[]{0x0000000000000002UL,0x0000000000000004UL});
12844
    public static readonly BitSet FOLLOW_T_SET_in_binoperator2768 = new BitSet(new ulong[]{0x0000000000000002UL});
12845
    public static readonly BitSet FOLLOW_T_SUBSET_in_binoperator2779 = new BitSet(new ulong[]{0x0000000000000002UL});
12846
    public static readonly BitSet FOLLOW_T_OR_in_binoperator2789 = new BitSet(new ulong[]{0x0000000000000002UL});
12847
    public static readonly BitSet FOLLOW_T_DIV_in_binoperator2798 = new BitSet(new ulong[]{0x0000000000000002UL});
12848
    public static readonly BitSet FOLLOW_T_PROD_in_binoperator2807 = new BitSet(new ulong[]{0x0000000000000002UL});
12849
    public static readonly BitSet FOLLOW_T_IDIV_in_binoperator2817 = new BitSet(new ulong[]{0x0000000000000002UL});
12850
    public static readonly BitSet FOLLOW_T_MOD_in_binoperator2827 = new BitSet(new ulong[]{0x0000000000000002UL});
12851
    public static readonly BitSet FOLLOW_T_UNION_in_binoperator2837 = new BitSet(new ulong[]{0x0000000000000002UL});
12852
    public static readonly BitSet FOLLOW_T_DIFF_in_binoperator2848 = new BitSet(new ulong[]{0x0000000000000002UL});
12853
    public static readonly BitSet FOLLOW_T_INTER_in_binoperator2859 = new BitSet(new ulong[]{0x0000000000000002UL});
12854
    public static readonly BitSet FOLLOW_T_AND_in_binoperator2870 = new BitSet(new ulong[]{0x0000000000000002UL});
12855
    public static readonly BitSet FOLLOW_T_POW_in_binoperator2885 = new BitSet(new ulong[]{0x0000000000000002UL});
12856
    public static readonly BitSet FOLLOW_T_CONC_in_binoperator2900 = new BitSet(new ulong[]{0x0000000000000002UL});
12857
    public static readonly BitSet FOLLOW_T_DOMRESBY_in_binoperator2913 = new BitSet(new ulong[]{0x0000000000000002UL});
12858
    public static readonly BitSet FOLLOW_T_DOMRESTO_in_binoperator2923 = new BitSet(new ulong[]{0x0000000000000002UL});
12859
    public static readonly BitSet FOLLOW_T_RNGRESBY_in_binoperator2933 = new BitSet(new ulong[]{0x0000000000000002UL});
12860
    public static readonly BitSet FOLLOW_T_RNGRESTO_in_binoperator2943 = new BitSet(new ulong[]{0x0000000000000002UL});
12861
    public static readonly BitSet FOLLOW_T_MUNION_in_binoperator2953 = new BitSet(new ulong[]{0x0000000000000002UL});
12862
    public static readonly BitSet FOLLOW_T_SEQMOD_MAPOVERRIDE_in_binoperator2963 = new BitSet(new ulong[]{0x0000000000000002UL});
12863
    public static readonly BitSet FOLLOW_op_un_in_atomExpression3001 = new BitSet(new ulong[]{0x00800000A0019100UL,0x040000007F000000UL});
12864
    public static readonly BitSet FOLLOW_identifierExpression_in_atomExpression3018 = new BitSet(new ulong[]{0x0000000000000002UL,0x0200000000000000UL});
12865
    public static readonly BitSet FOLLOW_qvalExpression_in_atomExpression3029 = new BitSet(new ulong[]{0x0000000000000002UL,0x0200000000000000UL});
12866
    public static readonly BitSet FOLLOW_constant_in_atomExpression3040 = new BitSet(new ulong[]{0x0000000000000002UL,0x0200000000000000UL});
12867
    public static readonly BitSet FOLLOW_initializedComplexType_in_atomExpression3051 = new BitSet(new ulong[]{0x0000000000000002UL,0x0200000000000000UL});
12868
    public static readonly BitSet FOLLOW_quantifierExpression_in_atomExpression3063 = new BitSet(new ulong[]{0x0000000000000002UL,0x0200000000000000UL});
12869
    public static readonly BitSet FOLLOW_T_LPAREN_in_atomExpression3072 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12870
    public static readonly BitSet FOLLOW_expression_in_atomExpression3076 = new BitSet(new ulong[]{0x0000000000002000UL});
12871
    public static readonly BitSet FOLLOW_T_RPAREN_in_atomExpression3078 = new BitSet(new ulong[]{0x0000000000009002UL,0x0200000000100000UL});
12872
    public static readonly BitSet FOLLOW_T_POINT_in_atomExpression3101 = new BitSet(new ulong[]{0x0000000000000100UL});
12873
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_atomExpression3113 = new BitSet(new ulong[]{0x0000000000009002UL,0x0200000000100000UL});
12874
    public static readonly BitSet FOLLOW_accessExpression_in_atomExpression3137 = new BitSet(new ulong[]{0x0000000000000002UL,0x0200000000000000UL});
12875
    public static readonly BitSet FOLLOW_accessExpression_in_atomExpression3157 = new BitSet(new ulong[]{0x0000000000000002UL,0x0200000000000000UL});
12876
    public static readonly BitSet FOLLOW_121_in_atomExpression3176 = new BitSet(new ulong[]{0x0000000000000100UL});
12877
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_atomExpression3180 = new BitSet(new ulong[]{0x0000000000000002UL});
12878
    public static readonly BitSet FOLLOW_T_IF_in_atomExpression3201 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12879
    public static readonly BitSet FOLLOW_expression_in_atomExpression3205 = new BitSet(new ulong[]{0x0000000000000000UL,0x0000000000400000UL});
12880
    public static readonly BitSet FOLLOW_T_THEN_in_atomExpression3207 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12881
    public static readonly BitSet FOLLOW_expression_in_atomExpression3211 = new BitSet(new ulong[]{0x0000000000000000UL,0x0000000000800000UL});
12882
    public static readonly BitSet FOLLOW_T_ELSE_in_atomExpression3213 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12883
    public static readonly BitSet FOLLOW_expression_in_atomExpression3217 = new BitSet(new ulong[]{0x0000080000000000UL});
12884
    public static readonly BitSet FOLLOW_T_END_in_atomExpression3219 = new BitSet(new ulong[]{0x0000000000000002UL});
12885
    public static readonly BitSet FOLLOW_set_in_quantifierExpression3251 = new BitSet(new ulong[]{0x0000000000000100UL});
12886
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_quantifierExpression3268 = new BitSet(new ulong[]{0x0000040000000000UL});
12887
    public static readonly BitSet FOLLOW_T_COLON_in_quantifierExpression3271 = new BitSet(new ulong[]{0x00000000D650D100UL});
12888
    public static readonly BitSet FOLLOW_simpleType_in_quantifierExpression3275 = new BitSet(new ulong[]{0x0000040000080000UL});
12889
    public static readonly BitSet FOLLOW_T_COMMA_in_quantifierExpression3286 = new BitSet(new ulong[]{0x0000000000000100UL});
12890
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_quantifierExpression3290 = new BitSet(new ulong[]{0x0000040000000000UL});
12891
    public static readonly BitSet FOLLOW_T_COLON_in_quantifierExpression3293 = new BitSet(new ulong[]{0x00000000D650D100UL});
12892
    public static readonly BitSet FOLLOW_simpleType_in_quantifierExpression3297 = new BitSet(new ulong[]{0x0000040000080000UL});
12893
    public static readonly BitSet FOLLOW_T_COLON_in_quantifierExpression3307 = new BitSet(new ulong[]{0x0000000000001000UL});
12894
    public static readonly BitSet FOLLOW_T_LPAREN_in_quantifierExpression3309 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12895
    public static readonly BitSet FOLLOW_expression_in_quantifierExpression3313 = new BitSet(new ulong[]{0x0000000000002000UL});
12896
    public static readonly BitSet FOLLOW_T_RPAREN_in_quantifierExpression3315 = new BitSet(new ulong[]{0x0000000000000002UL});
12897
    public static readonly BitSet FOLLOW_T_TRUE_in_constant3349 = new BitSet(new ulong[]{0x0000000000000002UL});
12898
    public static readonly BitSet FOLLOW_T_FALSE_in_constant3357 = new BitSet(new ulong[]{0x0000000000000002UL});
12899
    public static readonly BitSet FOLLOW_T_NIL_in_constant3364 = new BitSet(new ulong[]{0x0000000000000002UL});
12900
    public static readonly BitSet FOLLOW_T_SELF_in_constant3372 = new BitSet(new ulong[]{0x0000000000000002UL});
12901
    public static readonly BitSet FOLLOW_T_FLOATNUMBER_in_constant3383 = new BitSet(new ulong[]{0x0000000000000002UL});
12902
    public static readonly BitSet FOLLOW_T_INTNUMBER_in_constant3392 = new BitSet(new ulong[]{0x0000000000000002UL});
12903
    public static readonly BitSet FOLLOW_T_STRINGLITERAL_in_constant3401 = new BitSet(new ulong[]{0x0000000000000002UL});
12904
    public static readonly BitSet FOLLOW_initializedListType_in_initializedComplexType3428 = new BitSet(new ulong[]{0x0000000000000002UL});
12905
    public static readonly BitSet FOLLOW_initializedSetType_in_initializedComplexType3437 = new BitSet(new ulong[]{0x0000000000000002UL});
12906
    public static readonly BitSet FOLLOW_T_NEW_in_initializedComplexType3445 = new BitSet(new ulong[]{0x0000000000001000UL});
12907
    public static readonly BitSet FOLLOW_T_LPAREN_in_initializedComplexType3447 = new BitSet(new ulong[]{0x0000000000000100UL});
12908
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_initializedComplexType3451 = new BitSet(new ulong[]{0x0000000000082000UL});
12909
    public static readonly BitSet FOLLOW_T_COMMA_in_initializedComplexType3463 = new BitSet(new ulong[]{0x0000000000000000UL,0x0000000020000000UL});
12910
    public static readonly BitSet FOLLOW_T_STRINGLITERAL_in_initializedComplexType3468 = new BitSet(new ulong[]{0x0000000000002000UL});
12911
    public static readonly BitSet FOLLOW_T_RPAREN_in_initializedComplexType3470 = new BitSet(new ulong[]{0x0000000000000002UL});
12912
    public static readonly BitSet FOLLOW_T_RPAREN_in_initializedComplexType3479 = new BitSet(new ulong[]{0x0000000000000002UL});
12913
    public static readonly BitSet FOLLOW_T_LSQPAREN_in_initializedListType3510 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12914
    public static readonly BitSet FOLLOW_expression_in_initializedListType3514 = new BitSet(new ulong[]{0x00000000000A0000UL,0x0000000080000000UL});
12915
    public static readonly BitSet FOLLOW_T_COMMA_in_initializedListType3525 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12916
    public static readonly BitSet FOLLOW_expression_in_initializedListType3529 = new BitSet(new ulong[]{0x00000000000A0000UL});
12917
    public static readonly BitSet FOLLOW_listComprehension_in_initializedListType3541 = new BitSet(new ulong[]{0x0000000000020000UL});
12918
    public static readonly BitSet FOLLOW_T_RSQPAREN_in_initializedListType3549 = new BitSet(new ulong[]{0x0000000000000002UL});
12919
    public static readonly BitSet FOLLOW_T_BAR_in_listComprehension3580 = new BitSet(new ulong[]{0x0000000400000000UL});
12920
    public static readonly BitSet FOLLOW_T_VAR_in_listComprehension3582 = new BitSet(new ulong[]{0x0000000000000100UL});
12921
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_listComprehension3588 = new BitSet(new ulong[]{0x0000040000000000UL});
12922
    public static readonly BitSet FOLLOW_T_COLON_in_listComprehension3591 = new BitSet(new ulong[]{0x00000000D650D100UL});
12923
    public static readonly BitSet FOLLOW_complexType_in_listComprehension3595 = new BitSet(new ulong[]{0x0000000000000082UL,0x0100000000000000UL});
12924
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_listComprehension3604 = new BitSet(new ulong[]{0x0000000000000100UL});
12925
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_listComprehension3608 = new BitSet(new ulong[]{0x00000000D650D100UL});
12926
    public static readonly BitSet FOLLOW_complexType_in_listComprehension3613 = new BitSet(new ulong[]{0x0000000000000082UL,0x0100000000000000UL});
12927
    public static readonly BitSet FOLLOW_120_in_listComprehension3623 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12928
    public static readonly BitSet FOLLOW_expression_in_listComprehension3629 = new BitSet(new ulong[]{0x0000000000000002UL});
12929
    public static readonly BitSet FOLLOW_T_CBRL_in_initializedSetType3655 = new BitSet(new ulong[]{0x0000000000000000UL,0x0000000100000000UL});
12930
    public static readonly BitSet FOLLOW_T_MAPS_in_initializedSetType3657 = new BitSet(new ulong[]{0x0000000100000000UL});
12931
    public static readonly BitSet FOLLOW_T_CBRR_in_initializedSetType3659 = new BitSet(new ulong[]{0x0000000000000002UL});
12932
    public static readonly BitSet FOLLOW_initializedSet_in_initializedSetType3670 = new BitSet(new ulong[]{0x0000000000000002UL});
12933
    public static readonly BitSet FOLLOW_T_CBRL_in_initializedSet3696 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12934
    public static readonly BitSet FOLLOW_expression_in_initializedSet3700 = new BitSet(new ulong[]{0x0000000100080000UL,0x0000000180000000UL});
12935
    public static readonly BitSet FOLLOW_T_COMMA_in_initializedSet3730 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12936
    public static readonly BitSet FOLLOW_expression_in_initializedSet3734 = new BitSet(new ulong[]{0x0000000100080000UL});
12937
    public static readonly BitSet FOLLOW_map_in_initializedSet3752 = new BitSet(new ulong[]{0x0000000100000000UL});
12938
    public static readonly BitSet FOLLOW_setComprehension_in_initializedSet3765 = new BitSet(new ulong[]{0x0000000100000000UL});
12939
    public static readonly BitSet FOLLOW_T_CBRR_in_initializedSet3776 = new BitSet(new ulong[]{0x0000000000000002UL});
12940
    public static readonly BitSet FOLLOW_T_MAPS_in_map3812 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12941
    public static readonly BitSet FOLLOW_expression_in_map3816 = new BitSet(new ulong[]{0x0000000000080002UL});
12942
    public static readonly BitSet FOLLOW_T_COMMA_in_map3824 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12943
    public static readonly BitSet FOLLOW_expression_in_map3828 = new BitSet(new ulong[]{0x0000000000000000UL,0x0000000100000000UL});
12944
    public static readonly BitSet FOLLOW_T_MAPS_in_map3830 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12945
    public static readonly BitSet FOLLOW_expression_in_map3834 = new BitSet(new ulong[]{0x0000000000080002UL});
12946
    public static readonly BitSet FOLLOW_T_BAR_in_setComprehension3856 = new BitSet(new ulong[]{0x0000000400000000UL});
12947
    public static readonly BitSet FOLLOW_T_VAR_in_setComprehension3858 = new BitSet(new ulong[]{0x0000000000000102UL,0x0100000000000000UL});
12948
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_setComprehension3863 = new BitSet(new ulong[]{0x0000040000000000UL});
12949
    public static readonly BitSet FOLLOW_T_COLON_in_setComprehension3866 = new BitSet(new ulong[]{0x00000000D650D100UL});
12950
    public static readonly BitSet FOLLOW_complexType_in_setComprehension3870 = new BitSet(new ulong[]{0x0000000000000080UL});
12951
    public static readonly BitSet FOLLOW_T_SEMICOLON_in_setComprehension3879 = new BitSet(new ulong[]{0x0000000000000100UL});
12952
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_setComprehension3883 = new BitSet(new ulong[]{0x0000040000000000UL});
12953
    public static readonly BitSet FOLLOW_T_COLON_in_setComprehension3885 = new BitSet(new ulong[]{0x00000000D650D100UL});
12954
    public static readonly BitSet FOLLOW_complexType_in_setComprehension3889 = new BitSet(new ulong[]{0x0000000000000102UL,0x0100000000000000UL});
12955
    public static readonly BitSet FOLLOW_120_in_setComprehension3903 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12956
    public static readonly BitSet FOLLOW_expression_in_setComprehension3909 = new BitSet(new ulong[]{0x0000000000000002UL});
12957
    public static readonly BitSet FOLLOW_122_in_qvalExpression3944 = new BitSet(new ulong[]{0x0000000000001000UL});
12958
    public static readonly BitSet FOLLOW_T_LPAREN_in_qvalExpression3946 = new BitSet(new ulong[]{0x0080000001800100UL,0x0000000010000000UL});
12959
    public static readonly BitSet FOLLOW_T_NIL_in_qvalExpression3960 = new BitSet(new ulong[]{0x0000000000080000UL});
12960
    public static readonly BitSet FOLLOW_qualifiedIdentifier_in_qvalExpression3981 = new BitSet(new ulong[]{0x0000000008080000UL});
12961
    public static readonly BitSet FOLLOW_T_MINUS_in_qvalExpression4000 = new BitSet(new ulong[]{0x0000000001000000UL});
12962
    public static readonly BitSet FOLLOW_T_INFTY_in_qvalExpression4006 = new BitSet(new ulong[]{0x0000000008080000UL});
12963
    public static readonly BitSet FOLLOW_T_RANGETO_in_qvalExpression4024 = new BitSet(new ulong[]{0x0080000001000100UL});
12964
    public static readonly BitSet FOLLOW_qualifiedIdentifier_in_qvalExpression4034 = new BitSet(new ulong[]{0x0000000000080000UL});
12965
    public static readonly BitSet FOLLOW_T_INFTY_in_qvalExpression4052 = new BitSet(new ulong[]{0x0000000000080000UL});
12966
    public static readonly BitSet FOLLOW_T_COMMA_in_qvalExpression4076 = new BitSet(new ulong[]{0x0000000000000000UL,0x3800000010000000UL});
12967
    public static readonly BitSet FOLLOW_T_NIL_in_qvalExpression4086 = new BitSet(new ulong[]{0x0000000000002000UL});
12968
    public static readonly BitSet FOLLOW_123_in_qvalExpression4102 = new BitSet(new ulong[]{0x0000000000002000UL});
12969
    public static readonly BitSet FOLLOW_124_in_qvalExpression4115 = new BitSet(new ulong[]{0x0000000000002000UL});
12970
    public static readonly BitSet FOLLOW_125_in_qvalExpression4128 = new BitSet(new ulong[]{0x0000000000002000UL});
12971
    public static readonly BitSet FOLLOW_T_RPAREN_in_qvalExpression4150 = new BitSet(new ulong[]{0x0000000000000002UL});
12972
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_identifierExpression4183 = new BitSet(new ulong[]{0x0000000000001000UL});
12973
    public static readonly BitSet FOLLOW_T_LPAREN_in_identifierExpression4185 = new BitSet(new ulong[]{0x00800000A081B100UL,0x04007FFC7F200008UL});
12974
    public static readonly BitSet FOLLOW_methodCallParams_in_identifierExpression4189 = new BitSet(new ulong[]{0x0000000000002000UL});
12975
    public static readonly BitSet FOLLOW_T_RPAREN_in_identifierExpression4191 = new BitSet(new ulong[]{0x0000000000000002UL});
12976
    public static readonly BitSet FOLLOW_reference_in_identifierExpression4206 = new BitSet(new ulong[]{0x0000000000000002UL});
12977
    public static readonly BitSet FOLLOW_qualifiedIdentifier_in_reference4244 = new BitSet(new ulong[]{0x000C000000009002UL,0x4000000200000000UL});
12978
    public static readonly BitSet FOLLOW_accessExpression_in_reference4256 = new BitSet(new ulong[]{0x000C000000000002UL,0x4000000200000000UL});
12979
    public static readonly BitSet FOLLOW_T_PRIMED_in_reference4281 = new BitSet(new ulong[]{0x0000000000000002UL});
12980
    public static readonly BitSet FOLLOW_126_in_reference4297 = new BitSet(new ulong[]{0x0000000000001000UL});
12981
    public static readonly BitSet FOLLOW_T_LPAREN_in_reference4299 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12982
    public static readonly BitSet FOLLOW_expression_in_reference4303 = new BitSet(new ulong[]{0x0000000000002000UL});
12983
    public static readonly BitSet FOLLOW_T_RPAREN_in_reference4305 = new BitSet(new ulong[]{0x000C000000000000UL});
12984
    public static readonly BitSet FOLLOW_set_in_reference4311 = new BitSet(new ulong[]{0x0000000000001000UL});
12985
    public static readonly BitSet FOLLOW_T_LPAREN_in_reference4317 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12986
    public static readonly BitSet FOLLOW_expression_in_reference4321 = new BitSet(new ulong[]{0x0000000000002000UL});
12987
    public static readonly BitSet FOLLOW_T_RPAREN_in_reference4323 = new BitSet(new ulong[]{0x0000000000000002UL});
12988
    public static readonly BitSet FOLLOW_T_LSQPAREN_in_accessExpression4368 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
12989
    public static readonly BitSet FOLLOW_expression_in_accessExpression4372 = new BitSet(new ulong[]{0x0000000000020000UL});
12990
    public static readonly BitSet FOLLOW_T_RSQPAREN_in_accessExpression4374 = new BitSet(new ulong[]{0x0000000000009002UL,0x0000000000100000UL});
12991
    public static readonly BitSet FOLLOW_T_LPAREN_in_accessExpression4401 = new BitSet(new ulong[]{0x00800000A081B100UL,0x04007FFC7F200008UL});
12992
    public static readonly BitSet FOLLOW_methodCallParams_in_accessExpression4405 = new BitSet(new ulong[]{0x0000000000002000UL});
12993
    public static readonly BitSet FOLLOW_T_RPAREN_in_accessExpression4407 = new BitSet(new ulong[]{0x0000000000009002UL,0x0000000000100000UL});
12994
    public static readonly BitSet FOLLOW_T_POINT_in_accessExpression4429 = new BitSet(new ulong[]{0x0000000000000100UL});
12995
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_accessExpression4437 = new BitSet(new ulong[]{0x0000000000009002UL,0x0000000000100000UL});
12996
    public static readonly BitSet FOLLOW_accessExpression_in_accessExpression4453 = new BitSet(new ulong[]{0x0000000000000002UL});
12997
    public static readonly BitSet FOLLOW_T_SELF_in_qualifiedIdentifier4492 = new BitSet(new ulong[]{0x0000000000000000UL,0x0000000000100000UL});
12998
    public static readonly BitSet FOLLOW_T_POINT_in_qualifiedIdentifier4494 = new BitSet(new ulong[]{0x0000000000000100UL});
12999
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_qualifiedIdentifier4506 = new BitSet(new ulong[]{0x0000000000000002UL,0x0000000000100000UL});
13000
    public static readonly BitSet FOLLOW_T_POINT_in_qualifiedIdentifier4515 = new BitSet(new ulong[]{0x0000000000000100UL});
13001
    public static readonly BitSet FOLLOW_T_IDENTIFIER_in_qualifiedIdentifier4519 = new BitSet(new ulong[]{0x0000000000000002UL,0x0000000000100000UL});
13002
    public static readonly BitSet FOLLOW_expression_in_methodCallParams4552 = new BitSet(new ulong[]{0x0000000000080002UL});
13003
    public static readonly BitSet FOLLOW_T_COMMA_in_methodCallParams4557 = new BitSet(new ulong[]{0x00800000A0819100UL,0x04007FFC7F200008UL});
13004
    public static readonly BitSet FOLLOW_expression_in_methodCallParams4561 = new BitSet(new ulong[]{0x0000000000080002UL});
13005
    public static readonly BitSet FOLLOW_op_un_set_list_in_op_un4600 = new BitSet(new ulong[]{0x0000000000000002UL});
13006
    public static readonly BitSet FOLLOW_op_un_map_in_op_un4609 = new BitSet(new ulong[]{0x0000000000000002UL});
13007
    public static readonly BitSet FOLLOW_T_MINUS_in_op_un4617 = new BitSet(new ulong[]{0x0000000000000002UL});
13008
    public static readonly BitSet FOLLOW_T_NOT_in_op_un4625 = new BitSet(new ulong[]{0x0000000000000002UL});
13009
    public static readonly BitSet FOLLOW_T_ABS_in_op_un4633 = new BitSet(new ulong[]{0x0000000000000002UL});
13010
    public static readonly BitSet FOLLOW_T_CARD_in_op_un_set_list4660 = new BitSet(new ulong[]{0x0000000000000002UL});
13011
    public static readonly BitSet FOLLOW_T_DCONC_in_op_un_set_list4671 = new BitSet(new ulong[]{0x0000000000000002UL});
13012
    public static readonly BitSet FOLLOW_T_DINTER_in_op_un_set_list4682 = new BitSet(new ulong[]{0x0000000000000002UL});
13013
    public static readonly BitSet FOLLOW_T_DUNION_in_op_un_set_list4692 = new BitSet(new ulong[]{0x0000000000000002UL});
13014
    public static readonly BitSet FOLLOW_T_ELEMS_in_op_un_set_list4702 = new BitSet(new ulong[]{0x0000000000000002UL});
13015
    public static readonly BitSet FOLLOW_T_HEAD_in_op_un_set_list4713 = new BitSet(new ulong[]{0x0000000000000002UL});
13016
    public static readonly BitSet FOLLOW_T_INDS_in_op_un_set_list4724 = new BitSet(new ulong[]{0x0000000000000002UL});
13017
    public static readonly BitSet FOLLOW_T_LEN_in_op_un_set_list4735 = new BitSet(new ulong[]{0x0000000000000002UL});
13018
    public static readonly BitSet FOLLOW_T_TAIL_in_op_un_set_list4746 = new BitSet(new ulong[]{0x0000000000000002UL});
13019
    public static readonly BitSet FOLLOW_T_DOM_in_op_un_map4775 = new BitSet(new ulong[]{0x0000000000000002UL});
13020
    public static readonly BitSet FOLLOW_T_RNG_in_op_un_map4786 = new BitSet(new ulong[]{0x0000000000000002UL});
13021
    public static readonly BitSet FOLLOW_T_MERGE_in_op_un_map4797 = new BitSet(new ulong[]{0x0000000000000002UL});
13022
13023
}
13024
}