$ 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)
```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
parsers/repl:
cabal repl $(project):parsers
+.PHONY: tests
tests:
cabal test $(CABAL_TEST_FLAGS) \
--test-show-details always --test-options "$(TEST_OPTIONS)"
%.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:
{-# 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 #-}
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")
, 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
, benchBrainfuck "compiler"
, benchBrainfuck "hanoi"
]
+
+init =
+ SP.Brainfuck.PprSplice.dumpSplice
import qualified Brainfuck
main :: IO ()
-main =
+main = do
+ Brainfuck.init
defaultMain $
[ Brainfuck.benchmark
]
--- /dev/null
+{-# 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)
--- /dev/null
+{-# 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
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE ViewPatterns #-}
-module Parsers.Brainfuck.SymanticParser where
+module Parsers.Brainfuck.SymanticParser.Grammar where
import Data.Char (Char)
import Data.Function ((.))
--- /dev/null
+{-# 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
category: Parsing
extra-doc-files:
ChangeLog.md
- HackMe.md
+ Hacking.md
ReadMe.md
ToDo.md
extra-source-files:
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
TypeApplications,
TypeFamilies,
TypeOperators
- ghc-options: -O2
+ ghc-options: -O2 -ddump-to-file -ddump-simpl-stats -ddump-splices
build-depends:
symantic-parser,
attoparsec >= 0.13,
deepseq >= 1.4,
directory >= 1.3,
filepath >= 1.4,
+ ghc-prim,
hashable >= 1.2.6,
megaparsec >= 9.0,
process >= 1.6,