protected override void CloneTo(CloneContext clonectx, Expression t)
        {
            AsIn target = (AsIn)t;

            target.expr    = expr.Clone(clonectx);
            target.objExpr = objExpr.Clone(clonectx);
        }
void case_593()
#line 5013 "ps-parser.jay"
{
		Error_SyntaxError (yyToken);

		yyVal = new AsIn ((Expression) yyVals[-2+yyTop], null, GetLocation (yyVals[-1+yyTop]));
	  }
  /** the generated parser.
      Maintains a state and a value stack, currently with fixed maximum size.
      @param yyLex scanner.
      @return result of the last reduction, if any.
      @throws yyException on irrecoverable parse error.
    */
  internal Object yyparse (yyParser.yyInput yyLex)
  {
    if (yyMax <= 0) yyMax = 256;		// initial size
    int yyState = 0;                   // state stack ptr
    int [] yyStates;               	// state stack 
    yyVal = null;
    yyToken = -1;
    int yyErrorFlag = 0;				// #tks to shift
	if (use_global_stacks && global_yyStates != null) {
		yyVals = global_yyVals;
		yyStates = global_yyStates;
   } else {
		yyVals = new object [yyMax];
		yyStates = new int [yyMax];
		if (use_global_stacks) {
			global_yyVals = yyVals;
			global_yyStates = yyStates;
		}
	}

    /*yyLoop:*/ for (yyTop = 0;; ++ yyTop) {
      if (yyTop >= yyStates.Length) {			// dynamically increase
        global::System.Array.Resize (ref yyStates, yyStates.Length+yyMax);
        global::System.Array.Resize (ref yyVals, yyVals.Length+yyMax);
      }
      yyStates[yyTop] = yyState;
      yyVals[yyTop] = yyVal;
//t      if (debug != null) debug.push(yyState, yyVal);

      /*yyDiscarded:*/ while (true) {	// discarding a token does not change stack
        int yyN;
        if ((yyN = yyDefRed[yyState]) == 0) {	// else [default] reduce (yyN)
          if (yyToken < 0) {
            yyToken = yyLex.advance() ? yyLex.token() : 0;
//t            if (debug != null)
//t              debug.lex(yyState, yyToken, yyname(yyToken), yyLex.value());
          }
          if ((yyN = yySindex[yyState]) != 0 && ((yyN += yyToken) >= 0)
              && (yyN < yyTable.Length) && (yyCheck[yyN] == yyToken)) {
//t            if (debug != null)
//t              debug.shift(yyState, yyTable[yyN], yyErrorFlag-1);
            yyState = yyTable[yyN];		// shift to yyN
            yyVal = yyLex.value();
            yyToken = -1;
            if (yyErrorFlag > 0) -- yyErrorFlag;
            goto continue_yyLoop;
          }
          if ((yyN = yyRindex[yyState]) != 0 && (yyN += yyToken) >= 0
              && yyN < yyTable.Length && yyCheck[yyN] == yyToken)
            yyN = yyTable[yyN];			// reduce (yyN)
          else
            switch (yyErrorFlag) {
  
            case 0:
              yyExpectingState = yyState;
              // yyerror(String.Format ("syntax error, got token `{0}'", yyname (yyToken)), yyExpecting(yyState));
//t              if (debug != null) debug.error("syntax error");
              if (yyToken == 0 /*eof*/ || yyToken == eof_token) throw new yyParser.yyUnexpectedEof ();
              goto case 1;
            case 1: case 2:
              yyErrorFlag = 3;
              do {
                if ((yyN = yySindex[yyStates[yyTop]]) != 0
                    && (yyN += Token.yyErrorCode) >= 0 && yyN < yyTable.Length
                    && yyCheck[yyN] == Token.yyErrorCode) {
//t                  if (debug != null)
//t                    debug.shift(yyStates[yyTop], yyTable[yyN], 3);
                  yyState = yyTable[yyN];
                  yyVal = yyLex.value();
                  goto continue_yyLoop;
                }
//t                if (debug != null) debug.pop(yyStates[yyTop]);
              } while (-- yyTop >= 0);
//t              if (debug != null) debug.reject();
              throw new yyParser.yyException("irrecoverable syntax error");
  
            case 3:
              if (yyToken == 0) {
//t                if (debug != null) debug.reject();
                throw new yyParser.yyException("irrecoverable syntax error at end-of-file");
              }
//t              if (debug != null)
//t                debug.discard(yyState, yyToken, yyname(yyToken),
//t  							yyLex.value());
              yyToken = -1;
              goto continue_yyDiscarded;		// leave stack alone
            }
        }
        int yyV = yyTop + 1-yyLen[yyN];
//t        if (debug != null)
//t          debug.reduce(yyState, yyStates[yyV-1], yyN, YYRules.getRule (yyN), yyLen[yyN]);
        yyVal = yyV > yyTop ? null : yyVals[yyV]; // yyVal = yyDefault(yyV > yyTop ? null : yyVals[yyV]);
        switch (yyN) {
case 1:
#line 445 "ps-parser.jay"
  {
		Lexer.check_incorrect_doc_comment ();
	  }
  break;
case 2:
#line 446 "ps-parser.jay"
  { Lexer.CompleteOnEOF = false; }
  break;
case 6:
  case_6();
  break;
case 7:
#line 465 "ps-parser.jay"
  {
		module.AddAttributes ((Attributes) yyVals[0+yyTop], current_namespace);
	  }
  break;
case 8:
  case_8();
  break;
case 13:
  case_13();
  break;
case 14:
#line 510 "ps-parser.jay"
  {
		Error_SyntaxError (yyToken);
	  }
  break;
case 19:
  case_19();
  break;
case 20:
  case_20();
  break;
case 21:
  case_21();
  break;
case 22:
  case_22();
  break;
case 25:
  case_25();
  break;
case 27:
  case_27();
  break;
case 28:
#line 575 "ps-parser.jay"
  {
	    Lexer.AllowAutoSemiAfterToken(Token.DOT_STAR, true);
	  }
  break;
case 29:
  case_29();
  break;
case 30:
  case_30();
  break;
case 31:
  case_31();
  break;
case 32:
  case_32();
  break;
case 33:
#line 627 "ps-parser.jay"
  {
	  	Lexer.AutoSemiInsertion = false;
	  }
  break;
case 34:
  case_34();
  break;
case 35:
  case_35();
  break;
case 36:
  case_36();
  break;
case 37:
  case_37();
  break;
case 40:
  case_40();
  break;
case 41:
  case_41();
  break;
case 42:
  case_42();
  break;
case 59:
  case_59();
  break;
case 60:
  case_60();
  break;
case 61:
  case_61();
  break;
case 63:
  case_63();
  break;
case 64:
  case_64();
  break;
case 65:
  case_65();
  break;
case 66:
  case_66();
  break;
case 75:
  case_75();
  break;
case 76:
  case_76();
  break;
case 77:
#line 888 "ps-parser.jay"
  {
		lexer.parsing_attribute_section = true;
	  }
  break;
case 78:
  case_78();
  break;
case 79:
  case_79();
  break;
case 80:
  case_80();
  break;
case 81:
  case_81();
  break;
case 82:
  case_82();
  break;
case 83:
#line 929 "ps-parser.jay"
  { yyVal = "event"; }
  break;
case 84:
#line 930 "ps-parser.jay"
  { yyVal = "return"; }
  break;
case 85:
  case_85();
  break;
case 86:
#line 947 "ps-parser.jay"
  {
		yyVal = new List<Attribute> (4) { (Attribute) yyVals[0+yyTop] };
	  }
  break;
case 87:
  case_87();
  break;
case 88:
#line 961 "ps-parser.jay"
  {
		++lexer.parsing_block;
	  }
  break;
case 89:
  case_89();
  break;
case 91:
#line 980 "ps-parser.jay"
  { yyVal = null; }
  break;
case 92:
  case_92();
  break;
case 93:
#line 990 "ps-parser.jay"
  { yyVal = null; }
  break;
case 94:
  case_94();
  break;
case 95:
  case_95();
  break;
case 96:
  case_96();
  break;
case 97:
  case_97();
  break;
case 98:
#line 1032 "ps-parser.jay"
  {
	  	yyVal = new Argument ((Expression) yyVals[0+yyTop]);
	  }
  break;
case 100:
#line 1040 "ps-parser.jay"
  {
		++lexer.parsing_block;
	  }
  break;
case 101:
  case_101();
  break;
case 102:
  case_102();
  break;
case 103:
#line 1066 "ps-parser.jay"
  { yyVal = null; }
  break;
case 104:
  case_104();
  break;
case 105:
  case_105();
  break;
case 108:
#line 1088 "ps-parser.jay"
  {
		lexer.parsing_modifiers = true;
	  }
  break;
case 109:
#line 1092 "ps-parser.jay"
  {
		lexer.parsing_modifiers = true;
	  }
  break;
case 124:
  case_124();
  break;
case 125:
  case_125();
  break;
case 126:
  case_126();
  break;
case 127:
  case_127();
  break;
case 128:
  case_128();
  break;
case 129:
  case_129();
  break;
case 130:
  case_130();
  break;
case 131:
#line 1176 "ps-parser.jay"
  {
		lexer.AutoSemiInsertion = false;
	  }
  break;
case 132:
  case_132();
  break;
case 133:
  case_133();
  break;
case 134:
  case_134();
  break;
case 135:
  case_135();
  break;
case 136:
  case_136();
  break;
case 137:
#line 1225 "ps-parser.jay"
  {
		Error_SyntaxError (yyToken);
	  }
  break;
case 138:
  case_138();
  break;
case 139:
  case_139();
  break;
case 142:
#line 1266 "ps-parser.jay"
  {
		current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]);
	  }
  break;
case 143:
#line 1270 "ps-parser.jay"
  {
		current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]);
	  }
  break;
case 144:
  case_144();
  break;
case 145:
#line 1283 "ps-parser.jay"
  { yyVal = null; }
  break;
case 147:
#line 1291 "ps-parser.jay"
  {
		++lexer.parsing_block;
	  }
  break;
case 148:
  case_148();
  break;
case 149:
  case_149();
  break;
case 151:
  case_151();
  break;
case 152:
  case_152();
  break;
case 153:
  case_153();
  break;
case 154:
  case_154();
  break;
case 155:
#line 1374 "ps-parser.jay"
  {
		report.Error (1641, GetLocation (yyVals[0+yyTop]), "A fixed size buffer field must have the array size specifier after the field name");
	  }
  break;
case 157:
  case_157();
  break;
case 158:
  case_158();
  break;
case 161:
#line 1403 "ps-parser.jay"
  {
		current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]);
	  }
  break;
case 162:
#line 1407 "ps-parser.jay"
  {
		current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]);
	  }
  break;
case 163:
  case_163();
  break;
case 164:
#line 1420 "ps-parser.jay"
  {
		++lexer.parsing_block;
	  }
  break;
case 165:
  case_165();
  break;
case 168:
#line 1439 "ps-parser.jay"
  {
		current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]);
	  }
  break;
case 169:
#line 1443 "ps-parser.jay"
  {
		current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]);
	  }
  break;
case 170:
  case_170();
  break;
case 171:
#line 1459 "ps-parser.jay"
  {
		++lexer.parsing_block;
	  }
  break;
case 172:
  case_172();
  break;
case 173:
  case_173();
  break;
case 175:
  case_175();
  break;
case 176:
  case_176();
  break;
case 177:
  case_177();
  break;
case 178:
  case_178();
  break;
case 179:
#line 1603 "ps-parser.jay"
  {
		lexer.ConstraintsParsing = true;
	  }
  break;
case 180:
  case_180();
  break;
case 181:
#line 1672 "ps-parser.jay"
  {
		valid_param_mod = ParameterModifierType.All;
	  }
  break;
case 182:
  case_182();
  break;
case 183:
#line 1733 "ps-parser.jay"
  {
		valid_param_mod = ParameterModifierType.All;
	  }
  break;
case 184:
  case_184();
  break;
case 185:
#line 1801 "ps-parser.jay"
  {
		lexer.parsing_generic_declaration = true;
	  }
  break;
case 186:
  case_186();
  break;
case 187:
#line 1811 "ps-parser.jay"
  {
		lexer.ConstraintsParsing = true;
	  }
  break;
case 188:
  case_188();
  break;
case 189:
  case_189();
  break;
case 190:
  case_190();
  break;
case 192:
#line 1882 "ps-parser.jay"
  {
		yyVal = yyVals[0+yyTop];
	  }
  break;
case 193:
  case_193();
  break;
case 195:
  case_195();
  break;
case 196:
#line 1904 "ps-parser.jay"
  { yyVal = ParametersCompiled.EmptyReadOnlyParameters; }
  break;
case 198:
  case_198();
  break;
case 199:
  case_199();
  break;
case 200:
  case_200();
  break;
case 201:
  case_201();
  break;
case 202:
#line 1976 "ps-parser.jay"
  {
		yyVal = new ParametersCompiled (new Parameter[] { (Parameter) yyVals[0+yyTop] } );
	  }
  break;
case 203:
  case_203();
  break;
case 204:
  case_204();
  break;
case 205:
  case_205();
  break;
case 206:
  case_206();
  break;
case 207:
  case_207();
  break;
case 208:
  case_208();
  break;
case 209:
#line 2055 "ps-parser.jay"
  {
	  	++lexer.parsing_block;
	  }
  break;
case 210:
  case_210();
  break;
case 211:
#line 2096 "ps-parser.jay"
  { yyVal = Parameter.Modifier.NONE; }
  break;
case 213:
#line 2104 "ps-parser.jay"
  {
		yyVal = yyVals[0+yyTop];
	  }
  break;
case 214:
  case_214();
  break;
case 215:
  case_215();
  break;
case 216:
  case_216();
  break;
case 217:
  case_217();
  break;
case 218:
  case_218();
  break;
case 219:
  case_219();
  break;
case 220:
  case_220();
  break;
case 221:
  case_221();
  break;
case 222:
  case_222();
  break;
case 223:
  case_223();
  break;
case 224:
  case_224();
  break;
case 225:
#line 2270 "ps-parser.jay"
  {
	  	valid_param_mod = ParameterModifierType.Params | ParameterModifierType.DefaultValue;
	  }
  break;
case 226:
  case_226();
  break;
case 227:
#line 2311 "ps-parser.jay"
  {
		lexer.PropertyParsing = false;
	  }
  break;
case 228:
  case_228();
  break;
case 233:
  case_233();
  break;
case 234:
  case_234();
  break;
case 235:
  case_235();
  break;
case 236:
  case_236();
  break;
case 237:
  case_237();
  break;
case 239:
  case_239();
  break;
case 240:
  case_240();
  break;
case 241:
#line 2463 "ps-parser.jay"
  {
	    Lexer.AutoSemiInsertion = false;
	  }
  break;
case 242:
  case_242();
  break;
case 243:
  case_243();
  break;
case 244:
#line 2490 "ps-parser.jay"
  {
	    Lexer.AutoSemiInsertion = true;
	  }
  break;
case 245:
  case_245();
  break;
case 246:
  case_246();
  break;
case 247:
#line 2505 "ps-parser.jay"
  {
		Error_SyntaxError (yyToken);	  
	  }
  break;
case 250:
#line 2517 "ps-parser.jay"
  {
		lexer.parsing_modifiers = true;
	  }
  break;
case 251:
#line 2521 "ps-parser.jay"
  {
		lexer.parsing_modifiers = true;
	  }
  break;
case 252:
#line 2528 "ps-parser.jay"
  {
		report.Error (525, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain fields or constants");
	  }
  break;
case 253:
#line 2532 "ps-parser.jay"
  {
		report.Error (525, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain fields or constants");
	  }
  break;
case 258:
#line 2540 "ps-parser.jay"
  {
	  	report.Error (567, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain operators");
	  }
  break;
case 259:
#line 2548 "ps-parser.jay"
  {
	  	report.Error (524, GetLocation (yyVals[0+yyTop]), "Interfaces cannot declare classes, structs, interfaces, delegates, or enumerations");
	  }
  break;
case 260:
#line 2554 "ps-parser.jay"
  {
	  }
  break;
case 261:
  case_261();
  break;
case 263:
#line 2603 "ps-parser.jay"
  { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; }
  break;
case 265:
  case_265();
  break;
case 266:
#line 2619 "ps-parser.jay"
  {
		valid_param_mod = ParameterModifierType.DefaultValue;
	  }
  break;
case 267:
  case_267();
  break;
case 269:
#line 2667 "ps-parser.jay"
  { yyVal = Operator.OpType.LogicalNot; }
  break;
case 270:
#line 2668 "ps-parser.jay"
  { yyVal = Operator.OpType.OnesComplement; }
  break;
case 271:
#line 2669 "ps-parser.jay"
  { yyVal = Operator.OpType.Increment; }
  break;
case 272:
#line 2670 "ps-parser.jay"
  { yyVal = Operator.OpType.Decrement; }
  break;
case 273:
#line 2671 "ps-parser.jay"
  { yyVal = Operator.OpType.True; }
  break;
case 274:
#line 2672 "ps-parser.jay"
  { yyVal = Operator.OpType.False; }
  break;
case 275:
#line 2674 "ps-parser.jay"
  { yyVal = Operator.OpType.Addition; }
  break;
case 276:
#line 2675 "ps-parser.jay"
  { yyVal = Operator.OpType.Subtraction; }
  break;
case 277:
#line 2677 "ps-parser.jay"
  { yyVal = Operator.OpType.Multiply; }
  break;
case 278:
#line 2678 "ps-parser.jay"
  {  yyVal = Operator.OpType.Division; }
  break;
case 279:
#line 2679 "ps-parser.jay"
  { yyVal = Operator.OpType.Modulus; }
  break;
case 280:
#line 2680 "ps-parser.jay"
  { yyVal = Operator.OpType.BitwiseAnd; }
  break;
case 281:
#line 2681 "ps-parser.jay"
  { yyVal = Operator.OpType.BitwiseOr; }
  break;
case 282:
#line 2682 "ps-parser.jay"
  { yyVal = Operator.OpType.ExclusiveOr; }
  break;
case 283:
#line 2683 "ps-parser.jay"
  { yyVal = Operator.OpType.LeftShift; }
  break;
case 284:
#line 2684 "ps-parser.jay"
  { yyVal = Operator.OpType.RightShift; }
  break;
case 285:
#line 2685 "ps-parser.jay"
  { yyVal = Operator.OpType.AsURightShift; }
  break;
case 286:
#line 2686 "ps-parser.jay"
  { yyVal = Operator.OpType.Equality; }
  break;
case 287:
#line 2687 "ps-parser.jay"
  { yyVal = Operator.OpType.Inequality; }
  break;
case 288:
#line 2688 "ps-parser.jay"
  { yyVal = Operator.OpType.GreaterThan; }
  break;
case 289:
#line 2689 "ps-parser.jay"
  { yyVal = Operator.OpType.LessThan; }
  break;
case 290:
#line 2690 "ps-parser.jay"
  { yyVal = Operator.OpType.GreaterThanOrEqual; }
  break;
case 291:
#line 2691 "ps-parser.jay"
  { yyVal = Operator.OpType.LessThanOrEqual; }
  break;
case 292:
#line 2692 "ps-parser.jay"
  { yyVal = Operator.OpType.AsIn; }
  break;
case 293:
#line 2699 "ps-parser.jay"
  {
		valid_param_mod = ParameterModifierType.DefaultValue;
	  }
  break;
case 294:
  case_294();
  break;
case 295:
#line 2718 "ps-parser.jay"
  {
		valid_param_mod = ParameterModifierType.DefaultValue;
	  }
  break;
case 296:
  case_296();
  break;
case 297:
  case_297();
  break;
case 298:
  case_298();
  break;
case 299:
  case_299();
  break;
case 300:
  case_300();
  break;
case 301:
  case_301();
  break;
case 302:
  case_302();
  break;
case 303:
  case_303();
  break;
case 304:
  case_304();
  break;
case 305:
  case_305();
  break;
case 307:
#line 2985 "ps-parser.jay"
  {
	  	++lexer.parsing_block;
	  }
  break;
case 308:
  case_308();
  break;
case 311:
#line 3002 "ps-parser.jay"
  {
		current_event_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]);
	  }
  break;
case 312:
#line 3006 "ps-parser.jay"
  {
		current_event_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]);
	  }
  break;
case 313:
  case_313();
  break;
case 314:
#line 3019 "ps-parser.jay"
  {
		++lexer.parsing_block;
	  }
  break;
case 315:
  case_315();
  break;
case 316:
  case_316();
  break;
case 317:
#line 3044 "ps-parser.jay"
  {
		yyVal = yyVals[0+yyTop];
	  }
  break;
case 320:
  case_320();
  break;
case 321:
  case_321();
  break;
case 322:
  case_322();
  break;
case 323:
  case_323();
  break;
case 324:
  case_324();
  break;
case 325:
  case_325();
  break;
case 326:
  case_326();
  break;
case 327:
  case_327();
  break;
case 329:
  case_329();
  break;
case 330:
  case_330();
  break;
case 331:
  case_331();
  break;
case 332:
  case_332();
  break;
case 333:
  case_333();
  break;
case 335:
  case_335();
  break;
case 336:
  case_336();
  break;
case 339:
#line 3208 "ps-parser.jay"
  {
	  	lbag.AddLocation (yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop]));
	  }
  break;
case 341:
  case_341();
  break;
case 342:
  case_342();
  break;
case 343:
  case_343();
  break;
case 344:
  case_344();
  break;
case 345:
  case_345();
  break;
case 347:
#line 3282 "ps-parser.jay"
  {
		valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out | ParameterModifierType.Params | ParameterModifierType.DefaultValue;
	  }
  break;
case 348:
  case_348();
  break;
case 349:
#line 3301 "ps-parser.jay"
  {
		lexer.ConstraintsParsing = false;
	  }
  break;
case 350:
  case_350();
  break;
case 351:
  case_351();
  break;
case 354:
  case_354();
  break;
case 356:
  case_356();
  break;
case 359:
  case_359();
  break;
case 360:
  case_360();
  break;
case 362:
  case_362();
  break;
case 363:
  case_363();
  break;
case 364:
  case_364();
  break;
case 365:
  case_365();
  break;
case 366:
#line 3437 "ps-parser.jay"
  {
		lexer.parsing_generic_declaration = true;
	  }
  break;
case 367:
  case_367();
  break;
case 368:
  case_368();
  break;
case 370:
  case_370();
  break;
case 371:
  case_371();
  break;
case 372:
  case_372();
  break;
case 373:
  case_373();
  break;
case 374:
  case_374();
  break;
case 376:
  case_376();
  break;
case 377:
  case_377();
  break;
case 378:
  case_378();
  break;
case 379:
  case_379();
  break;
case 380:
  case_380();
  break;
case 382:
#line 3555 "ps-parser.jay"
  {
		yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop]));
	  }
  break;
case 383:
#line 3562 "ps-parser.jay"
  {
		lexer.parsing_generic_declaration = true;
	  }
  break;
case 385:
  case_385();
  break;
case 387:
  case_387();
  break;
case 389:
  case_389();
  break;
case 391:
  case_391();
  break;
case 392:
  case_392();
  break;
case 393:
#line 3620 "ps-parser.jay"
  {
	  	yyVal = new TypeExpression (compiler.BuiltinTypes.Dynamic, GetLocation (yyVals[0+yyTop]));
	  }
  break;
case 394:
  case_394();
  break;
case 395:
  case_395();
  break;
case 396:
  case_396();
  break;
case 397:
  case_397();
  break;
case 398:
#line 3673 "ps-parser.jay"
  { CheckIsPlayScript("decimal", GetLocation(yyVals[0+yyTop])); yyVal = new TypeExpression (compiler.BuiltinTypes.Decimal, GetLocation (yyVals[0+yyTop])); }
  break;
case 399:
#line 3674 "ps-parser.jay"
  { CheckIsPlayScript("float", GetLocation(yyVals[0+yyTop])); yyVal = new TypeExpression (compiler.BuiltinTypes.Float, GetLocation (yyVals[0+yyTop])); }
  break;
case 400:
#line 3678 "ps-parser.jay"
  { CheckIsPlayScript("double", GetLocation(yyVals[0+yyTop])); yyVal = new TypeExpression (compiler.BuiltinTypes.Double, GetLocation (yyVals[0+yyTop])); }
  break;
case 402:
#line 3686 "ps-parser.jay"
  { CheckIsPlayScript("sbyte", GetLocation(yyVals[0+yyTop])); yyVal = new TypeExpression (compiler.BuiltinTypes.SByte, GetLocation (yyVals[0+yyTop])); }
  break;
case 403:
#line 3687 "ps-parser.jay"
  { CheckIsPlayScript("byte", GetLocation(yyVals[0+yyTop])); yyVal = new TypeExpression (compiler.BuiltinTypes.Byte, GetLocation (yyVals[0+yyTop])); }
  break;
case 404:
#line 3688 "ps-parser.jay"
  { CheckIsPlayScript("short", GetLocation(yyVals[0+yyTop])); yyVal = new TypeExpression (compiler.BuiltinTypes.Short, GetLocation (yyVals[0+yyTop])); }
  break;
case 405:
#line 3689 "ps-parser.jay"
  { CheckIsPlayScript("ushort", GetLocation(yyVals[0+yyTop])); yyVal = new TypeExpression (compiler.BuiltinTypes.UShort, GetLocation (yyVals[0+yyTop])); }
  break;
case 406:
#line 3690 "ps-parser.jay"
  { yyVal = new TypeExpression (compiler.BuiltinTypes.Int, GetLocation (yyVals[0+yyTop])); }
  break;
case 407:
#line 3691 "ps-parser.jay"
  { yyVal = new TypeExpression (compiler.BuiltinTypes.UInt, GetLocation (yyVals[0+yyTop])); }
  break;
case 408:
#line 3692 "ps-parser.jay"
  { CheckIsPlayScript("long", GetLocation(yyVals[0+yyTop])); yyVal = new TypeExpression (compiler.BuiltinTypes.Long, GetLocation (yyVals[0+yyTop])); }
  break;
case 409:
#line 3693 "ps-parser.jay"
  { CheckIsPlayScript("ulong", GetLocation(yyVals[0+yyTop])); yyVal = new TypeExpression (compiler.BuiltinTypes.ULong, GetLocation (yyVals[0+yyTop])); }
  break;
case 410:
#line 3694 "ps-parser.jay"
  { CheckIsPlayScript("char", GetLocation(yyVals[0+yyTop])); yyVal = new TypeExpression (compiler.BuiltinTypes.Char, GetLocation (yyVals[0+yyTop])); }
  break;
case 428:
  case_428();
  break;
case 429:
  case_429();
  break;
case 433:
#line 3745 "ps-parser.jay"
  { yyVal = new AsUndefinedLiteral (GetLocation (yyVals[0+yyTop])); }
  break;
case 434:
#line 3746 "ps-parser.jay"
  { yyVal = new NullLiteral (GetLocation (yyVals[0+yyTop])); }
  break;
case 435:
#line 3750 "ps-parser.jay"
  { yyVal = new BoolLiteral (compiler.BuiltinTypes, true, GetLocation (yyVals[0+yyTop])); }
  break;
case 436:
#line 3751 "ps-parser.jay"
  { yyVal = new BoolLiteral (compiler.BuiltinTypes, false, GetLocation (yyVals[0+yyTop])); }
  break;
case 441:
  case_441();
  break;
case 442:
#line 3784 "ps-parser.jay"
  {
		yyVal = new ParenthesizedExpression ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop]));
	  }
  break;
case 443:
  case_443();
  break;
case 444:
  case_444();
  break;
case 445:
  case_445();
  break;
case 446:
  case_446();
  break;
case 447:
  case_447();
  break;
case 448:
  case_448();
  break;
case 449:
  case_449();
  break;
case 450:
  case_450();
  break;
case 451:
  case_451();
  break;
case 452:
  case_452();
  break;
case 453:
  case_453();
  break;
case 454:
#line 3877 "ps-parser.jay"
  {
		yyVal = new CompletionMemberAccess ((Expression) yyVals[-2+yyTop], null,GetLocation (yyVals[0+yyTop]));
	  }
  break;
case 455:
  case_455();
  break;
case 456:
#line 3885 "ps-parser.jay"
  {
		yyVal = new CompletionMemberAccess ((Expression) yyVals[-2+yyTop], null, lexer.Location);
	  }
  break;
case 457:
  case_457();
  break;
case 458:
  case_458();
  break;
case 459:
  case_459();
  break;
case 460:
  case_460();
  break;
case 461:
  case_461();
  break;
case 462:
  case_462();
  break;
case 463:
  case_463();
  break;
case 464:
  case_464();
  break;
case 465:
  case_465();
  break;
case 466:
  case_466();
  break;
case 468:
#line 3984 "ps-parser.jay"
  { yyVal = null; }
  break;
case 469:
#line 3988 "ps-parser.jay"
  {
		yyVal = yyVals[0+yyTop];
	  }
  break;
case 470:
  case_470();
  break;
case 471:
  case_471();
  break;
case 472:
  case_472();
  break;
case 473:
  case_473();
  break;
case 474:
  case_474();
  break;
case 475:
  case_475();
  break;
case 476:
#line 4044 "ps-parser.jay"
  {
		yyVal = new CompletionElementInitializer (null, GetLocation (yyVals[0+yyTop]));
	  }
  break;
case 478:
#line 4071 "ps-parser.jay"
  { yyVal = null; }
  break;
case 480:
  case_480();
  break;
case 481:
  case_481();
  break;
case 482:
  case_482();
  break;
case 483:
  case_483();
  break;
case 484:
  case_484();
  break;
case 485:
#line 4122 "ps-parser.jay"
  {
		yyVal = new Argument ((Expression) yyVals[0+yyTop]);
	  }
  break;
case 489:
  case_489();
  break;
case 490:
  case_490();
  break;
case 492:
  case_492();
  break;
case 493:
  case_493();
  break;
case 494:
  case_494();
  break;
case 495:
  case_495();
  break;
case 496:
  case_496();
  break;
case 497:
  case_497();
  break;
case 498:
  case_498();
  break;
case 499:
  case_499();
  break;
case 500:
  case_500();
  break;
case 501:
  case_501();
  break;
case 502:
  case_502();
  break;
case 503:
#line 4240 "ps-parser.jay"
  {
	  	yyVal = new Argument ((Expression) yyVals[0+yyTop]);
	  }
  break;
case 505:
#line 4248 "ps-parser.jay"
  {
		yyVal = new This (GetLocation (yyVals[0+yyTop]));
	  }
  break;
case 506:
  case_506();
  break;
case 507:
  case_507();
  break;
case 508:
#line 4268 "ps-parser.jay"
  {
		yyVal = new UnaryMutator (UnaryMutator.Mode.PostIncrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop]));
	  }
  break;
case 509:
#line 4275 "ps-parser.jay"
  {
		yyVal = new UnaryMutator (UnaryMutator.Mode.PostDecrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop]));
	  }
  break;
case 510:
#line 4339 "ps-parser.jay"
  {
		yyVal = new AsNew ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop]));
	  }
  break;
case 511:
#line 4343 "ps-parser.jay"
  {
		yyVal = new AsNew ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop]));
	  }
  break;
case 512:
#line 4347 "ps-parser.jay"
  {
		yyVal = new AsNew ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop]));
	  }
  break;
case 513:
  case_513();
  break;
case 515:
  case_515();
  break;
case 516:
  case_516();
  break;
case 517:
  case_517();
  break;
case 518:
#line 4451 "ps-parser.jay"
  {
		yyVal = 2;
	  }
  break;
case 519:
#line 4455 "ps-parser.jay"
  {
		yyVal = ((int) yyVals[-1+yyTop]) + 1;
	  }
  break;
case 520:
  case_520();
  break;
case 521:
  case_521();
  break;
case 522:
  case_522();
  break;
case 523:
  case_523();
  break;
case 524:
#line 4514 "ps-parser.jay"
  {
      	Lexer.AutoSemiInsertion = (bool) oob_stack.Pop ();
 	  }
  break;
case 525:
  case_525();
  break;
case 526:
  case_526();
  break;
case 529:
  case_529();
  break;
case 530:
  case_530();
  break;
case 531:
  case_531();
  break;
case 532:
  case_532();
  break;
case 533:
  case_533();
  break;
case 534:
  case_534();
  break;
case 535:
  case_535();
  break;
case 536:
  case_536();
  break;
case 537:
  case_537();
  break;
case 538:
  case_538();
  break;
case 539:
  case_539();
  break;
case 540:
  case_540();
  break;
case 541:
#line 4673 "ps-parser.jay"
  {
	  	valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out;
	  }
  break;
case 542:
  case_542();
  break;
case 543:
#line 4682 "ps-parser.jay"
  {
		yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]);
	  }
  break;
case 544:
#line 4686 "ps-parser.jay"
  {
	  	valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out;
	  }
  break;
case 545:
  case_545();
  break;
case 546:
#line 4695 "ps-parser.jay"
  {
		yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]);
	  }
  break;
case 547:
#line 4702 "ps-parser.jay"
  {
	  	valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out;
	  }
  break;
case 548:
  case_548();
  break;
case 549:
  case_549();
  break;
case 550:
#line 4723 "ps-parser.jay"
  {
	  	valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out;
	  }
  break;
case 551:
  case_551();
  break;
case 552:
  case_552();
  break;
case 553:
  case_553();
  break;
case 555:
#line 4773 "ps-parser.jay"
  {
		yyVal = new Unary (Unary.Operator.LogicalNot, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop]));
	  }
  break;
case 556:
#line 4777 "ps-parser.jay"
  {
		yyVal = new Unary (Unary.Operator.OnesComplement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop]));
	  }
  break;
case 557:
  case_557();
  break;
case 558:
#line 4807 "ps-parser.jay"
  {
		yyVal = new Unary (Unary.Operator.AsE4xAttribute, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop]));
	  }
  break;
case 559:
#line 4811 "ps-parser.jay"
  {
	  	yyVal = new AsTypeOf ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop]));
	  }
  break;
case 560:
  case_560();
  break;
case 561:
  case_561();
  break;
case 562:
  case_562();
  break;
case 563:
  case_563();
  break;
case 564:
  case_564();
  break;
case 565:
  case_565();
  break;
case 566:
  case_566();
  break;
case 568:
#line 4875 "ps-parser.jay"
  { 
	  	yyVal = new Unary (Unary.Operator.UnaryPlus, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop]));
	  }
  break;
case 569:
#line 4879 "ps-parser.jay"
  { 
		yyVal = new Unary (Unary.Operator.UnaryNegation, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop]));
	  }
  break;
case 570:
#line 4883 "ps-parser.jay"
  {
		yyVal = new UnaryMutator (UnaryMutator.Mode.PreIncrement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop]));
	  }
  break;
case 571:
#line 4887 "ps-parser.jay"
  {
		yyVal = new UnaryMutator (UnaryMutator.Mode.PreDecrement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop]));
	  }
  break;
case 572:
#line 4895 "ps-parser.jay"
  {
		yyVal = new Unary (Unary.Operator.AddressOf, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop]));
	  }
  break;
case 573:
  case_573();
  break;
case 574:
  case_574();
  break;
case 575:
  case_575();
  break;
case 576:
  case_576();
  break;
case 577:
  case_577();
  break;
case 579:
  case_579();
  break;
case 580:
  case_580();
  break;
case 581:
  case_581();
  break;
case 582:
  case_582();
  break;
case 583:
  case_583();
  break;
case 584:
  case_584();
  break;
case 586:
  case_586();
  break;
case 587:
  case_587();
  break;
case 588:
#line 4989 "ps-parser.jay"
  {
		yyVal = new AsIn ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop]));
	  }
  break;
case 589:
#line 4993 "ps-parser.jay"
  {
		yyVal = new As ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop]));
	  }
  break;
case 590:
#line 4997 "ps-parser.jay"
  {
		yyVal = new Is ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop]));
	  }
  break;
case 591:
  case_591();
  break;
case 592:
  case_592();
  break;
case 593:
  case_593();
  break;
case 594:
  case_594();
  break;
case 595:
  case_595();
  break;
case 597:
  case_597();
  break;
case 598:
  case_598();
  break;
case 599:
  case_599();
  break;
case 600:
  case_600();
  break;
case 601:
  case_601();
  break;
case 602:
  case_602();
  break;
case 604:
  case_604();
  break;
case 605:
  case_605();
  break;
case 606:
  case_606();
  break;
case 607:
  case_607();
  break;
case 608:
  case_608();
  break;
case 609:
  case_609();
  break;
case 610:
  case_610();
  break;
case 611:
  case_611();
  break;
case 613:
  case_613();
  break;
case 614:
  case_614();
  break;
case 615:
  case_615();
  break;
case 616:
  case_616();
  break;
case 618:
  case_618();
  break;
case 619:
  case_619();
  break;
case 621:
  case_621();
  break;
case 622:
  case_622();
  break;
case 624:
  case_624();
  break;
case 625:
  case_625();
  break;
case 627:
  case_627();
  break;
case 628:
  case_628();
  break;
case 630:
  case_630();
  break;
case 631:
  case_631();
  break;
case 633:
  case_633();
  break;
case 635:
  case_635();
  break;
case 636:
  case_636();
  break;
case 637:
  case_637();
  break;
case 638:
  case_638();
  break;
case 639:
  case_639();
  break;
case 640:
  case_640();
  break;
case 641:
  case_641();
  break;
case 642:
  case_642();
  break;
case 643:
  case_643();
  break;
case 644:
  case_644();
  break;
case 645:
  case_645();
  break;
case 646:
  case_646();
  break;
case 647:
  case_647();
  break;
case 648:
  case_648();
  break;
case 649:
  case_649();
  break;
case 650:
  case_650();
  break;
case 651:
  case_651();
  break;
case 652:
  case_652();
  break;
case 653:
  case_653();
  break;
case 654:
  case_654();
  break;
case 655:
  case_655();
  break;
case 656:
  case_656();
  break;
case 657:
  case_657();
  break;
case 658:
#line 5397 "ps-parser.jay"
  { yyVal = ParametersCompiled.EmptyReadOnlyParameters; }
  break;
case 659:
  case_659();
  break;
case 660:
#line 5408 "ps-parser.jay"
  {
		start_block (Location.Null);
	  }
  break;
case 661:
  case_661();
  break;
case 663:
  case_663();
  break;
case 665:
  case_665();
  break;
case 666:
  case_666();
  break;
case 667:
  case_667();
  break;
case 668:
  case_668();
  break;
case 669:
  case_669();
  break;
case 670:
  case_670();
  break;
case 671:
  case_671();
  break;
case 672:
#line 5478 "ps-parser.jay"
  {
	  	valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out;
	  }
  break;
case 673:
  case_673();
  break;
case 674:
  case_674();
  break;
case 675:
#line 5493 "ps-parser.jay"
  {
	  	valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out;	  
	  }
  break;
case 676:
  case_676();
  break;
case 677:
  case_677();
  break;
case 684:
#line 5548 "ps-parser.jay"
  {
		yyVal = new BooleanExpression ((Expression) yyVals[0+yyTop]);
	  }
  break;
case 685:
#line 5561 "ps-parser.jay"
  {
		lexer.AutoSemiInsertion = false;
	  }
  break;
case 686:
  case_686();
  break;
case 687:
  case_687();
  break;
case 688:
#line 5596 "ps-parser.jay"
  {
		lexer.AutoSemiInsertion = true;		
	  }
  break;
case 689:
  case_689();
  break;
case 690:
  case_690();
  break;
case 691:
#line 5617 "ps-parser.jay"
  { yyVal = null; }
  break;
case 692:
#line 5619 "ps-parser.jay"
  { yyVal = yyVals[0+yyTop]; StoreModifierLocation (Modifiers.PARTIAL, GetLocation (yyVals[0+yyTop])); }
  break;
case 693:
  case_693();
  break;
case 694:
#line 5632 "ps-parser.jay"
  {
		lexer.parsing_modifiers = false;		
	  }
  break;
case 696:
  case_696();
  break;
case 697:
  case_697();
  break;
case 698:
  case_698();
  break;
case 699:
  case_699();
  break;
case 700:
  case_700();
  break;
case 701:
  case_701();
  break;
case 702:
  case_702();
  break;
case 703:
  case_703();
  break;
case 704:
  case_704();
  break;
case 705:
  case_705();
  break;
case 706:
  case_706();
  break;
case 707:
  case_707();
  break;
case 708:
  case_708();
  break;
case 709:
  case_709();
  break;
case 710:
  case_710();
  break;
case 711:
  case_711();
  break;
case 712:
  case_712();
  break;
case 713:
  case_713();
  break;
case 715:
#line 5753 "ps-parser.jay"
  {
		current_type.AddBaseForPart ((FullNamedExpression) yyVals[0+yyTop]);
	 }
  break;
case 716:
  case_716();
  break;
case 718:
#line 5767 "ps-parser.jay"
  {
		current_type.AddBasesForPart ((List<FullNamedExpression>) yyVals[0+yyTop]);
	 }
  break;
case 719:
  case_719();
  break;
case 721:
#line 5781 "ps-parser.jay"
  {
		yyVal = yyVals[0+yyTop];
	  }
  break;
case 722:
  case_722();
  break;
case 723:
  case_723();
  break;
case 724:
  case_724();
  break;
case 725:
  case_725();
  break;
case 726:
  case_726();
  break;
case 727:
  case_727();
  break;
case 728:
  case_728();
  break;
case 729:
  case_729();
  break;
case 730:
#line 5873 "ps-parser.jay"
  {
		yyVal = new SpecialContraintExpr (SpecialConstraint.Class, GetLocation (yyVals[0+yyTop]));
	  }
  break;
case 731:
#line 5877 "ps-parser.jay"
  {
		yyVal = new SpecialContraintExpr (SpecialConstraint.Struct, GetLocation (yyVals[0+yyTop]));
	  }
  break;
case 732:
#line 5884 "ps-parser.jay"
  {
		yyVal = Variance.None;
	  }
  break;
case 733:
  case_733();
  break;
case 734:
#line 5898 "ps-parser.jay"
  {
		yyVal = Variance.Covariant;
	  }
  break;
case 735:
#line 5902 "ps-parser.jay"
  {
		yyVal = Variance.Contravariant;
	  }
  break;
case 736:
  case_736();
  break;
case 737:
#line 5928 "ps-parser.jay"
  {
  		yyVal = yyVals[0+yyTop];
	  }
  break;
case 738:
  case_738();
  break;
case 739:
  case_739();
  break;
case 741:
  case_741();
  break;
case 742:
  case_742();
  break;
case 743:
  case_743();
  break;
case 744:
  case_744();
  break;
case 745:
  case_745();
  break;
case 750:
#line 6008 "ps-parser.jay"
  {
		current_block.AddStatement ((Statement) yyVals[0+yyTop]);
	  }
  break;
case 751:
#line 6012 "ps-parser.jay"
  {
		current_block.AddStatement ((Statement) yyVals[0+yyTop]);
	  }
  break;
case 753:
  case_753();
  break;
case 756:
#line 6036 "ps-parser.jay"
  {
		current_block.AddStatement ((Statement) yyVals[0+yyTop]);
	  }
  break;
case 757:
#line 6040 "ps-parser.jay"
  {
		current_block.AddStatement ((Statement) yyVals[0+yyTop]);
	  }
  break;
case 788:
  case_788();
  break;
case 789:
  case_789();
  break;
case 790:
  case_790();
  break;
case 791:
  case_791();
  break;
case 792:
  case_792();
  break;
case 794:
  case_794();
  break;
case 796:
  case_796();
  break;
case 797:
  case_797();
  break;
case 798:
  case_798();
  break;
case 799:
  case_799();
  break;
case 801:
  case_801();
  break;
case 802:
#line 6246 "ps-parser.jay"
  {
	  	Lexer.AutoSemiInsertion = true;
	  }
  break;
case 803:
  case_803();
  break;
case 804:
  case_804();
  break;
case 805:
  case_805();
  break;
case 806:
  case_806();
  break;
case 807:
  case_807();
  break;
case 808:
  case_808();
  break;
case 810:
  case_810();
  break;
case 811:
  case_811();
  break;
case 815:
  case_815();
  break;
case 818:
  case_818();
  break;
case 819:
  case_819();
  break;
case 820:
  case_820();
  break;
case 821:
  case_821();
  break;
case 822:
#line 6372 "ps-parser.jay"
  {
		report.Error (145, lexer.Location, "A const field requires a value to be provided");
	  }
  break;
case 823:
#line 6376 "ps-parser.jay"
  {
		current_variable.Initializer = (Expression) yyVals[0+yyTop];
	  }
  break;
case 828:
  case_828();
  break;
case 830:
  case_830();
  break;
case 831:
#line 6421 "ps-parser.jay"
  { yyVal = yyVals[-1+yyTop]; }
  break;
case 832:
  case_832();
  break;
case 833:
#line 6431 "ps-parser.jay"
  { yyVal = yyVals[-1+yyTop]; }
  break;
case 834:
#line 6432 "ps-parser.jay"
  { yyVal = yyVals[-1+yyTop]; }
  break;
case 835:
#line 6443 "ps-parser.jay"
  {
		yyVal = ConvertExpressionToStatement((Expression)yyVals[0+yyTop]);
	  }
  break;
case 836:
  case_836();
  break;
case 837:
  case_837();
  break;
case 840:
#line 6471 "ps-parser.jay"
  {
	  	Lexer.AutoSemiInsertionAfter = 1;
	  }
  break;
case 841:
#line 6478 "ps-parser.jay"
  {
	  	Lexer.AutoSemiInsertionAfter = 1;
	  }
  break;
case 842:
  case_842();
  break;
case 843:
  case_843();
  break;
case 844:
  case_844();
  break;
case 845:
  case_845();
  break;
case 846:
  case_846();
  break;
case 847:
  case_847();
  break;
case 848:
  case_848();
  break;
case 850:
  case_850();
  break;
case 851:
  case_851();
  break;
case 852:
  case_852();
  break;
case 853:
#line 6567 "ps-parser.jay"
  {
		current_block = current_block.CreateSwitchBlock (lexer.Location);
	  }
  break;
case 854:
#line 6571 "ps-parser.jay"
  {
		yyVal = new SwitchSection ((List<SwitchLabel>) yyVals[-2+yyTop], current_block);
	  }
  break;
case 855:
  case_855();
  break;
case 856:
  case_856();
  break;
case 857:
  case_857();
  break;
case 858:
  case_858();
  break;
case 859:
  case_859();
  break;
case 864:
  case_864();
  break;
case 865:
  case_865();
  break;
case 866:
#line 6639 "ps-parser.jay"
  {
	    Lexer.AutoSemiInsertionAfter = 1;
	  }
  break;
case 867:
#line 6646 "ps-parser.jay"
  {
	    Lexer.AutoSemiInsertion = true;
	  }
  break;
case 868:
  case_868();
  break;
case 869:
  case_869();
  break;
case 870:
  case_870();
  break;
case 871:
  case_871();
  break;
case 872:
  case_872();
  break;
case 873:
#line 6695 "ps-parser.jay"
  {
	    lexer.ForInParsing = false;
	  }
  break;
case 874:
  case_874();
  break;
case 875:
  case_875();
  break;
case 876:
  case_876();
  break;
case 877:
  case_877();
  break;
case 878:
  case_878();
  break;
case 879:
#line 6782 "ps-parser.jay"
  {
		yyVal = new Tuple<Location,Location> (GetLocation (yyVals[-2+yyTop]), (Location) yyVals[0+yyTop]);
	  }
  break;
case 880:
  case_880();
  break;
case 881:
  case_881();
  break;
case 882:
  case_882();
  break;
case 884:
#line 6812 "ps-parser.jay"
  { lexer.putback ('}'); }
  break;
case 885:
#line 6816 "ps-parser.jay"
  { yyVal = new EmptyStatement (lexer.Location); }
  break;
case 887:
  case_887();
  break;
case 888:
  case_888();
  break;
case 889:
#line 6836 "ps-parser.jay"
  {
		
	  }
  break;
case 890:
#line 6840 "ps-parser.jay"
  { yyVal = null; }
  break;
case 892:
#line 6845 "ps-parser.jay"
  { yyVal = new EmptyStatement (lexer.Location); }
  break;
case 896:
  case_896();
  break;
case 897:
#line 6874 "ps-parser.jay"
  {
		lexer.ForInParsing = true;
	  }
  break;
case 898:
#line 6878 "ps-parser.jay"
  {
	  	lexer.ForInParsing = false;
	  }
  break;
case 899:
  case_899();
  break;
case 900:
  case_900();
  break;
case 908:
  case_908();
  break;
case 909:
  case_909();
  break;
case 910:
  case_910();
  break;
case 911:
  case_911();
  break;
case 912:
  case_912();
  break;
case 913:
  case_913();
  break;
case 914:
  case_914();
  break;
case 915:
  case_915();
  break;
case 916:
  case_916();
  break;
case 917:
  case_917();
  break;
case 918:
  case_918();
  break;
case 919:
  case_919();
  break;
case 920:
  case_920();
  break;
case 921:
  case_921();
  break;
case 924:
#line 7064 "ps-parser.jay"
  {
		yyVal = new TryCatch ((Block) yyVals[-1+yyTop], (List<Catch>) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop]), false);
	  }
  break;
case 925:
  case_925();
  break;
case 926:
  case_926();
  break;
case 927:
  case_927();
  break;
case 928:
  case_928();
  break;
case 929:
  case_929();
  break;
case 932:
#line 7113 "ps-parser.jay"
  {
		yyVal = new Catch ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop]));
	  }
  break;
case 933:
  case_933();
  break;
case 934:
#line 7131 "ps-parser.jay"
  {
		yyVal = yyVals[-1+yyTop];
	  }
  break;
case 935:
  case_935();
  break;
case 936:
  case_936();
  break;
case 937:
#line 7167 "ps-parser.jay"
  {
		yyVal = new Checked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop]));
	  }
  break;
case 938:
#line 7174 "ps-parser.jay"
  {
		yyVal = new Unchecked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop]));
	  }
  break;
case 939:
  case_939();
  break;
case 940:
#line 7184 "ps-parser.jay"
  {
		yyVal = new Unsafe ((Block) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop]));
	  }
  break;
case 941:
  case_941();
  break;
case 942:
  case_942();
  break;
case 943:
  case_943();
  break;
case 944:
  case_944();
  break;
case 945:
  case_945();
  break;
case 946:
  case_946();
  break;
case 947:
  case_947();
  break;
case 948:
  case_948();
  break;
case 949:
  case_949();
  break;
case 950:
  case_950();
  break;
case 952:
  case_952();
  break;
case 953:
#line 7295 "ps-parser.jay"
  {
		Error_MissingInitializer (lexer.Location);
	  }
  break;
case 954:
  case_954();
  break;
case 955:
  case_955();
  break;
case 956:
  case_956();
  break;
case 957:
  case_957();
  break;
case 958:
  case_958();
  break;
case 959:
  case_959();
  break;
case 960:
  case_960();
  break;
case 961:
  case_961();
  break;
case 962:
  case_962();
  break;
case 963:
#line 7408 "ps-parser.jay"
  {
		current_block = new Linq.QueryBlock (current_block, lexer.Location);
	  }
  break;
case 964:
  case_964();
  break;
case 965:
#line 7423 "ps-parser.jay"
  {
		current_block = new Linq.QueryBlock (current_block, lexer.Location);
	  }
  break;
case 966:
  case_966();
  break;
case 967:
  case_967();
  break;
case 968:
  case_968();
  break;
case 970:
  case_970();
  break;
case 971:
  case_971();
  break;
case 972:
#line 7485 "ps-parser.jay"
  {
	  	current_block = new Linq.QueryBlock (current_block, lexer.Location);
	  }
  break;
case 973:
  case_973();
  break;
case 974:
  case_974();
  break;
case 975:
  case_975();
  break;
case 976:
  case_976();
  break;
case 978:
  case_978();
  break;
case 984:
#line 7539 "ps-parser.jay"
  {
	  	current_block = new Linq.QueryBlock (current_block, lexer.Location);
	  }
  break;
case 985:
  case_985();
  break;
case 986:
#line 7558 "ps-parser.jay"
  {
	  	current_block = new Linq.QueryBlock (current_block, lexer.Location);
	  }
  break;
case 987:
  case_987();
  break;
case 988:
  case_988();
  break;
case 989:
  case_989();
  break;
case 990:
  case_990();
  break;
case 991:
  case_991();
  break;
case 992:
  case_992();
  break;
case 993:
  case_993();
  break;
case 994:
  case_994();
  break;
case 995:
  case_995();
  break;
case 997:
#line 7702 "ps-parser.jay"
  {
		yyVal = yyVals[0+yyTop];
	  }
  break;
case 998:
#line 7709 "ps-parser.jay"
  {
		current_block = new Linq.QueryBlock (current_block, lexer.Location);
	  }
  break;
case 999:
  case_999();
  break;
case 1001:
  case_1001();
  break;
case 1002:
  case_1002();
  break;
case 1004:
  case_1004();
  break;
case 1005:
  case_1005();
  break;
case 1006:
#line 7755 "ps-parser.jay"
  {
		yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]);	
	  }
  break;
case 1007:
  case_1007();
  break;
case 1008:
  case_1008();
  break;
case 1009:
#line 7772 "ps-parser.jay"
  {
		yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]);	
	  }
  break;
case 1010:
  case_1010();
  break;
case 1011:
  case_1011();
  break;
case 1013:
  case_1013();
  break;
case 1014:
  case_1014();
  break;
case 1017:
  case_1017();
  break;
case 1018:
  case_1018();
  break;
case 1024:
#line 7897 "ps-parser.jay"
  {
		module.DocumentationBuilder.ParsedName = (MemberName) yyVals[0+yyTop];
	  }
  break;
case 1025:
#line 7904 "ps-parser.jay"
  {
		module.DocumentationBuilder.ParsedParameters = (List<DocumentationParameter>)yyVals[0+yyTop];
	  }
  break;
case 1026:
  case_1026();
  break;
case 1027:
  case_1027();
  break;
case 1028:
#line 7921 "ps-parser.jay"
  {
		yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], MemberCache.IndexerNameAlias, Location.Null);
	  }
  break;
case 1029:
#line 7925 "ps-parser.jay"
  {
		valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out;
	  }
  break;
case 1030:
  case_1030();
  break;
case 1031:
  case_1031();
  break;
case 1032:
  case_1032();
  break;
case 1033:
  case_1033();
  break;
case 1035:
#line 7961 "ps-parser.jay"
  {
		yyVal = new MemberName (((MemberName) yyVals[-2+yyTop]), (MemberName) yyVals[0+yyTop]);
	  }
  break;
case 1037:
#line 7969 "ps-parser.jay"
  {
		valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out;
	  }
  break;
case 1038:
#line 7973 "ps-parser.jay"
  {
		yyVal = yyVals[-1+yyTop];
	  }
  break;
case 1039:
#line 7980 "ps-parser.jay"
  {
		yyVal = new List<DocumentationParameter> (0);
	  }
  break;
case 1041:
  case_1041();
  break;
case 1042:
  case_1042();
  break;
case 1043:
  case_1043();
  break;
#line default
        }
        yyTop -= yyLen[yyN];
        yyState = yyStates[yyTop];
        int yyM = yyLhs[yyN];
        if (yyState == 0 && yyM == 0) {
//t          if (debug != null) debug.shift(0, yyFinal);
          yyState = yyFinal;
          if (yyToken < 0) {
            yyToken = yyLex.advance() ? yyLex.token() : 0;
//t            if (debug != null)
//t               debug.lex(yyState, yyToken,yyname(yyToken), yyLex.value());
          }
          if (yyToken == 0) {
//t            if (debug != null) debug.accept(yyVal);
            return yyVal;
          }
          goto continue_yyLoop;
        }
        if (((yyN = yyGindex[yyM]) != 0) && ((yyN += yyState) >= 0)
            && (yyN < yyTable.Length) && (yyCheck[yyN] == yyState))
          yyState = yyTable[yyN];
        else
          yyState = yyDgoto[yyM];
//t        if (debug != null) debug.shift(yyStates[yyTop], yyState);
	 goto continue_yyLoop;
      continue_yyDiscarded: ;	// implements the named-loop continue: 'continue yyDiscarded'
      }
    continue_yyLoop: ;		// implements the named-loop continue: 'continue yyLoop'
    }
  }