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 = ""; }