protected override void VisitClassBody(ClassBody classBody)
 {
     for (int i = 0, n = classBody.Body.Count; i < n; i++)
     {
         Visit(classBody.Body[i]);
     }
 }
Esempio n. 2
0
        public static Prog Load2(TextWriter outputWriter, TextWriter errorWriter, IReadOnlyList <string> rootPaths, bool checkTypes)
        {
            rootPaths = rootPaths.Select(Path.GetFullPath).ToList();
            var prog    = new Prog(outputWriter, errorWriter, checkTypes);
            var modules = new List <ClassItem>();

            foreach (var fp in rootPaths)
            {
                var codeFilesPaths = getAllCodeFiles(fp, prog.RemarkList);
                var shortest       = codeFilesPaths.OrderBy(cfp => cfp.Length).First();
                var numSeparators  = shortest.Split('\\').Length - 2;
                foreach (var cfp in codeFilesPaths)
                {
                    var startIndex = "C:\\".Length;
                    var f          = cfp.Substring(startIndex, cfp.Length - ".ef".Length - startIndex);
                    var sections   = f.Split('\\').Skip(numSeparators).ToList();
                    var es         = parseFile(prog, cfp);
                    var moduleBody = new ClassBody(es.AsClassItems(prog.RemarkList));
                    addMod(sections, moduleBody, modules, prog);
                }
            }

            var start    = new FnApply(getStartQualifiedName(modules, prog.RemarkList), new FnArguments());
            var seqItems = modules.Cast <SequenceItem>().Append(start).ToList();

            prog.RootElement = new FnApply(
                new Fn(new FnParameters(), new Sequence(seqItems)),
                new FnArguments());
            postProcess(prog, checkTypes);
            return(prog);
        }
Esempio n. 3
0
        public ReadOnlyClassBody(ClassBody classBody)
        {
            Classes             = new ReadOnlyClassNestedClassCollection(classBody);
            Constructors        = new ConstructorNotSupported[0];
            ConversionOperators = classBody.ConversionOperators
                                  .ToArray(conversionOperator => new ReadOnlyConversionOperator(conversionOperator));
            Delegates         = classBody.NestedDelegates.ToArray(nestedDelegate => new ReadOnlyClassNestedDelegate(nestedDelegate));
            Enums             = classBody.NestedEnums.ToArray(nestedEnum => new ReadOnlyClassNestedEnum(nestedEnum));
            Events            = new ReadOnlyClassEventCollection(classBody);
            Fields            = new ReadOnlyClassFieldCollection(classBody);
            Indexers          = new ReadOnlyClassIndexerCollection(classBody);
            Interfaces        = classBody.NestedInterfaces.ToArray(@interface => new ReadOnlyClassNestedInterface(@interface));
            Methods           = new ReadOnlyClassMethodCollection(classBody);
            OperatorOverloads =
                classBody.BinaryOperators.Select(@operator => new ReadOnlyOperatorOverload(@operator))
                .Concat(classBody.UnaryOperators.Select(@operator => new ReadOnlyOperatorOverload(@operator)))
                .ToArray();
            Properties = new ReadOnlyClassPropertyCollection(classBody);
            if (classBody.StaticConstructor != null)
            {
                StaticConstructor = new ReadOnlyStaticConstructor(classBody.StaticConstructor);
            }

            Structs = new ReadOnlyClassNestedStructCollection(classBody);
        }
Esempio n. 4
0
 public ClassDeclaration(Identifier id, PropertyKey superClass, ClassBody body)
 {
     Type       = Nodes.ClassDeclaration;
     Id         = id;
     SuperClass = superClass;
     Body       = body;
 }
Esempio n. 5
0
 public ClassDeclaration(Identifier id, Expression superClass, ClassBody body)
 {
     Type       = Nodes.ClassDeclaration;
     Id         = id;
     SuperClass = superClass;
     Body       = body;
 }
Esempio n. 6
0
        private static void addMod(IReadOnlyList <string> sections, ClassBody moduleBody, List <ClassItem> modules, Prog prog)
        {
            C.Nn(sections, moduleBody, modules, prog);

            foreach (var s in sections.Skip(1))
            {
                var m = findParentModule(modules, s);
                if (m == null)
                {
                    modules.AddValue(new Let(new Ident(s, TokenType.Ident), new New(new ClassBody(new List <ClassItem>()))));
                    modules = new List <ClassItem>();
                }
                else
                {
                    modules = m.ToList();
                }
            }
            var lastSection = sections.Last();
            var m2          = findParentModule(modules, lastSection);

            if (m2 != null)
            {
                throw new Exception();
            }
            modules.AddValue(getNewModule(lastSection, moduleBody, prog));
        }
Esempio n. 7
0
 public ClassDeclaration(Identifier?id, Expression?superClass, ClassBody body) :
     base(Nodes.ClassDeclaration)
 {
     Id         = id;
     SuperClass = superClass;
     Body       = body;
 }
 public ClassExpression(
     Identifier id,
     Expression superClass,
     ClassBody body) : base(Nodes.ClassExpression)
 {
     Id         = id;
     SuperClass = superClass;
     Body       = body;
 }
Esempio n. 9
0
        public ReadOnlyClassEventCollection(ClassBody classBody)
        {
            List <ReadOnlyClassEvent> events          = new List <ReadOnlyClassEvent>();
            List <ReadOnlyClassEvent> eventProperties = new List <ReadOnlyClassEvent>();

            this.events          = events;
            this.eventProperties = eventProperties;
            InitializeEvents(classBody, events, eventProperties);
            explicitInterfaceEvents = classBody.ExplicitInterfaceEvents.ToArray(@event => new ReadOnlyExplicitInterfaceEvent(@event));
        }
Esempio n. 10
0
        private static Let getNewModule(string name, ClassBody moduleBody, Prog prog)
        {
            var preludeImport = new Import(new Ident("prelude", TokenType.Ident));

            if (name != "prelude")
            {
                moduleBody.InsertImport(preludeImport);
            }
            return(new Let(new Ident(name, TokenType.Ident),
                           new New(new ClassBody(moduleBody.AsClassItems(prog.RemarkList)))));
        }
Esempio n. 11
0
        private Collections.List <PropertyDeclaration> VisitClassBody(ClassBody classBody)
        {
            var properties = new Collections.List <PropertyDeclaration>(classBody.Body.Count);

            foreach (ClassProperty classProperty in classBody.Body)
            {
                properties.Add(VisitClassProperty(classProperty));
            }

            return(properties);
        }
Esempio n. 12
0
        private Node CreateClassBody(List <List <Node> > parameters)
        {
            parameters.CheckLength(1);
            var node = new ClassBody
            {
                Members = parameters[0].Cast <ClassMember>().ToList()
            };

            node.AddChildren(node.Members?.ToArray());

            return(node);
        }
Esempio n. 13
0
 public void Visit(ClassBody t, IEnvironment env)
 {
     foreach (ASTree tree in t)
     {
         tree.Accept(this, env);
         if (result is ErrorValue)
         {
             return;
         }
     }
     result = 0;
     return;
 }
        public ReadOnlyClassFieldCollection(ClassBody body)
        {
            List <ReadOnlyClassField> constants = new List <ReadOnlyClassField>();
            List <ReadOnlyClassField> fields    = new List <ReadOnlyClassField>();

            foreach (ClassField classField in body.Fields)
            {
                ReadOnlyClassField field = new ReadOnlyClassField(classField);
                fields.Add(field);
            }

            this.constants = constants;
            this.fields    = fields;
        }
Esempio n. 15
0
 private void InitializeEvents(ClassBody classBody, List <ReadOnlyClassEvent> events, List <ReadOnlyClassEvent> eventProperties)
 {
     foreach (ClassEvent classEvent in classBody.Events)
     {
         ReadOnlyClassEvent @event = new ReadOnlyClassEvent(classEvent);
         if (classEvent.IsEventProperty)
         {
             eventProperties.Add(@event);
         }
         else
         {
             events.Add(@event);
         }
     }
 }
 public CarFactory()
 {
     GetParts = new CarParts();
     GetBody  = new ClassBody();
 }
 public ReadOnlyClassIndexerCollection(ClassBody body)
 {
     indexers = body.Indexers.ToArray(indexer => new ReadOnlyClassIndexer(indexer));
     explicitInterfaceIndexers = body.ExplicitInterfaceIndexers.ToArray(indexer => new ReadOnlyExplicitInterfaceIndexer(indexer));
 }
Esempio n. 18
0
 public virtual void  Visit(ClassBody body, TContext context)
 {
     Visit(body.Body, context);
 }
 public ReadOnlyClassPropertyCollection(ClassBody body)
 {
     properties = body.Properties.ToArray(property => new ReadOnlyClassProperty(property));
     explicitInterfaceProperties = body.ExplicitInterfaceProperties.ToArray(property => new ReadOnlyExplicitInterfaceProperty(property));
 }
Esempio n. 20
0
 public ReadOnlyClassMethodCollection(ClassBody body)
 {
     methods = body.Methods.ToArray(method => new ReadOnlyClassMethod(method));
     explicitInterfaceMethods = body.ExplicitInterfaceMethods.ToArray(method => new ReadOnlyExplicitInterfaceMethod(method));
 }
Esempio n. 21
0
 public ReadOnlyClassNestedClassCollection(ClassBody classBody)
 {
     classes = classBody.NestedClasses.ToArray(@class => new ReadOnlyClassNestedClass(@class));
 }
Esempio n. 22
0
 public virtual void VistClassBody(ClassBody classBody)
 {
 }
 public ReadOnlyClassNestedStructCollection(ClassBody classBody)
 {
     structs = classBody.NestedStructs.ToArray(@struct => new ReadOnlyClassNestedStruct(@struct));
 }
Esempio n. 24
0
 protected internal override void VisitClassBody(ClassBody classBody)
 {
     VisitingClassBody?.Invoke(this, classBody);
     base.VisitClassBody(classBody);
     VisitedClassBody?.Invoke(this, classBody);
 }
Esempio n. 25
0
 protected virtual void VisitClassBody(ClassBody classBody)
 {
 }
Esempio n. 26
0
 protected override void VisitClassBody(ClassBody classBody)
 {
     using (StartNodeObject(classBody))
         Member("body", classBody.Body);
 }
Esempio n. 27
0
 void InitializeDocument()
 {
     body   = new ClassBody();
     footer = new ClassFooter();
     title  = new ClassTitle();
 }