From 868a68179fad42f33dbb22b00409dd209bf264a3 Mon Sep 17 00:00:00 2001 From: xieguigang Date: Thu, 25 Jun 2020 22:10:19 +0800 Subject: [PATCH] linq query expression is break by new line --- LINQ/LINQ/LINQ.vbproj | 2 +- LINQ/LINQ/Language/Tokenizer.vb | 2 ++ LINQ/LINQ/Language/Tokens.vb | 4 ++++ LINQ/LINQ/Script/Builders/BinaryBuilder.vb | 3 +++ LINQ/LINQ/Script/Builders/Module1.vb | 3 --- LINQ/LINQ/Script/SyntaxImplements.vb | 4 ++++ LINQ/LINQ/test/Program.vb | 6 +++++- 7 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 LINQ/LINQ/Script/Builders/BinaryBuilder.vb delete mode 100644 LINQ/LINQ/Script/Builders/Module1.vb diff --git a/LINQ/LINQ/LINQ.vbproj b/LINQ/LINQ/LINQ.vbproj index 8efec25..18dee2d 100644 --- a/LINQ/LINQ/LINQ.vbproj +++ b/LINQ/LINQ/LINQ.vbproj @@ -121,7 +121,7 @@ - + diff --git a/LINQ/LINQ/Language/Tokenizer.vb b/LINQ/LINQ/Language/Tokenizer.vb index ec20ef9..a08aec0 100644 --- a/LINQ/LINQ/Language/Tokenizer.vb +++ b/LINQ/LINQ/Language/Tokenizer.vb @@ -81,6 +81,8 @@ Namespace Language Else Return Nothing End If + ElseIf c = ASCII.CR OrElse c = ASCII.LF Then + Return New Token(Tokens.Terminator, vbCrLf) ElseIf c = "<"c OrElse c = ">"c OrElse c = "="c Then Return createToken(bufferNext:=c) ElseIf c = "["c OrElse c = "("c Then diff --git a/LINQ/LINQ/Language/Tokens.vb b/LINQ/LINQ/Language/Tokens.vb index 07e59df..022a90b 100644 --- a/LINQ/LINQ/Language/Tokens.vb +++ b/LINQ/LINQ/Language/Tokens.vb @@ -24,6 +24,10 @@ [Boolean] Comma + ''' + ''' 与VB语言类似的,是以换行作为语句结束 + ''' + Terminator Comment End Enum diff --git a/LINQ/LINQ/Script/Builders/BinaryBuilder.vb b/LINQ/LINQ/Script/Builders/BinaryBuilder.vb new file mode 100644 index 0000000..bb745f1 --- /dev/null +++ b/LINQ/LINQ/Script/Builders/BinaryBuilder.vb @@ -0,0 +1,3 @@ +Module BinaryBuilder + +End Module diff --git a/LINQ/LINQ/Script/Builders/Module1.vb b/LINQ/LINQ/Script/Builders/Module1.vb deleted file mode 100644 index 4d3166b..0000000 --- a/LINQ/LINQ/Script/Builders/Module1.vb +++ /dev/null @@ -1,3 +0,0 @@ -Module Module1 - -End Module diff --git a/LINQ/LINQ/Script/SyntaxImplements.vb b/LINQ/LINQ/Script/SyntaxImplements.vb index ec1222f..d9bd151 100644 --- a/LINQ/LINQ/Script/SyntaxImplements.vb +++ b/LINQ/LINQ/Script/SyntaxImplements.vb @@ -10,5 +10,9 @@ Namespace Script Public Function PopulateQueryExpressions(tokens As IEnumerable(Of Token)) As IEnumerable(Of Expression) End Function + + Public Function ParseExpression(tokens As IEnumerable(Of Token)) As Expression + + End Function End Module End Namespace \ No newline at end of file diff --git a/LINQ/LINQ/test/Program.vb b/LINQ/LINQ/test/Program.vb index 07eb348..b65b410 100644 --- a/LINQ/LINQ/test/Program.vb +++ b/LINQ/LINQ/test/Program.vb @@ -5,7 +5,11 @@ End Sub Sub parserTest() - Dim script = "from x as double in [1,2,3,4,5,6,7,8,9] where x > 5 select x ^ 2 # this is comment text" + Dim script = " +from x as double in [1,2,3,4,5,6,7,8,9] # this is comment text +where x > 5 +select x ^ 2 +" Dim tokens = LINQ.Language.GetTokens(script).ToArray Pause()