cmake-syntax-0.1.0.0: src/Language/CMake/AST.hs
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Language.CMake.AST where
import qualified Data.ByteString.Char8 as BS
import Data.String
newtype File = File { fileElements :: [FileElement] } deriving (Eq, Show)
data FileElement
= CommandElement { commandInvocation :: CommandInvocation }
| NonCommandElement
deriving (Eq, Show)
data CommandInvocation = CommandInvocation
{ commandId :: BS.ByteString
, commandArgs :: [Argument]
}
deriving (Eq, Show)
data LiteralElem
= LiteralString { literalString :: BS.ByteString }
| VariableReference { variableName :: BS.ByteString }
deriving (Eq, Show)
newtype Literal = Literal { literalParts :: [LiteralElem] }
deriving (Eq, Show, Semigroup, Monoid)
instance IsString Literal where
fromString = Literal . pure . LiteralString . BS.pack
newtype Argument = Argument { argumentLiteral :: Literal }
deriving (Eq, Show, Semigroup, Monoid)
instance IsString Argument where
fromString = Argument . fromString