protected virtual T VisitParameterArrayDeclaration(ParameterArrayDeclarationNode node) { Visit(node.TypeNameNode); Visit(node.NameNode); Visit(node.ArraySizeNode); return(DefaultResult); }
protected override NodeValue VisitParameterArrayDeclaration(ParameterArrayDeclarationNode node) { if (node.ArraySizeValue is UndefinedValue) { return(new UndefinedValue()); } node.ArraySizeValue = Visit(node.ArraySizeNode); switch (node.ArraySizeValue) { case UndefinedValue _: break; case IntValue intValue: if (intValue.Value == 0) { node.ArraySizeNode.Annotations.Add(new ArraySizeEqualsZeroError(node.NameNode.Value)); } else if (intValue.Value > 4095) { node.ArraySizeNode.Annotations.Add(new TooBigArraySizeError()); //+ } break; default: node.ArraySizeNode.Annotations.Add(new ArraySizeNotConstIntegerError()); break; } return(null); }
public override ASTNode VisitParameterDecl([NotNull] DaedalusParser.ParameterDeclContext context) { NodeLocation location = GetLocation(context); NameNode typeNameNode = new NameNode(GetLocation(context.dataType()), context.dataType().GetText()); NameNode nameNode = new NameNode(GetLocation(context.nameNode()), context.nameNode().GetText()); if (context.arraySize() != null) { var arraySize = (ExpressionNode)VisitArraySize(context.arraySize()); ParameterArrayDeclarationNode parameterArrayDeclarationNode = new ParameterArrayDeclarationNode(location, typeNameNode, nameNode, arraySize); _arrayDeclarationNodes.Add(parameterArrayDeclarationNode); return(parameterArrayDeclarationNode); } return(new ParameterDeclarationNode(location, typeNameNode, nameNode)); }
protected override void VisitParameterArrayDeclaration(ParameterArrayDeclarationNode parameterArrayDeclarationNode) { BuildParameter(parameterArrayDeclarationNode, true); }
protected virtual void VisitParameterArrayDeclaration(ParameterArrayDeclarationNode node) { Visit(node.TypeNameNode); Visit(node.NameNode); Visit(node.ArraySizeNode); }