Beispiel #1
0
        /// <summary>
        /// Handles the AST node visit.
        /// </summary>
        /// <param name="astNode">AST node.</param>
        public override void Visit(DomainTypesAstNode astNode)
        {
            astNode.TypesList.TypedIdentifiers.ForEach(type => DomainData.Types.Add(new Type(type.Item1, type.Item2.Split(';'))));

            // add implied types (base types that are not specifically defined)
            HashSet <string> impliedTypes = new HashSet <string>();

            foreach (var type in DomainData.Types)
            {
                foreach (var baseType in type.BaseTypeNames)
                {
                    if (baseType.Equals("") || baseType.Equals("object"))
                    {
                        continue;
                    }

                    if (!DomainData.Types.Exists(existingTypes => existingTypes.TypeName.Equals(baseType)))
                    {
                        impliedTypes.Add(baseType);
                    }
                }
            }

            foreach (var type in impliedTypes)
            {
                DomainData.Types.Add(new Type(type));
            }
        }
Beispiel #2
0
 public virtual void Visit(DomainTypesAstNode node)
 {
 }