Ejemplo n.º 1
0
        public void Construct(CommonTree syntaxArrayInitializer)
        {
            var simpleReturnType = TreeHelper.GetReturnType(syntaxArrayInitializer.GetChild(0).Text);

            ReturnType = ReturnType.ArrayOf(simpleReturnType);


            //ArraySize
            var syntaxArraySize = syntaxArrayInitializer.GetChild(1).CastTo <CommonTree>();

            if (syntaxArraySize.ChildCount > 0)
            {
                var syntaxArraySizeExpression = syntaxArraySize.GetChild(0).CastTo <CommonTree>();
                ArraySize = TreeHelper.GetExpression(this, Scope, syntaxArraySizeExpression);
                ArraySize.Construct(syntaxArraySizeExpression);
            }

            //ArrayInitializationParameters
            var syntaxArrayInitializationParameters = syntaxArrayInitializer.GetChild(2).CastTo <CommonTree>();

            if (syntaxArrayInitializationParameters.ChildCount > 0)
            {
                syntaxArrayInitializationParameters.Children.Cast <CommonTree>()
                .ForEach(syntaxArrayInitializationParameter =>
                {
                    var parameterExpression =
                        TreeHelper.GetExpression(this, Scope, syntaxArrayInitializationParameter);
                    InitializationParameters.Add(parameterExpression);
                    parameterExpression.Construct(syntaxArrayInitializationParameter);
                });
            }
        }
Ejemplo n.º 2
0
        public static ReturnType GetReturnType(string type)
        {
            if (type.Contains("[]"))
            {
                return(ReturnType.ArrayOf(GetReturnType(type.Replace("[]", ""))));
            }
            switch (type)
            {
            case "int": return(ReturnType.Int);

            case "bool": return(ReturnType.Bool);

            case "char": return(ReturnType.Char);

            case "void": return(ReturnType.Void);

            case "string": return(ReturnType.String);

            default: throw new ArgumentException(nameof(type));
            }
        }