From 9ab468a3bad6091948b0bfdfc4bb7694c71612ce Mon Sep 17 00:00:00 2001 From: Maurice Makaay Date: Sat, 25 May 2019 22:53:37 +0000 Subject: [PATCH] Compatiblity with the latest parsekit version. --- comment.go | 2 +- keyvaluepair.go | 23 +++++++++++++++-------- value_string.go | 30 +++++++++++++++++++----------- 3 files changed, 35 insertions(+), 20 deletions(-) diff --git a/comment.go b/comment.go index 020c3f0..71e4111 100644 --- a/comment.go +++ b/comment.go @@ -13,7 +13,7 @@ var comment = c.Seq( func startComment(p *parsekit.P) { p.Expects("comment") - if p.On(comment).Accept().End() { + if p.On(comment).Accept() { p.EmitLiteral(ItemComment) p.RouteReturn() } diff --git a/keyvaluepair.go b/keyvaluepair.go index 3a342dc..edd0eea 100644 --- a/keyvaluepair.go +++ b/keyvaluepair.go @@ -34,9 +34,12 @@ var ( func startKeyValuePair(p *parsekit.P) { switch { - case p.On(a.WhitespaceAndNewlines).Skip().RouteRepeat().End(): - case p.On(a.Hash).RouteTo(startComment).ThenReturnHere().End(): - case p.On(startOfKey).RouteTo(startKey).End(): + case p.On(a.WhitespaceAndNewlines).Skip(): + p.RouteRepeat() + case p.On(a.Hash).Stay(): + p.RouteTo(startComment).ThenReturnHere() + case p.On(startOfKey).Stay(): + p.RouteTo(startKey) default: p.ExpectEndOfFile() } @@ -44,19 +47,21 @@ func startKeyValuePair(p *parsekit.P) { func startKey(p *parsekit.P) { p.Expects("a key name") - p.On(bareKeyRune).RouteTo(startBareKey) + if p.On(bareKeyRune).Stay() { + p.RouteTo(startBareKey) + } } func startBareKey(p *parsekit.P) { p.Expects("a bare key name") - if p.On(bareKey).Accept().End() { + if p.On(bareKey).Accept() { p.EmitLiteral(ItemKey) p.RouteTo(endOfKeyOrDot) } } func endOfKeyOrDot(p *parsekit.P) { - if p.On(keySeparatorDot).Skip().End() { + if p.On(keySeparatorDot).Skip() { p.Emit(ItemKeyDot, ".") p.RouteTo(startKey) } else { @@ -66,7 +71,7 @@ func endOfKeyOrDot(p *parsekit.P) { func startAssignment(p *parsekit.P) { p.Expects("a value assignment") - if p.On(keyAssignment).Skip().End() { + if p.On(keyAssignment).Skip() { p.Emit(ItemAssignment, "=") p.RouteTo(startValue) } @@ -76,5 +81,7 @@ func startAssignment(p *parsekit.P) { // Datetime, Array, or Inline Table. Unspecified values are invalid. func startValue(p *parsekit.P) { p.Expects("a value") - p.On(c.Any(a.SingleQuote, a.DoubleQuote)).RouteTo(startString) + if p.On(c.Any(a.SingleQuote, a.DoubleQuote)).Stay() { + p.RouteTo(startString) + } } diff --git a/value_string.go b/value_string.go index 4fefef2..d3d04a4 100644 --- a/value_string.go +++ b/value_string.go @@ -36,25 +36,33 @@ var ( func startString(p *parsekit.P) { p.Expects("a string value") switch { - case p.On(doubleQuote3).RouteTo(startMultiLineBasicString).End(): - case p.On(a.DoubleQuote).RouteTo(startBasicString).End(): + case p.On(doubleQuote3).Stay(): + p.RouteTo(startMultiLineBasicString) + case p.On(a.DoubleQuote).Stay(): + p.RouteTo(startBasicString) } } func startBasicString(p *parsekit.P) { p.Expects("a basic string") - p.On(a.DoubleQuote).Skip().RouteTo(parseBasicString).ThenTo(basicStringSpecifics) + if p.On(a.DoubleQuote).Skip() { + p.RouteTo(parseBasicString).ThenTo(basicStringSpecifics) + } } func parseBasicString(p *parsekit.P) { p.Expects("string contents") switch { - case p.On(charThatMustBeEscaped).End(): + case p.On(charThatMustBeEscaped).Stay(): p.EmitError("invalid character in basic string: %q (must be escaped)", p.LastMatch) - case p.On(validEscape).Accept().RouteRepeat().End(): - case p.On(a.Backslash).RouteReturn().End(): - case p.On(a.DoubleQuote).RouteReturn().End(): - case p.On(a.AnyRune).Accept().RouteRepeat().End(): + case p.On(validEscape).Accept(): + p.RouteRepeat() + case p.On(a.Backslash).Stay(): + p.RouteReturn() + case p.On(a.DoubleQuote).Stay(): + p.RouteReturn() + case p.On(a.AnyRune).Accept(): + p.RouteRepeat() } } @@ -66,17 +74,17 @@ func parseBasicString(p *parsekit.P) { func basicStringSpecifics(p *parsekit.P) { p.Expects("string contents") switch { - case p.On(a.DoubleQuote).Skip().End(): + case p.On(a.DoubleQuote).Skip(): p.EmitInterpreted(ItemString) p.RouteTo(startKeyValuePair) - case p.On(a.Backslash).End(): + case p.On(a.Backslash).Stay(): p.EmitError("invalid escape sequence") } } func startMultiLineBasicString(p *parsekit.P) { p.Expects("a multi-line basic string") - if p.On(doubleQuote3).Skip().End() { + if p.On(doubleQuote3).Skip() { p.EmitError("not yet implemented") } }