+
+ current_block.AddStatement (new ContextualReturn ((Expression) $11));
+ current_block.SetEndLocation (lexer.Location);
+ current_block = current_block.Parent;
+
+ if ($12 == null)
+ ((Linq.QueryBlock)current_block).AddTransparentParameter (lt);
+ else
+ ((Linq.QueryBlock)current_block).AddTransparentParameter ((LocatedToken) $12);
+ }
+ | JOIN type IDENTIFIER IN
+ {
+ if (linq_clause_blocks == null)
+ linq_clause_blocks = new Stack ();
+
+ current_block = new Linq.QueryBlock (current_block, lexer.Location);
+ linq_clause_blocks.Push (current_block);
+ }
+ expression ON
+ {
+ current_block.SetEndLocation (lexer.Location);
+ current_block = current_block.Parent;
+
+ current_block = new Linq.QueryBlock (current_block, lexer.Location);
+ linq_clause_blocks.Push (current_block);
+ }
+ expression EQUALS
+ {
+ current_block.AddStatement (new ContextualReturn ((Expression) $9));
+ current_block.SetEndLocation (lexer.Location);
+ current_block = current_block.Parent;
+
+ current_block = new Linq.QueryBlock (current_block, (LocatedToken) $3, lexer.Location);