Project

General

Profile

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

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