Skip to content

Commit acf6c5f

Browse files
committed
refact FindTemplateParser
1 parent 64ca506 commit acf6c5f

File tree

3 files changed

+27
-9
lines changed

3 files changed

+27
-9
lines changed

src/SimpleStateMachine.StructuralSearch.Sandbox/Program.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ internal static class Program
1010
{
1111
static void Main(string[] args)
1212
{
13+
var template = StructuralSearch.ParseTemplate("");
1314
var test = Parser.OneOf(String("Test"), CommonParser.Empty);
1415
var res = test.ParseOrThrow("");
1516
// var lookahead = Parser.Lookahead(Char(';').Then(End).Try());

src/SimpleStateMachine.StructuralSearch.Tests/PlaceholderParserTests.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
1-
using Pidgin;
1+
using System;
2+
using Pidgin;
23
using Xunit;
34

45
namespace SimpleStateMachine.StructuralSearch.Tests
56
{
67
public class PlaceholderParserTests
78
{
9+
// [Fact]
10+
// public void FindTemplateShouldBeNotEmpty()
11+
// {
12+
// Assert.Throws<Exception>(() => StructuralSearch.ParseTemplate(string.Empty));
13+
// }
14+
15+
816
// [Theory]
917
// [InlineData("($test$)", "(value )", "value ")]
1018
// [InlineData("($test$ )", "(value )", "value")]

src/SimpleStateMachine.StructuralSearch/StructuralSearch/FindTemplateParser.cs

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,35 +6,44 @@ namespace SimpleStateMachine.StructuralSearch
66
{
77
public static class FindTemplateParser
88
{
9+
//TODO return string for all parsers exclude TemplateParser
910
static FindTemplateParser()
1011
{
1112
Parenthesised = Parsers.BetweenOneOfChars(ParserToParser.StringcMatch,
12-
Parser.Rec(() => Term.Or(Empty)),
13+
Parser.Rec(() => Term),
1314
Constant.AllParenthesised);
1415

1516
Term = Parser.OneOf(Parenthesised, Token)
16-
.AtLeastOnce().MergerMany();
17-
18-
TemplateParser = Term.JoinResults();
17+
.Many()
18+
.MergerMany();
19+
20+
TemplateParser = Parser.OneOf(Parenthesised, Token)
21+
.AtLeastOnce()
22+
.MergerMany()
23+
.JoinResults();
1924
}
2025

2126

2227
public static readonly Parser<char, IEnumerable<Parser<char, SourceMatch>>> Empty =
23-
ParserToParser.ResultAsMatch(CommonParser.Empty).AsMany();
28+
ParserToParser.ResultAsMatch(CommonParser.Empty)
29+
.AsMany();
2430

2531
public static readonly Parser<char, Parser<char, SourceMatch>> AnyString =
26-
ParserToParser.ResultAsMatch(CommonParser.AnyString).Try();
32+
ParserToParser.ResultAsMatch(CommonParser.AnyString)
33+
.Try();
2734

2835
public static readonly Parser<char, Parser<char, SourceMatch>> WhiteSpaces =
29-
ParserToParser.ResultAsMatch(CommonParser.WhiteSpaces).Try();
36+
ParserToParser.ResultAsMatch(CommonParser.WhiteSpaces)
37+
.Try();
3038

3139
public static readonly Parser<char, Parser<char, SourceMatch>> Placeholder =
3240
CommonTemplateParser.Placeholder
3341
.Select(name => new PlaceholderParser(name))
3442
.Cast<Parser<char, SourceMatch>>();
3543

3644
public static readonly Parser<char, IEnumerable<Parser<char, SourceMatch>>> Token =
37-
Parser.OneOf(AnyString, Placeholder, WhiteSpaces).AsMany();
45+
Parser.OneOf(AnyString, Placeholder, WhiteSpaces)
46+
.AsMany();
3847

3948
public static readonly Parser<char, IEnumerable<Parser<char, SourceMatch>>> Term;
4049

0 commit comments

Comments
 (0)