Ejemplo n.º 1
0
        private static UnifiedSet <UnifiedModifier> LookupModifiers(Modifiers mods)
        {
            Contract.Ensures(
                Contract.Result <UnifiedSet <UnifiedModifier> >() != null);

            var pairs = new[] {
                new { Mod = Modifiers.Public, Name = "public" },
                new { Mod = Modifiers.Protected, Name = "protected" },
                new { Mod = Modifiers.Internal, Name = "internal" },
                new { Mod = Modifiers.Abstract, Name = "abstract" },
                new { Mod = Modifiers.Private, Name = "private" },
                new { Mod = Modifiers.Partial, Name = "partial" },
                new { Mod = Modifiers.Static, Name = "static" },
                new { Mod = Modifiers.Sealed, Name = "sealed" },
                new { Mod = Modifiers.Const, Name = "const" },
                new { Mod = Modifiers.Readonly, Name = "readonly" },
                new { Mod = Modifiers.New, Name = "new" },
                new { Mod = Modifiers.Override, Name = "override" },
                new { Mod = Modifiers.Virtual, Name = "virtual" },
                new { Mod = Modifiers.Extern, Name = "extern" },
                new { Mod = Modifiers.Async, Name = "async" },
                new { Mod = Modifiers.Unsafe, Name = "unsafe" },
                new { Mod = Modifiers.Volatile, Name = "volatile" },
            };
            var uMods =
                from pair in pairs
                where (mods & pair.Mod) != 0
                select UnifiedModifier.Create(pair.Name);

            return(UnifiedSet <UnifiedModifier> .Create(uMods));
        }
Ejemplo n.º 2
0
        public static UnifiedModifier CreateTypeQualifier(XElement node)
        {
            Contract.Requires(node != null);
            Contract.Requires(node.Name() == "type_qualifier");

            /* type_qualifier
             * : 'const'
             * | 'volatile'
             */

            return(UnifiedModifier.Create(node.FirstElement().Name()));
        }
Ejemplo n.º 3
0
        private static UnifiedModifier LookupModifier(FieldDirection dir)
        {
            switch (dir)
            {
            case FieldDirection.Out:
                return(UnifiedModifier.Create("out"));

            case FieldDirection.Ref:
                return(UnifiedModifier.Create("ref"));
            }
            return(null);
        }
Ejemplo n.º 4
0
        public static UnifiedModifier CreateStorageClassSpecifier(XElement node)
        {
            Contract.Requires(node != null);
            Contract.Requires(node.Name() == "storage_class_specifier");

            /*
             * storage_class_specifier
             * : 'extern'
             * | 'static'
             * | 'auto'
             * | 'register'
             */
            return(UnifiedModifier.Create(node.FirstElement().Value));
        }
Ejemplo n.º 5
0
        private static UnifiedModifier LookupModifier(ParameterModifier mod)
        {
            switch (mod)
            {
            case ParameterModifier.Out:
                return(UnifiedModifier.Create("out"));

            case ParameterModifier.Params:
                return(UnifiedModifier.Create("params"));

            case ParameterModifier.Ref:
                return(UnifiedModifier.Create("ref"));

            case ParameterModifier.This:
                return(UnifiedModifier.Create("this"));
            }
            return(null);
        }
Ejemplo n.º 6
0
        public UnifiedElement VisitTypeParameterDeclaration(
            TypeParameterDeclaration dec, object data)
        {
            var type      = UnifiedType.Create(dec.Name);
            var modifiers = null as UnifiedSet <UnifiedModifier>;

            switch (dec.Variance)
            {
            case VarianceModifier.Contravariant:
                modifiers = UnifiedModifier.Create("in").ToSet();
                break;

            case VarianceModifier.Covariant:
                modifiers = UnifiedModifier.Create("out").ToSet();
                break;
            }
            return(UnifiedGenericParameter.Create(
                       type, /*constraint*/ null, modifiers));
        }
Ejemplo n.º 7
0
        public static UnifiedSet <UnifiedParameter> CreateParameterTypeList(
            XElement node)
        {
            Contract.Requires(node != null);
            Contract.Requires(node.Name() == "parameter_type_list");

            /*
             * parameter_type_list
             * : parameter_list (',' '...')?
             */
            var parameters = CreateParameterList(node.Element("parameter_list"));

            // TODO 可変長引数はmodifierなのか確認
            if (node.LastElement().Value == "...")
            {
                parameters.Add(
                    UnifiedParameter.Create(
                        modifiers:
                        UnifiedSet <UnifiedModifier> .Create(
                            UnifiedModifier.Create("..."))));
            }
            return(parameters);
        }
 public override bool Visit(UnifiedModifier element, VisitorArgument arg)
 {
     Writer.Write(element.Name);
     return false;
 }
 //修飾子 : JavaScriptでは出現しない
 public override bool Visit(UnifiedModifier element, VisitorArgument arg)
 {
     return false;
 }
 public override bool Visit(UnifiedModifier element, VisitorArgument arg)
 {
     Writer.Write(element.Name);
     return(false);
 }
Ejemplo n.º 11
0
 //修飾子 : JavaScriptでは出現しない
 public override bool Visit(UnifiedModifier element, VisitorArgument arg)
 {
     return(false);
 }