import qualified Data.Map.Strict as Map
import Data.Proxy (Proxy(..))
import Data.Semigroup (Semigroup(..))
+import Data.String (IsString(..))
import Data.Text (Text)
import qualified Data.Text as Text
import Prelude hiding (mod, not, any)
-- * Type 'Term_Name'
newtype Term_Name = Term_Name Text
deriving (Eq, Ord, Show)
+instance IsString Term_Name where
+ fromString = Term_Name . fromString
-- * Type 'ProTok'
-- | Proto 'EToken'. It's almost like a free monad,
import Data.Monoid ((<>))
import Data.Proxy
import Data.Maybe (fromMaybe, isJust)
+import Data.String (IsString(..))
import Data.Text (Text)
import qualified Data.Text as Text
import Data.Type.Equality
-- * Type 'TyName'
newtype TyName = TyName Text
deriving (Eq, Ord, Show)
+instance IsString TyName where
+ fromString = TyName . fromString
data instance TokenT meta ts (Proxy Token_Type)
= Token_Type TyName [EToken meta ts]