@@ -55,16 +55,15 @@ import Reporting.Error.Syntax
57newtype Parser a =
57newtype Parser a =
60− :: forall b.
59+ forall b.
62− -> (a -> State -> ParseError -> b) -- consumed ok
61+ -> (a -> State -> ParseError -> b) -- consumed ok
63− -> ( ParseError -> b) -- consumed err
62+ -> ( ParseError -> b) -- consumed err
64− -> (a -> State -> ParseError -> b) -- empty ok
63+ -> (a -> State -> ParseError -> b) -- empty ok
65− -> ( ParseError -> b) -- empty err
64+ -> ( ParseError -> b) -- empty err
70data State =
69data State =
@@ -101,8 +100,8 @@ run parser text =
103runAt :: Int -> Int -> Parser a -> Text -> Either (A.Located E.Error) a
102runAt :: Int -> Int -> Parser a -> Text -> Either (A.Located E.Error) a
104−runAt sRow sCol parser (Text.Text array offset length) =
103+runAt sRow sCol (Parser parser) (Text.Text array offset length) =
105− case _run parser (State array offset length 0 sRow sCol []) Ok Err Ok Err of
104+ case parser (State array offset length 0 sRow sCol []) Ok Err Ok Err of
106 Ok value _ _ ->
105 Ok value _ _ ->
107 Right value
106 Right value
@@ -139,9 +138,9 @@ data Result a
141try :: Parser a -> Parser a
140try :: Parser a -> Parser a
142−try parser =
141+try (Parser parser) =
143 Parser $ \state cok _ eok eerr ->
142 Parser $ \state cok _ eok eerr ->
144− _run parser state cok eerr eok eerr
143+ parser state cok eerr eok eerr
147shaderFailure :: Int -> Int -> Text -> Parser a
146shaderFailure :: Int -> Int -> Text -> Parser a
@@ -157,7 +156,7 @@ deadend thrys =
159hint :: E.Next -> Parser a -> Parser a
158hint :: E.Next -> Parser a -> Parser a
160−hint next parser =
159+hint next (Parser parser) =
161 Parser $ \state@(State _ _ _ _ row col ctx) cok cerr eok eerr ->
160 Parser $ \state@(State _ _ _ _ row col ctx) cok cerr eok eerr ->
163 eok' x s _ =
162 eok' x s _ =
@@ -166,7 +165,7 @@ hint next parser =
166 eerr' _ =
165 eerr' _ =
167 eerr (expect row col ctx (Expecting next))
166 eerr (expect row col ctx (Expecting next))
169− _run parser state cok cerr eok' eerr'
168+ parser state cok cerr eok' eerr'
172endOfFile :: Parser ()
171endOfFile :: Parser ()
@@ -185,13 +184,13 @@ endOfFile =
186instance Functor Parser where
185instance Functor Parser where
187 {-# INLINE fmap #-}
186 {-# INLINE fmap #-}
188− fmap f parser =
187+ fmap f (Parser parser) =
189 Parser $ \state cok cerr eok eerr ->
188 Parser $ \state cok cerr eok eerr ->
191 cok' x s e = cok (f x) s e
190 cok' x s e = cok (f x) s e
192 eok' x s e = eok (f x) s e
191 eok' x s e = eok (f x) s e
194− _run parser state cok' cerr eok' eerr
193+ parser state cok' cerr eok' eerr
@@ -226,7 +225,7 @@ allTheOptionsFailed =
228oneOfHelp :: Parser a -> Parser a -> Parser a
227oneOfHelp :: Parser a -> Parser a -> Parser a
229−oneOfHelp parser1 parser2 =
228+oneOfHelp (Parser parser1) (Parser parser2) =
230 Parser $ \state cok cerr eok eerr ->
229 Parser $ \state cok cerr eok eerr ->
232 eerr1 e1 =
231 eerr1 e1 =
@@ -234,9 +233,9 @@ oneOfHelp parser1 parser2 =
234 eok2 y s e2 = eok y s (mergeErrors e1 e2)
233 eok2 y s e2 = eok y s (mergeErrors e1 e2)
235 eerr2 e2 = eerr (mergeErrors e1 e2)
234 eerr2 e2 = eerr (mergeErrors e1 e2)
237− _run parser2 state cok cerr eok2 eerr2
236+ parser2 state cok cerr eok2 eerr2
239− _run parser1 state cok cerr eok eerr1
238+ parser1 state cok cerr eok eerr1
242mergeErrors :: ParseError -> ParseError -> ParseError
241mergeErrors :: ParseError -> ParseError -> ParseError
@@ -277,7 +276,7 @@ instance Monad Parser where
277 eok value state noError
276 eok value state noError
279 {-# INLINE (>>=) #-}
278 {-# INLINE (>>=) #-}
280− parser >>= callback =
279+ (Parser parser) >>= callback =
281 Parser $ \state cok cerr eok eerr ->
280 Parser $ \state cok cerr eok eerr ->
283 cok1 x s1 e1 =
282 cok1 x s1 e1 =
@@ -285,16 +284,18 @@ instance Monad Parser where
285 eok2 y s2 e2 = cok y s2 (mergeErrors e1 e2)
284 eok2 y s2 e2 = cok y s2 (mergeErrors e1 e2)
286 eerr2 e2 = cerr (mergeErrors e1 e2)
285 eerr2 e2 = cerr (mergeErrors e1 e2)
288− _run (callback x) s1 cok cerr eok2 eerr2
288+ Parser parser2 -> parser2 s1 cok cerr eok2 eerr2
290 eok1 x s1 e1 =
290 eok1 x s1 e1 =
292 eok2 y s2 e2 = eok y s2 (mergeErrors e1 e2)
292 eok2 y s2 e2 = eok y s2 (mergeErrors e1 e2)
293 eerr2 e2 = eerr (mergeErrors e1 e2)
293 eerr2 e2 = eerr (mergeErrors e1 e2)
295− _run (callback x) s1 cok cerr eok2 eerr2
296+ Parser parser2 -> parser2 s1 cok cerr eok2 eerr2
297− _run parser state cok1 cerr eok1 eerr
298+ parser state cok1 cerr eok1 eerr