Skip to content

Commit 6db14f0

Browse files
committed
Update configs
1 parent f8e9ea1 commit 6db14f0

File tree

12 files changed

+39
-19
lines changed

12 files changed

+39
-19
lines changed

src/SimpleStateMachine.StructuralSearch.Tests/ConfigurationFile/FullConfig.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
ReplaceTemplate: |-
2424
$var$ = $value1$ ?? $value2$;
2525
ReplaceRules:
26-
- $sign$ In ("!=", "is not") then $value2$ => $value1$, $value1$ => $value2$
26+
- if $sign$ In ("!=", "is not") then $value2$ => $value1$, $value1$ => $value2$
2727
2828
# TernaryOperator
2929

src/SimpleStateMachine.StructuralSearch.Tests/ConfigurationFile/ShortConfig.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
ReplaceTemplate: |-
2323
$var$ = $value1$ ?? $value2$;
2424
ReplaceRules:
25-
- $sign$ In ("!=", "is not") then $value2$ => $value1$, $value1$ => $value2$
25+
- if $sign$ In ("!=", "is not") then $value2$ => $value1$, $value1$ => $value2$
2626
2727
# TernaryOperator
2828

src/SimpleStateMachine.StructuralSearch.Tests/FindRuleParserTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@ namespace SimpleStateMachine.StructuralSearch.Tests;
88

99
public class FindRuleParserTests
1010
{
11+
[Theory]
12+
[InlineData("$sign$ In (\"is\", \"==\", \"!=\", \"is not\")")]
13+
public static void FindRuleParsingShouldBeSuccess(string ruleStr)
14+
{
15+
LogicalExpressionParser.LogicalExpression.ParseToEnd(ruleStr);
16+
}
17+
1118
[Theory]
1219
[FilesData("FindRule")]
1320
public static void FindRuleFileParsingShouldBeSuccess(string filePath)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
$sign$ In ("!=", "is not") then $value2$ => $value1$, $value1$ => $value2$
1+
if $sign$ In ("!=", "is not") then $value2$ => $value1$, $value1$ => $value2$

src/SimpleStateMachine.StructuralSearch.Tests/ReplaceTemplateTests.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,7 @@ public static void ReplaceBuildShouldBeSuccess(string templatePath, string resul
3636
Assert.NotNull(replaceResult);
3737
Assert.Equal(replaceResult, result);
3838
}
39-
40-
// TODO validation parenthesis for parameters
41-
39+
4240
[Theory]
4341
[InlineData("test")]
4442
[InlineData("()")]

src/SimpleStateMachine.StructuralSearch.Tests/StructurSearchParserTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public static void StructuralSearchShouldBeSuccess(string exampleName, string ex
1818
var fileInfo = new FileInfo(exampleFilePath);
1919
var input = Input.Input.File(fileInfo);
2020
var matches = parser.Parse(input);
21-
Assert.Equal(matches.Count(), matchesCount);
21+
Assert.Equal(matchesCount, matches.Count());
2222
}
2323

2424
// [Theory]

src/SimpleStateMachine.StructuralSearch/CustomParsers/PlaceholderParser.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ protected override Parser<char, string> BuildParser(Func<Parser<char, string>?>
6161
Parser<char, string>? term = null;
6262

6363
var parenthesised = Parser.Rec(() => term ?? throw new ArgumentNullException(nameof(term)))
64-
.BetweenParentheses((c1, s, c2) => $"{c1}{s}{c2}");
64+
.BetweenAnyParentheses((c1, s, c2) => $"{c1}{s}{c2}");
6565

6666
term = Parser.OneOf(parenthesised, token).Many().JoinToString();
6767

src/SimpleStateMachine.StructuralSearch/Extensions/ParserExtensions.cs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,15 +74,24 @@ public static Parser<char, T> ParenthesisedOptional<T, TResult>(this Parser<char
7474
public static Parser<TToken, Parser<TToken, T>> SelectToParser<TToken, T>(this Parser<TToken, T> parser,
7575
Func<T, Parser<TToken, T>, Parser<TToken, T>> selectFunc)
7676
=> parser.Select(value => selectFunc(value, parser));
77-
78-
public static Parser<char, TResult> BetweenParentheses<T, TResult>(this Parser<char, T> parser, Func<char, T, char, TResult> mapFunc)
77+
78+
public static Parser<char, TResult> BetweenAnyParentheses<T, TResult>(this Parser<char, T> parser, Func<char, T, char, TResult> mapFunc)
7979
{
80-
var parentheses= Parser.Map(mapFunc, CommonParser.LeftParenthesis, parser, CommonParser.RightParenthesis);
81-
var curlyParentheses= Parser.Map(mapFunc, CommonParser.LeftCurlyParenthesis, parser, CommonParser.RightCurlyParenthesis);
82-
var squareParentheses= Parser.Map(mapFunc, CommonParser.LeftSquareParenthesis, parser, CommonParser.RightSquareParenthesis);
80+
var parentheses= parser.BetweenParentheses(mapFunc);
81+
var curlyParentheses= parser.BetweenCurlyParentheses(mapFunc);
82+
var squareParentheses= parser.BetweenSquareParentheses(mapFunc);
8383
return Parser.OneOf(parentheses, curlyParentheses, squareParentheses);
8484
}
8585

86+
public static Parser<char, TResult> BetweenParentheses<T, TResult>(this Parser<char, T> parser, Func<char, T, char, TResult> mapFunc)
87+
=> Parser.Map(mapFunc, CommonParser.LeftParenthesis, parser, CommonParser.RightParenthesis);
88+
89+
public static Parser<char, TResult> BetweenCurlyParentheses<T, TResult>(this Parser<char, T> parser, Func<char, T, char, TResult> mapFunc)
90+
=> Parser.Map(mapFunc, CommonParser.LeftCurlyParenthesis, parser, CommonParser.RightCurlyParenthesis);
91+
92+
public static Parser<char, TResult> BetweenSquareParentheses<T, TResult>(this Parser<char, T> parser, Func<char, T, char, TResult> mapFunc)
93+
=> Parser.Map(mapFunc, CommonParser.LeftSquareParenthesis, parser, CommonParser.RightSquareParenthesis);
94+
8695
public static T ParseToEnd<T>(this Parser<char, T> parser, string str)
8796
=> parser.Before(CommonParser.Eof).ParseOrThrow(str);
8897
}

src/SimpleStateMachine.StructuralSearch/StructuralSearch/FindTemplateParser.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ private static readonly Parser<char, IEnumerable<Parser<char, string>>> Template
2626
// template_between_parentheses = '(' template ')' | '{' template '}' | '[' template ']
2727
private static readonly Parser<char, IEnumerable<Parser<char, string>>> TemplateBetweenParentheses
2828
= Parser.Rec(() => Template ?? throw new ArgumentNullException(nameof(Template))).Optional()
29-
.BetweenParentheses((left, result, right) =>
29+
.BetweenAnyParentheses((left, result, right) =>
3030
{
3131
var leftParser = Parser.Char(left).AsString();
3232
var rightParser = Parser.Char(right).AsString();

src/SimpleStateMachine.StructuralSearch/StructuralSearch/LogicalExpressionParser.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Linq;
34
using Pidgin;
45
using SimpleStateMachine.StructuralSearch.Extensions;
@@ -29,22 +30,27 @@ public static class LogicalExpressionParser
2930
internal static readonly Parser<char, Func<IParameter, ILogicalOperation>> MatchOperation =
3031
CommonParser.Match
3132
.TrimEnd() // Skip whitespaces
32-
.Then(Grammar.StringLiteral) // TODO support regex
33+
.Then(Grammar.StringLiteral)
3334
.Select<Func<IParameter, ILogicalOperation>>(regex => parameter => new MatchOperation(parameter, regex));
3435

36+
// string_expr { ',' string_expr }
37+
internal static readonly Parser<char, IEnumerable<IParameter>> InOperationParameters =
38+
ParametersParser.StringExpression.SeparatedAtLeastOnce(CommonParser.Comma.TrimEnd());
39+
3540
// in_operation ='In' [ '(' ] string_expr { ',' string_expr } [ ')' ]
3641
internal static readonly Parser<char, Func<IParameter, ILogicalOperation>> InOperation =
3742
CommonParser.In
3843
.TrimEnd()// Skip whitespaces
39-
.Then(ParametersParser.StringExpression.SeparatedAtLeastOnce(CommonParser.Comma.TrimEnd())) // TODO support Parentheses
44+
// .Then(InOperationParameters)
45+
.Then(Parser.OneOf(InOperationParameters.BetweenParentheses((_, parameters, _) => parameters), InOperationParameters))
4046
.Select<Func<IParameter, ILogicalOperation>>(arguments =>
4147
parameter => new InOperation(parameter, arguments.ToList()));
4248

4349
// string_logic_operation = string_expr (string_compare_operation | is_operation | match_operation| in_operation )
4450
private static readonly Parser<char, ILogicalOperation> StringLogicOperation =
4551
ParametersParser.StringExpression
4652
.TrimEnd() // skip whitespaces
47-
.Then(Parser.OneOf(StringCompareOperation, IsOperation, MatchOperation, InOperation),
53+
.Then(Parser.OneOf(StringCompareOperation.Try(), IsOperation.Try(), MatchOperation.Try(), InOperation),
4854
(parameter, buildOperationFunc) => buildOperationFunc(parameter));
4955

5056
// binary_operation = logic_expr ('And' | 'Or' | 'NAND' | 'NOR' | 'XOR' | 'XNOR') logic_expr

0 commit comments

Comments
 (0)