{- |
Module : ./CSL/Tools.hs
Description : Abstract syntax for reduce
Copyright : (c) Dominik Dietrich, DFKI Bremen 2010
License : GPLv2 or higher, see LICENSE.txt
Maintainer : dominik.dietrich@dfki.de
Stability : experimental
Portability : portable
-}
module CSL.Tools where
import CSL.AS_BASIC_CSL
import CSL.ASUtils
import Common.Id
import Common.AS_Annotation as AS_Anno
negateFormula :: CMD -> CMD
negateFormula (Cmd s exps) = Cmd "Not" [mkOp s exps]
negateFormula _ = error "negateFormula: not implemented" -- TODO: implement this
getAtoms :: EXPRESSION -> [String]
getAtoms e =
case e of
Var tk -> ["var:" ++ tokStr tk]
Op s _ el _ -> ("op:" ++ show s) : concatMap getAtoms el
List el _ -> "list" : concatMap getAtoms el
Int _ _ -> ["int"]
Rat _ _ -> ["dbl"]
Interval {} -> ["intv"]
getCmdAtoms :: CMD -> [String]
getCmdAtoms c =
case c of
Cmd s el -> ("cmd:" ++ s) : concatMap getAtoms el
Repeat e cl -> "repeat" : (getAtoms e ++ concatMap getCmdAtoms cl)
_ -> [] -- TODO: implement this
getBSAtoms :: BASIC_SPEC -> [String]
getBSAtoms (Basic_spec l) = concatMap (f . AS_Anno.item) l
where f (Op_decl _) = []
f (Axiom_item ac) = getCmdAtoms $ AS_Anno.item ac
f _ = [] -- TODO: implement this