@@ -1337,28 +1337,31 @@ parseBreakChunks parser input = do
1337
1337
-- If we stop in an alternative, it will try calling the next
1338
1338
-- parser, the next parser may call initial returning Partial and
1339
1339
-- then immediately we have to call extract on it.
1340
- ParserK. Partial 0 cont1 ->
1340
+ ParserK. SPartial ( - 1 ) cont1 ->
1341
1341
go [] cont1 nil
1342
- ParserK. Partial n cont1 -> do
1343
- let n1 = negate n
1342
+ ParserK. SPartial m cont1 -> do
1343
+ let n = m + 1
1344
+ n1 = negate n
1344
1345
assertM(n1 >= 0 && n1 <= sum (Prelude. map Array. length backBuf))
1345
1346
let (s1, backBuf1) = backTrack n1 backBuf nil
1346
1347
in go backBuf1 cont1 s1
1347
- ParserK. Continue 0 cont1 ->
1348
+ ParserK. SContinue ( - 1 ) cont1 ->
1348
1349
go backBuf cont1 nil
1349
- ParserK. Continue n cont1 -> do
1350
- let n1 = negate n
1350
+ ParserK. SContinue m cont1 -> do
1351
+ let n = m + 1
1352
+ n1 = negate n
1351
1353
assertM(n1 >= 0 && n1 <= sum (Prelude. map Array. length backBuf))
1352
1354
let (s1, backBuf1) = backTrack n1 backBuf nil
1353
1355
in go backBuf1 cont1 s1
1354
- ParserK. Done 0 b ->
1356
+ ParserK. SDone ( - 1 ) b ->
1355
1357
return (Right b, nil)
1356
- ParserK. Done n b -> do
1357
- let n1 = negate n
1358
+ ParserK. SDone m b -> do
1359
+ let n = m + 1
1360
+ n1 = negate n
1358
1361
assertM(n1 >= 0 && n1 <= sum (Prelude. map Array. length backBuf))
1359
1362
let (s1, _) = backTrack n1 backBuf nil
1360
1363
in return (Right b, s1)
1361
- ParserK. Error _ err -> do
1364
+ ParserK. SError _ err -> do
1362
1365
let (s1, _) = backTrack maxBound backBuf nil
1363
1366
return (Left (ParseError err), s1)
1364
1367
@@ -1370,7 +1373,8 @@ parseBreakChunks parser input = do
1370
1373
pRes <- parserk (ParserK. Chunk arr)
1371
1374
let len = Array. length arr
1372
1375
case pRes of
1373
- ParserK. Partial n cont1 ->
1376
+ ParserK. SPartial m cont1 -> do
1377
+ let n = m + 1
1374
1378
case compare n len of
1375
1379
EQ -> go [] cont1 stream
1376
1380
LT -> do
@@ -1384,7 +1388,8 @@ parseBreakChunks parser input = do
1384
1388
let (s1, _) = backTrack n1 backBuf s
1385
1389
go [] cont1 s1
1386
1390
GT -> seekErr n len
1387
- ParserK. Continue n cont1 ->
1391
+ ParserK. SContinue m cont1 -> do
1392
+ let n = m + 1
1388
1393
case compare n len of
1389
1394
EQ -> go (arr: backBuf) cont1 stream
1390
1395
LT -> do
@@ -1398,12 +1403,13 @@ parseBreakChunks parser input = do
1398
1403
let (s1, backBuf1) = backTrack n1 backBuf s
1399
1404
go backBuf1 cont1 s1
1400
1405
GT -> seekErr n len
1401
- ParserK. Done n b -> do
1402
- let n1 = len - n
1406
+ ParserK. SDone m b -> do
1407
+ let n = m + 1
1408
+ n1 = len - n
1403
1409
assertM(n1 <= sum (Prelude. map Array. length (arr: backBuf)))
1404
1410
let (s1, _) = backTrack n1 (arr: backBuf) stream
1405
1411
in return (Right b, s1)
1406
- ParserK. Error _ err -> do
1412
+ ParserK. SError _ err -> do
1407
1413
let (s1, _) = backTrack maxBound (arr: backBuf) stream
1408
1414
return (Left (ParseError err), s1)
1409
1415
0 commit comments