提交 c5a85857 编写于 作者: K Kevin_H

Refactor (move) some internal helpers... (changeset 1330757)

上级 c8ae3dc4
......@@ -1203,19 +1203,6 @@ public static ExpressionSyntax ParseExpression(string text, int offset = 0, Pars
}
}
internal static ExpressionSyntax ParseDebuggerExpression(SourceText text, bool consumeFullText = true)
{
using (var lexer = new InternalSyntax.Lexer(text, CSharpParseOptions.Default))
using (var parser = new InternalSyntax.LanguageParser(lexer, oldTree: null, changes: null, lexerMode: InternalSyntax.LexerMode.DebuggerSyntax))
{
var node = parser.ParseExpression();
if (consumeFullText) node = parser.ConsumeUnexpectedTokens(node);
var parent = InternalSyntax.SyntaxFactory.ExpressionStatement(node, InternalSyntax.SyntaxFactory.Token(SyntaxKind.SemicolonToken));
var syntaxTree = CSharpSyntaxTree.Create((ExpressionStatementSyntax)parent.CreateRed(), text);
return ((ExpressionStatementSyntax)syntaxTree.GetRoot()).Expression;
}
}
/// <summary>
/// Parse a StatementSyntaxNode using grammar rule for statements.
/// </summary>
......
......@@ -8,7 +8,6 @@
Imports System.Threading
Imports System.Text
Imports Microsoft.CodeAnalysis.Text
Imports Microsoft.CodeAnalysis.VisualBasic.Symbols
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts
Imports InternalSyntax = Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax
......@@ -176,29 +175,6 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Using
End Function
''' <summary>
''' Parse a debugger expression (e.g. possibly including pseudo-variables).
''' </summary>
''' <param name="text">The input string</param>
Friend Shared Function ParseDebuggerExpression(text As SourceText, Optional consumeFullText As Boolean = True) As ExpressionSyntax
Using scanner As New InternalSyntax.Scanner(text, VisualBasicParseOptions.Default, isScanningForExpressionCompiler:=True) ' NOTE: Default options should be enough
Using p = New InternalSyntax.Parser(scanner)
p.GetNextToken()
Dim node = p.ParseExpression()
If consumeFullText Then node = p.ConsumeUnexpectedTokens(node)
Dim statement = InternalSyntax.SyntaxFactory.PrintStatement(New InternalSyntax.PunctuationSyntax(SyntaxKind.QuestionToken, "?", Nothing, Nothing), node)
Dim compilationUnit = InternalSyntax.SyntaxFactory.CompilationUnit(
options:=Nothing,
[imports]:=Nothing,
attributes:=Nothing,
members:=InternalSyntax.SyntaxList.List(statement),
endOfFileToken:=InternalSyntax.SyntaxFactory.EndOfFileToken)
Dim syntaxTree = VisualBasicSyntaxTree.Create(DirectCast(compilationUnit.CreateRed(Nothing, 0), CompilationUnitSyntax))
Return DirectCast(DirectCast(syntaxTree.GetRoot(), CompilationUnitSyntax).Members.Single(), PrintStatementSyntax).Expression
End Using
End Using
End Function
''' <summary>
''' Parse an executable statement.
''' </summary>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册