public override object VisitArrayAssignment([NotNull] ClepsParser.ArrayAssignmentContext context) { var arrayElements = context._ArrayElements.Select(a => Visit(a) as IValue).ToList(); var elementTypes = arrayElements.Select(a => a.ExpressionType).ToList(); ClepsType arrayElementType = TypeManager.GetSuperType(elementTypes); ClepsType arrayType = new ArrayClepsType(arrayElementType, new long[] { arrayElements.Count }); IValue arr = CodeGenerator.CreateArray(arrayType, arrayElements); return(arr); }
/// <summary> /// Exit a parse tree produced by <see cref="ClepsParser.arrayAssignment"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitArrayAssignment([NotNull] ClepsParser.ArrayAssignmentContext context) { }
/// <summary> /// Visit a parse tree produced by <see cref="ClepsParser.arrayAssignment"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitArrayAssignment([NotNull] ClepsParser.ArrayAssignmentContext context) { return(VisitChildren(context)); }