SableCC2Hs-0.0.0.1: haskell/SableTokens.hs
{-# Language DeriveDataTypeable #-}
module SableTokens where
import Data.Data
import Data.Dynamic
import SableCC.ParserTypes (PToken,ParserTokenID(..))
data Machine = Machine
deriving (Typeable,Data,Show)
data IdentifierLiteral = IdentifierLiteral String
deriving (Typeable,Data,Show)
data DefLiteralPredicate = DefLiteralPredicate String
deriving (Typeable,Data,Show)
data DefLiteralSubstitution = DefLiteralSubstitution String
deriving (Typeable,Data,Show)
data StringBody = StringBody
deriving (Typeable,Data,Show)
data IntegerLiteral = IntegerLiteral Integer
deriving (Typeable,Data,Show)
fromToken :: Typeable t => PToken -> t
fromToken token
= fromDyn (tokenToDynamic token) (error "cannot create Token")
tokenToDynamic :: PToken -> Dynamic
tokenToDynamic token@(tokenID,tokenString)
= case tokenID of
(ParserTokenID 228) -> toDyn $ IdentifierLiteral tokenString
(ParserTokenID 95) -> toDyn Machine
(ParserTokenID 231) -> toDyn $ IntegerLiteral $ read tokenString
_ -> error $ "fromToken : cannot handle token :"++ show token