public BodyParser(Parser innerParser, SettingsSyntax syntax)
 {
     this.BlockParser = new ConcatenationParser (syntax.BodyOpen, syntax.BodyClose, syntax.BodyDelimiter) {
         InnerParser = new SubstitutionAssignmentParser (
             syntax.BodyShorthand,
             syntax.BodySubstitution,
             syntax.BodyAssign
         ) {
             InnerParser = innerParser
         }
     };
 }
예제 #2
0
 public void When_both_parts_fail()
 {
     var input = new MockInput<int>();
     var parser = new ConcatenationParser<int, char, char, string>(
         new MockFailureParser<int, char>(),
         (first) =>
             {
                 Assert.Fail();
                 return new MockFailureParser<int, char>();
             },
         (a, b) =>
             {
                 Assert.Fail();
                 return "x";
             });
     var result = parser.Parse(input);
     ParseResultAssert.IsFailure(result);
 }
예제 #3
0
 public void When_both_parts_match()
 {
     var input = new MockInput<int>();
     var parser = new ConcatenationParser<int, char, char, string>(
         new MockSuccessfulParser<int, char>('s'),
         (first) =>
             {
                 Assert.AreEqual('s', first);
                 return new MockSuccessfulParser<int, char>('d');
             },
         (a, b) =>
             {
                 Assert.AreEqual('s', a);
                 Assert.AreEqual('d', b);
                 return "x";
             });
     var result = parser.Parse(input);
     ParseResultAssert.IsSuccess(result);
     ParseResultAssert.AreEqual("x", result);
 }
예제 #4
0
 public void When_the_first_part_matches_but_the_second_fails()
 {
     var input = new MockInput<int>();
     var parser = new ConcatenationParser<int, char, char, string>(
         new MockSuccessfulParser<int, char>('s'),
         new MockFailureParser<int, char>(),
         (a, b) =>
             {
                 Assert.Fail();
                 return "";
             });
     var result = parser.Parse(input);
     ParseResultAssert.IsFailure(result);
 }