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:报错 最后一个不是类型 }
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); }