Skip to content

Commit 2f5277f

Browse files
committed
Balanced parenthesis
1 parent 80141e9 commit 2f5277f

33 files changed

+396
-206
lines changed

SimpleStateMachine.StructuralSearch.Action/SimpleStateMachine.StructuralSearch.Action.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" />
1616
<PackageReference Include="Microsoft.Extensions.FileSystemGlobbing" Version="6.0.0" />
1717
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.1" />
18+
<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="6.0.0" />
1819
</ItemGroup>
1920

2021
</Project>

SimpleStateMachine.StructuralSearch.sln

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio Version 16
4-
VisualStudioVersion = 16.0.31702.278
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.2.32505.173
55
MinimumVisualStudioVersion = 10.0.40219.1
6-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleStateMachine.StructuralSearch", "src\SimpleStateMachine.StructuralSearch\SimpleStateMachine.StructuralSearch.csproj", "{637E3AE3-3A5D-4A0A-9A67-A6EEFCE4ED7C}"
6+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleStateMachine.StructuralSearch", "src\SimpleStateMachine.StructuralSearch\SimpleStateMachine.StructuralSearch.csproj", "{637E3AE3-3A5D-4A0A-9A67-A6EEFCE4ED7C}"
77
EndProject
8-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleStateMachine.StructuralSearch.Tests", "src\SimpleStateMachine.StructuralSearch.Tests\SimpleStateMachine.StructuralSearch.Tests.csproj", "{CA3DDEC3-4C01-456C-8079-2CF23767466D}"
8+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleStateMachine.StructuralSearch.Tests", "src\SimpleStateMachine.StructuralSearch.Tests\SimpleStateMachine.StructuralSearch.Tests.csproj", "{CA3DDEC3-4C01-456C-8079-2CF23767466D}"
99
EndProject
10-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleStateMachine.StructuralSearch.Sandbox", "src\SimpleStateMachine.StructuralSearch.Sandbox\SimpleStateMachine.StructuralSearch.Sandbox.csproj", "{263ABF7D-9728-4224-A584-5412E158D4BB}"
10+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleStateMachine.StructuralSearch.Sandbox", "src\SimpleStateMachine.StructuralSearch.Sandbox\SimpleStateMachine.StructuralSearch.Sandbox.csproj", "{263ABF7D-9728-4224-A584-5412E158D4BB}"
1111
EndProject
12-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleStateMachine.StructuralSearch.Action", "SimpleStateMachine.StructuralSearch.Action\SimpleStateMachine.StructuralSearch.Action.csproj", "{E22FFF76-E929-4E01-B2B3-4B9283705EDE}"
12+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleStateMachine.StructuralSearch.Action", "SimpleStateMachine.StructuralSearch.Action\SimpleStateMachine.StructuralSearch.Action.csproj", "{E22FFF76-E929-4E01-B2B3-4B9283705EDE}"
1313
EndProject
1414
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{6CB879CC-E497-41C0-AEBD-864E9D3807A6}"
1515
ProjectSection(SolutionItems) = preProject
16-
Dockerfile = Dockerfile
1716
.dockerignore = .dockerignore
1817
.gitignore = .gitignore
18+
action.yml = action.yml
19+
Dockerfile = Dockerfile
20+
global.json = global.json
1921
LICENSE = LICENSE
2022
README.md = README.md
21-
global.json = global.json
22-
action.yml = action.yml
2323
EndProjectSection
2424
EndProject
2525
Global
@@ -28,10 +28,6 @@ Global
2828
Release|Any CPU = Release|Any CPU
2929
EndGlobalSection
3030
GlobalSection(ProjectConfigurationPlatforms) = postSolution
31-
{F5C5620F-0273-4142-8E66-6D7C156976AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
32-
{F5C5620F-0273-4142-8E66-6D7C156976AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
33-
{F5C5620F-0273-4142-8E66-6D7C156976AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
34-
{F5C5620F-0273-4142-8E66-6D7C156976AF}.Release|Any CPU.Build.0 = Release|Any CPU
3531
{637E3AE3-3A5D-4A0A-9A67-A6EEFCE4ED7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
3632
{637E3AE3-3A5D-4A0A-9A67-A6EEFCE4ED7C}.Debug|Any CPU.Build.0 = Debug|Any CPU
3733
{637E3AE3-3A5D-4A0A-9A67-A6EEFCE4ED7C}.Release|Any CPU.ActiveCfg = Release|Any CPU

src/SimpleStateMachine.StructuralSearch.Sandbox/Program.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,12 @@ internal static class Program
2121
{
2222
static void Main(string[] args)
2323
{
24-
24+
25+
var pr = Parser.String("var").Trim();
26+
var str = pr.ParseOrThrow("var");
27+
str = pr.ParseOrThrow(" var");
28+
str = pr.ParseOrThrow("var ");
29+
str = pr.ParseOrThrow(" var ");
2530
var source = "test;;;test;;;.";
2631
var parser = Parser.OneOf(Parser<char>.Any.ThenReturn(Unit.Value), Parser<char>.End);
2732

src/SimpleStateMachine.StructuralSearch.Sandbox/SimpleStateMachine.StructuralSearch.Sandbox.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net5.0</TargetFramework>
5+
<TargetFramework>net6.0</TargetFramework>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<Nullable>enable</Nullable>
88
<LangVersion>10</LangVersion>
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
using System.Collections.Generic;
2+
using System.IO;
3+
using System.Text.Json;
4+
5+
namespace SimpleStateMachine.StructuralSearch.Tests.Examples;
6+
7+
public class Common
8+
{
9+
public int Method1()
10+
{
11+
var temp = 5;
12+
13+
if(temp == 6)
14+
return 7;
15+
else
16+
return 8;
17+
}
18+
19+
public void Method2()
20+
{
21+
int? result;
22+
int? temp1 = 5;
23+
int? temp2 = 5;
24+
if(temp1 is null)
25+
result = temp2;
26+
else
27+
result = temp1;
28+
}
29+
30+
public void Method3()
31+
{
32+
int result;
33+
int? temp1 = 5;
34+
int? temp2 = 5;
35+
if(temp1 is null)
36+
result = temp2.Value;
37+
else
38+
result = temp1.Value;
39+
}
40+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
using System.Collections.Generic;
2+
using System.IO;
3+
using System.Text.Json;
4+
5+
namespace SimpleStateMachine.StructuralSearch.Tests.Examples;
6+
7+
public class Common2
8+
{
9+
public int Method1()
10+
{
11+
var temp = 5;
12+
13+
return temp == 6 ? 7 : 8;
14+
}
15+
16+
public void Method2()
17+
{
18+
int? result;
19+
int? temp1 = 5;
20+
int? temp2 = 5;
21+
result = temp1 ?? temp2;
22+
}
23+
24+
public void Method3()
25+
{
26+
int result;
27+
int? temp1 = 5;
28+
int? temp2 = 5;
29+
result = temp1 is null ? temp2.Value : temp1.Value;
30+
}
31+
}

src/SimpleStateMachine.StructuralSearch.Tests/FindRuleParserTests.cs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ public class FindRuleParserTests
2828
[InlineData("$var$ Match $var$.Lenght")]
2929
[InlineData("$var$ Is Int")]
3030
[InlineData("$var$ Is DateTime")]
31-
3231
public void FindRuleExprParsingShouldBeSuccess(string ruleStr)
3332
{
3433
var rule = FindRuleParser.Expr.ParseOrThrow(ruleStr);
@@ -38,11 +37,24 @@ public void FindRuleExprParsingShouldBeSuccess(string ruleStr)
3837
}
3938

4039
[Theory]
41-
[InlineData("$var$ In \"Is\", \"==\", \"!=\", \"is not\"", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
42-
[InlineData("$var$ In (\"Is\", \"==\", \"!=\", \"is not\")", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
43-
[InlineData("Not ($var$ equals $var$.Lenght and $var$ StartsWith \"123\")", "Not $var$ equals $var$.Lenght and $var$ StartsWith \"123\"")]
44-
[InlineData("Not ($var$ equals $var$.Lenght)", "Not $var$ equals $var$.Lenght")]
45-
public void FindRuleExprParsingShouldBeEqualsCustomResult(string ruleStr, string customResult)
40+
[InlineData(0, "$var$ In \"Is\", \"==\", \"!=\", \"is not\"", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
41+
[InlineData(1, "$var$ In (\"Is\", \"==\", \"!=\", \"is not\")", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
42+
[InlineData(2, "$var$ In \"Is\",\"==\",\"!=\",\"is not\"", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
43+
[InlineData(3, "$var$ In (\"Is\",\"==\",\"!=\",\"is not\")", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
44+
[InlineData(4, "$var$ In(\"Is\",\"==\",\"!=\",\"is not\")", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
45+
[InlineData(5, "$var$ In ( \"Is\",\"==\",\"!=\",\"is not\" ) ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
46+
[InlineData(6, "$var$ In ( \"Is\",\"==\",\"!=\",\"is not\" )", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
47+
[InlineData(7, "$var$ In ( \"Is\",\"==\",\"!=\",\"is not\") ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
48+
[InlineData(8, "$var$ In (\"Is\",\"==\",\"!=\",\"is not\" ) ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
49+
[InlineData(9, "$var$ In (\"Is\",\"==\",\"!=\",\"is not\" )", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
50+
[InlineData(10, "$var$ In (\"Is\",\"==\",\"!=\",\"is not\") ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
51+
[InlineData(11, "$var$ In( \"Is\",\"==\",\"!=\",\"is not\" ) ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
52+
[InlineData(12, "$var$ In( \"Is\",\"==\",\"!=\",\"is not\" )", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
53+
[InlineData(13, "$var$ In( \"Is\",\"==\",\"!=\",\"is not\") ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
54+
[InlineData(14, "Not ($var$ equals $var$.Lenght and $var$ StartsWith \"123\")", "Not $var$ equals $var$.Lenght and $var$ StartsWith \"123\"")]
55+
[InlineData(15, "Not ($var$ equals $var$.Lenght)", "Not $var$ equals $var$.Lenght")]
56+
[InlineData(16, "$var$ In( \"Is\",\"==\",\"!=\",\"is not\" )", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
57+
public void FindRuleExprParsingShouldBeEqualsCustomResult(int number, string ruleStr, string customResult)
4658
{
4759
var rule = FindRuleParser.Expr.ParseOrThrow(ruleStr);
4860
var _ruleStr = rule.ToString()?.ToLower();

src/SimpleStateMachine.StructuralSearch.Tests/Mock/EmptyParsingContext.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,27 @@ public class EmptyParsingContext : IParsingContext
66
{
77
public IInput Input { get; }
88

9-
public bool TryGetPlaceholder(string name, out Placeholder value)
9+
public bool TryGetPlaceholder(string name, out IPlaceholder value)
1010
{
1111
throw new System.NotImplementedException();
1212
}
1313

14-
public void AddPlaceholder(Placeholder placeholder)
14+
public void AddPlaceholder(IPlaceholder placeholder)
1515
{
1616
throw new System.NotImplementedException();
1717
}
1818

19-
public Placeholder GetPlaceholder(string name)
19+
public IPlaceholder GetPlaceholder(string name)
2020
{
2121
return Placeholder.CreateEmpty(this, name, string.Empty);
2222
}
2323

24-
public IReadOnlyDictionary<string, Placeholder> SwitchOnNew()
24+
public IReadOnlyDictionary<string, IPlaceholder> SwitchOnNew()
2525
{
2626
throw new System.NotImplementedException();
2727
}
2828

29-
public void Set(IReadOnlyDictionary<string, Placeholder> placeholders)
29+
public void Set(IReadOnlyDictionary<string, IPlaceholder> placeholders)
3030
{
3131
throw new System.NotImplementedException();
3232
}

src/SimpleStateMachine.StructuralSearch.Tests/ParameterParserTests.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@ public class ParameterParserTests
77
{
88
[Theory]
99
[InlineData("\\\"132\\\"")]
10+
[InlineData("\\\"()(132)\\\"")]
11+
[InlineData("()(132)")]
12+
[InlineData("(132)")]
13+
[InlineData("()")]
14+
[InlineData(" ")]
15+
[InlineData("( )")]
16+
[InlineData("( )( )")]
1017
public void StringParameterParsingShouldBeSuccess(string str)
1118
{
1219
var parameter = ParametersParser.StringParameter.ParseOrThrow(str);
@@ -16,9 +23,15 @@ public void StringParameterParsingShouldBeSuccess(string str)
1623

1724
[Theory]
1825
[InlineData("\"132\"")]
26+
[InlineData("( ")]
27+
[InlineData("( )(")]
1928
public void StringParameterParsingShouldBeFail(string str)
2029
{
21-
Assert.Throws<ParseException>(() => ParametersParser.StringParameter.ParseOrThrow(str));
30+
Assert.Throws<ParseException>(() =>
31+
{
32+
var result = ParametersParser.StringParameter.Before(CommonParser.EOF).ParseOrThrow(str);
33+
return result;
34+
});
2235
}
2336

2437
[Theory]
@@ -28,6 +41,7 @@ public void StringParameterParsingShouldBeFail(string str)
2841
[InlineData("\"132 $var1$ \"")]
2942
[InlineData("\"123$var1$.Lenght456\"")]
3043
[InlineData("\" \\\"132\\\" \"")]
44+
[InlineData("\" \"")]
3145
public void StringFormatParameterParsingShouldBeSuccess(string str)
3246
{
3347
var parameter = ParametersParser.StringFormatParameter.ParseOrThrow(str);

src/SimpleStateMachine.StructuralSearch.Tests/ReplaceTemplateTests.cs

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,23 @@ public void ReplaceBuildShouldBeSuccess(string templatePath, string resultPath,
5555
// TODO validation parenthesis for parameters
5656

5757
[Theory]
58-
[InlineData("test $var1$.Lenght")]
59-
[InlineData("(test $var1$.Lenght)")]
60-
[InlineData("test ($var1$.Lenght)")]
61-
public void ReplaceTemplateParsingShouldBeSuccess(string templateStr)
58+
[InlineData(0, "test $var1$.Lenght")]
59+
[InlineData(1, "(test) $var1$.Lenght")]
60+
[InlineData(2, "test ($var1$.Lenght)")]
61+
[InlineData(3, "(test $var1$.Lenght)")]
62+
[InlineData(4, "test ")]
63+
[InlineData(5, "($var1$.Lenght)")]
64+
[InlineData(6, " ($var1$.Lenght)")]
65+
[InlineData(7, " ( )")]
66+
[InlineData(8, "test ( )")]
67+
[InlineData(9, " (test $var1$.Lenght)")]
68+
[InlineData(10, "(test) ($var1$.Lenght)")]
69+
[InlineData(11, "((test) $var1$.Lenght)")]
70+
[InlineData(12, "(test ($var1$.Lenght))")]
71+
[InlineData(13, "((test) ($var1$.Lenght))")]
72+
[InlineData(14, "()")]
73+
[InlineData(15, "(test ($var1$.Lenght) test2)")]
74+
public void ReplaceTemplateParsingShouldBeSuccess(int number, string templateStr)
6275
{
6376
var replaceBuilder = StructuralSearch.ParseReplaceTemplate(templateStr);
6477
var replaceStr = replaceBuilder.ToString().ToLower();
@@ -69,6 +82,8 @@ public void ReplaceTemplateParsingShouldBeSuccess(string templateStr)
6982
[InlineData("(test $var1$.Lenght")]
7083
[InlineData("test ($var1$.Lenght")]
7184
[InlineData("test $var1$.Lenght)")]
85+
[InlineData(" ( ")]
86+
[InlineData("test ( ")]
7287
public void ReplaceTemplateParsingShouldBeFail(string templateStr)
7388
{
7489
Assert.Throws<ParseException>(() => StructuralSearch.ParseReplaceTemplate(templateStr));

0 commit comments

Comments
 (0)