atom-0.0.2: A DSL for embedded hard realtime applications.

Language.Atom.Elaboration

Synopsis

Atom monad and container.

type Atom = StateT (Global, AtomDB) IO Source

The Atom container holds top level IO, Var, and Rule definitions.

data AtomDB Source

Constructors

Instances

data Global Source

Constructors

Fields

gId :: Int
gProbes :: [(String, Type, E Word64)]
gUVs :: [UV]
gPeriod :: Int
gAsserts :: [(String, UE)]

data Rule Source

Constructors

Instances

buildAtom :: Global -> Name -> Atom a -> IO (a, (Global, AtomDB))Source

Type Aliases and Utilities

type UID = Int Source

type Name = String Source

A name.

type Path = [Name]Source

A heirarchical name.

elaborate :: Name -> Atom () -> IO (Maybe ([Rule], [UV], [(String, UE)]))Source

A Relation is used for relative performance constraints between Actions. data Relation = Higher UID | Lower UID deriving (Show, Eq)

Given a top level name and design, elabortes design and returns a design database.

var :: Name -> Const -> Atom (V a)Source

Generic local variable declaration.

var' :: Name -> Type -> Atom (V a)Source

Generic external variable declaration.

addName :: Name -> Atom Name Source

AltStyle によって変換されたページ (->オリジナル) /