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.Univariant.Lang
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
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 #)
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
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 #)
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)
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)
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 #)
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)
517 Data.Set.Internal.Tip
518 Data.Set.Internal.Tip in
520 (# farInp_ambU, farExp_ambV #)
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)
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
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)
618 Data.Set.Internal.Tip
619 Data.Set.Internal.Tip in
621 (# farInp_amc4, farExp_amc5 #)
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
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)
727 Data.Set.Internal.Tip
728 Data.Set.Internal.Tip in
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)
848 Data.Set.Internal.Tip
849 Data.Set.Internal.Tip in
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
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)
947 Data.Set.Internal.Tip
948 Data.Set.Internal.Tip in
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 #)
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
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