Ejemplo n.º 1
0
 protected virtual T VisitParameterArrayDeclaration(ParameterArrayDeclarationNode node)
 {
     Visit(node.TypeNameNode);
     Visit(node.NameNode);
     Visit(node.ArraySizeNode);
     return(DefaultResult);
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
 protected override void VisitParameterArrayDeclaration(ParameterArrayDeclarationNode parameterArrayDeclarationNode)
 {
     BuildParameter(parameterArrayDeclarationNode, true);
 }
 protected virtual void VisitParameterArrayDeclaration(ParameterArrayDeclarationNode node)
 {
     Visit(node.TypeNameNode);
     Visit(node.NameNode);
     Visit(node.ArraySizeNode);
 }