protected override List <AssemblyElement> VisitVarArrayDeclaration(VarArrayDeclarationNode node) { List <AssemblyElement> instructions = new List <AssemblyElement>(); if (node.ElementNodes != null) { int index = 0; foreach (ExpressionNode elementNode in node.ElementNodes) { instructions.AddRange(Visit(elementNode)); if (index > 0) { instructions.Add(new PushArrayVar(node.Symbol, index)); } else { instructions.Add(new PushVar(node.Symbol)); } instructions.Add(GetAssignInstruction(node.Symbol)); index++; } } return(instructions); }
protected override void VisitVarArrayDeclaration(VarArrayDeclarationNode node) { if (node.ElementNodes != null) { ASTNode ancestorNode = node.GetFirstSignificantAncestorNode(); switch (ancestorNode) { case PrototypeDefinitionNode _: case InstanceDefinitionNode _: case FunctionDefinitionNode _: break; default: node.Annotations.Add(new VarAssignmentNotAllowedHereError(node.Location)); break; } } //base.VisitVarArrayDeclaration(node); }