Fix cabal-version warning.
[haskell/symantic.git] / symantic-grammar / Language / Symantic / Grammar / EBNF.hs
index 9c414fae930d26dd6f55789cbe99ca318ccef355..2daa0206ee9b856864497c0f22444b8c36f1008b 100644 (file)
@@ -1,8 +1,12 @@
 module Language.Symantic.Grammar.EBNF where
 
 import Control.Applicative (Applicative(..))
-import Data.Semigroup
+import Data.Eq (Eq)
+import Data.Function (($), (.), id)
+import Data.Functor (Functor(..))
+import Data.Semigroup (Semigroup(..))
 import Data.Text (Text)
+import Text.Show (Show(..))
 import qualified Data.Text as Text
 
 import Language.Symantic.Grammar.Meta
@@ -52,7 +56,7 @@ ebnf_const t = EBNF $ \_rm _op -> t
 
 -- | 'EBNF' which adds an argument to be applied.
 ebnf_arg :: EBNF a -> EBNF b -> EBNF ()
-ebnf_arg (EBNF a) (EBNF b) = EBNF $ \bo po -> parenInfix po op $
+ebnf_arg (EBNF a) (EBNF b) = EBNF $ \bo po -> pairIfNeeded pairParen po op $
        a bo (op, SideL) <> " " <> b bo (op, SideR)
        where op = infixL 11
 infixl 5 `ebnf_arg`
@@ -107,7 +111,7 @@ instance Functor EBNF where
        fmap _f (EBNF x) = EBNF x
 instance Applicative EBNF where
        pure _ = ebnf_const $ "\"\""
-       EBNF f <*> EBNF x = EBNF $ \bo po -> parenInfix po op $
+       EBNF f <*> EBNF x = EBNF $ \bo po -> pairIfNeeded pairParen po op $
                f bo (op, SideL) <> ", " <> x bo (op, SideR)
                where op = infixB SideL 10
 instance Gram_Rule EBNF where