Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="name"></param>
        /// <param name="span"></param>
        /// <returns></returns>
        public Declaration GetDeclaration(string name, ScopeSpan span)
        {
            if (_root == null)
            {
                return(null);
            }
            List <Declaration> foundDeclarations = new List <Declaration>();
            Declaration        declaration       = DeclarationHelper.BuildDeclaration(name, span);

            GetDeclarationsByName(_root, declaration, foundDeclarations);
            foundDeclarations.Sort(delegate(Declaration a, Declaration b)
            {
                if (a.Scope.StartPosition >= b.Scope.StartPosition &&
                    a.Scope.EndPosition <= b.Scope.EndPosition)
                {
                    return(-1);
                }
                else
                {
                    return(1);
                }
            });

            if (foundDeclarations.Count > 0)
            {
                return(foundDeclarations[0]);
            }

            return(null);
        }
Example #2
0
        internal static IdentifierSource ParseIdentifier(SnapshotPoint point)
        {
            int spanStart, spanEnd;

            for (spanEnd = point.Position; spanEnd < point.Snapshot.Length; ++spanEnd)
            {
                if (!char.IsLetterOrDigit(point.Snapshot[spanEnd]))
                {
                    break;
                }
            }

            for (spanStart = point.Position; spanStart > 0; --spanStart)
            {
                if (!char.IsLetterOrDigit(point.Snapshot[spanStart - 1]) &&
                    point.Snapshot[spanStart - 1] != '.' &&
                    point.Snapshot[spanStart - 1] != ':')
                {
                    break;
                }
            }
            string    id   = point.Snapshot.GetText().Substring(spanStart, spanEnd - spanStart);
            ScopeSpan span = new ScopeSpan(spanStart, point.GetContainingLine().LineNumber, spanEnd, point.GetContainingLine().LineNumber);

            return(new IdentifierSource(id, span));
        }
Example #3
0
 public bool IsInScope(int position, ScopeSpan span)
 {
     if (position >= span.StartPosition &&
         position <= span.EndPosition)
     {
         return(true);
     }
     return(false);
 }
Example #4
0
 public IdentifierSource(string id, ScopeSpan span)
 {
     Identifier = id;
     Span       = span;
     NameSpaces = null;
 }
Example #5
0
 public IdentifierSource(string id, ScopeSpan span, List <IdentifierSource> nameSpaces)
 {
     Identifier = id;
     Span       = span;
     NameSpaces = nameSpaces;
 }