Пример #1
0
        public override void EnterTypeName([NotNull] TypeNameContext context)
        {
            if (startVar)
            {
                typename = context.Start.Text;   //if type name hit twice its an array
                if (numMatch.IsMatch(typename))
                {
                    Match numberMatch = numMatch.Match(typename);
                    typename = numberMatch.Groups[1].ToString();
                    try
                    {
                        typesize = Int32.Parse(numberMatch.Groups[2].ToString());
                    }
                    catch
                    {
                        errorList.Add("Error parsing number for " + typename);
                    }
                }
                else
                {
                    typesize = 256;
                }
                int    chkindex = context.Start.StopIndex + 1;
                string txtat    = context.Start.InputStream.GetText(new Interval(chkindex, chkindex));


                if (txtat.Equals("["))
                {
                    isarray = true;
                }
            }
        }
Пример #2
0
        internal void Add(TypeName name)
        {
            if (!allNames.Add(name))
            {
                return;
            }

            var identity = name.NameIdentity;

            if (badIdentities.Contains(identity))
            {
                badNames.Add(name);
                return;
            }

            TypeNameContext context;

            if (!identityToContext.TryGetValue(identity, out context))
            {
                context = new TypeNameContext(name.Namespace.FullName);
                context.Names.Add(name);
                identityToContext.Add(identity, context);
                return;
            }

            if (context.Namespace == name.Namespace.FullName)
            {
                context.Names.Add(name);
                return;
            }

            badIdentities.Add(identity);
            foreach (var n in context.Names)
            {
                badNames.Add(n);
            }
            badNames.Add(name);
            identityToContext.Remove(identity);
        }