Beispiel #1
0
 private CustomDefinition GetDefinition(DefSpecifierNode defSpecifier)
 {
     for (NameSpaceDefinition nameSpace = Parser.RootNameSpace;
          defSpecifier.NextSpecifier != null;
          defSpecifier = defSpecifier.NextSpecifier)
     {
         if (nameSpace.IsContainCustomDefinition(defSpecifier.Content) &&
             nameSpace.IsContainNameSpace(defSpecifier.Content))
         {
             if (defSpecifier.NextSpecifier == null)
             {
                 return(nameSpace.GetClassDefinition(defSpecifier.Content));
             }
         }
         if (nameSpace.IsContainCustomDefinition(defSpecifier.Content))
         {
             return(nameSpace.GetClassDefinition(defSpecifier.Content));
         }
         if (nameSpace.IsContainNameSpace(defSpecifier.Content))
         {
             nameSpace = nameSpace.GetNameSpaceDefinition(defSpecifier.Content);
         }
     }
     return(null); //TODO:报错 最后一个不是类型
 }
Beispiel #2
0
        private DefSpecifierNode ParseDefinitionSpecifier()
        {
            DefSpecifierNode defSpecifier = _syntaxFactory.GetDefSpecifierNode(_lexer.NextTokenContent);
            DefSpecifierNode next         = defSpecifier;

            _lexer.Next();
            while (_lexer.NextTokenContent == ".")
            {
                _lexer.MatchNext(TokenType.Identifer); //TODO:使用Match函数报错
                next.NextSpecifier = _syntaxFactory.GetDefSpecifierNode(_lexer.NextTokenContent);
                next = next.NextSpecifier;
                _lexer.Next();
            }
            return(defSpecifier);
        }