public (Token, string) Parse(string input) { var defKeyword = new Word("def").Parse(input); var sp1 = new SkipWhitespace().Parse(defKeyword.Item2); var recKeyword = new Word("rec").Parse(sp1.Item2); var sp2 = new SkipWhitespace().Parse(recKeyword.Item2); var name = new Ident().Parse(sp2.Item2); var sp3 = new SkipWhitespace().Parse(name.Item2); var newLine = new Many(new Char('\n')).Parse(sp3.Item2); var functions = new Maybe( new Many( new Create(TokenType.FuncDef) { new SkipWhitespace(), new MiniFuncDef(), new SkipWhitespace(), new Many(new Char('\n')) } ) ).Parse(newLine.Item2); var sp4 = new SkipWhitespace().Parse(functions.Item2); var endKeyword = new Word("end").Parse(sp4.Item2); var token = defKeyword.Item1 + recKeyword.Item1 + name.Item1; if (functions.Item1.type != TokenType.Failure) { token += functions.Item1; } token += endKeyword.Item1; token.type = TokenType.RecDef; return(token, endKeyword.Item2); }
public void MuplipleTextMatch() { var a = new Many(new Character('a')); Assert.True(a.Match("aaaabcd").Success()); Assert.Equal("bcd", a.Match("aaaabcd").RemainingText()); }
public void TextNullReturnTrue() { var a = new Many(new Character('a')); Assert.True(a.Match(null).Success()); Assert.Null(a.Match(null).RemainingText());; }
public void StringAsParamReturnsCorectFormatForString() { var seqence = new Sequence(new Character('a'), new Character('b')); var digits = new Many(seqence); Assert.Equal("ac", digits.Match("ababac").RemainingText()); }
public Value() { var value = new Choice( new String(), new Number(), new Text("true"), new Text("false"), new Text("null") ); var whitespace = new Many(new Any(" \r\n\t")); var separator = new Sequence(whitespace, new Character(','), whitespace); var element = new Sequence(whitespace, value, whitespace); var array = new Sequence(whitespace, new Character('['), new List(element, separator), new Character(']') ); var objectSeparator = new Sequence(whitespace, new Character(':'), whitespace); var objectString = new Sequence(whitespace, new String(), whitespace); var members = new Sequence(objectString, objectSeparator, element); var jsonObject = new Sequence(whitespace, new Character('{'), new List(members, separator), new Character('}') ); value.Add(array); value.Add(jsonObject); pattern = value; }
public void FirstCharacterMatchesManyCharPattern() { Many pattern = new Many(new Character('a')); Assert.True(pattern.Match("abc").Success()); Assert.True(pattern.Match("abc").RemainingText() == "bc"); }
public async Task <ResponseResult> Handle(CreateCommand request, CancellationToken cancellationToken) { _repository.IncludeInTrasation(_unitOfWork); var many = new Many(request.One, request.ManyProperty01); AddNotifications(many); _repository.Add(many); var toOneResponse = await _mediator.Send(new ToOneHandlers.CreateCommand { Many = many, Property01 = request.ManyProperty01 }); var selfOneResponse = await _mediator.Send(new SelfOneHandlers.CreateCommand { Many = many, Property01 = request.ManyProperty01 }); AddNotifications(selfOneResponse); AddNotifications(toOneResponse); return(new ResponseResult(many, this)); }
public void For_IPattern_Char_a_And_String_bc_Should_Return_String_bc() { var a = new Many(new Character('a')); IMatch actual = a.Match("bc"); Assert.Equal("bc", actual.RemainingText()); }
public void For_IPattern_Char_a_And_String_EmptyString_Should_Return_True() { var a = new Many(new Character('a')); IMatch actual = a.Match(string.Empty); Assert.True(actual.Succes()); }
public ResumeInfo(TimelinePosition checkpoint, Many <FlowKey> routes, Many <TimelinePoint> schedule, IConnectable subscription) { Checkpoint = checkpoint; Routes = routes; Schedule = schedule; Subscription = subscription; }
public ResumeInfo(IConnectable subscription) { Checkpoint = TimelinePosition.None; Routes = new Many <FlowKey>(); Schedule = new Many <TimelinePoint>(); Subscription = subscription; }
public void ReturnsTrueAndTextForNoMatchesRange() { var digits = new Many(new Range('0', '9')); Assert.True(digits.Match("ab").Success()); Assert.Equal("ab", digits.Match("ab").RemainingText()); }
public void ReturnsTrueAndRemainingForMatches() { var digits = new Many(new Range('0', '9')); Assert.True(digits.Match("12345ab123").Success()); Assert.Equal("ab123", digits.Match("12345ab123").RemainingText()); }
public void Should_Return__Correct_String_Hexadecimal_Sequence() { var hex = new Choice( new Range('0', '9'), new Range('a', 'f'), new Range('A', 'F') ); var hexSeq = new Sequence( new Character('u'), new Sequence( hex, hex, hex, hex ) ); var pattern = new Many( new Sequence(hexSeq) ); var match = pattern.Match("u1234u1234u12Zabc"); Assert.Equal("u12Zabc", match.RemainingText()); Assert.True(match.Success()); }
public void FirstCharMatchesManyDigitsPattern() { Many pattern = new Many(new Range('0', '9')); Assert.True(pattern.Match("ab").Success()); Assert.True(pattern.Match("ab").RemainingText() == "ab"); }
public void For_IPattern_Char_a_And_String_EmptyString_Should_Return_String_EmptyString() { var a = new Many(new Character('a')); IMatch actual = a.Match(string.Empty); Assert.Equal(string.Empty, actual.RemainingText()); }
public void NullMatchesManyDigitRange() { Many pattern = new Many(new Range('0', '9')); Assert.True(pattern.Match(null).Success()); Assert.True(pattern.Match(null).RemainingText() == null); }
public void For_IPattern_Range_0_9_And_String_12345ab123_Should_Return_True() { var digits = new Many(new Range('0', '9')); IMatch actual = digits.Match("12345ab123"); Assert.True(actual.Succes()); }
public void TextMatchesManyTextPattern() { Many pattern = new Many(new Text("abc")); Assert.True(pattern.Match("abcabcd").Success()); Assert.True(pattern.Match("abcabcd").RemainingText() == "d"); }
public void For_IPattern_Range_0_9_And_String_12345ab123_Should_Return_ab123() { var digits = new Many(new Range('0', '9')); IMatch actual = digits.Match("12345ab123"); Assert.Equal("ab123", actual.RemainingText()); }
public void StringAsParamReturnsTrueForString() { var seqence = new Sequence(new Character('a'), new Character('b')); var digits = new Many(seqence); Assert.True(digits.Match("ababc").Success()); }
public void Test_Many_Equality() { Many <int> empty = new Many <int>(); Many <int> zero = new Many <int>(0); Many <int> one = new Many <int>(1); Many <int> empty2 = new Many <int>(); Many <int> zero2 = new Many <int>(0); Many <int> one2 = new Many <int>(1); empty.Equals(empty2).ShouldBeTrue(); empty.Equals(zero).ShouldBeFalse(); empty.Equals(0).ShouldBeFalse(); empty.Equals(one).ShouldBeFalse(); empty.Equals(1).ShouldBeFalse(); zero.Equals(empty).ShouldBeFalse(); zero.Equals(zero2).ShouldBeTrue(); zero.Equals(0).ShouldBeTrue(); zero.Equals(one).ShouldBeFalse(); zero.Equals(1).ShouldBeFalse(); one.Equals(empty).ShouldBeFalse(); one.Equals(zero).ShouldBeFalse(); one.Equals(0).ShouldBeFalse(); one.Equals(one2).ShouldBeTrue(); one.Equals(1).ShouldBeTrue(); }
public TimelinePoint( TimelinePosition position, TimelinePosition cause, EventType type, DateTimeOffset when, DateTimeOffset?whenOccurs, Id eventId, Id commandId, Id userId, FlowKey topic, Many <FlowKey> routes, Func <Event> readEvent) { Position = position; Cause = cause; Type = type; When = when; WhenOccurs = whenOccurs; EventId = eventId; CommandId = commandId; UserId = userId; Topic = topic; Routes = routes; _event = new Lazy <Event>(readEvent); }
public void EmptyMatchesManyCharacterPattern() { Many pattern = new Many(new Character('a')); Assert.True(pattern.Match("").Success()); Assert.True(pattern.Match("").RemainingText()?.Length == 0); }
protected override void OnSetUp() { base.OnSetUp(); // create the objects to search on one = new One(); one.X = 20; one.Manies = new HashedSet <Many>(); Many many1 = new Many(); many1.X = 10; many1.One = one; one.Manies.Add(many1); Many many2 = new Many(); many2.X = 20; many2.One = one; one.Manies.Add(many2); using (ISession s = OpenSession()) using (ITransaction t = s.BeginTransaction()) { s.Save(one); s.Save(many1); s.Save(many2); t.Commit(); } }
public void NullMatchesManyCharPattern() { Many pattern = new Many(new Character('a')); Assert.True(pattern.Match(null).Success()); Assert.True(pattern.Match(null).RemainingText() == null); }
public void TextEmptyReturnTrue() { var a = new Many(new Character('a')); Assert.True(a.Match("").Success()); Assert.Equal("", a.Match("").RemainingText()); }
public void FirstNumberMatchManyDigitsPattern() { Many pattern = new Many(new Range('0', '9')); Assert.True(pattern.Match("12345ab123").Success()); Assert.True(pattern.Match("12345ab123").RemainingText() == "ab123"); }
public void IsInRange() { var digits = new Many(new Json.Range('0', '9')); Assert.True(digits.Match("12345ab123").Success()); Assert.Equal("ab123", digits.Match("12345ab123").RemainingText()); }
public void Then() { var startsWithA = new StartsWithChar('A'); var startsWithB = new StartsWithChar('B'); var startsWithAthenB = startsWithA + startsWithB; Do_Parser_Test(startsWithAthenB, "ABA", true, StringToList("AB"), "A"); Do_Parser_Test(startsWithAthenB, "AC", false, null, "AC"); Do_Parser_Test(startsWithAthenB, "BA", false, null, "BA"); var ab = new List <object> { 'A', 'B' }; Do_Parser_Test(new Many(startsWithAthenB), "ABABABC", true, new List <List <object> >() { ab, ab, ab }, "C"); var isDigit = new StartsWithAnyChar("0123456789".ToCharArray()); var isInteger = new Many(isDigit); var isPeriod = new StartsWithChar('.'); var isDecimal = (isInteger + isPeriod + isInteger) | isInteger; Do_Parser_Test(isDecimal, "1234.56", true, StringToList("1234.56"), ""); Do_Parser_Test(isDecimal, "1234", true, StringToList("1234"), ""); Do_Parser_Test(isDecimal, ".1234.", true, StringToList(".1234"), "."); }