@@ -2,7 +2,7 @@ package lazyk
2
2
3
3
import common .EsoObj
4
4
import lazyk .LazyKFuncs ._
5
- import parsers .{ARPDown , ARPFail , ARPNext , ARPRet , ARPUp , ArbitraryRecurParser , ChunkParser , DepthRecurParser , EsoParser , PartialParser }
5
+ import parsers .{ARPDown , ARPFail , ARPNext , ARPRet , ARPUp , ArbitraryRecurParser , DepthRecurParser , EsoParseFail , EsoParsed , EsoParser , PartialParser }
6
6
7
7
import scala .annotation .tailrec
8
8
@@ -49,7 +49,7 @@ object LazyKParsers extends EsoObj{
49
49
case x +: y +: _ => AppExpr (x, y)}
50
50
DepthRecurParser (2 )(recur)(collect)(funcParser)}
51
51
52
- val jotParser : EsoParser [Seq [Char ], Expr ] = {
52
+ val jotParser : EsoParser [Seq [Char ], Expr ] = ( inp : Seq [ Char ]) => {
53
53
def collect (exps : Vector [Expr ]): Expr = exps.foldLeft(iexp){case (x, y) => AppExpr (x, y)}
54
54
@ tailrec
55
55
def jdo (src : Seq [Char ], ac : Vector [Expr ]): (Expr , Seq [Char ]) = src match {
@@ -59,11 +59,10 @@ object LazyKParsers extends EsoObj{
59
59
case x +: y +: es => jdo(w, AppExpr (x, y) +: es)}
60
60
case _ => (collect(ac), src)}
61
61
case _ => (collect(ac), src)}
62
- ChunkParser [Seq [Char ], Expr ]{ inp =>
63
- val end = inp.lastIndexWhere(" 01" .contains(_))
64
- if (end == - 1 ) None
65
- else jdo(inp.take(end + 1 ), Vector ()) match {
66
- case (res, rem) => Some ((res, rem, rem.size - 1 , end + 1 ))}}}
62
+ val end = inp.lastIndexWhere(" 01" .contains(_))
63
+ if (end == - 1 ) EsoParseFail
64
+ else jdo(inp.take(end + 1 ), Vector ()) match {
65
+ case (res, rem) => EsoParsed (res, rem, rem.size - 1 , end + 1 )}}
67
66
68
67
val lkParser : EsoParser [Seq [Char ], Expr ] = {
69
68
(unlParser <+> combParser <+> iotaParser <+> jotParser)
0 commit comments