]> Git — Sourcephile - haskell/symantic-parser.git/blob - test/Parser.hs
fix: use a global polyfix for defLet and defRef
[haskell/symantic-parser.git] / test / Parser.hs
1 {-# LANGUAGE ExistentialQuantification #-}
2 {-# LANGUAGE FlexibleContexts #-}
3 {-# LANGUAGE NoMonomorphismRestriction #-}
4 {-# LANGUAGE TypeApplications #-}
5 {-# OPTIONS_GHC -Wno-missing-signatures #-}
6 -- For TH splices
7 {-# LANGUAGE TemplateHaskell #-}
8 {-# LANGUAGE Rank2Types #-}
9 {-# LANGUAGE ScopedTypeVariables #-}
10 {-# LANGUAGE UnboxedTuples #-}
11 {-# OPTIONS_GHC -Wno-unused-local-binds #-}
12 {-# OPTIONS_GHC -Wno-unused-matches #-}
13 module Parser where
14
15 import Data.Either (Either(..))
16 import Data.Text (Text)
17 import Text.Show (Show)
18 import Symantic.Parser
19 import Grammar
20 import qualified Data.IORef as IORef
21 import qualified Language.Haskell.TH as TH
22 import qualified Language.Haskell.TH.Syntax as TH
23 import Control.DeepSeq
24 import System.IO (IO)
25
26 data P = forall a. Show a => P (
27 Text -> Either (ParsingError Text) a
28 )
29
30 parsers :: [P]
31 parsers =
32 [ {-P p1
33 , P p2
34 , P p3
35 , P p4
36 , P p5
37 , P p6
38 , P p7
39 , P p8
40 , P p9
41 , P p10
42 , P p11
43 , P p12
44 , P p13
45 , P p14
46 , P p15
47 -}
48 ]
49
50 {-
51 p1 = $$(TH.Code (do
52 TH.qRunIO (IORef.writeIORef TH.counter 0)
53 TH.examineCode (runParser @Text g1)
54 ))
55 p2 = $$(runParser @Text g2)
56 p3 = $$(runParser @Text g3)
57 p4 = $$(runParser @Text g4)
58 p5 = $$(runParser @Text g5)
59 p6 = $$(runParser @Text g6)
60 p7 = $$(runParser @Text g7)
61 p8 = $$(runParser @Text g8)
62 p9 = $$(runParser @Text g9)
63 p10 = $$(runParser @Text g10)
64 p11 = $$(runParser @Text g11)
65 p12 = $$(runParser @Text g12)
66 p13 = $$(runParser @Text g13)
67 -}
68 -- p14 = $$(TH.runQ (TH.examineCode (runParser @Text g14)) `deepseq` runParser @Text g14)
69 -- p14 = $$({- `deepseq`-} runParser @Text g14)
70 q14 = TH.runQ (TH.examineCode (runParser @Text g14))
71 -- p15 = $$(runParser @Text g15)