1 {-# LANGUAGE AllowAmbiguousTypes #-}
2 {-# LANGUAGE ScopedTypeVariables #-}
3 {-# LANGUAGE TemplateHaskell #-}
4 {-# LANGUAGE TypeApplications #-}
5 {-# LANGUAGE ViewPatterns #-}
6 -- for Symantic.Parser's TemplateHaskell
7 {-# LANGUAGE MagicHash #-}
8 {-# LANGUAGE ScopedTypeVariables #-}
9 {-# LANGUAGE RankNTypes #-}
10 {-# LANGUAGE UnboxedTuples #-}
11 {-# OPTIONS_GHC -Wno-unused-matches #-}
12 {-# OPTIONS_GHC -Wno-unused-local-binds #-}
13 module Parsers.Brainfuck.SymanticParser.DumpSplice where
15 import qualified Data.ByteString as BS
16 import qualified Data.ByteString.Internal
17 import qualified Data.Either
18 import qualified Data.Function
19 import qualified Data.Map.Internal
20 import qualified Data.Map.Strict.Internal
21 import qualified Data.Proxy
22 import qualified Data.Set.Internal
23 import qualified Data.Text.Internal
24 import qualified Data.Text.Unsafe
25 import qualified GHC.Base
26 import qualified GHC.Classes
27 import qualified GHC.ForeignPtr
28 import qualified GHC.Maybe
29 import qualified GHC.Num
30 import qualified GHC.Prim
31 import qualified GHC.Show
32 import qualified GHC.Tuple
33 import qualified GHC.Types
34 import qualified GHC.Word
35 import qualified Language.Haskell.TH as TH
36 import qualified Language.Haskell.TH.Syntax as TH
37 import qualified Prelude
38 import qualified Symantic.Parser as SP
39 import qualified Symantic.Parser.Grammar.Combinators
40 import qualified Symantic.Parser.Haskell
41 import qualified Symantic.Parser.Machine
42 import qualified Symantic.Parser.Machine.Generate
43 import qualified Symantic.Parser.Machine.Input
44 import qualified System.IO as IO
45 import Data.Either (Either)
47 import qualified Parsers.Brainfuck.Types
48 import Parsers.Brainfuck.Types (Instruction)
50 -- The splice below has been manually paste with:
51 -- :r dist-newstyle/build/x86_64-linux/ghc-9.0.1/symantic-parser-*/l/parsers/build/parsers/parsers/Parsers/Brainfuck/SymanticParser/AutoSplice.dump-splices
53 -- :%s/#\(_[0-9]\+\)/\1#/g
54 parserByteString :: BS.ByteString -> Either (SP.ParsingError BS.ByteString) [Instruction]
56 \ (input_ama8 :: inp_a1S5K)
58 !(# init_amaa, readMore_amab, readNext_amac #)
60 !(Data.ByteString.Internal.PS (GHC.ForeignPtr.ForeignPtr addr_amae#
64 next_amai i_amaj@(GHC.Types.I# i_amak#)
66 ((GHC.Prim.readWord8OffAddr#
67 (addr_amae# `GHC.Prim.plusAddr#` i_amak#))
72 -> case (GHC.Prim.touch# final_amaf) s'_amal of {
73 _ -> (# GHC.Word.W8# x_amam, (i_amaj GHC.Num.+ 1) #) } }
74 in (# off_amag, (GHC.Classes.< size_amah), next_amai #)
76 = \ _farInp_aman _farExp_amao v_amap _inp_amaq
77 -> Data.Either.Right v_amap
78 finalRaise_amad :: forall b_amar. SP.Catcher inp_a1S5K b_amar
79 = \ !exn_amas _failInp_amat !farInp_amau !farExp_amav
81 SP.ParsingErrorStandard
82 {SP.parsingErrorOffset = SP.offset farInp_amau,
83 SP.parsingErrorException = exn_amas,
84 SP.parsingErrorUnexpected = if readMore_amab farInp_amau then
88 = readNext_amac farInp_amau
92 SP.parsingErrorExpecting = farExp_amav} in
95 = Data.Proxy.Proxy :: Data.Proxy.Proxy (SP.InputToken inp_a1S5K) in
98 = \ !ok_amcU !inp_amcV !koByLabel_amcW
102 \ farInp_amcX farExp_amcY v_amcZ !inp_amd0
105 (((ok_amcU farInp_amcX) farExp_amcY)
106 (let _ = "resume.genCode" in ()))
109 (((((Data.Map.Internal.Bin 1) SP.ExceptionFailure)
110 (((Data.Map.Strict.Internal.findWithDefault finalRaise_amad)
113 Data.Map.Internal.Tip)
114 Data.Map.Internal.Tip)
116 = \ !ok_amcN !inp_amcO !koByLabel_amcP
120 \ farInp_amcQ farExp_amcR v_amcS !inp_amcT
123 (((ok_amcN farInp_amcQ) farExp_amcR)
124 (let _ = "resume.genCode" in v_amcS []))
127 (((((Data.Map.Internal.Bin 1) SP.ExceptionFailure)
128 (((Data.Map.Strict.Internal.findWithDefault finalRaise_amad)
131 Data.Map.Internal.Tip)
132 Data.Map.Internal.Tip)
134 = \ !ok_amaS !inp_amaT !koByLabel_amaU
135 -> let _ = "catch ExceptionFailure" in
142 = let _ = "catch.ko ExceptionFailure"
144 if (((GHC.Classes.==) @GHC.Types.Int) inp_amaT) failInp_amaX then
145 let _ = "choicesBranch.then" in
148 (((ok_amaS farInp_amaY) farExp_amaZ)
149 (let _ = "resume.genCode" in \ x_amb0 -> x_amb0))
152 let _ = "choicesBranch.else"
154 ((((((Data.Map.Strict.Internal.findWithDefault finalRaise_amad)
163 = \ farInp_amb1 farExp_amb2 v_amb3 !inp_amb4
167 \ farInp_amb5 farExp_amb6 v_amb7 !inp_amb8
171 \ farInp_amb9 farExp_amba v_ambb !inp_ambc
174 (((ok_amaS farInp_amb9) farExp_amba)
175 (let _ = "resume.genCode"
178 -> (v_amb3 : v_ambb x_ambd)))
181 (((((Data.Map.Internal.Bin 1) SP.ExceptionFailure)
183 Data.Map.Internal.Tip)
184 Data.Map.Internal.Tip)))
186 (((((Data.Map.Internal.Bin 1) SP.ExceptionFailure)
188 Data.Map.Internal.Tip)
189 Data.Map.Internal.Tip) in
190 let readFail_ambe = catchHandler_amaV
192 if readMore_amab inp_amaT then
193 let !(# c_ambf, cs_ambg #) = readNext_amac inp_amaT
195 if (\ x_ambh -> GHC.Types.True) c_ambf then
196 if (60 GHC.Classes.== c_ambf) then
197 let _ = "choicesBranch.then" in
198 let readFail_ambi = readFail_ambe
200 if readMore_amab inp_amaT then
201 let !(# c_ambj, cs_ambk #) = readNext_amac inp_amaT
203 if (\ x_ambl -> GHC.Types.True) c_ambj then
206 (((join_1s init_amaa) Data.Set.Internal.empty)
207 (let _ = "resume.genCode"
208 in Parsers.Brainfuck.Types.Backward))
211 let _ = "checkToken.else" in
214 = (((Data.Set.Internal.Bin 1)
216 (case inputToken of {
217 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
218 -> SP.FailureAny @tok'_aLiK })))
219 Data.Set.Internal.Tip)
220 Data.Set.Internal.Tip in
222 (# farInp_ambn, farExp_ambo #)
224 ((GHC.Classes.compare @GHC.Types.Int)
228 GHC.Types.LT -> (# inp_amaT, failExp_ambm #)
233 Data.Set.Internal.empty) #)
236 Data.Set.Internal.empty #)
238 (((readFail_ambi SP.ExceptionFailure) inp_amaT)
242 let _ = "checkHorizon.else" in
245 = (((Data.Set.Internal.Bin 1)
247 (case inputToken of {
248 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
249 -> (SP.FailureHorizon @tok'_aLiK) 1 })))
250 Data.Set.Internal.Tip)
251 Data.Set.Internal.Tip in
253 (# farInp_ambq, farExp_ambr #)
255 ((GHC.Classes.compare @GHC.Types.Int) init_amaa)
258 GHC.Types.LT -> (# inp_amaT, failExp_ambp #)
262 GHC.Base.<> Data.Set.Internal.empty) #)
264 -> (# init_amaa, Data.Set.Internal.empty #)
266 (((readFail_ambi SP.ExceptionFailure) inp_amaT)
270 let _ = "choicesBranch.else"
272 if (62 GHC.Classes.== c_ambf) then
273 let _ = "choicesBranch.then" in
274 let readFail_ambs = readFail_ambe
276 if readMore_amab inp_amaT then
277 let !(# c_ambt, cs_ambu #) = readNext_amac inp_amaT
279 if (\ x_ambv -> GHC.Types.True) c_ambt then
282 (((join_1s init_amaa)
283 Data.Set.Internal.empty)
284 (let _ = "resume.genCode"
285 in Parsers.Brainfuck.Types.Forward))
288 let _ = "checkToken.else" in
291 = (((Data.Set.Internal.Bin 1)
293 (case inputToken of {
294 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
297 Data.Set.Internal.Tip)
298 Data.Set.Internal.Tip in
300 (# farInp_ambx, farExp_amby #)
302 ((GHC.Classes.compare
308 -> (# inp_amaT, failExp_ambw #)
313 Data.Set.Internal.empty) #)
316 Data.Set.Internal.empty #)
318 (((readFail_ambs SP.ExceptionFailure)
323 let _ = "checkHorizon.else" in
326 = (((Data.Set.Internal.Bin 1)
328 (case inputToken of {
329 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
330 -> (SP.FailureHorizon @tok'_aLiK)
332 Data.Set.Internal.Tip)
333 Data.Set.Internal.Tip in
335 (# farInp_ambA, farExp_ambB #)
337 ((GHC.Classes.compare @GHC.Types.Int)
341 GHC.Types.LT -> (# inp_amaT, failExp_ambz #)
346 Data.Set.Internal.empty) #)
349 Data.Set.Internal.empty #)
351 (((readFail_ambs SP.ExceptionFailure) inp_amaT)
355 let _ = "choicesBranch.else"
357 if (43 GHC.Classes.== c_ambf) then
358 let _ = "choicesBranch.then" in
359 let readFail_ambC = readFail_ambe
361 if readMore_amab inp_amaT then
363 !(# c_ambD, cs_ambE #)
364 = readNext_amac inp_amaT
366 if (\ x_ambF -> GHC.Types.True) c_ambD then
369 (((join_1s init_amaa)
370 Data.Set.Internal.empty)
371 (let _ = "resume.genCode"
373 Parsers.Brainfuck.Types.Increment))
376 let _ = "checkToken.else" in
379 = (((Data.Set.Internal.Bin 1)
381 (case inputToken of {
382 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
385 Data.Set.Internal.Tip)
386 Data.Set.Internal.Tip in
388 (# farInp_ambH, farExp_ambI #)
390 ((GHC.Classes.compare
402 Data.Set.Internal.empty) #)
405 Data.Set.Internal.empty #)
407 (((readFail_ambC SP.ExceptionFailure)
412 let _ = "checkHorizon.else" in
415 = (((Data.Set.Internal.Bin 1)
417 (case inputToken of {
418 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
419 -> (SP.FailureHorizon
422 Data.Set.Internal.Tip)
423 Data.Set.Internal.Tip in
425 (# farInp_ambK, farExp_ambL #)
427 ((GHC.Classes.compare
433 -> (# inp_amaT, failExp_ambJ #)
438 Data.Set.Internal.empty) #)
441 Data.Set.Internal.empty #)
443 (((readFail_ambC SP.ExceptionFailure)
448 let _ = "choicesBranch.else"
450 if (45 GHC.Classes.== c_ambf) then
451 let _ = "choicesBranch.then" in
452 let readFail_ambM = readFail_ambe
454 if readMore_amab inp_amaT then
456 !(# c_ambN, cs_ambO #)
457 = readNext_amac inp_amaT
459 if (\ x_ambP -> GHC.Types.True)
463 (((join_1s init_amaa)
464 Data.Set.Internal.empty)
465 (let _ = "resume.genCode"
467 Parsers.Brainfuck.Types.Decrement))
470 let _ = "checkToken.else" in
473 = (((Data.Set.Internal.Bin 1)
475 (case inputToken of {
476 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
479 Data.Set.Internal.Tip)
480 Data.Set.Internal.Tip in
482 (# farInp_ambR, farExp_ambS #)
484 ((GHC.Classes.compare
496 Data.Set.Internal.empty) #)
499 Data.Set.Internal.empty #)
507 let _ = "checkHorizon.else" in
510 = (((Data.Set.Internal.Bin 1)
512 (case inputToken of {
513 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
514 -> (SP.FailureHorizon
517 Data.Set.Internal.Tip)
518 Data.Set.Internal.Tip in
520 (# farInp_ambU, farExp_ambV #)
522 ((GHC.Classes.compare
534 Data.Set.Internal.empty) #)
537 Data.Set.Internal.empty #)
539 (((readFail_ambM SP.ExceptionFailure)
544 let _ = "choicesBranch.else"
546 if (44 GHC.Classes.== c_ambf) then
547 let _ = "choicesBranch.then" in
548 let readFail_ambW = readFail_ambe
550 if readMore_amab inp_amaT then
552 !(# c_ambX, cs_ambY #)
553 = readNext_amac inp_amaT
555 if (\ x_ambZ -> GHC.Types.True)
559 (((join_1s init_amaa)
560 Data.Set.Internal.empty)
564 Parsers.Brainfuck.Types.Input))
567 let _ = "checkToken.else" in
570 = (((Data.Set.Internal.Bin
576 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
579 Data.Set.Internal.Tip)
580 Data.Set.Internal.Tip in
585 ((GHC.Classes.compare
597 Data.Set.Internal.empty) #)
600 Data.Set.Internal.empty #)
608 let _ = "checkHorizon.else" in
611 = (((Data.Set.Internal.Bin 1)
613 (case inputToken of {
614 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
615 -> (SP.FailureHorizon
618 Data.Set.Internal.Tip)
619 Data.Set.Internal.Tip in
621 (# farInp_amc4, farExp_amc5 #)
623 ((GHC.Classes.compare
635 Data.Set.Internal.empty) #)
638 Data.Set.Internal.empty #)
646 let _ = "choicesBranch.else"
648 if (46 GHC.Classes.== c_ambf) then
649 let _ = "choicesBranch.then" in
650 let readFail_amc6 = readFail_ambe
652 if readMore_amab inp_amaT then
654 !(# c_amc7, cs_amc8 #)
655 = readNext_amac inp_amaT
664 Data.Set.Internal.empty)
668 Parsers.Brainfuck.Types.Output))
672 _ = "checkToken.else" in
675 = (((Data.Set.Internal.Bin
681 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
684 Data.Set.Internal.Tip)
685 Data.Set.Internal.Tip in
690 ((GHC.Classes.compare
702 Data.Set.Internal.empty) #)
705 Data.Set.Internal.empty #)
714 _ = "checkHorizon.else" in
717 = (((Data.Set.Internal.Bin
723 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
724 -> (SP.FailureHorizon
727 Data.Set.Internal.Tip)
728 Data.Set.Internal.Tip in
733 ((GHC.Classes.compare
745 Data.Set.Internal.empty) #)
748 Data.Set.Internal.empty #)
756 let _ = "choicesBranch.else"
762 _ = "choicesBranch.then" in
821 Parsers.Brainfuck.Types.Loop
826 _ = "checkToken.else"
835 _ = "checkHorizon.else" in
838 = (((Data.Set.Internal.Bin
844 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
845 -> (SP.FailureHorizon
848 Data.Set.Internal.Tip)
849 Data.Set.Internal.Tip in
854 ((GHC.Classes.compare
877 (((((Data.Map.Internal.Bin
881 Data.Map.Internal.Tip)
882 Data.Map.Internal.Tip)))
884 (((((Data.Map.Internal.Bin
888 Data.Map.Internal.Tip)
889 Data.Map.Internal.Tip)
892 _ = "checkToken.else" in
895 = (((Data.Set.Internal.Bin
901 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
904 Data.Set.Internal.Tip)
905 Data.Set.Internal.Tip in
910 ((GHC.Classes.compare
922 Data.Set.Internal.empty) #)
925 Data.Set.Internal.empty #)
934 _ = "checkHorizon.else" in
937 = (((Data.Set.Internal.Bin
943 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
944 -> (SP.FailureHorizon
947 Data.Set.Internal.Tip)
948 Data.Set.Internal.Tip in
953 ((GHC.Classes.compare
965 Data.Set.Internal.empty) #)
968 Data.Set.Internal.empty #)
977 _ = "choicesBranch.else" in
980 = (((Data.Set.Internal.Bin
984 Data.Set.Internal.Tip)
985 Data.Set.Internal.Tip in
990 ((GHC.Classes.compare
1002 Data.Set.Internal.empty) #)
1005 Data.Set.Internal.empty #)
1008 SP.ExceptionFailure)
1013 let _ = "checkToken.else" in
1016 = (((Data.Set.Internal.Bin 1)
1018 (case inputToken of {
1019 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
1020 -> SP.FailureAny @tok'_aLiK })))
1021 Data.Set.Internal.Tip)
1022 Data.Set.Internal.Tip in
1024 (# farInp_amcI, farExp_amcJ #)
1026 ((GHC.Classes.compare @GHC.Types.Int) init_amaa) inp_amaT
1028 GHC.Types.LT -> (# inp_amaT, failExp_amcH #)
1032 GHC.Base.<> Data.Set.Internal.empty) #)
1033 GHC.Types.GT -> (# init_amaa, Data.Set.Internal.empty #)
1035 (((readFail_ambe SP.ExceptionFailure) inp_amaT) farInp_amcI)
1038 let _ = "checkHorizon.else" in
1041 = (((Data.Set.Internal.Bin 1)
1043 (case inputToken of {
1044 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
1045 -> (SP.FailureHorizon @tok'_aLiK) 1 })))
1046 Data.Set.Internal.Tip)
1047 Data.Set.Internal.Tip in
1049 (# farInp_amcL, farExp_amcM #)
1050 = case ((GHC.Classes.compare @GHC.Types.Int) init_amaa) inp_amaT of
1051 GHC.Types.LT -> (# inp_amaT, failExp_amcK #)
1054 (failExp_amcK GHC.Base.<> Data.Set.Internal.empty) #)
1055 GHC.Types.GT -> (# init_amaa, Data.Set.Internal.empty #)
1057 (((readFail_ambe SP.ExceptionFailure) inp_amaT) farInp_amcL)
1060 = \ !ok_amax !inp_amay !koByLabel_amaz
1061 -> let _ = "catch ExceptionFailure" in
1068 = let _ = "catch.ko ExceptionFailure"
1070 if (((GHC.Classes.==) @GHC.Types.Int) inp_amay) failInp_amaC then
1071 let _ = "choicesBranch.then" in
1074 (((ok_amax farInp_amaD) farExp_amaE)
1075 (let _ = "resume.genCode" in \ x_amaF -> x_amaF))
1078 let _ = "choicesBranch.else"
1080 ((((((Data.Map.Strict.Internal.findWithDefault finalRaise_amad)
1081 SP.ExceptionFailure)
1083 SP.ExceptionFailure)
1087 let readFail_amaG = catchHandler_amaA
1089 if readMore_amab inp_amay then
1090 let !(# c_amaH, cs_amaI #) = readNext_amac inp_amay
1094 ((60 GHC.Classes.== c_amaJ)
1096 ((62 GHC.Classes.== c_amaJ)
1098 ((43 GHC.Classes.== c_amaJ)
1100 ((45 GHC.Classes.== c_amaJ)
1102 ((44 GHC.Classes.== c_amaJ)
1104 ((46 GHC.Classes.== c_amaJ)
1106 ((91 GHC.Classes.== c_amaJ)
1109 GHC.Classes.== c_amaJ)
1111 GHC.Types.False)))))))))
1116 \ farInp_amaK farExp_amaL v_amaM !inp_amaN
1119 (((ok_amax farInp_amaK) farExp_amaL)
1120 (let _ = "resume.genCode"
1121 in \ x_amaO -> v_amaM x_amaO))
1124 (((((Data.Map.Internal.Bin 1) SP.ExceptionFailure) readFail_amaG)
1125 Data.Map.Internal.Tip)
1126 Data.Map.Internal.Tip)
1128 let _ = "checkToken.else"
1130 (((readFail_amaG SP.ExceptionFailure) inp_amay) init_amaa)
1131 Data.Set.Internal.empty
1133 let _ = "checkHorizon.else" in
1136 = (((Data.Set.Internal.Bin 1)
1138 (case inputToken of {
1139 (Data.Proxy.Proxy :: Data.Proxy.Proxy tok'_aLiK)
1140 -> (SP.FailureHorizon @tok'_aLiK) 1 })))
1141 Data.Set.Internal.Tip)
1142 Data.Set.Internal.Tip in
1144 (# farInp_amaQ, farExp_amaR #)
1145 = case ((GHC.Classes.compare @GHC.Types.Int) init_amaa) inp_amay of
1146 GHC.Types.LT -> (# inp_amay, failExp_amaP #)
1149 (failExp_amaP GHC.Base.<> Data.Set.Internal.empty) #)
1150 GHC.Types.GT -> (# init_amaa, Data.Set.Internal.empty #)
1152 (((readFail_amaG SP.ExceptionFailure) inp_amay) farInp_amaQ)
1158 \ farInp_amd1 farExp_amd2 v_amd3 !inp_amd4
1162 \ farInp_amd5 farExp_amd6 v_amd7 !inp_amd8
1165 (((finalRet_ama9 farInp_amd5) farExp_amd6)
1166 (let _ = "resume.genCode" in v_amd7))
1169 Data.Map.Internal.Tip))
1171 Data.Map.Internal.Tip