private static SyntaxNode Index(RParser.IndexContext index, Func <ParserRuleContext, Scope, SyntaxNode> transform, Scope scope) { var indexExprs = index.sublist().sub(); if (indexExprs.Length != 1) { //td: error return(null); } var expr = transform(index.expr(), scope) as ExpressionSyntax; var args = transform(index.sublist(), scope) as ArgumentListSyntax; Debug.Assert(expr != null && args != null); var indexExpr = args.Arguments[0].Expression; Debug.Assert(indexExpr != null); return(indexCall.Get(expr, indexExpr)); }
/// <summary> /// Exit a parse tree produced by <see cref="RParser.Index"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitIndex([NotNull] RParser.IndexContext context) { }