Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
 /// <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)
 {
 }