本文整理汇总了C#中IParserContext.GetNamespaceContents方法的典型用法代码示例。如果您正苦于以下问题:C# IParserContext.GetNamespaceContents方法的具体用法?C# IParserContext.GetNamespaceContents怎么用?C# IParserContext.GetNamespaceContents使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IParserContext
的用法示例。
在下文中一共展示了IParserContext.GetNamespaceContents方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CtrlSpace
public LanguageItemCollection CtrlSpace(IParserContext parserService, int caretLine, int caretColumn, string fileName)
{
LanguageItemCollection result = new LanguageItemCollection();
this.parserService = parserService;
IParseInformation parseInfo = parserService.GetParseInformation(fileName);
JRefactory.Parser.AST.CompilationUnit fileCompilationUnit = parseInfo.MostRecentCompilationUnit.Tag as JRefactory.Parser.AST.CompilationUnit;
if (fileCompilationUnit == null) {
return null;
}
lookupTableVisitor = new LookupTableVisitor();
lookupTableVisitor.Visit(fileCompilationUnit, null);
JavaVisitor cSharpVisitor = new JavaVisitor ();
cu = (ICompilationUnit)cSharpVisitor.Visit(fileCompilationUnit, null);
if (cu != null) {
callingClass = GetInnermostClass();
// Console.WriteLine("CallingClass is " + callingClass == null ? "null" : callingClass.Name);
}
foreach (string name in lookupTableVisitor.variables.Keys) {
ArrayList variables = (ArrayList)lookupTableVisitor.variables[name];
if (variables != null && variables.Count > 0) {
foreach (LocalLookupVariable v in variables) {
if (IsInside(new Point(caretColumn, caretLine), v.StartPos, v.EndPos)) {
result.Add(v);
break;
}
}
}
}
if (callingClass != null) {
result = ListMembers(result, callingClass);
}
string n = "";
result.AddRange(parserService.GetNamespaceContents(n));
foreach (IUsing u in cu.Usings) {
if (u != null && (u.Region == null || u.Region.IsInside(caretLine, caretColumn))) {
foreach (string name in u.Usings) {
result.AddRange(parserService.GetNamespaceContents(name));
}
foreach (string alias in u.Aliases.Keys) {
result.Add(alias);
}
}
}
return result;
}
示例2: Resolve
//.........这里部分代码省略.........
this.caretLine = caretLineNumber;
this.caretColumn = caretColumn;
this.parserService = parserService;
IParseInformation parseInfo = parserService.GetParseInformation(fileName);
JRefactory.Parser.AST.CompilationUnit fileCompilationUnit = parseInfo.MostRecentCompilationUnit.Tag as JRefactory.Parser.AST.CompilationUnit;
if (fileCompilationUnit == null) {
// JRefactory.Parser.Parser fileParser = new JRefactory.Parser.Parser();
// fileParser.Parse(new Lexer(new StringReader(fileContent)));
Console.WriteLine("!Warning: no parseinformation!");
return null;
}
/*
//// try to find last expression in original string, it could be like " if (act!=null) act"
//// in this case only "act" should be parsed as expression
!!is so!! don't change things that work
Expression expr=null; // tentative expression
Lexer l=null;
JRefactory.Parser.Parser p = new JRefactory.Parser.Parser();
while (expression.Length > 0) {
l = new Lexer(new StringReader(expression));
expr = p.ParseExpression(l);
if (l.LookAhead.val != "" && expression.LastIndexOf(l.LookAhead.val) >= 0) {
if (expression.Substring(expression.LastIndexOf(l.LookAhead.val) + l.LookAhead.val.Length).Length > 0)
expression=expression.Substring(expression.LastIndexOf(l.LookAhead.val) + l.LookAhead.val.Length).Trim();
else {
expression=l.LookAhead.val.Trim();
l=new Lexer(new StringReader(expression));
expr=p.ParseExpression(l);
break;
}
} else {
if (l.Token.val!="" || expr!=null) break;
}
}
//// here last subexpression should be fixed in expr
if it should be changed in expressionfinder don't fix it here
*/
JRefactory.Parser.Parser p = new JRefactory.Parser.Parser();
Lexer l = new Lexer(new StringReader(expression));
Expression expr = p.ParseExpression(l);
if (expr == null) {
return null;
}
lookupTableVisitor = new LookupTableVisitor();
lookupTableVisitor.Visit(fileCompilationUnit, null);
TypeVisitor typeVisitor = new TypeVisitor(this);
JavaVisitor cSharpVisitor = new JavaVisitor();
cu = (ICompilationUnit)cSharpVisitor.Visit(fileCompilationUnit, null);
if (cu != null) {
callingClass = GetInnermostClass();
//Console.WriteLine("CallingClass is " + callingClass == null ? "null" : callingClass.Name);
}
//Console.WriteLine("expression = " + expr.ToString());
IReturnType type = expr.AcceptVisitor(typeVisitor, null) as IReturnType;
//Console.WriteLine("type visited");
if (type == null || type.PointerNestingLevel != 0) {
// Console.WriteLine("Type == null || type.PointerNestingLevel != 0");
if (type != null) {
//Console.WriteLine("PointerNestingLevel is " + type.PointerNestingLevel);
} else {
//Console.WriteLine("Type == null");
}
//// when type is null might be file needs to be reparsed - some vars were lost
fileCompilationUnit=parserService.ParseFile(fileName, fileContent).MostRecentCompilationUnit.Tag
as JRefactory.Parser.AST.CompilationUnit;
lookupTableVisitor.Visit(fileCompilationUnit,null);
cu = (ICompilationUnit)cSharpVisitor.Visit(fileCompilationUnit, null);
if (cu != null) {
callingClass = GetInnermostClass();
}
type=expr.AcceptVisitor(typeVisitor,null) as IReturnType;
if (type==null) return null;
}
if (type.ArrayDimensions != null && type.ArrayDimensions.Length > 0) {
type = new ReturnType("System.Array");
}
Console.WriteLine("Here: Type is " + type.FullyQualifiedName);
IClass returnClass = SearchType(type.FullyQualifiedName, cu);
if (returnClass == null) {
// Try if type is Namespace:
string n = SearchNamespace(type.FullyQualifiedName, cu);
if (n == null) {
return null;
}
ArrayList content = parserService.GetNamespaceContents(n);
ArrayList classes = new ArrayList();
for (int i = 0; i < content.Count; ++i) {
if (content[i] is IClass) {
classes.Add((IClass)content[i]);
}
}
string[] namespaces = parserService.GetNamespaceList(n);
return new ResolveResult(namespaces, classes);
}
Console.WriteLine("Returning Result!");
return new ResolveResult(returnClass, ListMembers(new ArrayList(), returnClass));
}