int yyparse()

in System.Data.Entity/System/Data/Common/EntitySql/CqlParser.cs [1852:3515]


int yyparse()
{
    int yyn;       //next thing to do
    int yym;       //
    int yystate;   //current parsing state from state table
#if YYDEBUG
    String yys;    //current token string
#endif
    init_stacks();
    yynerrs = 0;
    yyerrflag = 0;
    yychar = (-1);

    yystate = 0;
	 state_push(yystate);

yyloop:
#if YYDEBUG
    debug("yyloop"); 
#endif
	yyn = yydefred[yystate];
    if (yyn!=0) goto yyreduce;
#if YYDEBUG
	debug("yyn:"+yyn+"  state:"+yystate+"  char:"+yychar);
#endif
    if (yychar < 0)
    {
        yychar = yylex();
		if (yychar < 0) yychar = 0;
    }
	yyn = yysindex[yystate];
    if ((yyn!=0) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    {
#if YYDEBUG
        debug("state "+yystate+", shifting to state "+yytable[yyn]+"");
#endif
	     yystate = yytable[yyn];
		 state_push(yystate);
        val_push( yylval );
        yychar = (-1);
        if (yyerrflag > 0)  --yyerrflag;
        goto yyloop;
    }
	yyn = yyrindex[yystate];
    if ((yyn!=0) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    {
        yyn = yytable[yyn];
#if YYDEBUG
	     debug("reduce");
#endif
        goto yyreduce;
    }
    if (yyerrflag!=0) goto yyinrecovery;
    yyerror("syntax error");
 
    ++yynerrs;
yyinrecovery:
    if (yyerrflag < 3)
    {
        yyerrflag = 3;
        for (;;)
        {
            if (stateptr < 0)
            {
                goto yyoverflow;
            }
			 yyn = yysindex[state_peek(0)];
            if ((yyn!=0) && (yyn += YYERRCODE) >= 0 &&
                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
            {
                if (stateptr < 0)
                {
                    goto yyoverflow;
                }
#if YYDEBUG
                debug("state "+state_peek(0)+", error recovery shifting to state "+yytable[yyn]+" ");
#endif
                yystate = yytable[yyn];
        		 state_push(yystate);
                val_push( yylval );
                goto yyloop;
            }
            else
            {
                if (stateptr < 0)
                {
                    goto yyoverflow;
                }
#if YYDEBUG
                debug("error recovery discarding state "+state_peek(0)+" ");
#endif
        		 state_pop();
                val_pop();
            }
        }
    }
    else
    {
        if (yychar == 0) goto yyabort;
#if YYDEBUG
        if (yydebug)
        {
            yys = null;
            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
            if (yys == null) yys = "illegal-symbol";
            debug("state "+yystate+", error recovery discards token "+yychar+" ("+yys+")");
        }
#endif
        yychar = (-1);
        goto yyloop;
    }
yyreduce:
    yym = yylen[yyn];
#if YYDEBUG
      debug("state "+yystate+", reducing "+yym+" by rule "+yyn+" ("+yyrule[yyn]+")");
#endif
    yyval = val_peek(yym-1);
    switch (yyn)
    {
//########## USER-SUPPLIED ACTIONS ##########
case 1:
//#line 108 "CqlGrammar.y"
{
                        yyval = _parsedTree = null;
                    }
break;
case 2:
//#line 112 "CqlGrammar.y"
{
                        yyval = _parsedTree = (Node)val_peek(0);
                    }
break;
case 3:
//#line 118 "CqlGrammar.y"
{
                        yyval = new Command(ToNodeList<NamespaceImport>(val_peek(1)),(Statement)val_peek(0));
                        SetErrCtx(AstNode(yyval), (val_peek(1) != null) ? AstNodePos(val_peek(1)) : AstNodePos(val_peek(0)), EntityRes.CtxCommandExpression);
                    }
break;
case 4:
//#line 129 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 5:
//#line 133 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 6:
//#line 139 "CqlGrammar.y"
{
                        yyval = new NodeList<NamespaceImport>((NamespaceImport)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxNamespaceImportList);
                    }
break;
case 7:
//#line 144 "CqlGrammar.y"
{
                        yyval = ToNodeList<NamespaceImport>(val_peek(1)).Add((NamespaceImport)val_peek(0));
                    }
break;
case 8:
//#line 150 "CqlGrammar.y"
{
                        yyval = new NamespaceImport((Identifier)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNamespaceImport);
                    }
break;
case 9:
//#line 155 "CqlGrammar.y"
{
                        yyval = new NamespaceImport((DotExpr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNamespaceImport);
                    }
break;
case 10:
//#line 160 "CqlGrammar.y"
{
                        yyval = new NamespaceImport((BuiltInExpr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxAliasedNamespaceImport);
                    }
break;
case 11:
//#line 171 "CqlGrammar.y"
{
                        yyval = new QueryStatement(ToNodeList<AST.FunctionDefinition>(val_peek(2)),(Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), (val_peek(2) != null) ? AstNodePos(val_peek(2)) : AstNodePos(val_peek(1)), EntityRes.CtxQueryStatement);
                    }
break;
case 12:
//#line 182 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 13:
//#line 186 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 14:
//#line 192 "CqlGrammar.y"
{
                        yyval = new NodeList<AST.FunctionDefinition>((AST.FunctionDefinition)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 15:
//#line 197 "CqlGrammar.y"
{
                        yyval = ToNodeList<AST.FunctionDefinition>(val_peek(1)).Add((AST.FunctionDefinition)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(yyval), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 16:
//#line 204 "CqlGrammar.y"
{
                        yyval = new AST.FunctionDefinition((Identifier)val_peek(5), ToNodeList<PropDefinition>(val_peek(4)), (Node)val_peek(1), Terminal(val_peek(6)).IPos, Terminal(val_peek(0)).IPos);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(6)), EntityRes.CtxFunctionDefinition);
                    }
break;
case 17:
//#line 211 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 18:
//#line 215 "CqlGrammar.y"
{
                        yyval = val_peek(1);
                    }
break;
case 19:
//#line 221 "CqlGrammar.y"
{
                        yyval = new NodeList<PropDefinition>((PropDefinition)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 20:
//#line 226 "CqlGrammar.y"
{
                        yyval = ToNodeList<PropDefinition>(val_peek(2)).Add((PropDefinition)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(yyval), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 21:
//#line 233 "CqlGrammar.y"
{
                        yyval = new PropDefinition((Identifier)val_peek(1), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxFunctionDefinition);
                    }
break;
case 22:
//#line 244 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 23:
//#line 248 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 24:
//#line 254 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 25:
//#line 258 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 26:
//#line 268 "CqlGrammar.y"
{
                         yyval = new QueryExpr( (SelectClause)val_peek(5)    ,
                                             (FromClause)val_peek(4)      ,
                                             (Node)val_peek(3)            ,
                                             (GroupByClause)val_peek(2)   ,
                                             (HavingClause)val_peek(1)    ,
                                             (OrderByClause)val_peek(0)   );

                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(5)), EntityRes.CtxQueryExpression);
                    }
break;
case 27:
//#line 281 "CqlGrammar.y"
{ 
                          StartMethodExprCounting();
                      }
break;
case 28:
//#line 287 "CqlGrammar.y"
{
                        yyval = new SelectClause(ToNodeList<AliasedExpr>(val_peek(0)), SelectKind.Row, (DistinctKind)val_peek(2), (Node)val_peek(1), EndMethodExprCounting());
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxSelectRowClause);
                    }
break;
case 29:
//#line 292 "CqlGrammar.y"
{ 
                        StartMethodExprCounting();
                      }
break;
case 30:
//#line 299 "CqlGrammar.y"
{
                        yyval = new SelectClause(ToNodeList<AliasedExpr>(val_peek(0)), SelectKind.Value, (DistinctKind)val_peek(2), (Node)val_peek(1), EndMethodExprCounting());
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxSelectValueClause);
                    }
break;
case 31:
//#line 306 "CqlGrammar.y"
{
                        yyval = DistinctKind.None;
                    }
break;
case 32:
//#line 310 "CqlGrammar.y"
{
                        yyval = DistinctKind.All;
                    }
break;
case 33:
//#line 314 "CqlGrammar.y"
{
                        yyval = DistinctKind.Distinct;
                    }
break;
case 34:
//#line 320 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 35:
//#line 324 "CqlGrammar.y"
{
                        yyval = val_peek(1);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxTopSubClause);
                    }
break;
case 36:
//#line 331 "CqlGrammar.y"
{
                        yyval = new FromClause(ToNodeList<FromClauseItem>(val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxFromClause);
                    }
break;
case 37:
//#line 338 "CqlGrammar.y"
{
                        yyval = new NodeList<FromClauseItem>((FromClauseItem)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 38:
//#line 343 "CqlGrammar.y"
{
                        yyval = ToNodeList<FromClauseItem>(val_peek(2)).Add((FromClauseItem)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxFromClauseList);
                    }
break;
case 39:
//#line 350 "CqlGrammar.y"
{
                        yyval = new FromClauseItem((AliasedExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromClauseItem);
                    }
break;
case 40:
//#line 355 "CqlGrammar.y"
{
                        yyval = new FromClauseItem((JoinClauseItem)val_peek(1));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxFromJoinClause);
                    }
break;
case 41:
//#line 360 "CqlGrammar.y"
{
                        yyval = new FromClauseItem((JoinClauseItem)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromJoinClause);
                    }
break;
case 42:
//#line 365 "CqlGrammar.y"
{
                        yyval = new FromClauseItem((ApplyClauseItem)val_peek(1));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxFromApplyClause);
                    }
break;
case 43:
//#line 370 "CqlGrammar.y"
{
                        yyval = new FromClauseItem((ApplyClauseItem)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromApplyClause);
                    }
break;
case 44:
//#line 377 "CqlGrammar.y"
{
                        yyval = new JoinClauseItem((FromClauseItem)val_peek(2), (FromClauseItem)val_peek(0), (JoinKind)val_peek(1));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxJoinClause);
                    }
break;
case 45:
//#line 382 "CqlGrammar.y"
{
                        yyval = new JoinClauseItem((FromClauseItem)val_peek(4), (FromClauseItem)val_peek(2), (JoinKind)val_peek(3), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(4)), EntityRes.CtxJoinOnClause);
                    }
break;
case 46:
//#line 389 "CqlGrammar.y"
{
                        yyval = new ApplyClauseItem((FromClauseItem)val_peek(2), (FromClauseItem)val_peek(0), (ApplyKind)val_peek(1));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxApplyClause);
                    }
break;
case 47:
//#line 396 "CqlGrammar.y"
{
                        yyval = JoinKind.Cross;
                    }
break;
case 48:
//#line 400 "CqlGrammar.y"
{
                        yyval = JoinKind.LeftOuter;
                    }
break;
case 49:
//#line 404 "CqlGrammar.y"
{
                        yyval = JoinKind.LeftOuter;
                    }
break;
case 50:
//#line 408 "CqlGrammar.y"
{
                        yyval = JoinKind.RightOuter;
                    }
break;
case 51:
//#line 412 "CqlGrammar.y"
{
                        yyval = JoinKind.RightOuter;
                    }
break;
case 52:
//#line 416 "CqlGrammar.y"
{
                        yyval = JoinKind.Inner;
                    }
break;
case 53:
//#line 420 "CqlGrammar.y"
{
                        yyval = JoinKind.Inner;
                    }
break;
case 54:
//#line 424 "CqlGrammar.y"
{
                        yyval = JoinKind.FullOuter;
                    }
break;
case 55:
//#line 428 "CqlGrammar.y"
{
                        yyval = JoinKind.FullOuter;
                    }
break;
case 56:
//#line 432 "CqlGrammar.y"
{
                        yyval = JoinKind.FullOuter;
                    }
break;
case 57:
//#line 438 "CqlGrammar.y"
{
                        yyval = ApplyKind.Cross;
                    }
break;
case 58:
//#line 442 "CqlGrammar.y"
{
                        yyval = ApplyKind.Outer;
                    }
break;
case 59:
//#line 447 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 60:
//#line 451 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 61:
//#line 457 "CqlGrammar.y"
{
                        yyval = (Node)val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxWhereClause);
                    }
break;
case 62:
//#line 464 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 63:
//#line 468 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 64:
//#line 474 "CqlGrammar.y"
{
                        yyval = new GroupByClause(ToNodeList<AliasedExpr>(val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxGroupByClause);
                    }
break;
case 65:
//#line 481 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 66:
//#line 485 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 67:
//#line 491 "CqlGrammar.y"
{ 
                      StartMethodExprCounting();
                    }
break;
case 68:
//#line 495 "CqlGrammar.y"
{
                        yyval = new HavingClause((Node)val_peek(0), EndMethodExprCounting());
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxHavingClause);
                    }
break;
case 69:
//#line 502 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 70:
//#line 506 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 71:
//#line 512 "CqlGrammar.y"
{
                        StartMethodExprCounting();
                      }
break;
case 72:
//#line 518 "CqlGrammar.y"
{
                        yyval = new OrderByClause(ToNodeList<OrderByClauseItem>(val_peek(2)), (Node)val_peek(1), (Node)val_peek(0), EndMethodExprCounting());
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxOrderByClauseItem);
                    }
break;
case 73:
//#line 525 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 74:
//#line 529 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxSkipSubClause);
                    }
break;
case 75:
//#line 536 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 76:
//#line 540 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLimitSubClause);
                    }
break;
case 77:
//#line 547 "CqlGrammar.y"
{
                        yyval = new NodeList<OrderByClauseItem>((OrderByClauseItem)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 78:
//#line 552 "CqlGrammar.y"
{
                        yyval = ToNodeList<OrderByClauseItem>(val_peek(2)).Add((OrderByClauseItem)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxOrderByClause);
                    }
break;
case 79:
//#line 559 "CqlGrammar.y"
{
                        yyval = new OrderByClauseItem((Node)val_peek(1), (OrderKind)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxOrderByClauseItem);
                    }
break;
case 80:
//#line 564 "CqlGrammar.y"
{
                        yyval = new OrderByClauseItem((Node)val_peek(3), (OrderKind)val_peek(0), (Identifier)val_peek(1));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(3)), EntityRes.CtxCollatedOrderByClauseItem);
                    }
break;
case 81:
//#line 571 "CqlGrammar.y"
{
                        yyval = OrderKind.None;
                    }
break;
case 82:
//#line 575 "CqlGrammar.y"
{
                        yyval = OrderKind.Asc;
                    }
break;
case 83:
//#line 579 "CqlGrammar.y"
{
                        yyval = OrderKind.Desc;
                    }
break;
case 84:
//#line 588 "CqlGrammar.y"
{
                        yyval = new NodeList<Node>((Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 85:
//#line 593 "CqlGrammar.y"
{
                        yyval = ToNodeList<Node>(val_peek(2)).Add((Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxExpressionList);
                    }
break;
case 86:
//#line 600 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 87:
//#line 604 "CqlGrammar.y"
{
                        yyval = (QueryParameter)val_peek(0);
                    }
break;
case 88:
//#line 608 "CqlGrammar.y"
{
                        yyval = (Identifier)val_peek(0);
                    }
break;
case 89:
//#line 612 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 90:
//#line 616 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 91:
//#line 620 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 92:
//#line 624 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 93:
//#line 628 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 94:
//#line 632 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                        IncrementMethodExprCount();
                    }
break;
case 95:
//#line 637 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                        IncrementMethodExprCount();
                    }
break;
case 96:
//#line 642 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 97:
//#line 646 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 98:
//#line 650 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 99:
//#line 654 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 100:
//#line 660 "CqlGrammar.y"
{
                        yyval = new ParenExpr((Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxParen);
                    }
break;
case 101:
//#line 667 "CqlGrammar.y"
{
                        yyval = new NodeList<Node>((Node)val_peek(2)).Add((Node)val_peek(0));
                    }
break;
case 102:
//#line 673 "CqlGrammar.y"
{
                        yyval = new NodeList<Node>((Node)val_peek(3)).Add((Node)val_peek(0));
                    }
break;
case 103:
//#line 682 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Plus, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxPlus);
                    }
break;
case 104:
//#line 687 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Minus, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMinus);
                    }
break;
case 105:
//#line 692 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Multiply, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMultiply);
                    }
break;
case 106:
//#line 697 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Divide, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxDivide);
                    }
break;
case 107:
//#line 702 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Modulus, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxModulus);
                    }
break;
case 108:
//#line 707 "CqlGrammar.y"
{
                        Literal literal = val_peek(0) as Literal;
                        if ( literal != null && literal.IsNumber && !literal.IsSignedNumber )
                        {
                            literal.PrefixSign(Terminal(val_peek(1)).Token);
                            yyval = val_peek(0);
                        }
                        else
                        {
                            yyval = new BuiltInExpr(BuiltInKind.UnaryMinus, Terminal(val_peek(1)).Token, (Node)val_peek(0));
                            SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnaryMinus);
                        }

                    }
break;
case 109:
//#line 722 "CqlGrammar.y"
{
                        Literal literal = val_peek(0) as Literal;
                        if ( null != literal && literal.IsNumber && !literal.IsSignedNumber )
                        {
                            literal.PrefixSign(Terminal(val_peek(1)).Token);
                            yyval = val_peek(0);
                        }
                        else
                        {
                            yyval = new BuiltInExpr(BuiltInKind.UnaryPlus, Terminal(val_peek(1)).Token, (Node)val_peek(0));
                            SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnaryPlus);
                        }
                    }
break;
case 110:
//#line 739 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.NotEqual, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNotEqual);
                    }
break;
case 111:
//#line 744 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.GreaterThan, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxGreaterThan);
                    }
break;
case 112:
//#line 749 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.GreaterEqual, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxGreaterThanEqual);
                    }
break;
case 113:
//#line 754 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.LessThan, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLessThan);
                    }
break;
case 114:
//#line 759 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.LessEqual, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLessThanEqual);
                    }
break;
case 115:
//#line 767 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Intersect, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIntersect);
                    }
break;
case 116:
//#line 772 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Union, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnion);
                    }
break;
case 117:
//#line 777 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.UnionAll, Terminal(val_peek(2)).Token, (Node)val_peek(3), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxUnionAll);
                    }
break;
case 118:
//#line 782 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Except, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxExcept);
                    }
break;
case 119:
//#line 787 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Overlaps, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxOverlaps);
                    }
break;
case 120:
//#line 792 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.In, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIn);
                    }
break;
case 121:
//#line 797 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.NotIn, Terminal(val_peek(2)).Token, (Node)val_peek(3), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNotIn);
                    }
break;
case 122:
//#line 802 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Exists, Terminal(val_peek(3)).Token, (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxExists);
                    }
break;
case 123:
//#line 807 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.AnyElement, Terminal(val_peek(3)).Token, (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxAnyElement);
                    }
break;
case 124:
//#line 812 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Element, Terminal(val_peek(3)).Token, (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxElement);
                    }
break;
case 125:
//#line 817 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Flatten, Terminal(val_peek(3)).Token, (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxFlatten);
                    }
break;
case 126:
//#line 822 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Distinct, Terminal(val_peek(3)).Token, (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxSet);
                    }
break;
case 127:
//#line 830 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.IsNull, "IsNull", (Node)val_peek(2));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIsNull);
                    }
break;
case 128:
//#line 835 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.IsNotNull, "IsNotNull", (Node)val_peek(3));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxIsNotNull);
                    }
break;
case 129:
//#line 843 "CqlGrammar.y"
{
                        yyval = (CaseExpr)val_peek(0);
                    }
break;
case 130:
//#line 850 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Treat, Terminal(val_peek(5)).Token, (Node)val_peek(3), (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxTreat);
                    }
break;
case 131:
//#line 855 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Cast, Terminal(val_peek(5)).Token, (Node)val_peek(3), (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxCast);
                    }
break;
case 132:
//#line 864 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.OfType, 
                                             Terminal(val_peek(5)).Token, 
                                             (Node)val_peek(3), 
                                             (Node)val_peek(1),
                                             Literal.NewBooleanLiteral( false ) /* only */);
                                             
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxOfType);
                    }
break;
case 133:
//#line 874 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.OfType, 
                                             "OFTYPE ONLY", 
                                             (Node)val_peek(4), 
                                             (Node)val_peek(1),
                                             Literal.NewBooleanLiteral( true ) /* only */);
                                             
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(6)), EntityRes.CtxOfTypeOnly);
                    }
break;
case 134:
//#line 887 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(   BuiltInKind.IsOf,
                                                "IS OF",
                                                (Node)val_peek(5),
                                                (Node)val_peek(1),
                                                Literal.NewBooleanLiteral( false ), /* only */
                                                Literal.NewBooleanLiteral( false )  /* not  */
                                            );

                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxIsOf);
                    }
break;
case 135:
//#line 899 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(   BuiltInKind.IsOf,
                                                "IS NOT OF",
                                                (Node)val_peek(6),  /* instance */
                                                (Node)val_peek(1),  /* type */
                                                Literal.NewBooleanLiteral( false ), /* only */
                                                Literal.NewBooleanLiteral( true  )  /* not  */
                                            );

                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxIsNotOf);
                    }
break;
case 136:
//#line 911 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(   BuiltInKind.IsOf,
                                                "IS OF ONLY",
                                                (Node)val_peek(6),  /* instance */
                                                (Node)val_peek(1),  /* type */
                                                Literal.NewBooleanLiteral( true  ), /* only */
                                                Literal.NewBooleanLiteral( false )  /* not  */
                                            );

                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxIsOf);
                    }
break;
case 137:
//#line 923 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(   BuiltInKind.IsOf,
                                                "IS NOT OF ONLY",
                                                (Node)val_peek(7),  /* instance */
                                                (Node)val_peek(1),  /* type */
                                                Literal.NewBooleanLiteral( true ), /* only */
                                                Literal.NewBooleanLiteral( true )  /* not  */
                                            );

                        SetErrCtx(AstNode(yyval), Terminal(val_peek(6)), EntityRes.CtxIsNotOf);
                    }
break;
case 138:
//#line 938 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLike);
                    }
break;
case 139:
//#line 943 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Not,
                                              Terminal(val_peek(2)).Token,
                                              new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(1)).Token, (Node)val_peek(3), (Node)val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNotLike);
                    }
break;
case 140:
//#line 950 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(3)).Token, (Node)val_peek(4), (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxLike);
                    }
break;
case 141:
//#line 955 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Not,
                                              Terminal(val_peek(4)).Token,
                                              new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(3)).Token, (Node)val_peek(5), (Node)val_peek(2), (Node)val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxNotLike);
                    }
break;
case 142:
//#line 965 "CqlGrammar.y"
{
                        NodeList<Node> elist = (NodeList<Node>)val_peek(2);
                        System.Diagnostics.Debug.Assert(elist.Count==2);
                        yyval = new BuiltInExpr(BuiltInKind.Between, "between", elist[0], elist[1], (Node)val_peek(0) );
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxBetween);
                    }
break;
case 143:
//#line 975 "CqlGrammar.y"
{
                        NodeList<Node> elist = (NodeList<Node>)val_peek(2);
                        System.Diagnostics.Debug.Assert(elist.Count==2);
                        yyval = new BuiltInExpr(BuiltInKind.NotBetween, "notbetween", elist[0], elist[1], (Node)val_peek(0) );
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNotBetween);
                    }
break;
case 144:
//#line 985 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Or, "or", (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxOr);
                    }
break;
case 145:
//#line 990 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Not, "not", (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNot);
                    }
break;
case 146:
//#line 995 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.And, "and", (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxAnd);
                    }
break;
case 147:
//#line 1000 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 148:
//#line 1006 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 149:
//#line 1010 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 150:
//#line 1016 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Equal, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxEquals);
                    }
break;
case 151:
//#line 1023 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Equal, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxEquals);
                    }
break;
case 152:
//#line 1030 "CqlGrammar.y"
{
                        yyval = new AliasedExpr((Node)val_peek(2), (Identifier)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxAlias);
                    }
break;
case 153:
//#line 1035 "CqlGrammar.y"
{
                        yyval = new AliasedExpr((Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 154:
//#line 1042 "CqlGrammar.y"
{
                       yyval = new NodeList<AliasedExpr>((AliasedExpr)val_peek(0));
                       SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 155:
//#line 1047 "CqlGrammar.y"
{
                       yyval = ToNodeList<AliasedExpr>(val_peek(2)).Add((AliasedExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(yyval), EntityRes.CtxExpressionList);
                    }
break;
case 156:
//#line 1054 "CqlGrammar.y"
{
                        yyval = new CaseExpr(ToNodeList<WhenThenExpr>(val_peek(1)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxCase);
                    }
break;
case 157:
//#line 1059 "CqlGrammar.y"
{
                        yyval = new CaseExpr(ToNodeList<WhenThenExpr>(val_peek(2)), (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxCase);
                    }
break;
case 158:
//#line 1066 "CqlGrammar.y"
{
                        yyval = new NodeList<WhenThenExpr>(new WhenThenExpr((Node)val_peek(2), (Node)val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxCaseWhenThen);
                    }
break;
case 159:
//#line 1071 "CqlGrammar.y"
{
                        yyval = ToNodeList<WhenThenExpr>(val_peek(4)).Add(new WhenThenExpr((Node)val_peek(2), (Node)val_peek(0)));
                    }
break;
case 160:
//#line 1077 "CqlGrammar.y"
{
                        yyval = (Node)val_peek(0);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxCaseElse);
                    }
break;
case 161:
//#line 1084 "CqlGrammar.y"
{
                        yyval = new RowConstructorExpr(ToNodeList<AliasedExpr>(val_peek(1)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRowCtor);
                    }
break;
case 162:
//#line 1089 "CqlGrammar.y"
{
                        yyval = new MultisetConstructorExpr(ToNodeList<Node>(val_peek(1)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxMultisetCtor);
                    }
break;
case 163:
//#line 1094 "CqlGrammar.y"
{
                        yyval = new MultisetConstructorExpr(ToNodeList<Node>(val_peek(1)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxMultisetCtor);
                    }
break;
case 164:
//#line 1101 "CqlGrammar.y"
{
                        yyval = new DotExpr((Node)val_peek(2), (Identifier)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMemberAccess);
                    }
break;
case 165:
//#line 1108 "CqlGrammar.y"
{
                        yyval = new RefExpr((Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRef);
                    }
break;
case 166:
//#line 1115 "CqlGrammar.y"
{
                        yyval = new DerefExpr((Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxDeref);
                    }
break;
case 167:
//#line 1122 "CqlGrammar.y"
{
                        yyval = new CreateRefExpr((Node)val_peek(3), (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxCreateRef);
                    }
break;
case 168:
//#line 1127 "CqlGrammar.y"
{
                        yyval = new CreateRefExpr((Node)val_peek(5), (Node)val_peek(3), (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxCreateRef);
                    }
break;
case 169:
//#line 1134 "CqlGrammar.y"
{
                        yyval = new KeyExpr((Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxKey);
                    }
break;
case 170:
//#line 1141 "CqlGrammar.y"
{
                        yyval = new GroupPartitionExpr((DistinctKind)val_peek(2), (Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxGroupPartition);
                    }
break;
case 171:
//#line 1148 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Node)val_peek(2), DistinctKind.None, null);
                        SetErrCtx(AstNode(yyval), AstNodePos(((DotExpr)val_peek(2)).Identifier), EntityRes.CtxMethod);
                    }
break;
case 172:
//#line 1153 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Node)val_peek(5), (DistinctKind)val_peek(3), ToNodeList<Node>(val_peek(2)), ToNodeList<RelshipNavigationExpr>(val_peek(0)));
                        SetErrCtx(AstNode(yyval), AstNodePos(((DotExpr)val_peek(5)).Identifier), EntityRes.CtxMethod);
                    }
break;
case 173:
//#line 1158 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Node)val_peek(5), (DistinctKind)val_peek(3), new NodeList<Node>((Node)val_peek(2)), ToNodeList<RelshipNavigationExpr>(val_peek(0)));
                        SetErrCtx(AstNode(yyval), AstNodePos(((DotExpr)val_peek(5)).Identifier), EntityRes.CtxMethod);
                    }
break;
case 174:
//#line 1163 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Identifier)val_peek(2), DistinctKind.None, null);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxMethod);
                    }
break;
case 175:
//#line 1168 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Identifier)val_peek(5), (DistinctKind)val_peek(3), ToNodeList<Node>(val_peek(2)), ToNodeList<RelshipNavigationExpr>(val_peek(0)));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(5)), EntityRes.CtxMethod);
                    }
break;
case 176:
//#line 1173 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Identifier)val_peek(5),(DistinctKind)val_peek(3), new NodeList<Node>((Node)val_peek(2)), ToNodeList<RelshipNavigationExpr>(val_peek(0)));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(5)), EntityRes.CtxMethod);
                    }
break;
case 177:
//#line 1183 "CqlGrammar.y"
{
                        yyval = new RelshipNavigationExpr((Node)val_peek(3), (Node)val_peek(1), null, null);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxNavigate);
                    }
break;
case 178:
//#line 1191 "CqlGrammar.y"
{
                        yyval = new RelshipNavigationExpr((Node)val_peek(5), (Node)val_peek(3), (Identifier)val_peek(1), null);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxNavigate);
                    }
break;
case 179:
//#line 1199 "CqlGrammar.y"
{
                        yyval = new RelshipNavigationExpr((Node)val_peek(7), (Node)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxNavigate);
                    }
break;
case 180:
//#line 1206 "CqlGrammar.y"
{
                        yyval = null;
                    }
break;
case 181:
//#line 1210 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 182:
//#line 1216 "CqlGrammar.y"
{
                        yyval = new NodeList<RelshipNavigationExpr>((RelshipNavigationExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxRelationshipList);
                    }
break;
case 183:
//#line 1221 "CqlGrammar.y"
{
                        yyval = ToNodeList<RelshipNavigationExpr>(val_peek(1)).Add((RelshipNavigationExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxRelationshipList);
                    }
break;
case 184:
//#line 1231 "CqlGrammar.y"
{
                        yyval = new RelshipNavigationExpr((Node)val_peek(3), (Node)val_peek(1), null, null);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxRelationship);
                    }
break;
case 185:
//#line 1239 "CqlGrammar.y"
{
                        yyval = new RelshipNavigationExpr((Node)val_peek(5), (Node)val_peek(3), null, (Identifier)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxRelationship);
                    }
break;
case 186:
//#line 1247 "CqlGrammar.y"
{
                        yyval = new RelshipNavigationExpr((Node)val_peek(7), (Node)val_peek(5), (Identifier)val_peek(1), (Identifier)val_peek(3));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxRelationship);
                    }
break;
case 187:
//#line 1254 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxTypeName);
                    }
break;
case 188:
//#line 1259 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxTypeName);
                    }
break;
case 189:
//#line 1264 "CqlGrammar.y"
{
                        Identifier identifier = (Identifier)val_peek(1);
                        Identifier escapedIdentifier = (Identifier)val_peek(0);
                        if (identifier.IsEscaped || escapedIdentifier.Name.Length > 0)
                        {
                            throw EntityUtil.EntitySqlError(identifier.ErrCtx, System.Data.Entity.Strings.InvalidMetadataMemberName);
                        }
                        yyval = new Identifier(identifier.Name + "[]", /*isEscaped*/false, _query, AstNodePos(val_peek(1)));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxTypeName);
                    }
break;
case 190:
//#line 1275 "CqlGrammar.y"
{
                        DotExpr dotExpr = (DotExpr)val_peek(1);
                        Identifier identifier = dotExpr.Identifier;
                        Identifier escapedIdentifier = (Identifier)val_peek(0);
                        if (identifier.IsEscaped || escapedIdentifier.Name.Length > 0)
                        {
                            throw EntityUtil.EntitySqlError(identifier.ErrCtx, System.Data.Entity.Strings.InvalidMetadataMemberName);
                        }
                        yyval = new DotExpr(dotExpr.Left, new Identifier(identifier.Name + "[]", /*isEscaped*/false, _query, AstNodePos(val_peek(1))));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxTypeName);
                    }
break;
case 191:
//#line 1287 "CqlGrammar.y"
{
                        yyval = (MethodExpr)val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxTypeName);
                    }
break;
case 192:
//#line 1294 "CqlGrammar.y"
{
                        yyval = new DotExpr((Node)val_peek(2), (Identifier)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxTypeName);
                    }
break;
case 193:
//#line 1301 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Node)val_peek(2), DistinctKind.None, null);
                        SetErrCtx(AstNode(yyval), AstNodePos(((DotExpr)val_peek(2)).Identifier), EntityRes.CtxTypeNameWithTypeSpec);
                    }
break;
case 194:
//#line 1306 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Node)val_peek(3), DistinctKind.None, ToNodeList<Node>(val_peek(1)));
                        SetErrCtx(AstNode(yyval), AstNodePos(((DotExpr)val_peek(3)).Identifier), EntityRes.CtxTypeNameWithTypeSpec);
                    }
break;
case 195:
//#line 1311 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Identifier)val_peek(2), DistinctKind.None, null);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxTypeNameWithTypeSpec);
                    }
break;
case 196:
//#line 1316 "CqlGrammar.y"
{
                        yyval = new MethodExpr((Identifier)val_peek(3), DistinctKind.None, ToNodeList<Node>(val_peek(1)));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(3)), EntityRes.CtxTypeNameWithTypeSpec);
                    }
break;
case 197:
//#line 1323 "CqlGrammar.y"
{
                        yyval = (Identifier)val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxEscapedIdentifier);
                    }
break;
case 198:
//#line 1328 "CqlGrammar.y"
{
                        yyval = (Identifier)val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxSimpleIdentifier);
                    }
break;
case 199:
//#line 1335 "CqlGrammar.y"
{
                        yyval = (Identifier)val_peek(0);
                    }
break;
case 200:
//#line 1341 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxLiteral);
                    }
break;
case 201:
//#line 1346 "CqlGrammar.y"
{
                        yyval = new Literal(null, LiteralKind.Null, _query, TerminalPos(val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(0)), EntityRes.CtxNullLiteral);
                    }
break;
case 202:
//#line 1357 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 203:
//#line 1361 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 204:
//#line 1365 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 205:
//#line 1369 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    }
break;
case 206:
//#line 1375 "CqlGrammar.y"
{
                        yyval = new CollectionTypeDefinition((Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxCollectionTypeDefinition);
                    }
break;
case 207:
//#line 1382 "CqlGrammar.y"
{
                        yyval = new RefTypeDefinition((Node)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRefTypeDefinition);
                    }
break;
case 208:
//#line 1389 "CqlGrammar.y"
{
                        yyval = new RowTypeDefinition(ToNodeList<PropDefinition>(val_peek(1)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRowTypeDefinition);
                    }
break;
case 209:
//#line 1396 "CqlGrammar.y"
{
                        yyval = new NodeList<PropDefinition>((PropDefinition)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 210:
//#line 1401 "CqlGrammar.y"
{
                        yyval = ToNodeList<PropDefinition>(val_peek(2)).Add((PropDefinition)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(yyval), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break;
case 211:
//#line 1408 "CqlGrammar.y"
{
                        yyval = new PropDefinition((Identifier)val_peek(1), (Node)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxRowTypeDefinition);
                    }
break;

//########## END OF USER-SUPPLIED ACTIONS ##########
    }
#if YYDEBUG
    debug("reduce");
#endif
	 state_drop( yym );
    yystate = state_peek(0);
    val_drop( yym );
    yym = yylhs[yyn];
    if (yystate == 0 && yym == 0)
    {
#if YYDEBUG
        debug("After reduction, shifting from state 0 to state "+YYFINAL+"");
#endif
		 yystate = YYFINAL;
        state_push( YYFINAL );
        val_push( yyval );
        if (yychar < 0)
        {
            yychar = yylex();
			if (yychar < 0) yychar = 0;
#if YYDEBUG
            if (yydebug)
            yylexdebug(yystate,yychar);
#endif
        }
        if (yychar == 0) goto yyaccept;
        goto yyloop;
    }
	yyn = yygindex[yym];
    if ((yyn!=0) && (yyn += yystate) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
        yystate = yytable[yyn];
    else
        yystate = yydgoto[yym];
    if (stateptr < 0)
    {
        goto yyoverflow;
    }
#if YYDEBUG
    debug("after reduction, shifting from state "+state_peek(0)+" to state "+yystate+"");
#endif
	 state_push(yystate);
    val_push( yyval );
    goto yyloop;
yyoverflow:
    yyerror("yacc stack overflow");
yyabort:
    return (1);
yyaccept:
    return (0);
}