public void Visit(ASTClassDefinition _class) { var name = _class.Name; var baseName = _class.Base; Class newClass; if (baseName.Length == 0) { newClass = ObjectFactory.Class(name); } else { var baseClass = _environment.FindClass(baseName); if (baseClass == null) { throw new CompilerException($"Base class '{name}' has not been defined."); } newClass = ObjectFactory.Class(name, baseClass); } _environment.AddClass(newClass); var memberDefinitions = _class.MemberDefinitions; for (int i = 0; i < memberDefinitions.Count; i++) { memberDefinitions[i].Accept(this, newClass); } }