コード例 #1
0
ファイル: Stage1Visitor.cs プロジェクト: kabili207/nya-lang
        public override object VisitCompilation_unit([NotNull] NyaParser.Compilation_unitContext context)
        {
            _currentNamespace = "";
            object r = base.VisitCompilation_unit(context);

            _currentNamespace = null;
            return(r);
        }
コード例 #2
0
        public override object VisitCompilation_unit([NotNull] NyaParser.Compilation_unitContext context)
        {
            _scopeManager.Push(ScopeLevel.Global);

            foreach (var descriptor in ClassDescriptors)
            {
                _scopeManager.Push(ScopeLevel.Class);

                _currTypeBuilder = descriptor.Builder;

                foreach (var child in descriptor.Context.children.Where(x =>
                                                                        !(x is NyaParser.Method_declarationContext) &&
                                                                        !(x is NyaParser.Interface_method_declarationContext)))
                {
                    Visit(child);
                }

                foreach (var method in descriptor.Methods)
                {
                    VisitMethod(method);
                }

                // TODO: Check constructor visibility

                _currTypeBuilder.CreateType();

                _currTypeBuilder = null;

                _scopeManager.Pop();
            }

            foreach (var child in context.children.Where(x => !(x is NyaParser.Class_declarationContext)))
            {
                Visit(child);
            }

            foreach (var method in GlobalMethods)
            {
                VisitMethod(method);
            }

            ModuleBuilder.CreateGlobalFunctions();

            SetAssemblyVersionInfo();

            _scopeManager.Pop();
            return(null);
        }
コード例 #3
0
ファイル: Stage0Visitor.cs プロジェクト: kabili207/nya-lang
        public override object VisitCompilation_unit([NotNull] NyaParser.Compilation_unitContext context)
        {
            VisitChildren(context);

            return(null);
        }