private void InitHelpers()
 {
     lastCompiledMember = new Member();
 }
        public override void Visit(MemberDeclarationNode node)
        {
            // MemberType
            node.MemberType.Accept(this);
            TypeEnum memberType = lastCompiledDataType;
            string memberTypeName = node.MemberTypeName.Value;

            int memberDimensionCount = lastCompiledDimensionCount;
            List<int> memberDimensionList = lastCompiledDimensionList;

            // MemberName
            string memberName = node.MemberName.Value;
            bool memberIsInitialized = false;

            // MemberInitialValue
            BaseType memberValue = null;
            if (node.MemberInitialValue != null)
            {
                if (node.MemberInitialValue.Children.Count > 1)
                {
                    AddWarning(CompilerErrorCode.NotSupported,
                        "Initializers in struct default values not supported yet! Initial value will be skipped!",
                        node.NodeValueInfo);
                }
                else
                {
                    node.MemberInitialValue.Accept(this);
                    memberValue = lastCompiledConstantValue;
                    memberIsInitialized = true;
                }
            }

            // Last compiled Member
            lastCompiledMember = new Member
            {
                Type = memberType,
                TypeName = memberTypeName,
                DimensionCount = memberDimensionCount,
                DimensionList = memberDimensionList,
                Name = memberName,
                Value = memberValue,
                IsInitialised = memberIsInitialized,
                IsReference = false
            };

            // Set back to Defaults
            lastCompiledDimensionList = new List<int>();
            lastCompiledDimensionCount = 0;
            lastCompiledDataType = TypeEnum.Undefined;
            lastCompiledDataTypeName = "";
        }