本文整理汇总了C#中IParserContext.GetNamespaceList方法的典型用法代码示例。如果您正苦于以下问题:C# IParserContext.GetNamespaceList方法的具体用法?C# IParserContext.GetNamespaceList怎么用?C# IParserContext.GetNamespaceList使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IParserContext
的用法示例。
在下文中一共展示了IParserContext.GetNamespaceList方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Resolve
public ResolveResult Resolve(IParserContext parserService, string expression, int caretLineNumber, int caretColumn, string fileName, string fileContent)
{
Console.WriteLine("Start Resolving");
if (expression == null) {
return null;
}
expression = expression.TrimStart(null);
if (expression == "") {
return null;
}
if (expression.StartsWith("using ")) {
// expression[expression.Length - 1] != '.'
// the period that causes this Resove() is not part of the expression
if (expression[expression.Length - 1] == '.') {
return null;
}
int i;
for (i = expression.Length - 1; i >= 0; --i) {
if (!(Char.IsLetterOrDigit(expression[i]) || expression[i] == '_' || expression[i] == '.')) {
break;
}
}
// no Identifier before the period
if (i == expression.Length - 1) {
return null;
}
string t = expression.Substring(i + 1);
// Console.WriteLine("in Using Statement");
string[] namespaces = parserService.GetNamespaceList(t);
if (namespaces == null || namespaces.Length <= 0) {
return null;
}
return new ResolveResult(namespaces);
}
Console.WriteLine("Not in Using");
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");
//.........这里部分代码省略.........