doc: fix old names
[haskell/symantic-parser.git] / src / Symantic / Parser / Grammar.hs
index f734161d076e9ae744d338e7f249e1f1b6364681..caf0c1e05f25519bce4735ced680e1853390f939 100644 (file)
@@ -3,17 +3,15 @@
 module Symantic.Parser.Grammar
   ( module Symantic.Parser.Grammar
   , module Symantic.Parser.Grammar.Combinators
-  , module Symantic.Parser.Grammar.Fixity
   , module Symantic.Parser.Grammar.Optimize
   , module Symantic.Parser.Grammar.ObserveSharing
   , module Symantic.Parser.Grammar.Production
   , module Symantic.Parser.Grammar.Write
   , module Symantic.Parser.Grammar.View
-  , Letable(..)
+  , Referenceable(..)
   , Letsable(..)
   ) where
 import Symantic.Parser.Grammar.Combinators
-import Symantic.Parser.Grammar.Fixity
 import Symantic.Parser.Grammar.ObserveSharing
 import Symantic.Parser.Grammar.Optimize
 import Symantic.Parser.Grammar.Production
@@ -27,19 +25,25 @@ import Data.Function ((.))
 import Data.String (String)
 import Data.Typeable (Typeable)
 import Text.Show (Show(..))
+import Language.Haskell.TH.HideName
 import qualified Language.Haskell.TH.Syntax as TH
 
--- * Class 'Grammarable'
+-- * Type 'Grammar'
+type Grammar repr = ObserveSharing TH.Name (OptimizeGrammar repr)
+
+-- ** Class 'Grammarable'
 type Grammarable tok repr =
   ( CombAlternable repr
   , CombApplicable repr
   , CombFoldable repr
-  , Letable TH.Name repr
+  , Referenceable TH.Name repr
   , Letsable TH.Name repr
   , CombLookable repr
   , CombMatchable repr
   , CombSatisfiable tok repr
   , CombSelectable repr
+  --, CombRegisterable repr
+  , CombRegisterableUnscoped repr
   , Eq tok
   , Ord tok
   , TH.Lift tok
@@ -50,18 +54,13 @@ type Grammarable tok repr =
 
 -- | A usual pipeline to interpret 'Comb'inators:
 -- 'observeSharing' then 'optimizeGrammar' then a polymorphic @(repr)@.
-grammar ::
-  Grammarable tok repr =>
-  ObserveSharing TH.Name
-    (OptimizeGrammar repr) a ->
-  repr a
+grammar :: Grammarable tok repr => Grammar repr a -> repr a
 grammar = optimizeGrammar . observeSharing
 
 -- | An usual pipeline to show 'Comb'inators:
 -- 'observeSharing' then 'optimizeGrammar' then 'viewGrammar' then 'show'.
-showGrammar :: forall showName a tok repr.
-  repr ~ ObserveSharing TH.Name (OptimizeGrammar (ViewGrammar showName)) =>
-  ShowLetName showName TH.Name =>
-  Grammarable tok repr =>
-  repr a -> String
+showGrammar :: forall showName a tok.
+  HideableName showName =>
+  Grammarable tok (Grammar (ViewGrammar showName)) =>
+  Grammar (ViewGrammar showName) a -> String
 showGrammar = show . viewGrammar . grammar @tok