// class [ assoc class ]
        private bool ParseClassOrAssociation(ClassDiagram cd)
        {
            // class
            var c = ParseClass();

            if (c == null)
            {
                // error must have been flagged by class parsing
                return(false);
            }
            cd.AddClass(c);

            // either there is an association afterwards or not
            // if there is none, then either this is the end of input
            // or a comma follows.
            var sourceClass = c;

            do
            {
                var assoc = ParseAssociation();
                if (assoc == null)
                {
                    break;
                }

                // assoc did parse, must be followed by class
                var c2 = ParseClass();
                if (c2 == null)
                {
                    return(false);
                }
                cd.AddClass(c2);

                cd.Add(new Association(assoc, sourceClass, c2));
                sourceClass = c2;
            } while (true);

            return(true);
        }
Example #2
0
        /// <summary>
        /// Adds the submitted classes to the diagram.
        /// </summary>
        /// <param name="classes">A list of classes to add.</param>
        private void AddClasses(IEnumerable <NRClass> classes)
        {
            foreach (NRClass nrClass in classes)
            {
                ClassType classType = diagram.AddClass();
                classType.Name           = nrClass.Name;
                classType.AccessModifier = nrClass.AccessModifier.ToNClass();
                classType.Modifier       = nrClass.ClassModifier.ToNClass();

                AddFields(classType, nrClass.Fields);
                AddProperties(classType, nrClass.Properties);
                AddEvents(classType, nrClass.Events);
                AddConstructors(classType, nrClass.Constructors);
                AddMethods(classType, nrClass.Methods);
                AddOperators(classType, nrClass.Operators);

                types.Add(nrClass, classType);
            }
        }