Esempio n. 1
0
        Name ParseNestedName(ref int p)
        {
            var q  = ParseCVQualifiers(ref p);
            var t  = Symbol.Text;
            var nn = new NestedName {
                Qualifiers = q
            };

            while (t[p] != 'E')
            {
                if (t[p] == 'I')
                {
                    p++;
                    nn.Names.Add(ParseTemplateArgs(ref p));
                }
                else if (t[p] == 'S' && p + 1 < t.Length && t[p + 1] != 't')
                {
                    p++;
                    nn.Names.Add((Name)ParseSubstitution(ref p));
                }
                else if (t[p] == 'L')
                {
                    // IDK
                    p++;
                }
                else
                {
                    nn.Names.Add(ParseUnqualifiedName(ref p));
                    subs.Add(nn.Names.Last());
                }
            }
            p++;
            return(nn);
        }
Esempio n. 2
0
        protected JavaTypeModel(JavaPackage javaPackage, string javaNestedName, string javaVisibility, bool javaAbstract, bool javaFinal, string deprecated, bool javaStatic, string jniSignature)
        {
            Package              = javaPackage;
            NestedName           = javaNestedName.Replace('$', '.');
            Name                 = NestedName.LastSubset('.');
            Visibility           = javaVisibility;
            IsAbstract           = javaAbstract;
            IsFinal              = javaFinal;
            Deprecated           = deprecated;
            IsStatic             = javaStatic;
            ExtendedJniSignature = jniSignature;

            TypeParameters = new JavaTypeParameters(this);
        }
Esempio n. 3
0
        public static IParsingResultExtended Parse(ParsingContext context)
        {
            RewindState            rewind = context.RewindState;
            IParsingResultExtended name   = NestedName.Parse(context);

            if (name != null)
            {
                return(name);
            }

            name = UnscopedName.Parse(context);
            if (name != null)
            {
                if (context.Parser.Peek == 'I')
                {
                    context.SubstitutionTable.Add(name);
                    TemplateArgs args = TemplateArgs.Parse(context);

                    if (args == null)
                    {
                        context.Rewind(rewind);
                        return(null);
                    }

                    return(new UnscopedTemplate(name, args));
                }
                else
                {
                    return(name);
                }
            }

            name = UnscopedTemplateName.Parse(context);
            if (name != null)
            {
                TemplateArgs args = TemplateArgs.Parse(context);

                if (args == null)
                {
                    context.Rewind(rewind);
                    return(null);
                }

                return(new UnscopedTemplate(name, args));
            }

            return(LocalName.Parse(context));
        }