1 {-# LANGUAGE DataKinds #-}
2 {-# LANGUAGE ExistentialQuantification #-}
3 {-# LANGUAGE FlexibleContexts #-}
4 {-# LANGUAGE RankNTypes #-}
5 {-# LANGUAGE TypeApplications #-}
6 {-# LANGUAGE TypeFamilies #-}
9 -- import Data.Char (Char)
10 import Data.Text (Text)
11 import Data.Functor ((<$>))
14 import qualified Symantic.Parser as P
17 -- | Existential type to gather machines
18 -- returning different values in the same @('machines')@ list.
19 data M = forall a. M (
20 forall repr inp. inp ~ Text =>
21 P.Machine (P.InputToken inp) repr =>
26 machines = (\(G g) -> M (P.optimizeMachine g)) <$> grammars
28 e1 = P.fixByName (P.analysisByLet (P.machine @[Char] g1))
29 h1 = P.runAnalysis (P.machine @[Char] g1)
30 e13 = P.fixByName (P.analysisByLet (P.machine @[Char] g13))
31 h2 = P.runAnalysis (P.machine @[Char] g2)
32 h3 = P.runAnalysis (P.machine @[Char] g3)
33 h4 = P.runAnalysis (P.machine @[Char] g4)
34 h13 = P.runAnalysis (P.machine @[Char] g13)
35 h14 = P.runGenAnalysis (P.genAnalysisByLet (P.machine @[Char] g14))