TemplateHaskell: why is PprSplice much faster than DumpSplice?
authorJulien Moutinho <julm+symantic-parser@sourcephile.fr>
Thu, 6 May 2021 17:50:03 +0000 (19:50 +0200)
committerJulien Moutinho <julm+symantic-parser@sourcephile.fr>
Sun, 11 Jul 2021 17:43:42 +0000 (19:43 +0200)
$ make benchmarks/prof-time b=Brainfuck/ByteString/hanoi/SymanticParser.PprSplice
benchmarking Brainfuck/ByteString/hanoi/SymanticParser.PprSplice
time                 71.19 ms   (69.66 ms .. 72.58 ms)
                     0.999 R²   (0.999 R² .. 1.000 R²)
mean                 71.91 ms   (71.10 ms .. 73.18 ms)
std dev              1.755 ms   (973.5 μs .. 2.766 ms)

$ make benchmarks/prof-time b=Brainfuck/ByteString/hanoi/SymanticParser.DumpSplice
benchmarking Brainfuck/ByteString/hanoi/SymanticParser.DumpSplice
time                 170.5 ms   (169.7 ms .. 171.0 ms)
                     1.000 R²   (1.000 R² .. 1.000 R²)
mean                 169.4 ms   (168.3 ms .. 169.9 ms)
std dev              1.046 ms   (375.5 μs .. 1.650 ms)
variance introduced by outliers: 12% (moderately inflated)

Hacking.md [moved from HackMe.md with 89% similarity]
Makefile
benchmarks/Brainfuck.hs
benchmarks/Main.hs
parsers/Parsers/Brainfuck/SymanticParser/AutoSplice.hs [new file with mode: 0644]
parsers/Parsers/Brainfuck/SymanticParser/DumpSplice.hs [new file with mode: 0644]
parsers/Parsers/Brainfuck/SymanticParser/Grammar.hs [moved from parsers/Parsers/Brainfuck/SymanticParser.hs with 97% similarity]
parsers/Parsers/Brainfuck/SymanticParser/PprSplice.hs [new file with mode: 0644]
symantic-parser.cabal

similarity index 89%
rename from HackMe.md
rename to Hacking.md
index 6400cbf4499f3fdb9684dba2659ddb63abd8a7c2..18846d9a6f0d4292713cb6f659a57de3851b537e 100644 (file)
--- a/HackMe.md
@@ -27,7 +27,7 @@ make tests/prof t=.Golden.Parsers.G13
 ```bash
 make benchmarks/prof-time b=Brainfuck/ByteString/hanoi/'*' BENCHMARK_OPTIONS=-n1
 ```
-Then open `symantic-parser-benchmakrs.eventlog.json` with [`speedscope`](https://www.speedscope.app).
+Then open `symantic-parser-benchmarks.eventlog.json` with [`speedscope`](https://www.speedscope.app).
 
 #### Heap
 ```bash
index 3baf6313b82381ac9e54144cb216037e76456596..30694e9242d4215b7d49fb7084f07b6e50c82696 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -18,6 +18,7 @@ repl:
 parsers/repl:
        cabal repl $(project):parsers
 
+.PHONY: tests
 tests:
        cabal test $(CABAL_TEST_FLAGS) \
         --test-show-details always --test-options "$(TEST_OPTIONS)"
@@ -50,7 +51,9 @@ tests/repl:
 %.eventlog.json: %.eventlog
        hs-speedscope $<
 
-b benchmarks/html/$(version).html:
+.PHONY: benchmarks/html/$(version).html
+b benchmarks: benchmarks/html/$(version).html
+benchmarks/html/$(version).html:
        mkdir -p benchmarks/html
        cabal bench $(CABAL_BENCH_FLAGS) --benchmark-options "$(BENCHMARK_OPTIONS)"
 benchmarks/repl:
index f5199d1b49d99b90ab0d9762635b3fd3afa56fc5..c0d3e34232d978fcb177ca9439a31c5bc839c8d6 100644 (file)
@@ -2,7 +2,7 @@
 {-# LANGUAGE TypeApplications #-}
 {-# LANGUAGE TypeFamilies #-}
 {-# OPTIONS_GHC -Wno-missing-signatures #-}
- -- for Symantic.Parser's TemplateHaskell
+-- for Symantic.Parser's TemplateHaskell
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE UnboxedTuples #-}
@@ -28,7 +28,10 @@ import qualified System.IO as IO
 import qualified Symantic.Parser as SP
 import qualified Parsers.Brainfuck.Attoparsec as AP.Brainfuck
 import qualified Parsers.Brainfuck.Handrolled as HR.Brainfuck
-import qualified Parsers.Brainfuck.SymanticParser as SP.Brainfuck
+import qualified Parsers.Brainfuck.SymanticParser.Grammar as SP.Brainfuck
+import qualified Parsers.Brainfuck.SymanticParser.AutoSplice as SP.Brainfuck.AutoSplice
+import qualified Parsers.Brainfuck.SymanticParser.DumpSplice as SP.Brainfuck.DumpSplice
+import qualified Parsers.Brainfuck.SymanticParser.PprSplice as SP.Brainfuck.PprSplice
 import Paths_symantic_parser
 
 inputPath inputName = getDataFileName ("parsers/Parsers/Brainfuck/inputs/"<>inputName<>".bf")
@@ -54,7 +57,13 @@ benchBrainfuck inputName =
   , bgroup "ByteString"
     [ env (BS.readFile =<< inputPath inputName) $ \inp ->
       bgroup inputName
-        [ bench "SymanticParser" $
+        [ bench "SymanticParser.PprSplice" $
+          nf SP.Brainfuck.PprSplice.parserByteString inp
+        , bench "SymanticParser.DumpSplice" $
+          nf SP.Brainfuck.DumpSplice.parserByteString inp
+        , bench "SymanticParser.AutoSplice" $
+          nf SP.Brainfuck.AutoSplice.parserByteString inp
+        , bench "SymanticParser" $
           nf $$(SP.runParser @BS.ByteString SP.Brainfuck.grammar) inp
         , bench "Attoparsec" $
           nf (AP.ByteString.parse AP.Brainfuck.parser) inp
@@ -77,3 +86,6 @@ benchmark = bgroup "Brainfuck" $ List.concat
   , benchBrainfuck "compiler"
   , benchBrainfuck "hanoi"
   ]
+
+init =
+  SP.Brainfuck.PprSplice.dumpSplice
index d79b32b13fc91199a1e7a46e50e114d08e00b858..f71fc7cb9e1dc19c6dd2e537710412b5b9102dbf 100644 (file)
@@ -5,7 +5,8 @@ import Prelude
 import qualified Brainfuck
 
 main :: IO ()
-main =
+main = do
+  Brainfuck.init
   defaultMain $
    [ Brainfuck.benchmark
    ]
diff --git a/parsers/Parsers/Brainfuck/SymanticParser/AutoSplice.hs b/parsers/Parsers/Brainfuck/SymanticParser/AutoSplice.hs
new file mode 100644 (file)
index 0000000..67787ca
--- /dev/null
@@ -0,0 +1,23 @@
+{-# LANGUAGE AllowAmbiguousTypes #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE TypeApplications #-}
+{-# LANGUAGE ViewPatterns #-}
+-- for Symantic.Parser's TemplateHaskell
+{-# LANGUAGE MagicHash #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE UnboxedTuples #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-unused-local-binds #-}
+module Parsers.Brainfuck.SymanticParser.AutoSplice where
+
+import Data.Either (Either)
+import qualified Data.ByteString as BS
+import qualified Symantic.Parser as SP
+
+import Parsers.Brainfuck.SymanticParser.Grammar (grammar)
+import Parsers.Brainfuck.Types (Instruction)
+
+parserByteString :: BS.ByteString -> Either (SP.ParsingError BS.ByteString) [Instruction]
+parserByteString = $$(SP.runParser @BS.ByteString grammar)
diff --git a/parsers/Parsers/Brainfuck/SymanticParser/DumpSplice.hs b/parsers/Parsers/Brainfuck/SymanticParser/DumpSplice.hs
new file mode 100644 (file)
index 0000000..f03e4e3
--- /dev/null
@@ -0,0 +1,1171 @@
+{-# LANGUAGE AllowAmbiguousTypes #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE TypeApplications #-}
+{-# LANGUAGE ViewPatterns #-}
+-- for Symantic.Parser's TemplateHaskell
+{-# LANGUAGE MagicHash #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE UnboxedTuples #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-unused-local-binds #-}
+module Parsers.Brainfuck.SymanticParser.DumpSplice where
+
+import qualified Data.ByteString as BS
+import qualified Data.ByteString.Internal
+import qualified Data.Either
+import qualified Data.Function
+import qualified Data.Map.Internal
+import qualified Data.Map.Strict.Internal
+import qualified Data.Proxy
+import qualified Data.Set.Internal
+import qualified Data.Text.Internal
+import qualified Data.Text.Unsafe
+import qualified GHC.Base
+import qualified GHC.Classes
+import qualified GHC.ForeignPtr
+import qualified GHC.Maybe
+import qualified GHC.Num
+import qualified GHC.Prim
+import qualified GHC.Show
+import qualified GHC.Tuple
+import qualified GHC.Types
+import qualified GHC.Word
+import qualified Language.Haskell.TH as TH
+import qualified Language.Haskell.TH.Syntax as TH
+import qualified Prelude
+import qualified Symantic.Parser as SP
+import qualified Symantic.Parser.Grammar.Combinators
+import qualified Symantic.Parser.Haskell
+import qualified Symantic.Parser.Machine
+import qualified Symantic.Parser.Machine.Generate
+import qualified Symantic.Parser.Machine.Input
+import qualified System.IO as IO
+import Data.Either (Either)
+
+import qualified Parsers.Brainfuck.Types
+import Parsers.Brainfuck.Types (Instruction)
+
+-- The splice below has been manually paste with:
+-- :r dist-newstyle/build/x86_64-linux/ghc-9.0.1/symantic-parser-*/l/parsers/build/parsers/parsers/Parsers/Brainfuck/SymanticParser/AutoSplice.dump-splices
+-- :%s/\%x00//g
+-- :%s/#\(_[0-9]\+\)/\1#/g
+parserByteString :: BS.ByteString -> Either (SP.ParsingError BS.ByteString) [Instruction]
+parserByteString =
+    \ (input_ama8 :: inp_a1S5K)
+      -> let
+           !(# init_amaa, readMore_amab, readNext_amac #)
+             = let
+                 !(Data.ByteString.Internal.PS (GHC.ForeignPtr.ForeignPtr addr_amae#
+                                                                          final_amaf)
+                                               off_amag size_amah)
+                   = input_ama8
+                 next_amai i_amaj@(GHC.Types.I# i_amak#)
+                   = case
+                         ((GHC.Prim.readWord8OffAddr#
+                             (addr_amae# `GHC.Prim.plusAddr#` i_amak#))
+                            0#)
+                           GHC.Prim.realWorld#
+                     of {
+                       (# s'_amal, x_amam #)
+                         -> case (GHC.Prim.touch# final_amaf) s'_amal of {
+                              _ -> (# GHC.Word.W8# x_amam, (i_amaj GHC.Num.+ 1) #) } }
+               in (# off_amag, (GHC.Classes.< size_amah), next_amai #)
+           finalRet_ama9
+             = \ _farInp_aman _farExp_amao v_amap _inp_amaq
+                 -> Data.Either.Right v_amap
+           finalRaise_amad :: forall b_amar. SP.Catcher inp_a1S5K b_amar
+             = \ !exn_amas _failInp_amat !farInp_amau !farExp_amav
+                 -> Data.Either.Left
+                      SP.ParsingErrorStandard
+                        {SP.parsingErrorOffset = SP.offset farInp_amau,
+                         SP.parsingErrorException = exn_amas,
+                         SP.parsingErrorUnexpected = if readMore_amab farInp_amau then
+                                                         GHC.Maybe.Just
+                                                           (let
+                                                              (# c_amaw, _ #)
+                                                                = readNext_amac farInp_amau
+                                                            in c_amaw)
+                                                     else
+                                                         GHC.Maybe.Nothing,
+                         SP.parsingErrorExpecting = farExp_amav} in
+         let
+           inputToken
+             = Data.Proxy.Proxy :: Data.Proxy.Proxy (SP.InputToken inp_a1S5K) in
+         let
+           name_1
+             = \ !ok_amcU !inp_amcV !koByLabel_amcW
+                 -> ((name_4
+                        (let _ = "suspend"
+                         in
+                           \ farInp_amcX farExp_amcY v_amcZ !inp_amd0
+                             -> let _ = "resume"
+                                in
+                                  (((ok_amcU farInp_amcX) farExp_amcY)
+                                     (let _ = "resume.genCode" in ()))
+                                    inp_amd0))
+                       inp_amcV)
+                      (((((Data.Map.Internal.Bin 1) SP.ExceptionFailure)
+                           (((Data.Map.Strict.Internal.findWithDefault finalRaise_amad)
+                               SP.ExceptionFailure)
+                              koByLabel_amcW))
+                          Data.Map.Internal.Tip)
+                         Data.Map.Internal.Tip)
+           name_2
+             = \ !ok_amcN !inp_amcO !koByLabel_amcP
+                 -> ((name_3
+                        (let _ = "suspend"
+                         in
+                           \ farInp_amcQ farExp_amcR v_amcS !inp_amcT
+                             -> let _ = "resume"
+                                in
+                                  (((ok_amcN farInp_amcQ) farExp_amcR)
+                                     (let _ = "resume.genCode" in v_amcS []))
+                                    inp_amcT))
+                       inp_amcO)
+                      (((((Data.Map.Internal.Bin 1) SP.ExceptionFailure)
+                           (((Data.Map.Strict.Internal.findWithDefault finalRaise_amad)
+                               SP.ExceptionFailure)
+                              koByLabel_amcP))
+                          Data.Map.Internal.Tip)
+                         Data.Map.Internal.Tip)
+           name_3
+             = \ !ok_amaS !inp_amaT !koByLabel_amaU
+                 -> let _ = "catch ExceptionFailure" in
+                    let
+                      catchHandler_amaV
+                        !_exn_amaW
+                        !failInp_amaX
+                        !farInp_amaY
+                        !farExp_amaZ
+                        = let _ = "catch.ko ExceptionFailure"
+                          in
+                            if (((GHC.Classes.==) @GHC.Types.Int) inp_amaT) failInp_amaX then
+                                let _ = "choicesBranch.then" in
+                                let _ = "resume"
+                                in
+                                  (((ok_amaS farInp_amaY) farExp_amaZ)
+                                     (let _ = "resume.genCode" in \ x_amb0 -> x_amb0))
+                                    failInp_amaX
+                            else
+                                let _ = "choicesBranch.else"
+                                in
+                                  ((((((Data.Map.Strict.Internal.findWithDefault finalRaise_amad)
+                                         SP.ExceptionFailure)
+                                        koByLabel_amaU)
+                                       SP.ExceptionFailure)
+                                      failInp_amaX)
+                                     farInp_amaY)
+                                    farExp_amaZ in
+                    let
+                      join_1s
+                        = \ farInp_amb1 farExp_amb2 v_amb3 !inp_amb4
+                            -> ((name_1
+                                   (let _ = "suspend"
+                                    in
+                                      \ farInp_amb5 farExp_amb6 v_amb7 !inp_amb8
+                                        -> ((name_3
+                                               (let _ = "suspend"
+                                                in
+                                                  \ farInp_amb9 farExp_amba v_ambb !inp_ambc
+                                                    -> let _ = "resume"
+                                                       in
+                                                         (((ok_amaS farInp_amb9) farExp_amba)
+                                                            (let _ = "resume.genCode"
+                                                             in
+                                                               \ x_ambd
+                                                                 -> (v_amb3 : v_ambb x_ambd)))
+                                                           inp_ambc))
+                                              inp_amb8)
+                                             (((((Data.Map.Internal.Bin 1) SP.ExceptionFailure)
+                                                  catchHandler_amaV)
+                                                 Data.Map.Internal.Tip)
+                                                Data.Map.Internal.Tip)))
+                                  inp_amb4)
+                                 (((((Data.Map.Internal.Bin 1) SP.ExceptionFailure)
+                                      catchHandler_amaV)
+                                     Data.Map.Internal.Tip)
+                                    Data.Map.Internal.Tip) in
+                    let readFail_ambe = catchHandler_amaV
+                    in
+                      if readMore_amab inp_amaT then
+                          let !(# c_ambf, cs_ambg #) = readNext_amac inp_amaT
+                          in
+                            if (\ x_ambh -> GHC.Types.True) c_ambf then
+                                if (60 GHC.Classes.== c_ambf) then
+                                    let _ = "choicesBranch.then" in
+                                    let readFail_ambi = readFail_ambe
+                                    in
+                                      if readMore_amab inp_amaT then
+                                          let !(# c_ambj, cs_ambk #) = readNext_amac inp_amaT
+                                          in
+                                            if (\ x_ambl -> GHC.Types.True) c_ambj then
+                                                let _ = "resume"
+                                                in
+                                                  (((join_1s init_amaa) Data.Set.Internal.empty)
+                                                     (let _ = "resume.genCode"
+                                                      in Parsers.Brainfuck.Types.Backward))
+                                                    cs_ambk
+                                            else
+                                                let _ = "checkToken.else" in
+                                                let
+                                                  failExp_ambm
+                                                    = (((Data.Set.Internal.Bin 1)
+                                                          (SP.SomeFailure
+                                                             (case inputToken of {
+                                                                (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
+                                                                  -> SP.FailureAny @tok'_aLiK })))
+                                                         Data.Set.Internal.Tip)
+                                                        Data.Set.Internal.Tip in
+                                                let
+                                                  (# farInp_ambn, farExp_ambo #)
+                                                    = case
+                                                          ((GHC.Classes.compare @GHC.Types.Int)
+                                                             init_amaa)
+                                                            inp_amaT
+                                                      of
+                                                        GHC.Types.LT -> (# inp_amaT, failExp_ambm #)
+                                                        GHC.Types.EQ
+                                                          -> (# init_amaa, 
+                                                                (failExp_ambm
+                                                                   GHC.Base.<>
+                                                                     Data.Set.Internal.empty) #)
+                                                        GHC.Types.GT
+                                                          -> (# init_amaa, 
+                                                                Data.Set.Internal.empty #)
+                                                in
+                                                  (((readFail_ambi SP.ExceptionFailure) inp_amaT)
+                                                     farInp_ambn)
+                                                    farExp_ambo
+                                      else
+                                          let _ = "checkHorizon.else" in
+                                          let
+                                            failExp_ambp
+                                              = (((Data.Set.Internal.Bin 1)
+                                                    (SP.SomeFailure
+                                                       (case inputToken of {
+                                                          (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
+                                                            -> (SP.FailureHorizon @tok'_aLiK) 1 })))
+                                                   Data.Set.Internal.Tip)
+                                                  Data.Set.Internal.Tip in
+                                          let
+                                            (# farInp_ambq, farExp_ambr #)
+                                              = case
+                                                    ((GHC.Classes.compare @GHC.Types.Int) init_amaa)
+                                                      inp_amaT
+                                                of
+                                                  GHC.Types.LT -> (# inp_amaT, failExp_ambp #)
+                                                  GHC.Types.EQ
+                                                    -> (# init_amaa, 
+                                                          (failExp_ambp
+                                                             GHC.Base.<> Data.Set.Internal.empty) #)
+                                                  GHC.Types.GT
+                                                    -> (# init_amaa, Data.Set.Internal.empty #)
+                                          in
+                                            (((readFail_ambi SP.ExceptionFailure) inp_amaT)
+                                               farInp_ambq)
+                                              farExp_ambr
+                                else
+                                    let _ = "choicesBranch.else"
+                                    in
+                                      if (62 GHC.Classes.== c_ambf) then
+                                          let _ = "choicesBranch.then" in
+                                          let readFail_ambs = readFail_ambe
+                                          in
+                                            if readMore_amab inp_amaT then
+                                                let !(# c_ambt, cs_ambu #) = readNext_amac inp_amaT
+                                                in
+                                                  if (\ x_ambv -> GHC.Types.True) c_ambt then
+                                                      let _ = "resume"
+                                                      in
+                                                        (((join_1s init_amaa)
+                                                            Data.Set.Internal.empty)
+                                                           (let _ = "resume.genCode"
+                                                            in Parsers.Brainfuck.Types.Forward))
+                                                          cs_ambu
+                                                  else
+                                                      let _ = "checkToken.else" in
+                                                      let
+                                                        failExp_ambw
+                                                          = (((Data.Set.Internal.Bin 1)
+                                                                (SP.SomeFailure
+                                                                   (case inputToken of {
+                                                                      (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
+                                                                        -> SP.FailureAny
+                                                                             @tok'_aLiK })))
+                                                               Data.Set.Internal.Tip)
+                                                              Data.Set.Internal.Tip in
+                                                      let
+                                                        (# farInp_ambx, farExp_amby #)
+                                                          = case
+                                                                ((GHC.Classes.compare
+                                                                    @GHC.Types.Int)
+                                                                   init_amaa)
+                                                                  inp_amaT
+                                                            of
+                                                              GHC.Types.LT
+                                                                -> (# inp_amaT, failExp_ambw #)
+                                                              GHC.Types.EQ
+                                                                -> (# init_amaa, 
+                                                                      (failExp_ambw
+                                                                         GHC.Base.<>
+                                                                           Data.Set.Internal.empty) #)
+                                                              GHC.Types.GT
+                                                                -> (# init_amaa, 
+                                                                      Data.Set.Internal.empty #)
+                                                      in
+                                                        (((readFail_ambs SP.ExceptionFailure)
+                                                            inp_amaT)
+                                                           farInp_ambx)
+                                                          farExp_amby
+                                            else
+                                                let _ = "checkHorizon.else" in
+                                                let
+                                                  failExp_ambz
+                                                    = (((Data.Set.Internal.Bin 1)
+                                                          (SP.SomeFailure
+                                                             (case inputToken of {
+                                                                (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
+                                                                  -> (SP.FailureHorizon @tok'_aLiK)
+                                                                       1 })))
+                                                         Data.Set.Internal.Tip)
+                                                        Data.Set.Internal.Tip in
+                                                let
+                                                  (# farInp_ambA, farExp_ambB #)
+                                                    = case
+                                                          ((GHC.Classes.compare @GHC.Types.Int)
+                                                             init_amaa)
+                                                            inp_amaT
+                                                      of
+                                                        GHC.Types.LT -> (# inp_amaT, failExp_ambz #)
+                                                        GHC.Types.EQ
+                                                          -> (# init_amaa, 
+                                                                (failExp_ambz
+                                                                   GHC.Base.<>
+                                                                     Data.Set.Internal.empty) #)
+                                                        GHC.Types.GT
+                                                          -> (# init_amaa, 
+                                                                Data.Set.Internal.empty #)
+                                                in
+                                                  (((readFail_ambs SP.ExceptionFailure) inp_amaT)
+                                                     farInp_ambA)
+                                                    farExp_ambB
+                                      else
+                                          let _ = "choicesBranch.else"
+                                          in
+                                            if (43 GHC.Classes.== c_ambf) then
+                                                let _ = "choicesBranch.then" in
+                                                let readFail_ambC = readFail_ambe
+                                                in
+                                                  if readMore_amab inp_amaT then
+                                                      let
+                                                        !(# c_ambD, cs_ambE #)
+                                                          = readNext_amac inp_amaT
+                                                      in
+                                                        if (\ x_ambF -> GHC.Types.True) c_ambD then
+                                                            let _ = "resume"
+                                                            in
+                                                              (((join_1s init_amaa)
+                                                                  Data.Set.Internal.empty)
+                                                                 (let _ = "resume.genCode"
+                                                                  in
+                                                                    Parsers.Brainfuck.Types.Increment))
+                                                                cs_ambE
+                                                        else
+                                                            let _ = "checkToken.else" in
+                                                            let
+                                                              failExp_ambG
+                                                                = (((Data.Set.Internal.Bin 1)
+                                                                      (SP.SomeFailure
+                                                                         (case inputToken of {
+                                                                            (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
+                                                                              -> SP.FailureAny
+                                                                                   @tok'_aLiK })))
+                                                                     Data.Set.Internal.Tip)
+                                                                    Data.Set.Internal.Tip in
+                                                            let
+                                                              (# farInp_ambH, farExp_ambI #)
+                                                                = case
+                                                                      ((GHC.Classes.compare
+                                                                          @GHC.Types.Int)
+                                                                         init_amaa)
+                                                                        inp_amaT
+                                                                  of
+                                                                    GHC.Types.LT
+                                                                      -> (# inp_amaT, 
+                                                                            failExp_ambG #)
+                                                                    GHC.Types.EQ
+                                                                      -> (# init_amaa, 
+                                                                            (failExp_ambG
+                                                                               GHC.Base.<>
+                                                                                 Data.Set.Internal.empty) #)
+                                                                    GHC.Types.GT
+                                                                      -> (# init_amaa, 
+                                                                            Data.Set.Internal.empty #)
+                                                            in
+                                                              (((readFail_ambC SP.ExceptionFailure)
+                                                                  inp_amaT)
+                                                                 farInp_ambH)
+                                                                farExp_ambI
+                                                  else
+                                                      let _ = "checkHorizon.else" in
+                                                      let
+                                                        failExp_ambJ
+                                                          = (((Data.Set.Internal.Bin 1)
+                                                                (SP.SomeFailure
+                                                                   (case inputToken of {
+                                                                      (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
+                                                                        -> (SP.FailureHorizon
+                                                                              @tok'_aLiK)
+                                                                             1 })))
+                                                               Data.Set.Internal.Tip)
+                                                              Data.Set.Internal.Tip in
+                                                      let
+                                                        (# farInp_ambK, farExp_ambL #)
+                                                          = case
+                                                                ((GHC.Classes.compare
+                                                                    @GHC.Types.Int)
+                                                                   init_amaa)
+                                                                  inp_amaT
+                                                            of
+                                                              GHC.Types.LT
+                                                                -> (# inp_amaT, failExp_ambJ #)
+                                                              GHC.Types.EQ
+                                                                -> (# init_amaa, 
+                                                                      (failExp_ambJ
+                                                                         GHC.Base.<>
+                                                                           Data.Set.Internal.empty) #)
+                                                              GHC.Types.GT
+                                                                -> (# init_amaa, 
+                                                                      Data.Set.Internal.empty #)
+                                                      in
+                                                        (((readFail_ambC SP.ExceptionFailure)
+                                                            inp_amaT)
+                                                           farInp_ambK)
+                                                          farExp_ambL
+                                            else
+                                                let _ = "choicesBranch.else"
+                                                in
+                                                  if (45 GHC.Classes.== c_ambf) then
+                                                      let _ = "choicesBranch.then" in
+                                                      let readFail_ambM = readFail_ambe
+                                                      in
+                                                        if readMore_amab inp_amaT then
+                                                            let
+                                                              !(# c_ambN, cs_ambO #)
+                                                                = readNext_amac inp_amaT
+                                                            in
+                                                              if (\ x_ambP -> GHC.Types.True)
+                                                                   c_ambN then
+                                                                  let _ = "resume"
+                                                                  in
+                                                                    (((join_1s init_amaa)
+                                                                        Data.Set.Internal.empty)
+                                                                       (let _ = "resume.genCode"
+                                                                        in
+                                                                          Parsers.Brainfuck.Types.Decrement))
+                                                                      cs_ambO
+                                                              else
+                                                                  let _ = "checkToken.else" in
+                                                                  let
+                                                                    failExp_ambQ
+                                                                      = (((Data.Set.Internal.Bin 1)
+                                                                            (SP.SomeFailure
+                                                                               (case inputToken of {
+                                                                                  (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
+                                                                                    -> SP.FailureAny
+                                                                                         @tok'_aLiK })))
+                                                                           Data.Set.Internal.Tip)
+                                                                          Data.Set.Internal.Tip in
+                                                                  let
+                                                                    (# farInp_ambR, farExp_ambS #)
+                                                                      = case
+                                                                            ((GHC.Classes.compare
+                                                                                @GHC.Types.Int)
+                                                                               init_amaa)
+                                                                              inp_amaT
+                                                                        of
+                                                                          GHC.Types.LT
+                                                                            -> (# inp_amaT, 
+                                                                                  failExp_ambQ #)
+                                                                          GHC.Types.EQ
+                                                                            -> (# init_amaa, 
+                                                                                  (failExp_ambQ
+                                                                                     GHC.Base.<>
+                                                                                       Data.Set.Internal.empty) #)
+                                                                          GHC.Types.GT
+                                                                            -> (# init_amaa, 
+                                                                                  Data.Set.Internal.empty #)
+                                                                  in
+                                                                    (((readFail_ambM
+                                                                         SP.ExceptionFailure)
+                                                                        inp_amaT)
+                                                                       farInp_ambR)
+                                                                      farExp_ambS
+                                                        else
+                                                            let _ = "checkHorizon.else" in
+                                                            let
+                                                              failExp_ambT
+                                                                = (((Data.Set.Internal.Bin 1)
+                                                                      (SP.SomeFailure
+                                                                         (case inputToken of {
+                                                                            (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
+                                                                              -> (SP.FailureHorizon
+                                                                                    @tok'_aLiK)
+                                                                                   1 })))
+                                                                     Data.Set.Internal.Tip)
+                                                                    Data.Set.Internal.Tip in
+                                                            let
+                                                              (# farInp_ambU, farExp_ambV #)
+                                                                = case
+                                                                      ((GHC.Classes.compare
+                                                                          @GHC.Types.Int)
+                                                                         init_amaa)
+                                                                        inp_amaT
+                                                                  of
+                                                                    GHC.Types.LT
+                                                                      -> (# inp_amaT, 
+                                                                            failExp_ambT #)
+                                                                    GHC.Types.EQ
+                                                                      -> (# init_amaa, 
+                                                                            (failExp_ambT
+                                                                               GHC.Base.<>
+                                                                                 Data.Set.Internal.empty) #)
+                                                                    GHC.Types.GT
+                                                                      -> (# init_amaa, 
+                                                                            Data.Set.Internal.empty #)
+                                                            in
+                                                              (((readFail_ambM SP.ExceptionFailure)
+                                                                  inp_amaT)
+                                                                 farInp_ambU)
+                                                                farExp_ambV
+                                                  else
+                                                      let _ = "choicesBranch.else"
+                                                      in
+                                                        if (44 GHC.Classes.== c_ambf) then
+                                                            let _ = "choicesBranch.then" in
+                                                            let readFail_ambW = readFail_ambe
+                                                            in
+                                                              if readMore_amab inp_amaT then
+                                                                  let
+                                                                    !(# c_ambX, cs_ambY #)
+                                                                      = readNext_amac inp_amaT
+                                                                  in
+                                                                    if (\ x_ambZ -> GHC.Types.True)
+                                                                         c_ambX then
+                                                                        let _ = "resume"
+                                                                        in
+                                                                          (((join_1s init_amaa)
+                                                                              Data.Set.Internal.empty)
+                                                                             (let
+                                                                                _ = "resume.genCode"
+                                                                              in
+                                                                                Parsers.Brainfuck.Types.Input))
+                                                                            cs_ambY
+                                                                    else
+                                                                        let _ = "checkToken.else" in
+                                                                        let
+                                                                          failExp_amc0
+                                                                            = (((Data.Set.Internal.Bin
+                                                                                   1)
+                                                                                  (SP.SomeFailure
+                                                                                     (case
+                                                                                          inputToken
+                                                                                      of {
+                                                                                        (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
+                                                                                          -> SP.FailureAny
+                                                                                               @tok'_aLiK })))
+                                                                                 Data.Set.Internal.Tip)
+                                                                                Data.Set.Internal.Tip in
+                                                                        let
+                                                                          (# farInp_amc1,
+                                                                             farExp_amc2 #)
+                                                                            = case
+                                                                                  ((GHC.Classes.compare
+                                                                                      @GHC.Types.Int)
+                                                                                     init_amaa)
+                                                                                    inp_amaT
+                                                                              of
+                                                                                GHC.Types.LT
+                                                                                  -> (# inp_amaT, 
+                                                                                        failExp_amc0 #)
+                                                                                GHC.Types.EQ
+                                                                                  -> (# init_amaa, 
+                                                                                        (failExp_amc0
+                                                                                           GHC.Base.<>
+                                                                                             Data.Set.Internal.empty) #)
+                                                                                GHC.Types.GT
+                                                                                  -> (# init_amaa, 
+                                                                                        Data.Set.Internal.empty #)
+                                                                        in
+                                                                          (((readFail_ambW
+                                                                               SP.ExceptionFailure)
+                                                                              inp_amaT)
+                                                                             farInp_amc1)
+                                                                            farExp_amc2
+                                                              else
+                                                                  let _ = "checkHorizon.else" in
+                                                                  let
+                                                                    failExp_amc3
+                                                                      = (((Data.Set.Internal.Bin 1)
+                                                                            (SP.SomeFailure
+                                                                               (case inputToken of {
+                                                                                  (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
+                                                                                    -> (SP.FailureHorizon
+                                                                                          @tok'_aLiK)
+                                                                                         1 })))
+                                                                           Data.Set.Internal.Tip)
+                                                                          Data.Set.Internal.Tip in
+                                                                  let
+                                                                    (# farInp_amc4, farExp_amc5 #)
+                                                                      = case
+                                                                            ((GHC.Classes.compare
+                                                                                @GHC.Types.Int)
+                                                                               init_amaa)
+                                                                              inp_amaT
+                                                                        of
+                                                                          GHC.Types.LT
+                                                                            -> (# inp_amaT, 
+                                                                                  failExp_amc3 #)
+                                                                          GHC.Types.EQ
+                                                                            -> (# init_amaa, 
+                                                                                  (failExp_amc3
+                                                                                     GHC.Base.<>
+                                                                                       Data.Set.Internal.empty) #)
+                                                                          GHC.Types.GT
+                                                                            -> (# init_amaa, 
+                                                                                  Data.Set.Internal.empty #)
+                                                                  in
+                                                                    (((readFail_ambW
+                                                                         SP.ExceptionFailure)
+                                                                        inp_amaT)
+                                                                       farInp_amc4)
+                                                                      farExp_amc5
+                                                        else
+                                                            let _ = "choicesBranch.else"
+                                                            in
+                                                              if (46 GHC.Classes.== c_ambf) then
+                                                                  let _ = "choicesBranch.then" in
+                                                                  let readFail_amc6 = readFail_ambe
+                                                                  in
+                                                                    if readMore_amab inp_amaT then
+                                                                        let
+                                                                          !(# c_amc7, cs_amc8 #)
+                                                                            = readNext_amac inp_amaT
+                                                                        in
+                                                                          if (\ x_amc9
+                                                                                -> GHC.Types.True)
+                                                                               c_amc7 then
+                                                                              let _ = "resume"
+                                                                              in
+                                                                                (((join_1s
+                                                                                     init_amaa)
+                                                                                    Data.Set.Internal.empty)
+                                                                                   (let
+                                                                                      _ = "resume.genCode"
+                                                                                    in
+                                                                                      Parsers.Brainfuck.Types.Output))
+                                                                                  cs_amc8
+                                                                          else
+                                                                              let
+                                                                                _ = "checkToken.else" in
+                                                                              let
+                                                                                failExp_amca
+                                                                                  = (((Data.Set.Internal.Bin
+                                                                                         1)
+                                                                                        (SP.SomeFailure
+                                                                                           (case
+                                                                                                inputToken
+                                                                                            of {
+                                                                                              (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
+                                                                                                -> SP.FailureAny
+                                                                                                     @tok'_aLiK })))
+                                                                                       Data.Set.Internal.Tip)
+                                                                                      Data.Set.Internal.Tip in
+                                                                              let
+                                                                                (# farInp_amcb,
+                                                                                   farExp_amcc #)
+                                                                                  = case
+                                                                                        ((GHC.Classes.compare
+                                                                                            @GHC.Types.Int)
+                                                                                           init_amaa)
+                                                                                          inp_amaT
+                                                                                    of
+                                                                                      GHC.Types.LT
+                                                                                        -> (# inp_amaT, 
+                                                                                              failExp_amca #)
+                                                                                      GHC.Types.EQ
+                                                                                        -> (# init_amaa, 
+                                                                                              (failExp_amca
+                                                                                                 GHC.Base.<>
+                                                                                                   Data.Set.Internal.empty) #)
+                                                                                      GHC.Types.GT
+                                                                                        -> (# init_amaa, 
+                                                                                              Data.Set.Internal.empty #)
+                                                                              in
+                                                                                (((readFail_amc6
+                                                                                     SP.ExceptionFailure)
+                                                                                    inp_amaT)
+                                                                                   farInp_amcb)
+                                                                                  farExp_amcc
+                                                                    else
+                                                                        let
+                                                                          _ = "checkHorizon.else" in
+                                                                        let
+                                                                          failExp_amcd
+                                                                            = (((Data.Set.Internal.Bin
+                                                                                   1)
+                                                                                  (SP.SomeFailure
+                                                                                     (case
+                                                                                          inputToken
+                                                                                      of {
+                                                                                        (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
+                                                                                          -> (SP.FailureHorizon
+                                                                                                @tok'_aLiK)
+                                                                                               1 })))
+                                                                                 Data.Set.Internal.Tip)
+                                                                                Data.Set.Internal.Tip in
+                                                                        let
+                                                                          (# farInp_amce,
+                                                                             farExp_amcf #)
+                                                                            = case
+                                                                                  ((GHC.Classes.compare
+                                                                                      @GHC.Types.Int)
+                                                                                     init_amaa)
+                                                                                    inp_amaT
+                                                                              of
+                                                                                GHC.Types.LT
+                                                                                  -> (# inp_amaT, 
+                                                                                        failExp_amcd #)
+                                                                                GHC.Types.EQ
+                                                                                  -> (# init_amaa, 
+                                                                                        (failExp_amcd
+                                                                                           GHC.Base.<>
+                                                                                             Data.Set.Internal.empty) #)
+                                                                                GHC.Types.GT
+                                                                                  -> (# init_amaa, 
+                                                                                        Data.Set.Internal.empty #)
+                                                                        in
+                                                                          (((readFail_amc6
+                                                                               SP.ExceptionFailure)
+                                                                              inp_amaT)
+                                                                             farInp_amce)
+                                                                            farExp_amcf
+                                                              else
+                                                                  let _ = "choicesBranch.else"
+                                                                  in
+                                                                    if (91
+                                                                          GHC.Classes.==
+                                                                            c_ambf) then
+                                                                        let
+                                                                          _ = "choicesBranch.then" in
+                                                                        let
+                                                                          readFail_amcg
+                                                                            = readFail_ambe
+                                                                        in
+                                                                          if readMore_amab
+                                                                               ((((GHC.Num.+)
+                                                                                    @GHC.Types.Int)
+                                                                                   1)
+                                                                                  inp_amaT) then
+                                                                              let
+                                                                                !(# c_amch,
+                                                                                    cs_amci #)
+                                                                                  = readNext_amac
+                                                                                      inp_amaT
+                                                                              in
+                                                                                if (\ x_amcj
+                                                                                      -> GHC.Types.True)
+                                                                                     c_amch then
+                                                                                    ((name_1
+                                                                                        (let
+                                                                                           _ = "suspend"
+                                                                                         in
+                                                                                           \ farInp_amck
+                                                                                             farExp_amcl
+                                                                                             v_amcm
+                                                                                             !inp_amcn
+                                                                                             -> ((name_2
+                                                                                                    (let
+                                                                                                       _ = "suspend"
+                                                                                                     in
+                                                                                                       \ farInp_amco
+                                                                                                         farExp_amcp
+                                                                                                         v_amcq
+                                                                                                         !inp_amcr
+                                                                                                         -> let
+                                                                                                              readFail_amcs
+                                                                                                                = readFail_amcg
+                                                                                                            in
+                                                                                                              if readMore_amab
+                                                                                                                   inp_amcr then
+                                                                                                                  let
+                                                                                                                    !(# c_amct,
+                                                                                                                        cs_amcu #)
+                                                                                                                      = readNext_amac
+                                                                                                                          inp_amcr
+                                                                                                                  in
+                                                                                                                    if (93
+                                                                                                                        GHC.Classes.==)
+                                                                                                                         c_amct then
+                                                                                                                        let
+                                                                                                                          _ = "resume"
+                                                                                                                        in
+                                                                                                                          (((join_1s
+                                                                                                                               farInp_amco)
+                                                                                                                              farExp_amcp)
+                                                                                                                             (let
+                                                                                                                                _ = "resume.genCode"
+                                                                                                                              in
+                                                                                                                                Parsers.Brainfuck.Types.Loop
+                                                                                                                                  v_amcq))
+                                                                                                                            cs_amcu
+                                                                                                                    else
+                                                                                                                        let
+                                                                                                                          _ = "checkToken.else"
+                                                                                                                        in
+                                                                                                                          (((readFail_amcs
+                                                                                                                               SP.ExceptionFailure)
+                                                                                                                              inp_amcr)
+                                                                                                                             farInp_amco)
+                                                                                                                            farExp_amcp
+                                                                                                              else
+                                                                                                                  let
+                                                                                                                    _ = "checkHorizon.else" in
+                                                                                                                  let
+                                                                                                                    failExp_amcv
+                                                                                                                      = (((Data.Set.Internal.Bin
+                                                                                                                             1)
+                                                                                                                            (SP.SomeFailure
+                                                                                                                               (case
+                                                                                                                                    inputToken
+                                                                                                                                of {
+                                                                                                                                  (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
+                                                                                                                                    -> (SP.FailureHorizon
+                                                                                                                                          @tok'_aLiK)
+                                                                                                                                         1 })))
+                                                                                                                           Data.Set.Internal.Tip)
+                                                                                                                          Data.Set.Internal.Tip in
+                                                                                                                  let
+                                                                                                                    (# farInp_amcw,
+                                                                                                                       farExp_amcx #)
+                                                                                                                      = case
+                                                                                                                            ((GHC.Classes.compare
+                                                                                                                                @GHC.Types.Int)
+                                                                                                                               farInp_amco)
+                                                                                                                              inp_amcr
+                                                                                                                        of
+                                                                                                                          GHC.Types.LT
+                                                                                                                            -> (# inp_amcr, 
+                                                                                                                                  failExp_amcv #)
+                                                                                                                          GHC.Types.EQ
+                                                                                                                            -> (# farInp_amco, 
+                                                                                                                                  (failExp_amcv
+                                                                                                                                     GHC.Base.<>
+                                                                                                                                       farExp_amcp) #)
+                                                                                                                          GHC.Types.GT
+                                                                                                                            -> (# farInp_amco, 
+                                                                                                                                  farExp_amcp #)
+                                                                                                                  in
+                                                                                                                    (((readFail_amcs
+                                                                                                                         SP.ExceptionFailure)
+                                                                                                                        inp_amcr)
+                                                                                                                       farInp_amcw)
+                                                                                                                      farExp_amcx))
+                                                                                                   inp_amcn)
+                                                                                                  (((((Data.Map.Internal.Bin
+                                                                                                         1)
+                                                                                                        SP.ExceptionFailure)
+                                                                                                       readFail_amcg)
+                                                                                                      Data.Map.Internal.Tip)
+                                                                                                     Data.Map.Internal.Tip)))
+                                                                                       cs_amci)
+                                                                                      (((((Data.Map.Internal.Bin
+                                                                                             1)
+                                                                                            SP.ExceptionFailure)
+                                                                                           readFail_amcg)
+                                                                                          Data.Map.Internal.Tip)
+                                                                                         Data.Map.Internal.Tip)
+                                                                                else
+                                                                                    let
+                                                                                      _ = "checkToken.else" in
+                                                                                    let
+                                                                                      failExp_amcy
+                                                                                        = (((Data.Set.Internal.Bin
+                                                                                               1)
+                                                                                              (SP.SomeFailure
+                                                                                                 (case
+                                                                                                      inputToken
+                                                                                                  of {
+                                                                                                    (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
+                                                                                                      -> SP.FailureAny
+                                                                                                           @tok'_aLiK })))
+                                                                                             Data.Set.Internal.Tip)
+                                                                                            Data.Set.Internal.Tip in
+                                                                                    let
+                                                                                      (# farInp_amcz,
+                                                                                         farExp_amcA #)
+                                                                                        = case
+                                                                                              ((GHC.Classes.compare
+                                                                                                  @GHC.Types.Int)
+                                                                                                 init_amaa)
+                                                                                                inp_amaT
+                                                                                          of
+                                                                                            GHC.Types.LT
+                                                                                              -> (# inp_amaT, 
+                                                                                                    failExp_amcy #)
+                                                                                            GHC.Types.EQ
+                                                                                              -> (# init_amaa, 
+                                                                                                    (failExp_amcy
+                                                                                                       GHC.Base.<>
+                                                                                                         Data.Set.Internal.empty) #)
+                                                                                            GHC.Types.GT
+                                                                                              -> (# init_amaa, 
+                                                                                                    Data.Set.Internal.empty #)
+                                                                                    in
+                                                                                      (((readFail_amcg
+                                                                                           SP.ExceptionFailure)
+                                                                                          inp_amaT)
+                                                                                         farInp_amcz)
+                                                                                        farExp_amcA
+                                                                          else
+                                                                              let
+                                                                                _ = "checkHorizon.else" in
+                                                                              let
+                                                                                failExp_amcB
+                                                                                  = (((Data.Set.Internal.Bin
+                                                                                         1)
+                                                                                        (SP.SomeFailure
+                                                                                           (case
+                                                                                                inputToken
+                                                                                            of {
+                                                                                              (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
+                                                                                                -> (SP.FailureHorizon
+                                                                                                      @tok'_aLiK)
+                                                                                                     2 })))
+                                                                                       Data.Set.Internal.Tip)
+                                                                                      Data.Set.Internal.Tip in
+                                                                              let
+                                                                                (# farInp_amcC,
+                                                                                   farExp_amcD #)
+                                                                                  = case
+                                                                                        ((GHC.Classes.compare
+                                                                                            @GHC.Types.Int)
+                                                                                           init_amaa)
+                                                                                          inp_amaT
+                                                                                    of
+                                                                                      GHC.Types.LT
+                                                                                        -> (# inp_amaT, 
+                                                                                              failExp_amcB #)
+                                                                                      GHC.Types.EQ
+                                                                                        -> (# init_amaa, 
+                                                                                              (failExp_amcB
+                                                                                                 GHC.Base.<>
+                                                                                                   Data.Set.Internal.empty) #)
+                                                                                      GHC.Types.GT
+                                                                                        -> (# init_amaa, 
+                                                                                              Data.Set.Internal.empty #)
+                                                                              in
+                                                                                (((readFail_amcg
+                                                                                     SP.ExceptionFailure)
+                                                                                    inp_amaT)
+                                                                                   farInp_amcC)
+                                                                                  farExp_amcD
+                                                                    else
+                                                                        let
+                                                                          _ = "choicesBranch.else" in
+                                                                        let
+                                                                          failExp_amcE
+                                                                            = (((Data.Set.Internal.Bin
+                                                                                   1)
+                                                                                  (SP.SomeFailure
+                                                                                     SP.FailureEmpty))
+                                                                                 Data.Set.Internal.Tip)
+                                                                                Data.Set.Internal.Tip in
+                                                                        let
+                                                                          (# farInp_amcF,
+                                                                             farExp_amcG #)
+                                                                            = case
+                                                                                  ((GHC.Classes.compare
+                                                                                      @GHC.Types.Int)
+                                                                                     init_amaa)
+                                                                                    inp_amaT
+                                                                              of
+                                                                                GHC.Types.LT
+                                                                                  -> (# inp_amaT, 
+                                                                                        failExp_amcE #)
+                                                                                GHC.Types.EQ
+                                                                                  -> (# init_amaa, 
+                                                                                        (failExp_amcE
+                                                                                           GHC.Base.<>
+                                                                                             Data.Set.Internal.empty) #)
+                                                                                GHC.Types.GT
+                                                                                  -> (# init_amaa, 
+                                                                                        Data.Set.Internal.empty #)
+                                                                        in
+                                                                          (((readFail_ambe
+                                                                               SP.ExceptionFailure)
+                                                                              inp_amaT)
+                                                                             farInp_amcF)
+                                                                            farExp_amcG
+                            else
+                                let _ = "checkToken.else" in
+                                let
+                                  failExp_amcH
+                                    = (((Data.Set.Internal.Bin 1)
+                                          (SP.SomeFailure
+                                             (case inputToken of {
+                                                (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
+                                                  -> SP.FailureAny @tok'_aLiK })))
+                                         Data.Set.Internal.Tip)
+                                        Data.Set.Internal.Tip in
+                                let
+                                  (# farInp_amcI, farExp_amcJ #)
+                                    = case
+                                          ((GHC.Classes.compare @GHC.Types.Int) init_amaa) inp_amaT
+                                      of
+                                        GHC.Types.LT -> (# inp_amaT, failExp_amcH #)
+                                        GHC.Types.EQ
+                                          -> (# init_amaa, 
+                                                (failExp_amcH
+                                                   GHC.Base.<> Data.Set.Internal.empty) #)
+                                        GHC.Types.GT -> (# init_amaa, Data.Set.Internal.empty #)
+                                in
+                                  (((readFail_ambe SP.ExceptionFailure) inp_amaT) farInp_amcI)
+                                    farExp_amcJ
+                      else
+                          let _ = "checkHorizon.else" in
+                          let
+                            failExp_amcK
+                              = (((Data.Set.Internal.Bin 1)
+                                    (SP.SomeFailure
+                                       (case inputToken of {
+                                          (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
+                                            -> (SP.FailureHorizon @tok'_aLiK) 1 })))
+                                   Data.Set.Internal.Tip)
+                                  Data.Set.Internal.Tip in
+                          let
+                            (# farInp_amcL, farExp_amcM #)
+                              = case ((GHC.Classes.compare @GHC.Types.Int) init_amaa) inp_amaT of
+                                  GHC.Types.LT -> (# inp_amaT, failExp_amcK #)
+                                  GHC.Types.EQ
+                                    -> (# init_amaa, 
+                                          (failExp_amcK GHC.Base.<> Data.Set.Internal.empty) #)
+                                  GHC.Types.GT -> (# init_amaa, Data.Set.Internal.empty #)
+                          in
+                            (((readFail_ambe SP.ExceptionFailure) inp_amaT) farInp_amcL)
+                              farExp_amcM
+           name_4
+             = \ !ok_amax !inp_amay !koByLabel_amaz
+                 -> let _ = "catch ExceptionFailure" in
+                    let
+                      catchHandler_amaA
+                        !_exn_amaB
+                        !failInp_amaC
+                        !farInp_amaD
+                        !farExp_amaE
+                        = let _ = "catch.ko ExceptionFailure"
+                          in
+                            if (((GHC.Classes.==) @GHC.Types.Int) inp_amay) failInp_amaC then
+                                let _ = "choicesBranch.then" in
+                                let _ = "resume"
+                                in
+                                  (((ok_amax farInp_amaD) farExp_amaE)
+                                     (let _ = "resume.genCode" in \ x_amaF -> x_amaF))
+                                    failInp_amaC
+                            else
+                                let _ = "choicesBranch.else"
+                                in
+                                  ((((((Data.Map.Strict.Internal.findWithDefault finalRaise_amad)
+                                         SP.ExceptionFailure)
+                                        koByLabel_amaz)
+                                       SP.ExceptionFailure)
+                                      failInp_amaC)
+                                     farInp_amaD)
+                                    farExp_amaE in
+                    let readFail_amaG = catchHandler_amaA
+                    in
+                      if readMore_amab inp_amay then
+                          let !(# c_amaH, cs_amaI #) = readNext_amac inp_amay
+                          in
+                            if (\ c_amaJ
+                                  -> GHC.Classes.not
+                                       ((60 GHC.Classes.== c_amaJ)
+                                          GHC.Classes.||
+                                            ((62 GHC.Classes.== c_amaJ)
+                                               GHC.Classes.||
+                                                 ((43 GHC.Classes.== c_amaJ)
+                                                    GHC.Classes.||
+                                                      ((45 GHC.Classes.== c_amaJ)
+                                                         GHC.Classes.||
+                                                           ((44 GHC.Classes.== c_amaJ)
+                                                              GHC.Classes.||
+                                                                ((46 GHC.Classes.== c_amaJ)
+                                                                   GHC.Classes.||
+                                                                     ((91 GHC.Classes.== c_amaJ)
+                                                                        GHC.Classes.||
+                                                                          ((93
+                                                                              GHC.Classes.== c_amaJ)
+                                                                             GHC.Classes.||
+                                                                               GHC.Types.False)))))))))
+                                 c_amaH then
+                                ((name_4
+                                    (let _ = "suspend"
+                                     in
+                                       \ farInp_amaK farExp_amaL v_amaM !inp_amaN
+                                         -> let _ = "resume"
+                                            in
+                                              (((ok_amax farInp_amaK) farExp_amaL)
+                                                 (let _ = "resume.genCode"
+                                                  in \ x_amaO -> v_amaM x_amaO))
+                                                inp_amaN))
+                                   cs_amaI)
+                                  (((((Data.Map.Internal.Bin 1) SP.ExceptionFailure) readFail_amaG)
+                                      Data.Map.Internal.Tip)
+                                     Data.Map.Internal.Tip)
+                            else
+                                let _ = "checkToken.else"
+                                in
+                                  (((readFail_amaG SP.ExceptionFailure) inp_amay) init_amaa)
+                                    Data.Set.Internal.empty
+                      else
+                          let _ = "checkHorizon.else" in
+                          let
+                            failExp_amaP
+                              = (((Data.Set.Internal.Bin 1)
+                                    (SP.SomeFailure
+                                       (case inputToken of {
+                                          (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
+                                            -> (SP.FailureHorizon @tok'_aLiK) 1 })))
+                                   Data.Set.Internal.Tip)
+                                  Data.Set.Internal.Tip in
+                          let
+                            (# farInp_amaQ, farExp_amaR #)
+                              = case ((GHC.Classes.compare @GHC.Types.Int) init_amaa) inp_amay of
+                                  GHC.Types.LT -> (# inp_amay, failExp_amaP #)
+                                  GHC.Types.EQ
+                                    -> (# init_amaa, 
+                                          (failExp_amaP GHC.Base.<> Data.Set.Internal.empty) #)
+                                  GHC.Types.GT -> (# init_amaa, Data.Set.Internal.empty #)
+                          in
+                            (((readFail_amaG SP.ExceptionFailure) inp_amay) farInp_amaQ)
+                              farExp_amaR
+         in
+           ((name_1
+               (let _ = "suspend"
+                in
+                  \ farInp_amd1 farExp_amd2 v_amd3 !inp_amd4
+                    -> ((name_2
+                           (let _ = "suspend"
+                            in
+                              \ farInp_amd5 farExp_amd6 v_amd7 !inp_amd8
+                                -> let _ = "resume"
+                                   in
+                                     (((finalRet_ama9 farInp_amd5) farExp_amd6)
+                                        (let _ = "resume.genCode" in v_amd7))
+                                       inp_amd8))
+                          inp_amd4)
+                         Data.Map.Internal.Tip))
+              init_amaa)
+             Data.Map.Internal.Tip
similarity index 97%
rename from parsers/Parsers/Brainfuck/SymanticParser.hs
rename to parsers/Parsers/Brainfuck/SymanticParser/Grammar.hs
index 7db71f57b60613add441d860671da05d8120fd03..aadbece4a9526a709dc603a0a9a78c81cfa30fcd 100644 (file)
@@ -3,7 +3,7 @@
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE TypeApplications #-}
 {-# LANGUAGE ViewPatterns #-}
-module Parsers.Brainfuck.SymanticParser where
+module Parsers.Brainfuck.SymanticParser.Grammar where
 
 import Data.Char (Char)
 import Data.Function ((.))
diff --git a/parsers/Parsers/Brainfuck/SymanticParser/PprSplice.hs b/parsers/Parsers/Brainfuck/SymanticParser/PprSplice.hs
new file mode 100644 (file)
index 0000000..4417854
--- /dev/null
@@ -0,0 +1,459 @@
+{-# LANGUAGE AllowAmbiguousTypes #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE TypeApplications #-}
+{-# LANGUAGE ViewPatterns #-}
+-- for Symantic.Parser's TemplateHaskell
+{-# LANGUAGE MagicHash #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE UnboxedTuples #-}
+{-# OPTIONS_GHC -Wno-unused-matches #-}
+{-# OPTIONS_GHC -Wno-unused-local-binds #-}
+module Parsers.Brainfuck.SymanticParser.PprSplice where
+
+import Data.Either (Either)
+import Data.Text (Text)
+import System.IO (IO)
+import Text.Show (show)
+import qualified Data.ByteString as BS
+import qualified Data.ByteString.Internal
+import qualified Data.Either
+import qualified Data.Function
+import qualified Data.Map.Internal
+import qualified Data.Map.Strict.Internal
+import qualified Data.Proxy
+import qualified Data.Set.Internal
+import qualified Data.Text.Internal
+import qualified Data.Text.Unsafe
+import qualified GHC.Base
+import qualified GHC.Classes
+import qualified GHC.ForeignPtr
+import qualified GHC.Maybe
+import qualified GHC.Num
+import qualified GHC.Prim
+import qualified GHC.Show
+import qualified GHC.Tuple
+import qualified GHC.Types
+import qualified GHC.Word
+import qualified Language.Haskell.TH as TH
+import qualified Language.Haskell.TH.Syntax as TH
+import qualified Prelude
+import qualified Symantic.Parser as SP
+import qualified Symantic.Parser.Grammar.Combinators
+import qualified Symantic.Parser.Haskell
+import qualified Symantic.Parser.Machine
+import qualified Symantic.Parser.Machine.Generate
+import qualified Symantic.Parser.Machine.Input
+import qualified System.IO as IO
+
+import qualified Parsers.Brainfuck.Types
+import Parsers.Brainfuck.Types (Instruction)
+import Parsers.Brainfuck.SymanticParser.Grammar (grammar)
+
+splice :: IO (TH.TExp (BS.ByteString -> Either (SP.ParsingError BS.ByteString) [Instruction]))
+splice = TH.runQ (TH.examineCode (SP.runParser grammar))
+
+dumpSplice :: IO ()
+dumpSplice = do
+  tExp <- splice
+  IO.writeFile "parsers/Parsers/Brainfuck/SymanticParser/PprSplice.hs.ppr"
+    (show (TH.ppr ((TH.unType tExp))))
+
+-- The splice below has been manually paste with:
+-- :r parsers/Parsers/Brainfuck/SymanticParser/PprSplice.hs.ppr
+-- :%s/#\(_[0-9]\+\)/\1# /g
+-- :%s/GHC.Tuple.()/()/g
+-- :%s/GHC.Types.\[]/[]/g
+parserByteString :: BS.ByteString -> Either (SP.ParsingError BS.ByteString) [Instruction]
+parserByteString =
+  \(input_0 :: inp_6989586621679446738) -> let {!(# init_1,
+                                                  readMore_2,
+                                                  readNext_3 #) = let {!(Data.ByteString.Internal.PS (GHC.ForeignPtr.ForeignPtr addr_4# 
+                                                                                                                                final_5)
+                                                                                                     off_6
+                                                                                                     size_7) = input_0;
+                                                                       next_8 (i_9@(GHC.Types.I# i_10# )) = case GHC.Prim.readWord8OffAddr# (addr_4#  `GHC.Prim.plusAddr#` i_10# ) 0# GHC.Prim.realWorld# of
+                                                                                                               (# s'_11,
+                                                                                                                  x_12 #) -> case GHC.Prim.touch# final_5 s'_11 of
+                                                                                                                                 _ -> (# GHC.Word.W8# x_12,
+                                                                                                                                         i_9 GHC.Num.+ 1 #)}
+                                                                   in (# off_6,
+                                                                         (GHC.Classes.< size_7),
+                                                                         next_8 #);
+                                              finalRet_13 = \_farInp_14 _farExp_15 v_16 _inp_17 -> Data.Either.Right v_16;
+                                              finalRaise_18 :: forall b_19 .
+                                                               Symantic.Parser.Machine.Generate.Catcher inp_6989586621679446738
+                                                                                                        b_19 = \(!exn_20) _failInp_21 (!farInp_22) (!farExp_23) -> Data.Either.Left Symantic.Parser.Machine.Generate.ParsingErrorStandard{Symantic.Parser.Machine.Generate.parsingErrorOffset = Symantic.Parser.Machine.Input.offset farInp_22,
+                                                                                                                                                                                                                                          Symantic.Parser.Machine.Generate.parsingErrorException = exn_20,
+                                                                                                                                                                                                                                          Symantic.Parser.Machine.Generate.parsingErrorUnexpected = if readMore_2 farInp_22
+                                                                                                                                                                                                                                                                                                     then GHC.Maybe.Just (let (# c_24,
+                                                                                                                                                                                                                                                                                                                                 _ #) = readNext_3 farInp_22
+                                                                                                                                                                                                                                                                                                                           in c_24)
+                                                                                                                                                                                                                                                                                                     else GHC.Maybe.Nothing,
+                                                                                                                                                                                                                                          Symantic.Parser.Machine.Generate.parsingErrorExpecting = farExp_23}}
+                                          in let inputToken = Data.Proxy.Proxy :: Data.Proxy.Proxy (Symantic.Parser.Machine.Input.InputToken inp_6989586621679446738)
+                                              in let {name_25 = \(!ok_26) (!inp_27) (!koByLabel_28) -> name_29 (let _ = "suspend"
+                                                                                                                 in \farInp_30 farExp_31 v_32 (!inp_33) -> let _ = "resume"
+                                                                                                                                                            in ok_26 farInp_30 farExp_31 (let _ = "resume.genCode"
+                                                                                                                                                                                           in ()) inp_33) inp_27 (Data.Map.Internal.Bin 1 Symantic.Parser.Grammar.Combinators.ExceptionFailure (Data.Map.Strict.Internal.findWithDefault finalRaise_18 Symantic.Parser.Grammar.Combinators.ExceptionFailure koByLabel_28) Data.Map.Internal.Tip Data.Map.Internal.Tip);
+                                                      name_34 = \(!ok_35) (!inp_36) (!koByLabel_37) -> name_38 (let _ = "suspend"
+                                                                                                                 in \farInp_39 farExp_40 v_41 (!inp_42) -> let _ = "resume"
+                                                                                                                                                            in ok_35 farInp_39 farExp_40 (let _ = "resume.genCode"
+                                                                                                                                                                                           in v_41 []) inp_42) inp_36 (Data.Map.Internal.Bin 1 Symantic.Parser.Grammar.Combinators.ExceptionFailure (Data.Map.Strict.Internal.findWithDefault finalRaise_18 Symantic.Parser.Grammar.Combinators.ExceptionFailure koByLabel_37) Data.Map.Internal.Tip Data.Map.Internal.Tip);
+                                                      name_38 = \(!ok_43) (!inp_44) (!koByLabel_45) -> let _ = "catch ExceptionFailure"
+                                                                                                        in let catchHandler_46 (!_exn_47) (!failInp_48) (!farInp_49) (!farExp_50) = let _ = "catch.ko ExceptionFailure"
+                                                                                                                                                                                     in if (GHC.Classes.==) @GHC.Types.Int inp_44 failInp_48
+                                                                                                                                                                                         then let _ = "choicesBranch.then"
+                                                                                                                                                                                               in let _ = "resume"
+                                                                                                                                                                                                   in ok_43 farInp_49 farExp_50 (let _ = "resume.genCode"
+                                                                                                                                                                                                                                  in \x_51 -> x_51) failInp_48
+                                                                                                                                                                                         else let _ = "choicesBranch.else"
+                                                                                                                                                                                               in Data.Map.Strict.Internal.findWithDefault finalRaise_18 Symantic.Parser.Grammar.Combinators.ExceptionFailure koByLabel_45 Symantic.Parser.Grammar.Combinators.ExceptionFailure failInp_48 farInp_49 farExp_50
+                                                                                                            in let join_52 = \farInp_53 farExp_54 v_55 (!inp_56) -> name_25 (let _ = "suspend"
+                                                                                                                                                                              in \farInp_57 farExp_58 v_59 (!inp_60) -> name_38 (let _ = "suspend"
+                                                                                                                                                                                                                                  in \farInp_61 farExp_62 v_63 (!inp_64) -> let _ = "resume"
+                                                                                                                                                                                                                                                                             in ok_43 farInp_61 farExp_62 (let _ = "resume.genCode"
+                                                                                                                                                                                                                                                                                                            in \x_65 -> v_55 : v_63 x_65) inp_64) inp_60 (Data.Map.Internal.Bin 1 Symantic.Parser.Grammar.Combinators.ExceptionFailure catchHandler_46 Data.Map.Internal.Tip Data.Map.Internal.Tip)) inp_56 (Data.Map.Internal.Bin 1 Symantic.Parser.Grammar.Combinators.ExceptionFailure catchHandler_46 Data.Map.Internal.Tip Data.Map.Internal.Tip)
+                                                                                                                in let readFail_66 = catchHandler_46
+                                                                                                                    in if readMore_2 inp_44
+                                                                                                                        then let !(# c_67,
+                                                                                                                                     cs_68 #) = readNext_3 inp_44
+                                                                                                                              in if (\x_69 -> GHC.Types.True) c_67
+                                                                                                                                  then if 60 GHC.Classes.== c_67
+                                                                                                                                        then let _ = "choicesBranch.then"
+                                                                                                                                              in let readFail_70 = readFail_66
+                                                                                                                                                  in if readMore_2 inp_44
+                                                                                                                                                      then let !(# c_71,
+                                                                                                                                                                   cs_72 #) = readNext_3 inp_44
+                                                                                                                                                            in if (\x_73 -> GHC.Types.True) c_71
+                                                                                                                                                                then let _ = "resume"
+                                                                                                                                                                      in join_52 init_1 Data.Set.Internal.empty (let _ = "resume.genCode"
+                                                                                                                                                                                                                  in Parsers.Brainfuck.Types.Backward) cs_72
+                                                                                                                                                                else let _ = "checkToken.else"
+                                                                                                                                                                      in let failExp_74 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure (case inputToken of
+                                                                                                                                                                                                                                                                        (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_6989586621679198986) -> Symantic.Parser.Grammar.Combinators.FailureAny @tok'_6989586621679198986)) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                                                          in let (# farInp_75,
+                                                                                                                                                                                    farExp_76 #) = case GHC.Classes.compare @GHC.Types.Int init_1 inp_44 of
+                                                                                                                                                                                                       GHC.Types.LT -> (# inp_44,
+                                                                                                                                                                                                                          failExp_74 #)
+                                                                                                                                                                                                       GHC.Types.EQ -> (# init_1,
+                                                                                                                                                                                                                          failExp_74 GHC.Base.<> Data.Set.Internal.empty #)
+                                                                                                                                                                                                       GHC.Types.GT -> (# init_1,
+                                                                                                                                                                                                                          Data.Set.Internal.empty #)
+                                                                                                                                                                              in readFail_70 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_44 farInp_75 farExp_76
+                                                                                                                                                      else let _ = "checkHorizon.else"
+                                                                                                                                                            in let failExp_77 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure (case inputToken of
+                                                                                                                                                                                                                                                              (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_6989586621679198986) -> Symantic.Parser.Grammar.Combinators.FailureHorizon @tok'_6989586621679198986 1)) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                                                in let (# farInp_78,
+                                                                                                                                                                          farExp_79 #) = case GHC.Classes.compare @GHC.Types.Int init_1 inp_44 of
+                                                                                                                                                                                             GHC.Types.LT -> (# inp_44,
+                                                                                                                                                                                                                failExp_77 #)
+                                                                                                                                                                                             GHC.Types.EQ -> (# init_1,
+                                                                                                                                                                                                                failExp_77 GHC.Base.<> Data.Set.Internal.empty #)
+                                                                                                                                                                                             GHC.Types.GT -> (# init_1,
+                                                                                                                                                                                                                Data.Set.Internal.empty #)
+                                                                                                                                                                    in readFail_70 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_44 farInp_78 farExp_79
+                                                                                                                                        else let _ = "choicesBranch.else"
+                                                                                                                                              in if 62 GHC.Classes.== c_67
+                                                                                                                                                  then let _ = "choicesBranch.then"
+                                                                                                                                                        in let readFail_80 = readFail_66
+                                                                                                                                                            in if readMore_2 inp_44
+                                                                                                                                                                then let !(# c_81,
+                                                                                                                                                                             cs_82 #) = readNext_3 inp_44
+                                                                                                                                                                      in if (\x_83 -> GHC.Types.True) c_81
+                                                                                                                                                                          then let _ = "resume"
+                                                                                                                                                                                in join_52 init_1 Data.Set.Internal.empty (let _ = "resume.genCode"
+                                                                                                                                                                                                                            in Parsers.Brainfuck.Types.Forward) cs_82
+                                                                                                                                                                          else let _ = "checkToken.else"
+                                                                                                                                                                                in let failExp_84 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure (case inputToken of
+                                                                                                                                                                                                                                                                                  (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_6989586621679198986) -> Symantic.Parser.Grammar.Combinators.FailureAny @tok'_6989586621679198986)) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                                                                    in let (# farInp_85,
+                                                                                                                                                                                              farExp_86 #) = case GHC.Classes.compare @GHC.Types.Int init_1 inp_44 of
+                                                                                                                                                                                                                 GHC.Types.LT -> (# inp_44,
+                                                                                                                                                                                                                                    failExp_84 #)
+                                                                                                                                                                                                                 GHC.Types.EQ -> (# init_1,
+                                                                                                                                                                                                                                    failExp_84 GHC.Base.<> Data.Set.Internal.empty #)
+                                                                                                                                                                                                                 GHC.Types.GT -> (# init_1,
+                                                                                                                                                                                                                                    Data.Set.Internal.empty #)
+                                                                                                                                                                                        in readFail_80 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_44 farInp_85 farExp_86
+                                                                                                                                                                else let _ = "checkHorizon.else"
+                                                                                                                                                                      in let failExp_87 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure (case inputToken of
+                                                                                                                                                                                                                                                                        (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_6989586621679198986) -> Symantic.Parser.Grammar.Combinators.FailureHorizon @tok'_6989586621679198986 1)) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                                                          in let (# farInp_88,
+                                                                                                                                                                                    farExp_89 #) = case GHC.Classes.compare @GHC.Types.Int init_1 inp_44 of
+                                                                                                                                                                                                       GHC.Types.LT -> (# inp_44,
+                                                                                                                                                                                                                          failExp_87 #)
+                                                                                                                                                                                                       GHC.Types.EQ -> (# init_1,
+                                                                                                                                                                                                                          failExp_87 GHC.Base.<> Data.Set.Internal.empty #)
+                                                                                                                                                                                                       GHC.Types.GT -> (# init_1,
+                                                                                                                                                                                                                          Data.Set.Internal.empty #)
+                                                                                                                                                                              in readFail_80 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_44 farInp_88 farExp_89
+                                                                                                                                                  else let _ = "choicesBranch.else"
+                                                                                                                                                        in if 43 GHC.Classes.== c_67
+                                                                                                                                                            then let _ = "choicesBranch.then"
+                                                                                                                                                                  in let readFail_90 = readFail_66
+                                                                                                                                                                      in if readMore_2 inp_44
+                                                                                                                                                                          then let !(# c_91,
+                                                                                                                                                                                       cs_92 #) = readNext_3 inp_44
+                                                                                                                                                                                in if (\x_93 -> GHC.Types.True) c_91
+                                                                                                                                                                                    then let _ = "resume"
+                                                                                                                                                                                          in join_52 init_1 Data.Set.Internal.empty (let _ = "resume.genCode"
+                                                                                                                                                                                                                                      in Parsers.Brainfuck.Types.Increment) cs_92
+                                                                                                                                                                                    else let _ = "checkToken.else"
+                                                                                                                                                                                          in let failExp_94 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure (case inputToken of
+                                                                                                                                                                                                                                                                                            (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_6989586621679198986) -> Symantic.Parser.Grammar.Combinators.FailureAny @tok'_6989586621679198986)) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                                                                              in let (# farInp_95,
+                                                                                                                                                                                                        farExp_96 #) = case GHC.Classes.compare @GHC.Types.Int init_1 inp_44 of
+                                                                                                                                                                                                                           GHC.Types.LT -> (# inp_44,
+                                                                                                                                                                                                                                              failExp_94 #)
+                                                                                                                                                                                                                           GHC.Types.EQ -> (# init_1,
+                                                                                                                                                                                                                                              failExp_94 GHC.Base.<> Data.Set.Internal.empty #)
+                                                                                                                                                                                                                           GHC.Types.GT -> (# init_1,
+                                                                                                                                                                                                                                              Data.Set.Internal.empty #)
+                                                                                                                                                                                                  in readFail_90 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_44 farInp_95 farExp_96
+                                                                                                                                                                          else let _ = "checkHorizon.else"
+                                                                                                                                                                                in let failExp_97 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure (case inputToken of
+                                                                                                                                                                                                                                                                                  (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_6989586621679198986) -> Symantic.Parser.Grammar.Combinators.FailureHorizon @tok'_6989586621679198986 1)) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                                                                    in let (# farInp_98,
+                                                                                                                                                                                              farExp_99 #) = case GHC.Classes.compare @GHC.Types.Int init_1 inp_44 of
+                                                                                                                                                                                                                 GHC.Types.LT -> (# inp_44,
+                                                                                                                                                                                                                                    failExp_97 #)
+                                                                                                                                                                                                                 GHC.Types.EQ -> (# init_1,
+                                                                                                                                                                                                                                    failExp_97 GHC.Base.<> Data.Set.Internal.empty #)
+                                                                                                                                                                                                                 GHC.Types.GT -> (# init_1,
+                                                                                                                                                                                                                                    Data.Set.Internal.empty #)
+                                                                                                                                                                                        in readFail_90 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_44 farInp_98 farExp_99
+                                                                                                                                                            else let _ = "choicesBranch.else"
+                                                                                                                                                                  in if 45 GHC.Classes.== c_67
+                                                                                                                                                                      then let _ = "choicesBranch.then"
+                                                                                                                                                                            in let readFail_100 = readFail_66
+                                                                                                                                                                                in if readMore_2 inp_44
+                                                                                                                                                                                    then let !(# c_101,
+                                                                                                                                                                                                 cs_102 #) = readNext_3 inp_44
+                                                                                                                                                                                          in if (\x_103 -> GHC.Types.True) c_101
+                                                                                                                                                                                              then let _ = "resume"
+                                                                                                                                                                                                    in join_52 init_1 Data.Set.Internal.empty (let _ = "resume.genCode"
+                                                                                                                                                                                                                                                in Parsers.Brainfuck.Types.Decrement) cs_102
+                                                                                                                                                                                              else let _ = "checkToken.else"
+                                                                                                                                                                                                    in let failExp_104 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure (case inputToken of
+                                                                                                                                                                                                                                                                                                       (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_6989586621679198986) -> Symantic.Parser.Grammar.Combinators.FailureAny @tok'_6989586621679198986)) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                                                                                        in let (# farInp_105,
+                                                                                                                                                                                                                  farExp_106 #) = case GHC.Classes.compare @GHC.Types.Int init_1 inp_44 of
+                                                                                                                                                                                                                                      GHC.Types.LT -> (# inp_44,
+                                                                                                                                                                                                                                                         failExp_104 #)
+                                                                                                                                                                                                                                      GHC.Types.EQ -> (# init_1,
+                                                                                                                                                                                                                                                         failExp_104 GHC.Base.<> Data.Set.Internal.empty #)
+                                                                                                                                                                                                                                      GHC.Types.GT -> (# init_1,
+                                                                                                                                                                                                                                                         Data.Set.Internal.empty #)
+                                                                                                                                                                                                            in readFail_100 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_44 farInp_105 farExp_106
+                                                                                                                                                                                    else let _ = "checkHorizon.else"
+                                                                                                                                                                                          in let failExp_107 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure (case inputToken of
+                                                                                                                                                                                                                                                                                             (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_6989586621679198986) -> Symantic.Parser.Grammar.Combinators.FailureHorizon @tok'_6989586621679198986 1)) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                                                                              in let (# farInp_108,
+                                                                                                                                                                                                        farExp_109 #) = case GHC.Classes.compare @GHC.Types.Int init_1 inp_44 of
+                                                                                                                                                                                                                            GHC.Types.LT -> (# inp_44,
+                                                                                                                                                                                                                                               failExp_107 #)
+                                                                                                                                                                                                                            GHC.Types.EQ -> (# init_1,
+                                                                                                                                                                                                                                               failExp_107 GHC.Base.<> Data.Set.Internal.empty #)
+                                                                                                                                                                                                                            GHC.Types.GT -> (# init_1,
+                                                                                                                                                                                                                                               Data.Set.Internal.empty #)
+                                                                                                                                                                                                  in readFail_100 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_44 farInp_108 farExp_109
+                                                                                                                                                                      else let _ = "choicesBranch.else"
+                                                                                                                                                                            in if 44 GHC.Classes.== c_67
+                                                                                                                                                                                then let _ = "choicesBranch.then"
+                                                                                                                                                                                      in let readFail_110 = readFail_66
+                                                                                                                                                                                          in if readMore_2 inp_44
+                                                                                                                                                                                              then let !(# c_111,
+                                                                                                                                                                                                           cs_112 #) = readNext_3 inp_44
+                                                                                                                                                                                                    in if (\x_113 -> GHC.Types.True) c_111
+                                                                                                                                                                                                        then let _ = "resume"
+                                                                                                                                                                                                              in join_52 init_1 Data.Set.Internal.empty (let _ = "resume.genCode"
+                                                                                                                                                                                                                                                          in Parsers.Brainfuck.Types.Input) cs_112
+                                                                                                                                                                                                        else let _ = "checkToken.else"
+                                                                                                                                                                                                              in let failExp_114 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure (case inputToken of
+                                                                                                                                                                                                                                                                                                                 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_6989586621679198986) -> Symantic.Parser.Grammar.Combinators.FailureAny @tok'_6989586621679198986)) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                                                                                                  in let (# farInp_115,
+                                                                                                                                                                                                                            farExp_116 #) = case GHC.Classes.compare @GHC.Types.Int init_1 inp_44 of
+                                                                                                                                                                                                                                                GHC.Types.LT -> (# inp_44,
+                                                                                                                                                                                                                                                                   failExp_114 #)
+                                                                                                                                                                                                                                                GHC.Types.EQ -> (# init_1,
+                                                                                                                                                                                                                                                                   failExp_114 GHC.Base.<> Data.Set.Internal.empty #)
+                                                                                                                                                                                                                                                GHC.Types.GT -> (# init_1,
+                                                                                                                                                                                                                                                                   Data.Set.Internal.empty #)
+                                                                                                                                                                                                                      in readFail_110 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_44 farInp_115 farExp_116
+                                                                                                                                                                                              else let _ = "checkHorizon.else"
+                                                                                                                                                                                                    in let failExp_117 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure (case inputToken of
+                                                                                                                                                                                                                                                                                                       (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_6989586621679198986) -> Symantic.Parser.Grammar.Combinators.FailureHorizon @tok'_6989586621679198986 1)) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                                                                                        in let (# farInp_118,
+                                                                                                                                                                                                                  farExp_119 #) = case GHC.Classes.compare @GHC.Types.Int init_1 inp_44 of
+                                                                                                                                                                                                                                      GHC.Types.LT -> (# inp_44,
+                                                                                                                                                                                                                                                         failExp_117 #)
+                                                                                                                                                                                                                                      GHC.Types.EQ -> (# init_1,
+                                                                                                                                                                                                                                                         failExp_117 GHC.Base.<> Data.Set.Internal.empty #)
+                                                                                                                                                                                                                                      GHC.Types.GT -> (# init_1,
+                                                                                                                                                                                                                                                         Data.Set.Internal.empty #)
+                                                                                                                                                                                                            in readFail_110 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_44 farInp_118 farExp_119
+                                                                                                                                                                                else let _ = "choicesBranch.else"
+                                                                                                                                                                                      in if 46 GHC.Classes.== c_67
+                                                                                                                                                                                          then let _ = "choicesBranch.then"
+                                                                                                                                                                                                in let readFail_120 = readFail_66
+                                                                                                                                                                                                    in if readMore_2 inp_44
+                                                                                                                                                                                                        then let !(# c_121,
+                                                                                                                                                                                                                     cs_122 #) = readNext_3 inp_44
+                                                                                                                                                                                                              in if (\x_123 -> GHC.Types.True) c_121
+                                                                                                                                                                                                                  then let _ = "resume"
+                                                                                                                                                                                                                        in join_52 init_1 Data.Set.Internal.empty (let _ = "resume.genCode"
+                                                                                                                                                                                                                                                                    in Parsers.Brainfuck.Types.Output) cs_122
+                                                                                                                                                                                                                  else let _ = "checkToken.else"
+                                                                                                                                                                                                                        in let failExp_124 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure (case inputToken of
+                                                                                                                                                                                                                                                                                                                           (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_6989586621679198986) -> Symantic.Parser.Grammar.Combinators.FailureAny @tok'_6989586621679198986)) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                                                                                                            in let (# farInp_125,
+                                                                                                                                                                                                                                      farExp_126 #) = case GHC.Classes.compare @GHC.Types.Int init_1 inp_44 of
+                                                                                                                                                                                                                                                          GHC.Types.LT -> (# inp_44,
+                                                                                                                                                                                                                                                                             failExp_124 #)
+                                                                                                                                                                                                                                                          GHC.Types.EQ -> (# init_1,
+                                                                                                                                                                                                                                                                             failExp_124 GHC.Base.<> Data.Set.Internal.empty #)
+                                                                                                                                                                                                                                                          GHC.Types.GT -> (# init_1,
+                                                                                                                                                                                                                                                                             Data.Set.Internal.empty #)
+                                                                                                                                                                                                                                in readFail_120 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_44 farInp_125 farExp_126
+                                                                                                                                                                                                        else let _ = "checkHorizon.else"
+                                                                                                                                                                                                              in let failExp_127 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure (case inputToken of
+                                                                                                                                                                                                                                                                                                                 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_6989586621679198986) -> Symantic.Parser.Grammar.Combinators.FailureHorizon @tok'_6989586621679198986 1)) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                                                                                                  in let (# farInp_128,
+                                                                                                                                                                                                                            farExp_129 #) = case GHC.Classes.compare @GHC.Types.Int init_1 inp_44 of
+                                                                                                                                                                                                                                                GHC.Types.LT -> (# inp_44,
+                                                                                                                                                                                                                                                                   failExp_127 #)
+                                                                                                                                                                                                                                                GHC.Types.EQ -> (# init_1,
+                                                                                                                                                                                                                                                                   failExp_127 GHC.Base.<> Data.Set.Internal.empty #)
+                                                                                                                                                                                                                                                GHC.Types.GT -> (# init_1,
+                                                                                                                                                                                                                                                                   Data.Set.Internal.empty #)
+                                                                                                                                                                                                                      in readFail_120 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_44 farInp_128 farExp_129
+                                                                                                                                                                                          else let _ = "choicesBranch.else"
+                                                                                                                                                                                                in if 91 GHC.Classes.== c_67
+                                                                                                                                                                                                    then let _ = "choicesBranch.then"
+                                                                                                                                                                                                          in let readFail_130 = readFail_66
+                                                                                                                                                                                                              in if readMore_2 ((GHC.Num.+) @GHC.Types.Int 1 inp_44)
+                                                                                                                                                                                                                  then let !(# c_131,
+                                                                                                                                                                                                                               cs_132 #) = readNext_3 inp_44
+                                                                                                                                                                                                                        in if (\x_133 -> GHC.Types.True) c_131
+                                                                                                                                                                                                                            then name_25 (let _ = "suspend"
+                                                                                                                                                                                                                                           in \farInp_134 farExp_135 v_136 (!inp_137) -> name_34 (let _ = "suspend"
+                                                                                                                                                                                                                                                                                                   in \farInp_138 farExp_139 v_140 (!inp_141) -> let readFail_142 = readFail_130
+                                                                                                                                                                                                                                                                                                                                                  in if readMore_2 inp_141
+                                                                                                                                                                                                                                                                                                                                                      then let !(# c_143,
+                                                                                                                                                                                                                                                                                                                                                                   cs_144 #) = readNext_3 inp_141
+                                                                                                                                                                                                                                                                                                                                                            in if (93 GHC.Classes.==) c_143
+                                                                                                                                                                                                                                                                                                                                                                then let _ = "resume"
+                                                                                                                                                                                                                                                                                                                                                                      in join_52 farInp_138 farExp_139 (let _ = "resume.genCode"
+                                                                                                                                                                                                                                                                                                                                                                                                         in Parsers.Brainfuck.Types.Loop v_140) cs_144
+                                                                                                                                                                                                                                                                                                                                                                else let _ = "checkToken.else"
+                                                                                                                                                                                                                                                                                                                                                                      in readFail_142 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_141 farInp_138 farExp_139
+                                                                                                                                                                                                                                                                                                                                                      else let _ = "checkHorizon.else"
+                                                                                                                                                                                                                                                                                                                                                            in let failExp_145 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure (case inputToken of
+                                                                                                                                                                                                                                                                                                                                                                                                                                                               (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_6989586621679198986) -> Symantic.Parser.Grammar.Combinators.FailureHorizon @tok'_6989586621679198986 1)) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                                                                                                                                                                                                                                                in let (# farInp_146,
+                                                                                                                                                                                                                                                                                                                                                                          farExp_147 #) = case GHC.Classes.compare @GHC.Types.Int farInp_138 inp_141 of
+                                                                                                                                                                                                                                                                                                                                                                                              GHC.Types.LT -> (# inp_141,
+                                                                                                                                                                                                                                                                                                                                                                                                                 failExp_145 #)
+                                                                                                                                                                                                                                                                                                                                                                                              GHC.Types.EQ -> (# farInp_138,
+                                                                                                                                                                                                                                                                                                                                                                                                                 failExp_145 GHC.Base.<> farExp_139 #)
+                                                                                                                                                                                                                                                                                                                                                                                              GHC.Types.GT -> (# farInp_138,
+                                                                                                                                                                                                                                                                                                                                                                                                                 farExp_139 #)
+                                                                                                                                                                                                                                                                                                                                                                    in readFail_142 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_141 farInp_146 farExp_147) inp_137 (Data.Map.Internal.Bin 1 Symantic.Parser.Grammar.Combinators.ExceptionFailure readFail_130 Data.Map.Internal.Tip Data.Map.Internal.Tip)) cs_132 (Data.Map.Internal.Bin 1 Symantic.Parser.Grammar.Combinators.ExceptionFailure readFail_130 Data.Map.Internal.Tip Data.Map.Internal.Tip)
+                                                                                                                                                                                                                            else let _ = "checkToken.else"
+                                                                                                                                                                                                                                  in let failExp_148 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure (case inputToken of
+                                                                                                                                                                                                                                                                                                                                     (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_6989586621679198986) -> Symantic.Parser.Grammar.Combinators.FailureAny @tok'_6989586621679198986)) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                                                                                                                      in let (# farInp_149,
+                                                                                                                                                                                                                                                farExp_150 #) = case GHC.Classes.compare @GHC.Types.Int init_1 inp_44 of
+                                                                                                                                                                                                                                                                    GHC.Types.LT -> (# inp_44,
+                                                                                                                                                                                                                                                                                       failExp_148 #)
+                                                                                                                                                                                                                                                                    GHC.Types.EQ -> (# init_1,
+                                                                                                                                                                                                                                                                                       failExp_148 GHC.Base.<> Data.Set.Internal.empty #)
+                                                                                                                                                                                                                                                                    GHC.Types.GT -> (# init_1,
+                                                                                                                                                                                                                                                                                       Data.Set.Internal.empty #)
+                                                                                                                                                                                                                                          in readFail_130 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_44 farInp_149 farExp_150
+                                                                                                                                                                                                                  else let _ = "checkHorizon.else"
+                                                                                                                                                                                                                        in let failExp_151 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure (case inputToken of
+                                                                                                                                                                                                                                                                                                                           (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_6989586621679198986) -> Symantic.Parser.Grammar.Combinators.FailureHorizon @tok'_6989586621679198986 2)) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                                                                                                            in let (# farInp_152,
+                                                                                                                                                                                                                                      farExp_153 #) = case GHC.Classes.compare @GHC.Types.Int init_1 inp_44 of
+                                                                                                                                                                                                                                                          GHC.Types.LT -> (# inp_44,
+                                                                                                                                                                                                                                                                             failExp_151 #)
+                                                                                                                                                                                                                                                          GHC.Types.EQ -> (# init_1,
+                                                                                                                                                                                                                                                                             failExp_151 GHC.Base.<> Data.Set.Internal.empty #)
+                                                                                                                                                                                                                                                          GHC.Types.GT -> (# init_1,
+                                                                                                                                                                                                                                                                             Data.Set.Internal.empty #)
+                                                                                                                                                                                                                                in readFail_130 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_44 farInp_152 farExp_153
+                                                                                                                                                                                                    else let _ = "choicesBranch.else"
+                                                                                                                                                                                                          in let failExp_154 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure Symantic.Parser.Grammar.Combinators.FailureEmpty) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                                                                                              in let (# farInp_155,
+                                                                                                                                                                                                                        farExp_156 #) = case GHC.Classes.compare @GHC.Types.Int init_1 inp_44 of
+                                                                                                                                                                                                                                            GHC.Types.LT -> (# inp_44,
+                                                                                                                                                                                                                                                               failExp_154 #)
+                                                                                                                                                                                                                                            GHC.Types.EQ -> (# init_1,
+                                                                                                                                                                                                                                                               failExp_154 GHC.Base.<> Data.Set.Internal.empty #)
+                                                                                                                                                                                                                                            GHC.Types.GT -> (# init_1,
+                                                                                                                                                                                                                                                               Data.Set.Internal.empty #)
+                                                                                                                                                                                                                  in readFail_66 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_44 farInp_155 farExp_156
+                                                                                                                                  else let _ = "checkToken.else"
+                                                                                                                                        in let failExp_157 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure (case inputToken of
+                                                                                                                                                                                                                                           (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_6989586621679198986) -> Symantic.Parser.Grammar.Combinators.FailureAny @tok'_6989586621679198986)) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                            in let (# farInp_158,
+                                                                                                                                                      farExp_159 #) = case GHC.Classes.compare @GHC.Types.Int init_1 inp_44 of
+                                                                                                                                                                          GHC.Types.LT -> (# inp_44,
+                                                                                                                                                                                             failExp_157 #)
+                                                                                                                                                                          GHC.Types.EQ -> (# init_1,
+                                                                                                                                                                                             failExp_157 GHC.Base.<> Data.Set.Internal.empty #)
+                                                                                                                                                                          GHC.Types.GT -> (# init_1,
+                                                                                                                                                                                             Data.Set.Internal.empty #)
+                                                                                                                                                in readFail_66 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_44 farInp_158 farExp_159
+                                                                                                                        else let _ = "checkHorizon.else"
+                                                                                                                              in let failExp_160 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure (case inputToken of
+                                                                                                                                                                                                                                 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_6989586621679198986) -> Symantic.Parser.Grammar.Combinators.FailureHorizon @tok'_6989586621679198986 1)) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                  in let (# farInp_161,
+                                                                                                                                            farExp_162 #) = case GHC.Classes.compare @GHC.Types.Int init_1 inp_44 of
+                                                                                                                                                                GHC.Types.LT -> (# inp_44,
+                                                                                                                                                                                   failExp_160 #)
+                                                                                                                                                                GHC.Types.EQ -> (# init_1,
+                                                                                                                                                                                   failExp_160 GHC.Base.<> Data.Set.Internal.empty #)
+                                                                                                                                                                GHC.Types.GT -> (# init_1,
+                                                                                                                                                                                   Data.Set.Internal.empty #)
+                                                                                                                                      in readFail_66 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_44 farInp_161 farExp_162;
+                                                      name_29 = \(!ok_163) (!inp_164) (!koByLabel_165) -> let _ = "catch ExceptionFailure"
+                                                                                                           in let catchHandler_166 (!_exn_167) (!failInp_168) (!farInp_169) (!farExp_170) = let _ = "catch.ko ExceptionFailure"
+                                                                                                                                                                                             in if (GHC.Classes.==) @GHC.Types.Int inp_164 failInp_168
+                                                                                                                                                                                                 then let _ = "choicesBranch.then"
+                                                                                                                                                                                                       in let _ = "resume"
+                                                                                                                                                                                                           in ok_163 farInp_169 farExp_170 (let _ = "resume.genCode"
+                                                                                                                                                                                                                                             in \x_171 -> x_171) failInp_168
+                                                                                                                                                                                                 else let _ = "choicesBranch.else"
+                                                                                                                                                                                                       in Data.Map.Strict.Internal.findWithDefault finalRaise_18 Symantic.Parser.Grammar.Combinators.ExceptionFailure koByLabel_165 Symantic.Parser.Grammar.Combinators.ExceptionFailure failInp_168 farInp_169 farExp_170
+                                                                                                               in let readFail_172 = catchHandler_166
+                                                                                                                   in if readMore_2 inp_164
+                                                                                                                       then let !(# c_173,
+                                                                                                                                    cs_174 #) = readNext_3 inp_164
+                                                                                                                             in if (\c_175 -> GHC.Classes.not ((60 GHC.Classes.== c_175) GHC.Classes.|| ((62 GHC.Classes.== c_175) GHC.Classes.|| ((43 GHC.Classes.== c_175) GHC.Classes.|| ((45 GHC.Classes.== c_175) GHC.Classes.|| ((44 GHC.Classes.== c_175) GHC.Classes.|| ((46 GHC.Classes.== c_175) GHC.Classes.|| ((91 GHC.Classes.== c_175) GHC.Classes.|| ((93 GHC.Classes.== c_175) GHC.Classes.|| GHC.Types.False))))))))) c_173
+                                                                                                                                 then name_29 (let _ = "suspend"
+                                                                                                                                                in \farInp_176 farExp_177 v_178 (!inp_179) -> let _ = "resume"
+                                                                                                                                                                                               in ok_163 farInp_176 farExp_177 (let _ = "resume.genCode"
+                                                                                                                                                                                                                                 in \x_180 -> v_178 x_180) inp_179) cs_174 (Data.Map.Internal.Bin 1 Symantic.Parser.Grammar.Combinators.ExceptionFailure readFail_172 Data.Map.Internal.Tip Data.Map.Internal.Tip)
+                                                                                                                                 else let _ = "checkToken.else"
+                                                                                                                                       in readFail_172 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_164 init_1 Data.Set.Internal.empty
+                                                                                                                       else let _ = "checkHorizon.else"
+                                                                                                                             in let failExp_181 = Data.Set.Internal.Bin 1 (Symantic.Parser.Grammar.Combinators.SomeFailure (case inputToken of
+                                                                                                                                                                                                                                (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_6989586621679198986) -> Symantic.Parser.Grammar.Combinators.FailureHorizon @tok'_6989586621679198986 1)) Data.Set.Internal.Tip Data.Set.Internal.Tip
+                                                                                                                                 in let (# farInp_182,
+                                                                                                                                           farExp_183 #) = case GHC.Classes.compare @GHC.Types.Int init_1 inp_164 of
+                                                                                                                                                               GHC.Types.LT -> (# inp_164,
+                                                                                                                                                                                  failExp_181 #)
+                                                                                                                                                               GHC.Types.EQ -> (# init_1,
+                                                                                                                                                                                  failExp_181 GHC.Base.<> Data.Set.Internal.empty #)
+                                                                                                                                                               GHC.Types.GT -> (# init_1,
+                                                                                                                                                                                  Data.Set.Internal.empty #)
+                                                                                                                                     in readFail_172 Symantic.Parser.Grammar.Combinators.ExceptionFailure inp_164 farInp_182 farExp_183}
+                                                  in name_25 (let _ = "suspend"
+                                                               in \farInp_184 farExp_185 v_186 (!inp_187) -> name_34 (let _ = "suspend"
+                                                                                                                       in \farInp_188 farExp_189 v_190 (!inp_191) -> let _ = "resume"
+                                                                                                                                                                      in finalRet_13 farInp_188 farExp_189 (let _ = "resume.genCode"
+                                                                                                                                                                                                             in v_190) inp_191) inp_187 Data.Map.Internal.Tip) init_1 Data.Map.Internal.Tip
index 58d238598e8419f5d4da943f76a8e35cb48fb994..3ba63b498d79ff686bf158b08d65742274e73b64 100644 (file)
@@ -21,7 +21,7 @@ stability: experimental
 category: Parsing
 extra-doc-files:
   ChangeLog.md
-  HackMe.md
+  Hacking.md
   ReadMe.md
   ToDo.md
 extra-source-files:
@@ -123,7 +123,10 @@ library parsers
   exposed-modules:
     Parsers.Brainfuck.Attoparsec
     Parsers.Brainfuck.Handrolled
-    Parsers.Brainfuck.SymanticParser
+    Parsers.Brainfuck.SymanticParser.AutoSplice
+    Parsers.Brainfuck.SymanticParser.DumpSplice
+    Parsers.Brainfuck.SymanticParser.Grammar
+    Parsers.Brainfuck.SymanticParser.PprSplice
     Parsers.Brainfuck.Types
     Parsers.Nandlang
     Parsers.Playground
@@ -143,7 +146,7 @@ library parsers
     TypeApplications,
     TypeFamilies,
     TypeOperators
-  ghc-options: -O2
+  ghc-options: -O2 -ddump-to-file -ddump-simpl-stats -ddump-splices
   build-depends:
     symantic-parser,
     attoparsec >= 0.13,
@@ -153,6 +156,7 @@ library parsers
     deepseq >= 1.4,
     directory >= 1.3,
     filepath >= 1.4,
+    ghc-prim,
     hashable >= 1.2.6,
     megaparsec >= 9.0,
     process >= 1.6,