Skip to content

Commit d0e1c85

Browse files
adithyaovharendra-kumar
authored andcommitted
Update the StreamK.parseBreakChunks driver
1 parent aad05f8 commit d0e1c85

1 file changed

Lines changed: 21 additions & 15 deletions

File tree

core/src/Streamly/Internal/Data/Array.hs

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1048,28 +1048,31 @@ parseBreak parser input = do
10481048
-- If we stop in an alternative, it will try calling the next
10491049
-- parser, the next parser may call initial returning Partial and
10501050
-- then immediately we have to call extract on it.
1051-
ParserK.Partial 0 cont1 ->
1051+
ParserK.SPartial (-1) cont1 ->
10521052
go [] cont1 StreamK.nil
1053-
ParserK.Partial n cont1 -> do
1054-
let n1 = negate n
1053+
ParserK.SPartial m cont1 -> do
1054+
let n = m + 1
1055+
n1 = negate n
10551056
assertM(n1 >= 0 && n1 <= sum (Prelude.map length backBuf))
10561057
let (s1, backBuf1) = backTrack n1 backBuf StreamK.nil
10571058
in go backBuf1 cont1 s1
1058-
ParserK.Continue 0 cont1 ->
1059+
ParserK.SContinue (-1) cont1 ->
10591060
go backBuf cont1 StreamK.nil
1060-
ParserK.Continue n cont1 -> do
1061-
let n1 = negate n
1061+
ParserK.SContinue m cont1 -> do
1062+
let n = m + 1
1063+
n1 = negate n
10621064
assertM(n1 >= 0 && n1 <= sum (Prelude.map length backBuf))
10631065
let (s1, backBuf1) = backTrack n1 backBuf StreamK.nil
10641066
in go backBuf1 cont1 s1
1065-
ParserK.Done 0 b ->
1067+
ParserK.SDone (-1) b ->
10661068
return (Right b, StreamK.nil)
1067-
ParserK.Done n b -> do
1068-
let n1 = negate n
1069+
ParserK.SDone m b -> do
1070+
let n = m + 1
1071+
n1 = negate n
10691072
assertM(n1 >= 0 && n1 <= sum (Prelude.map length backBuf))
10701073
let (s1, _) = backTrack n1 backBuf StreamK.nil
10711074
in return (Right b, s1)
1072-
ParserK.Error _ err -> do
1075+
ParserK.SError _ err -> do
10731076
let (s1, _) = backTrack maxBound backBuf StreamK.nil
10741077
return (Left (ParseError err), s1)
10751078

@@ -1081,7 +1084,8 @@ parseBreak parser input = do
10811084
pRes <- parserk (ParserK.Chunk arr)
10821085
let len = length arr
10831086
case pRes of
1084-
ParserK.Partial n cont1 ->
1087+
ParserK.SPartial m cont1 -> do
1088+
let n = m + 1
10851089
case compare n len of
10861090
EQ -> go [] cont1 stream
10871091
LT -> do
@@ -1095,7 +1099,8 @@ parseBreak parser input = do
10951099
let (s1, _) = backTrack n1 backBuf s
10961100
go [] cont1 s1
10971101
GT -> seekErr n len
1098-
ParserK.Continue n cont1 ->
1102+
ParserK.SContinue m cont1 -> do
1103+
let n = m + 1
10991104
case compare n len of
11001105
EQ -> go (arr:backBuf) cont1 stream
11011106
LT -> do
@@ -1109,12 +1114,13 @@ parseBreak parser input = do
11091114
let (s1, backBuf1) = backTrack n1 backBuf s
11101115
go backBuf1 cont1 s1
11111116
GT -> seekErr n len
1112-
ParserK.Done n b -> do
1113-
let n1 = len - n
1117+
ParserK.SDone m b -> do
1118+
let n = m + 1
1119+
n1 = len - n
11141120
assertM(n1 <= sum (Prelude.map length (arr:backBuf)))
11151121
let (s1, _) = backTrack n1 (arr:backBuf) stream
11161122
in return (Right b, s1)
1117-
ParserK.Error _ err -> do
1123+
ParserK.SError _ err -> do
11181124
let (s1, _) = backTrack maxBound (arr:backBuf) stream
11191125
return (Left (ParseError err), s1)
11201126

0 commit comments

Comments
 (0)