iface: add `HideName` instances
[haskell/symantic-parser.git] / parsers / Parsers / Brainfuck / SymanticParser.hs
index c73aa142889270f8cceea6740279e0e3c17d2208..6428e271164b98e0795404f79e76f44c84472605 100644 (file)
@@ -1,4 +1,5 @@
 {-# LANGUAGE AllowAmbiguousTypes #-}
+{-# LANGUAGE BangPatterns #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE TypeApplications #-}
@@ -15,29 +16,810 @@ module Parsers.Brainfuck.SymanticParser
   , module Parsers.Brainfuck.SymanticParser.Grammar
   ) where
 
-import Data.Either (Either)
 import Data.String (String)
 import qualified Data.ByteString as BS
 import qualified Data.ByteString.Lazy as BSL
 import qualified Data.Text as T
 --import qualified Data.Text.Lazy as TL
 import qualified Symantic.Parser as SP
+import qualified Data.Function
+import qualified Data.Text.Unsafe
+import qualified Data.Text.Internal
+import qualified GHC.Num
+import qualified GHC.Err
+import qualified GHC.Classes
+import qualified GHC.Base
+import qualified GHC.Maybe
+import qualified Data.Set.Internal
+import qualified Data.Proxy
+import qualified GHC.STRef
+import qualified Data.Map.Strict.Internal
+import qualified Data.Map.Internal
+import qualified GHC.Types
 
 -- 'grammar' must be in an another module because of GHC's stage restriction.
 import Parsers.Brainfuck.SymanticParser.Grammar (grammar)
-import Parsers.Brainfuck.Types (Instruction)
-
-parserByteString :: BS.ByteString -> Either (SP.ParsingError BS.ByteString) [Instruction]
+import Parsers.Brainfuck.Types (Instruction(..))
+{-
+parserByteString :: BS.ByteString -> SP.Parsed BS.ByteString [Instruction]
 parserByteString = $$(SP.runParser @BS.ByteString grammar)
 
-parserByteStringLazy :: BSL.ByteString -> Either (SP.ParsingError BSL.ByteString) [Instruction]
+parserByteStringLazy :: BSL.ByteString -> SP.Parsed BSL.ByteString [Instruction]
 parserByteStringLazy = $$(SP.runParser @BSL.ByteString grammar)
 
-parserString :: String -> Either (SP.ParsingError String) [Instruction]
+parserString :: String -> SP.Parsed String [Instruction]
 parserString = $$(SP.runParser @String grammar)
+-}
 
-parserText :: T.Text -> Either (SP.ParsingError T.Text) [Instruction]
+parserText :: T.Text -> SP.Parsed T.Text [Instruction]
 parserText = $$(SP.runParser @T.Text grammar)
 
 --parserTextLazy :: TL.Text -> Either (SP.ParsingError TL.Text) [Instruction]
 --parserTextLazy = $$(SP.runParser @TL.Text grammar)
+{-
+parserText :: T.Text -> SP.Parsed T.Text [Instruction]
+parserText =
+    \ (input_a6uU :: inp_aahm)
+      -> let
+           !(# init_a6uW, readMore_a6uX, readNext_a6uY #)
+             = let _ = "cursorOf" in
+               let
+                 next_a6v1
+                   t_a6v2@(Data.Text.Internal.Text arr_a6v3 off_a6v4 unconsumed_a6v5)
+                   = let
+                       !(Data.Text.Unsafe.Iter c_a6v6 d_a6v7)
+                         = (Data.Text.Unsafe.iter t_a6v2) 0
+                     in
+                       (# c_a6v6, 
+                          ((Data.Text.Internal.Text arr_a6v3) (off_a6v4 GHC.Num.+ d_a6v7))
+                            (unconsumed_a6v5 GHC.Num.- d_a6v7) #)
+                 more_a6v0 (Data.Text.Internal.Text _ _ unconsumed_a6v8)
+                   = (unconsumed_a6v8 GHC.Classes.> 0)
+               in (# input_a6uU, more_a6v0, next_a6v1 #)
+           finalRet_a6uV
+             = \ _farInp_a6v9 _farExp_a6va v_a6vb _inp_a6vc
+                 -> (SP.returnST GHC.Base.$ SP.ResultDone v_a6vb)
+           finalRaise_a6uZ :: forall b_a6vd. SP.OnException inp_aahm b_a6vd
+             = \ !exn_a6ve _failInp_a6vf !farInp_a6vg !farExp_a6vh
+                 -> (SP.returnST
+                       GHC.Base.$
+                         SP.ResultError
+                           SP.ParsingError
+                             {SP.parsingErrorOffset = SP.offset farInp_a6vg,
+                              SP.parsingErrorException = exn_a6ve,
+                              SP.parsingErrorUnexpected = if readMore_a6uX farInp_a6vg then
+                                                              GHC.Maybe.Just
+                                                                (let
+                                                                   (# c_a6vi, _ #)
+                                                                     = readNext_a6uY farInp_a6vg
+                                                                 in c_a6vi)
+                                                          else
+                                                              GHC.Maybe.Nothing,
+                              SP.parsingErrorExpecting = let
+                                                           (minHoriz_a6vj, res_a6vk)
+                                                             = ((Data.Set.Internal.foldr
+                                                                   (\ f_a6vl (minH_a6vm, acc_a6vn)
+                                                                      -> case
+                                                                             SP.unSomeFailure f_a6vl
+                                                                         of
+                                                                           GHC.Maybe.Just (SP.FailureHorizon h_a6vo :: SP.Failure (SP.CombSatisfiable (SP.InputToken inp_aahm)))
+                                                                             | GHC.Maybe.Just old_a6vp <- minH_a6vm
+                                                                             -> (GHC.Maybe.Just
+                                                                                   ((GHC.Classes.min
+                                                                                       old_a6vp)
+                                                                                      h_a6vo), 
+                                                                                 acc_a6vn)
+                                                                             | GHC.Base.otherwise
+                                                                             -> (GHC.Maybe.Just
+                                                                                   h_a6vo, 
+                                                                                 acc_a6vn)
+                                                                           _ -> (minH_a6vm, 
+                                                                                 (f_a6vl
+                                                                                    : acc_a6vn))))
+                                                                  (GHC.Maybe.Nothing, []))
+                                                                 farExp_a6vh
+                                                         in
+                                                           (Data.Set.Internal.fromList
+                                                              GHC.Base.$
+                                                                (case minHoriz_a6vj of
+                                                                   GHC.Maybe.Just h_a6vq
+                                                                     -> (SP.SomeFailure
+                                                                           ((SP.FailureHorizon
+                                                                               @(SP.InputToken inp_aahm))
+                                                                              h_a6vq)
+                                                                           : res_a6vk)
+                                                                   GHC.Maybe.Nothing
+                                                                     -> res_a6vk))}) in
+         let
+           inputToken
+             = Data.Proxy.Proxy :: Data.Proxy.Proxy (SP.InputToken inp_aahm) in
+         let _ = "checkHorizon.noCheck" in
+         let name_2 = \ !callerOnReturn_a6vr
+                   !callerInput_a6vs
+                   !callerOnExceptionStackByLabel_a6vt
+                   -> let _ = "pushValue" in
+                      let _ = "pushValue"
+                      in
+                        do let dupv_a6vu = \ x_a6vv -> x_a6vv
+                           reg_1g <- GHC.STRef.newSTRef dupv_a6vu
+                           --let _ = "iter" in
+                           let onException_a6vw loopInput_a6vx
+                                 = let _ = "onException"
+                                   in
+                                     \ !_exn_a6vy !failInp_a6vz !farInp_a6vA !farExp_a6vB
+                                       -> let _ = "comment: raiseAgainIfConsumed" in
+                                          let _ = "saveInput checkedHorizon=0" in
+                                          let _ = "lift2Value checkedHorizon=0"
+                                          in
+                                            if ((\ (Data.Text.Internal.Text _ i_a6vC _)
+                                                   (Data.Text.Internal.Text _ j_a6vD _)
+                                                   -> (i_a6vC GHC.Classes.== j_a6vD))
+                                                  loopInput_a6vx)
+                                                 failInp_a6vz then
+                                                let _ = "choicesBranch checkedHorizon=0"
+                                                in
+                                                  do sr_a6vE <- GHC.STRef.readSTRef reg_1g
+                                                     --let _ = "pushValue" in
+                                                     --let _ = "lift2Value checkedHorizon=0" in
+                                                     --let _ = "lift2Value checkedHorizon=0" in
+                                                     --let _ = "resume" in
+                                                     (((callerOnReturn_a6vr farInp_a6vA) farExp_a6vB)
+                                                        (let _ = "resume.genCode" in ()))
+                                                       failInp_a6vz
+                                            else
+                                                let _ = "choicesBranch.else"
+                                                in
+                                                  ((((((Data.Map.Strict.Internal.findWithDefault
+                                                          finalRaise_a6uZ)
+                                                         SP.ExceptionFailure)
+                                                        callerOnExceptionStackByLabel_a6vt)
+                                                       SP.ExceptionFailure)
+                                                      failInp_a6vz)
+                                                     farInp_a6vA)
+                                                    farExp_a6vB
+                               loop_1h
+                                 = \ _callerOnReturn_a6vF
+                                     callerInput_a6vG
+                                     callerOnExceptionStackByLabel_a6vH
+                                     -> -- let _ = "pushValue" in
+                                        -- let _ = "comment: satisfy (\c_0 -> GHC.Classes.not (('<' GHC.Classes.== c_0) GHC.Classes.|| (('>' GHC.Classes.== c_0) GHC.Classes.|| (('+' GHC.Classes.== c_0) GHC.Classes.|| (('-' GHC.Classes.== c_0) GHC.Classes.|| ((',' GHC.Classes.== c_0) GHC.Classes.|| (('.' GHC.Classes.== c_0) GHC.Classes.|| (('[' GHC.Classes.== c_0) GHC.Classes.|| ((']' GHC.Classes.== c_0) GHC.Classes.|| GHC.Types.False)))))))))" in
+                                        let inp_a6vI = callerInput_a6vG in
+                                        let readFail_a6vJ = onException_a6vw callerInput_a6vG in
+                                        --let _ = "checkHorizon.newCheck: checkedHorizon=0 minHoriz=1" in
+                                          if readMore_a6uX inp_a6vI then
+                                              let _ = "checkToken" in
+                                              let !(# c_a6vK, cs_a6vL #) = readNext_a6uY inp_a6vI
+                                              in
+                                                if (\ c_a6vM
+                                                      -> GHC.Classes.not
+                                                           (('<' GHC.Classes.== c_a6vM)
+                                                              GHC.Classes.||
+                                                                (('>' GHC.Classes.== c_a6vM)
+                                                                   GHC.Classes.||
+                                                                     (('+' GHC.Classes.== c_a6vM)
+                                                                        GHC.Classes.||
+                                                                          (('-' GHC.Classes.== c_a6vM)
+                                                                             GHC.Classes.||
+                                                                               ((','
+                                                                                   GHC.Classes.==
+                                                                                     c_a6vM)
+                                                                                  GHC.Classes.||
+                                                                                    (('.'
+                                                                                        GHC.Classes.==
+                                                                                          c_a6vM)
+                                                                                       GHC.Classes.||
+                                                                                         (('['
+                                                                                             GHC.Classes.==
+                                                                                               c_a6vM)
+                                                                                            GHC.Classes.||
+                                                                                              ((']'
+                                                                                                  GHC.Classes.==
+                                                                                                    c_a6vM)
+                                                                                                 GHC.Classes.||
+                                                                                                   GHC.Types.False)))))))))
+                                                     c_a6vK then
+                                                    let _ = "lift2Value checkedHorizon=1"
+                                                    in
+                                                      do sr_a6vN <- GHC.STRef.readSTRef reg_1g
+                                                         --let _ = "lift2Value checkedHorizon=1" in
+                                                         do let dupv_a6vO = sr_a6vN
+                                                            (GHC.STRef.writeSTRef reg_1g) dupv_a6vO
+                                                            --let _ = "jump" in
+                                                            ((loop_1h
+                                                                (GHC.Err.error "invalid onReturn"))
+                                                               cs_a6vL)
+                                                              (((((Data.Map.Internal.Bin 1)
+                                                                    SP.ExceptionFailure)
+                                                                   readFail_a6vJ)
+                                                                  Data.Map.Internal.Tip)
+                                                                 Data.Map.Internal.Tip)
+                                                else
+                                                    let _ = "checkToken.fail"
+                                                    in
+                                                      (((readFail_a6vJ SP.ExceptionFailure) inp_a6vI)
+                                                         init_a6uW)
+                                                        Data.Set.Internal.empty
+                                          else
+                                              let _ = "checkHorizon.newCheck.fail" in
+                                              let
+                                                failExp_a6vP
+                                                  = (Data.Set.Internal.singleton
+                                                       GHC.Base.$
+                                                         (SP.SomeFailure
+                                                            GHC.Base.$
+                                                              (SP.FailureHorizon
+                                                                 @(SP.InputToken inp_aagU))
+                                                                1)) in
+                                              let
+                                                (# farInp_a6vQ, farExp_a6vR #)
+                                                  = case
+                                                        ((GHC.Classes.compare
+                                                            `Data.Function.on` SP.offset)
+                                                           init_a6uW)
+                                                          inp_a6vI
+                                                    of
+                                                      GHC.Types.LT -> (# inp_a6vI, failExp_a6vP #)
+                                                      GHC.Types.EQ
+                                                        -> (# init_a6uW, 
+                                                              (failExp_a6vP
+                                                                 GHC.Base.<> Data.Set.Internal.empty) #)
+                                                      GHC.Types.GT
+                                                        -> (# init_a6uW, Data.Set.Internal.empty #)
+                                              in
+                                                (((readFail_a6vJ SP.ExceptionFailure) inp_a6vI)
+                                                   farInp_a6vQ)
+                                                  farExp_a6vR
+                             in loop_1h callerOnReturn_a6vr callerInput_a6vs
+                               (((((Data.Map.Internal.Bin 1) SP.ExceptionFailure)
+                                    (((Data.Map.Strict.Internal.findWithDefault finalRaise_a6uZ)
+                                        SP.ExceptionFailure)
+                                       callerOnExceptionStackByLabel_a6vt))
+                                   Data.Map.Internal.Tip)
+                                  Data.Map.Internal.Tip)
+             name_1 = \ !callerOnReturn_a6vS
+                   !callerInput_a6vT
+                   !callerOnExceptionStackByLabel_a6vU
+                   -> let _ = "pushValue"
+                      in
+                        do let dupv_a6vV = \ x_a6vW -> x_a6vW
+                           reg_1i <- GHC.STRef.newSTRef dupv_a6vV
+                           let _ = "iter"
+                           let onException_a6vX loopInput_a6vY =
+                                  let _ = "onException"
+                                  in
+                                     \ !_exn_a6vZ !failInp_a6w0 !farInp_a6w1 !farExp_a6w2
+                                       -> let _ = "comment: raiseAgainIfConsumed" in
+                                          let _ = "saveInput checkedHorizon=0" in
+                                          let _ = "lift2Value checkedHorizon=0"
+                                          in
+                                            if ((\ (Data.Text.Internal.Text _ i_a6w3 _)
+                                                   (Data.Text.Internal.Text _ j_a6w4 _)
+                                                   -> (i_a6w3 GHC.Classes.== j_a6w4))
+                                                  loopInput_a6vY)
+                                                 failInp_a6w0 then
+                                                let _ = "choicesBranch checkedHorizon=0"
+                                                in
+                                                  do sr_a6w5 <- GHC.STRef.readSTRef reg_1i
+                                                     let _ = "pushValue"
+                                                     let _ = "lift2Value checkedHorizon=0"
+                                                     let _ = "resume" in
+                                                       (((callerOnReturn_a6vS farInp_a6w1) farExp_a6w2)
+                                                          (let _ = "resume.genCode" in sr_a6w5 []))
+                                                         failInp_a6w0
+                                            else
+                                                let _ = "choicesBranch.else"
+                                                in
+                                                  ((((((Data.Map.Strict.Internal.findWithDefault
+                                                          finalRaise_a6uZ)
+                                                         SP.ExceptionFailure)
+                                                        callerOnExceptionStackByLabel_a6vU)
+                                                       SP.ExceptionFailure)
+                                                      failInp_a6w0)
+                                                     farInp_a6w1)
+                                                    farExp_a6w2
+                               loop_1j = \ _callerOnReturn_a6w6
+                                     callerInput_a6w7
+                                     callerOnExceptionStackByLabel_a6w8
+                                     -> let _ = "pushValue" in
+                                        let
+                                          join_1k
+                                            = \ farInp_a6w9 farExp_a6wa v_a6wb !inp_a6wc
+                                                -> let _ = "lift2Value checkedHorizon=0"
+                                                   in
+                                                     ((name_2
+                                                         (let _ = "onReturn"
+                                                          in
+                                                            \ farInp_a6wd farExp_a6we v_a6wf !inp_a6wg
+                                                              -> let
+                                                                   _ = "lift2Value checkedHorizon=0" in
+                                                                 let _ = "pushValue" in
+                                                                 let _ = "lift2Value checkedHorizon=0"
+                                                                 in
+                                                                   do sr_a6wh <- GHC.STRef.readSTRef
+                                                                                   reg_1i
+                                                                      let
+                                                                        _ = "lift2Value checkedHorizon=0"
+                                                                        in
+                                                                        do let dupv_a6wi
+                                                                                 = \ x_a6wj
+                                                                                     -> sr_a6wh
+                                                                                          (((:) v_a6wb)
+                                                                                             x_a6wj)
+                                                                           (GHC.STRef.writeSTRef
+                                                                              reg_1i)
+                                                                             dupv_a6wi
+                                                                           let _ = "jump"
+                                                                             in
+                                                                             ((loop_1j
+                                                                                 (GHC.Err.error
+                                                                                    "invalid onReturn"))
+                                                                                inp_a6wg)
+                                                                               (((((Data.Map.Internal.Bin
+                                                                                      1)
+                                                                                     SP.ExceptionFailure)
+                                                                                    (onException_a6vX
+                                                                                       callerInput_a6w7))
+                                                                                   Data.Map.Internal.Tip)
+                                                                                  Data.Map.Internal.Tip)))
+                                                        inp_a6wc)
+                                                       (((((Data.Map.Internal.Bin 1)
+                                                             SP.ExceptionFailure)
+                                                            (onException_a6vX callerInput_a6w7))
+                                                           Data.Map.Internal.Tip)
+                                                          Data.Map.Internal.Tip) in
+                                        let _ = "comment: look" in
+                                        let _ = "saveInput checkedHorizon=0" in
+                                        -- let _ = "comment: satisfy ((\x_0 -> \x_1 -> x_0) GHC.Types.True)" in
+                                        let inp_a6wk = callerInput_a6w7 in
+                                        let readFail_a6wl = onException_a6vX callerInput_a6w7 in
+                                        let _ = "checkHorizon.newCheck: checkedHorizon=0 minHoriz=1"
+                                          in
+                                          if readMore_a6uX inp_a6wk then
+                                              let _ = "checkToken" in
+                                              let !(# c_a6wm, cs_a6wn #) = readNext_a6uY inp_a6wk in
+                                              let _ = "loadInput checkedHorizon=0" in
+                                              let inp_a6wo = callerInput_a6w7 in
+                                              let readFail_a6wp = readFail_a6wl in
+                                              let
+                                                _ = "checkHorizon.newCheck: checkedHorizon=0 minHoriz=1"
+                                              in
+                                                if readMore_a6uX inp_a6wo then
+                                                    if (\ x_a6wq -> ((GHC.Classes.==) '<') x_a6wq)
+                                                         c_a6wm then
+                                                        let _ = "choicesBranch checkedHorizon=1" in
+                                                        let _ = "pushValue" in
+                                                        -- let _ = "comment: satisfy ((\x_0 -> \x_1 -> x_0) GHC.Types.True)" in
+                                                        let
+                                                          _ = "checkHorizon.oldCheck: checkedHorizon=1" in
+                                                        let _ = "checkToken" in
+                                                        let
+                                                          !(# c_a6wr, cs_a6ws #)
+                                                            = readNext_a6uY inp_a6wo in
+                                                        let _ = "lift2Value checkedHorizon=0" in
+                                                        let _ = "resume"
+                                                          in
+                                                          (((join_1k init_a6uW)
+                                                              Data.Set.Internal.empty)
+                                                             (let _ = "resume.genCode"
+                                                              in Parsers.Brainfuck.Types.Backward))
+                                                            cs_a6ws
+                                                    else
+                                                        let _ = "choicesBranch.else"
+                                                        in
+                                                          if (\ x_a6wt -> ((GHC.Classes.==) '>') x_a6wt)
+                                                               c_a6wm then
+                                                              let
+                                                                _ = "choicesBranch checkedHorizon=1" in
+                                                              let _ = "pushValue" in
+                                                              --let _ = "comment: satisfy ((\x_0 -> \x_1 -> x_0) GHC.Types.True)" in
+                                                              let
+                                                                _ = "checkHorizon.oldCheck: checkedHorizon=1" in
+                                                              let _ = "checkToken" in
+                                                              let
+                                                                !(# c_a6wu, cs_a6wv #)
+                                                                  = readNext_a6uY inp_a6wo in
+                                                              let _ = "lift2Value checkedHorizon=0" in
+                                                              let _ = "resume"
+                                                              in
+                                                                (((join_1k init_a6uW)
+                                                                    Data.Set.Internal.empty)
+                                                                   (let _ = "resume.genCode"
+                                                                    in Parsers.Brainfuck.Types.Forward))
+                                                                  cs_a6wv
+                                                          else
+                                                              let _ = "choicesBranch.else"
+                                                              in
+                                                                if (\ x_a6ww
+                                                                      -> ((GHC.Classes.==) '+') x_a6ww)
+                                                                     c_a6wm then
+                                                                    let
+                                                                      _ = "choicesBranch checkedHorizon=1" in
+                                                                    let _ = "pushValue" in
+                                                                    -- let _ = "comment: satisfy ((\x_0 -> \x_1 -> x_0) GHC.Types.True)" in
+                                                                    let
+                                                                      _ = "checkHorizon.oldCheck: checkedHorizon=1" in
+                                                                    let _ = "checkToken" in
+                                                                    let
+                                                                      !(# c_a6wx, cs_a6wy #)
+                                                                        = readNext_a6uY inp_a6wo in
+                                                                    let
+                                                                      _ = "lift2Value checkedHorizon=0" in
+                                                                    let _ = "resume"
+                                                                    in
+                                                                      (((join_1k init_a6uW)
+                                                                          Data.Set.Internal.empty)
+                                                                         (let _ = "resume.genCode"
+                                                                          in
+                                                                            Parsers.Brainfuck.Types.Increment))
+                                                                        cs_a6wy
+                                                                else
+                                                                    let _ = "choicesBranch.else"
+                                                                    in
+                                                                      if (\ x_a6wz
+                                                                            -> ((GHC.Classes.==) '-')
+                                                                                 x_a6wz)
+                                                                           c_a6wm then
+                                                                          let
+                                                                            _ = "choicesBranch checkedHorizon=1" in
+                                                                          let _ = "pushValue" in
+                                                                          -- let _ = "comment: satisfy ((\x_0 -> \x_1 -> x_0) GHC.Types.True)" in
+                                                                          let
+                                                                            _ = "checkHorizon.oldCheck: checkedHorizon=1" in
+                                                                          let _ = "checkToken" in
+                                                                          let
+                                                                            !(# c_a6wA, cs_a6wB #)
+                                                                              = readNext_a6uY
+                                                                                  inp_a6wo in
+                                                                          let
+                                                                            _ = "lift2Value checkedHorizon=0" in
+                                                                          let _ = "resume"
+                                                                          in
+                                                                            (((join_1k init_a6uW)
+                                                                                Data.Set.Internal.empty)
+                                                                               (let _ = "resume.genCode"
+                                                                                in
+                                                                                  Parsers.Brainfuck.Types.Decrement))
+                                                                              cs_a6wB
+                                                                      else
+                                                                          let _ = "choicesBranch.else"
+                                                                          in
+                                                                            if (\ x_a6wC
+                                                                                  -> ((GHC.Classes.==)
+                                                                                        ',')
+                                                                                       x_a6wC)
+                                                                                 c_a6wm then
+                                                                                let
+                                                                                  _ = "choicesBranch checkedHorizon=1" in
+                                                                                let _ = "pushValue" in
+                                                                                --let _ = "comment: satisfy ((\x_0 -> \x_1 -> x_0) GHC.Types.True)" in
+                                                                                let
+                                                                                  _ = "checkHorizon.oldCheck: checkedHorizon=1" in
+                                                                                let _ = "checkToken" in
+                                                                                let
+                                                                                  !(# c_a6wD, cs_a6wE #)
+                                                                                    = readNext_a6uY
+                                                                                        inp_a6wo in
+                                                                                let
+                                                                                  _ = "lift2Value checkedHorizon=0" in
+                                                                                let _ = "resume"
+                                                                                in
+                                                                                  (((join_1k init_a6uW)
+                                                                                      Data.Set.Internal.empty)
+                                                                                     (let
+                                                                                        _ = "resume.genCode"
+                                                                                      in
+                                                                                        Parsers.Brainfuck.Types.Input))
+                                                                                    cs_a6wE
+                                                                            else
+                                                                                let
+                                                                                  _ = "choicesBranch.else"
+                                                                                in
+                                                                                  if (\ x_a6wF
+                                                                                        -> ((GHC.Classes.==)
+                                                                                              '.')
+                                                                                             x_a6wF)
+                                                                                       c_a6wm then
+                                                                                      let
+                                                                                        _ = "choicesBranch checkedHorizon=1" in
+                                                                                      let
+                                                                                        _ = "pushValue" in
+                                                                                      --let _ = "comment: satisfy ((\x_0 -> \x_1 -> x_0) GHC.Types.True)" in
+                                                                                      let
+                                                                                        _ = "checkHorizon.oldCheck: checkedHorizon=1" in
+                                                                                      let
+                                                                                        _ = "checkToken" in
+                                                                                      let
+                                                                                        !(# c_a6wG,
+                                                                                            cs_a6wH #)
+                                                                                          = readNext_a6uY
+                                                                                              inp_a6wo in
+                                                                                      let
+                                                                                        _ = "lift2Value checkedHorizon=0" in
+                                                                                      let _ = "resume"
+                                                                                      in
+                                                                                        (((join_1k
+                                                                                             init_a6uW)
+                                                                                            Data.Set.Internal.empty)
+                                                                                           (let
+                                                                                              _ = "resume.genCode"
+                                                                                            in
+                                                                                              Parsers.Brainfuck.Types.Output))
+                                                                                          cs_a6wH
+                                                                                  else
+                                                                                      let
+                                                                                        _ = "choicesBranch.else"
+                                                                                      in
+                                                                                        if (\ x_a6wI
+                                                                                              -> ((GHC.Classes.==)
+                                                                                                    '[')
+                                                                                                   x_a6wI)
+                                                                                             c_a6wm then
+                                                                                            let
+                                                                                              _ = "choicesBranch checkedHorizon=1" in
+                                                                                            let
+                                                                                              _ = "pushValue" in
+                                                                                            --let _ = "comment: satisfy ((\x_0 -> \x_1 -> x_0) GHC.Types.True)" in
+                                                                                            let
+                                                                                              _ = "checkHorizon.oldCheck: checkedHorizon=1" in
+                                                                                            let
+                                                                                              _ = "checkToken" in
+                                                                                            let
+                                                                                              !(# c_a6wJ,
+                                                                                                  cs_a6wK #)
+                                                                                                = readNext_a6uY
+                                                                                                    inp_a6wo in
+                                                                                            let
+                                                                                              _ = "lift2Value checkedHorizon=0"
+                                                                                            in
+                                                                                              ((name_2
+                                                                                                  (let
+                                                                                                     _ = "onReturn"
+                                                                                                   in
+                                                                                                     \ farInp_a6wL
+                                                                                                       farExp_a6wM
+                                                                                                       v_a6wN
+                                                                                                       !inp_a6wO
+                                                                                                       -> let
+                                                                                                            _ = "lift2Value checkedHorizon=0"
+                                                                                                          in
+                                                                                                            ((name_1
+                                                                                                                (let
+                                                                                                                   _ = "onReturn"
+                                                                                                                 in
+                                                                                                                   \ farInp_a6wP
+                                                                                                                     farExp_a6wQ
+                                                                                                                     v_a6wR
+                                                                                                                     !inp_a6wS
+                                                                                                                     -> let
+                                                                                                                          _ = "lift2Value checkedHorizon=0" in
+                                                                                                                        let
+                                                                                                                          _ = "comment: satisfy ((GHC.Classes.==) ']')" in
+                                                                                                                        let
+                                                                                                                          inp_a6wT
+                                                                                                                            = inp_a6wS in
+                                                                                                                        let
+                                                                                                                          readFail_a6wU
+                                                                                                                            = readFail_a6wp in
+                                                                                                                        let
+                                                                                                                          _ = "checkHorizon.newCheck: checkedHorizon=0 minHoriz=1"
+                                                                                                                        in
+                                                                                                                          if readMore_a6uX
+                                                                                                                               inp_a6wT then
+                                                                                                                              let
+                                                                                                                                _ = "checkToken" in
+                                                                                                                              let
+                                                                                                                                !(# c_a6wV,
+                                                                                                                                    cs_a6wW #)
+                                                                                                                                  = readNext_a6uY
+                                                                                                                                      inp_a6wT
+                                                                                                                              in
+                                                                                                                                if ((GHC.Classes.==)
+                                                                                                                                      ']')
+                                                                                                                                     c_a6wV then
+                                                                                                                                    let
+                                                                                                                                      _ = "lift2Value checkedHorizon=1" in
+                                                                                                                                    let
+                                                                                                                                      _ = "resume"
+                                                                                                                                    in
+                                                                                                                                      (((join_1k
+                                                                                                                                           farInp_a6wP)
+                                                                                                                                          farExp_a6wQ)
+                                                                                                                                         (let
+                                                                                                                                            _ = "resume.genCode"
+                                                                                                                                          in
+                                                                                                                                            Parsers.Brainfuck.Types.Loop
+                                                                                                                                              v_a6wR))
+                                                                                                                                        cs_a6wW
+                                                                                                                                else
+                                                                                                                                    let
+                                                                                                                                      _ = "checkToken.fail"
+                                                                                                                                    in
+                                                                                                                                      (((readFail_a6wU
+                                                                                                                                           SP.ExceptionFailure)
+                                                                                                                                          inp_a6wT)
+                                                                                                                                         farInp_a6wP)
+                                                                                                                                        farExp_a6wQ
+                                                                                                                          else
+                                                                                                                              let
+                                                                                                                                _ = "checkHorizon.newCheck.fail" in
+                                                                                                                              let
+                                                                                                                                failExp_a6wX
+                                                                                                                                  = (Data.Set.Internal.singleton
+                                                                                                                                       GHC.Base.$
+                                                                                                                                         (SP.SomeFailure
+                                                                                                                                            GHC.Base.$
+                                                                                                                                              (SP.FailureHorizon
+                                                                                                                                                 @(SP.InputToken inp_aagU))
+                                                                                                                                                1)) in
+                                                                                                                              let
+                                                                                                                                (# farInp_a6wY,
+                                                                                                                                   farExp_a6wZ #)
+                                                                                                                                  = case
+                                                                                                                                        ((GHC.Classes.compare
+                                                                                                                                            `Data.Function.on`
+                                                                                                                                              SP.offset)
+                                                                                                                                           farInp_a6wP)
+                                                                                                                                          inp_a6wT
+                                                                                                                                    of
+                                                                                                                                      GHC.Types.LT
+                                                                                                                                        -> (# inp_a6wT, 
+                                                                                                                                              failExp_a6wX #)
+                                                                                                                                      GHC.Types.EQ
+                                                                                                                                        -> (# farInp_a6wP, 
+                                                                                                                                              (failExp_a6wX
+                                                                                                                                                 GHC.Base.<>
+                                                                                                                                                   farExp_a6wQ) #)
+                                                                                                                                      GHC.Types.GT
+                                                                                                                                        -> (# farInp_a6wP, 
+                                                                                                                                              farExp_a6wQ #)
+                                                                                                                              in
+                                                                                                                                (((readFail_a6wU
+                                                                                                                                     SP.ExceptionFailure)
+                                                                                                                                    inp_a6wT)
+                                                                                                                                   farInp_a6wY)
+                                                                                                                                  farExp_a6wZ))
+                                                                                                               inp_a6wO)
+                                                                                                              (((((Data.Map.Internal.Bin
+                                                                                                                     1)
+                                                                                                                    SP.ExceptionFailure)
+                                                                                                                   readFail_a6wp)
+                                                                                                                  Data.Map.Internal.Tip)
+                                                                                                                 Data.Map.Internal.Tip)))
+                                                                                                 cs_a6wK)
+                                                                                                (((((Data.Map.Internal.Bin
+                                                                                                       1)
+                                                                                                      SP.ExceptionFailure)
+                                                                                                     readFail_a6wp)
+                                                                                                    Data.Map.Internal.Tip)
+                                                                                                   Data.Map.Internal.Tip)
+                                                                                        else
+                                                                                            let
+                                                                                              _ = "choicesBranch.else" in
+                                                                                            let
+                                                                                              failExp_a6x0
+                                                                                                = (((Data.Set.Internal.Bin
+                                                                                                       1)
+                                                                                                      (SP.SomeFailure
+                                                                                                         SP.FailureEmpty))
+                                                                                                     Data.Set.Internal.Tip)
+                                                                                                    Data.Set.Internal.Tip in
+                                                                                            let
+                                                                                              (# farInp_a6x1,
+                                                                                                 farExp_a6x2 #)
+                                                                                                = case
+                                                                                                      ((GHC.Classes.compare
+                                                                                                          `Data.Function.on`
+                                                                                                            SP.offset)
+                                                                                                         init_a6uW)
+                                                                                                        inp_a6wo
+                                                                                                  of
+                                                                                                    GHC.Types.LT
+                                                                                                      -> (# inp_a6wo, 
+                                                                                                            failExp_a6x0 #)
+                                                                                                    GHC.Types.EQ
+                                                                                                      -> (# init_a6uW, 
+                                                                                                            (failExp_a6x0
+                                                                                                               GHC.Base.<>
+                                                                                                                 Data.Set.Internal.empty) #)
+                                                                                                    GHC.Types.GT
+                                                                                                      -> (# init_a6uW, 
+                                                                                                            Data.Set.Internal.empty #)
+                                                                                            in
+                                                                                              (((readFail_a6wp
+                                                                                                   SP.ExceptionFailure)
+                                                                                                  inp_a6wo)
+                                                                                                 farInp_a6x1)
+                                                                                                farExp_a6x2
+                                                else
+                                                    let _ = "checkHorizon.newCheck.fail" in
+                                                    let
+                                                      failExp_a6x3
+                                                        = (Data.Set.Internal.singleton
+                                                             GHC.Base.$
+                                                               (SP.SomeFailure
+                                                                  GHC.Base.$
+                                                                    (SP.FailureHorizon
+                                                                       @(SP.InputToken inp_aagU))
+                                                                      1)) in
+                                                    let
+                                                      (# farInp_a6x4, farExp_a6x5 #)
+                                                        = case
+                                                              ((GHC.Classes.compare
+                                                                  `Data.Function.on` SP.offset)
+                                                                 init_a6uW)
+                                                                inp_a6wo
+                                                          of
+                                                            GHC.Types.LT -> (# inp_a6wo, failExp_a6x3 #)
+                                                            GHC.Types.EQ
+                                                              -> (# init_a6uW, 
+                                                                    (failExp_a6x3
+                                                                       GHC.Base.<>
+                                                                         Data.Set.Internal.empty) #)
+                                                            GHC.Types.GT
+                                                              -> (# init_a6uW, 
+                                                                    Data.Set.Internal.empty #)
+                                                    in
+                                                      (((readFail_a6wp SP.ExceptionFailure) inp_a6wo)
+                                                         farInp_a6x4)
+                                                        farExp_a6x5
+                                          else
+                                              let _ = "checkHorizon.newCheck.fail" in
+                                              let
+                                                failExp_a6x6
+                                                  = (Data.Set.Internal.singleton
+                                                       GHC.Base.$
+                                                         (SP.SomeFailure
+                                                            GHC.Base.$
+                                                              (SP.FailureHorizon
+                                                                 @(SP.InputToken inp_aagU))
+                                                                1)) in
+                                              let
+                                                (# farInp_a6x7, farExp_a6x8 #)
+                                                  = case
+                                                        ((GHC.Classes.compare
+                                                            `Data.Function.on` SP.offset)
+                                                           init_a6uW)
+                                                          inp_a6wk
+                                                    of
+                                                      GHC.Types.LT -> (# inp_a6wk, failExp_a6x6 #)
+                                                      GHC.Types.EQ
+                                                        -> (# init_a6uW, 
+                                                              (failExp_a6x6
+                                                                 GHC.Base.<> Data.Set.Internal.empty) #)
+                                                      GHC.Types.GT
+                                                        -> (# init_a6uW, Data.Set.Internal.empty #)
+                                              in
+                                                (((readFail_a6wl SP.ExceptionFailure) inp_a6wk)
+                                                   farInp_a6x7)
+                                                  farExp_a6x8
+                             in let _ = "jump" in
+                             ((loop_1j callerOnReturn_a6vS) callerInput_a6vT)
+                               (((((Data.Map.Internal.Bin 1) SP.ExceptionFailure)
+                                    (((Data.Map.Strict.Internal.findWithDefault finalRaise_a6uZ)
+                                        SP.ExceptionFailure)
+                                       callerOnExceptionStackByLabel_a6vU))
+                                   Data.Map.Internal.Tip)
+                                  Data.Map.Internal.Tip)
+         in
+         let _ = "pushValue" in
+           ((name_2
+               (let _ = "onReturn"
+                in
+                  \ farInp_a6x9 farExp_a6xa v_a6xb !inp_a6xc
+                    -> let _ = "lift2Value checkedHorizon=0"
+                       in
+                         ((name_1
+                             (let _ = "onReturn"
+                              in
+                                \ farInp_a6xd farExp_a6xe v_a6xf !inp_a6xg
+                                  -> let _ = "lift2Value checkedHorizon=0" in
+                                     let _ = "resume"
+                                     in
+                                       (((finalRet_a6uV farInp_a6xd) farExp_a6xe)
+                                          (let _ = "resume.genCode" in v_a6xf))
+                                         inp_a6xg))
+                            inp_a6xc)
+                           Data.Map.Internal.Tip))
+              init_a6uW)
+             Data.Map.Internal.Tip
+-}