feldspar-compiler-0.6.0.2: Compiler for the Feldspar language

Safe Haskell | None

Feldspar.Compiler.Imperative.Representation

Contents

- Set and get labels

Synopsis

- class Annotation t s where
  - type Label t s
- data Module t = Module {
  - entities :: [Entity t]
  - moduleLabel :: Label t Module
  }
- data Entity t
  - = StructDef {
    - structName :: String
    - structMembers :: [StructMember t]
    - structLabel :: Label t Struct
    - definitionLabel :: Label t Entity
    }
  - | TypeDef {
    - actualType :: Type
    - typeName :: String
    - definitionLabel :: Label t Entity
    }
  - | ProcDef {
    - procName :: String
    - inParams :: [Variable t]
    - outParams :: [Variable t]
    - procBody :: Block t
    - procDefLabel :: Label t ProcDef
    - definitionLabel :: Label t Entity
    }
  - | ProcDecl {
    - procName :: String
    - inParams :: [Variable t]
    - outParams :: [Variable t]
    - procDeclLabel :: Label t ProcDecl
    - definitionLabel :: Label t Entity
    }
- data StructMember t = StructMember {
  - structMemberName :: String
  - structMemberType :: Type
  - structMemberLabel :: Label t StructMember
  }
- data Block t = Block {
  - locals :: [Declaration t]
  - blockBody :: Program t
  - blockLabel :: Label t Block
  }
- data Program t
  - = Empty {
    - emptyLabel :: Label t Empty
    - programLabel :: Label t Program
    }
  - | Comment {
    - isBlockComment :: Bool
    - commentValue :: String
    - commentLabel :: Label t Comment
    - programLabel :: Label t Program
    }
  - | Assign {
    - lhs :: Expression t
    - rhs :: Expression t
    - assignLabel :: Label t Assign
    - programLabel :: Label t Program
    }
  - | ProcedureCall {
    - procCallName :: String
    - procCallParams :: [ActualParameter t]
    - procCallLabel :: Label t ProcedureCall
    - programLabel :: Label t Program
    }
  - | Sequence {
    - sequenceProgs :: [Program t]
    - sequenceLabel :: Label t Sequence
    - programLabel :: Label t Program
    }
  - | Branch {
    - branchCond :: Expression t
    - thenBlock :: Block t
    - elseBlock :: Block t
    - branchLabel :: Label t Branch
    - programLabel :: Label t Program
    }
  - | SeqLoop {
    - sLoopCond :: Expression t
    - sLoopCondCalc :: Block t
    - sLoopBlock :: Block t
    - sLoopLabel :: Label t SeqLoop
    - programLabel :: Label t Program
    }
  - | ParLoop {
    - pLoopCounter :: Variable t
    - pLoopBound :: Expression t
    - pLoopStep :: Int
    - pLoopBlock :: Block t
    - pLoopLabel :: Label t ParLoop
    - programLabel :: Label t Program
    }
  - | BlockProgram {
    - blockProgram :: Block t
    - programLabel :: Label t Program
    }
- data ActualParameter t
  - = In {
    - inParam :: Expression t
    - actParamLabel :: Label t ActualParameter
    }
  - | Out {
    - outParam :: Expression t
    - actParamLabel :: Label t ActualParameter
    }
  - | TypeParameter {
    - typeParam :: Type
    - typeParamMode :: TypeParameterMode
    - actParamLabel :: Label t ActualParameter
    }
  - | FunParameter {
    - funParamName :: String
    - addressNeeded :: Bool
    - actParamLabel :: Label t ActualParameter
    }
- data Declaration t = Declaration {
  - declVar :: Variable t
  - initVal :: Maybe (Expression t)
  - declLabel :: Label t Declaration
  }
- data Expression t
  - = VarExpr {
    - var :: Variable t
    - exprLabel :: Label t Expression
    }
  - | ArrayElem {
    - array :: Expression t
    - arrayIndex :: Expression t
    - arrayLabel :: Label t ArrayElem
    - exprLabel :: Label t Expression
    }
  - | StructField {
    - struct :: Expression t
    - fieldName :: String
    - structFieldLabel :: Label t StructField
    - exprLabel :: Label t Expression
    }
  - | ConstExpr {
    - constExpr :: Constant t
    - exprLabel :: Label t Expression
    }
  - | FunctionCall {
    - function :: Function
    - funCallParams :: [Expression t]
    - funCallLabel :: Label t FunctionCall
    - exprLabel :: Label t Expression
    }
  - | Cast {
    - castType :: Type
    - castExpr :: Expression t
    - castLabel :: Label t Cast
    - exprLabel :: Label t Expression
    }
  - | SizeOf {
    - sizeOf :: Either Type (Expression t)
    - sizeOfLabel :: Label t SizeOf
    - exprLabel :: Label t Expression
    }
- data Function = Function {
  - funName :: String
  - returnType :: Type
  - funMode :: FunctionMode
  }
- data Constant t
  - = IntConst {
    - intValue :: Integer
    - intType :: Type
    - intConstLabel :: Label t IntConst
    - constLabel :: Label t Constant
    }
  - | FloatConst {
    - floatValue :: Double
    - floatConstLabel :: Label t FloatConst
    - constLabel :: Label t Constant
    }
  - | BoolConst {
    - boolValue :: Bool
    - boolConstLabel :: Label t BoolConst
    - constLabel :: Label t Constant
    }
  - | ComplexConst {
    - realPartComplexValue :: Constant t
    - imagPartComplexValue :: Constant t
    - complexConstLabel :: Label t ComplexConst
    - constLabel :: Label t Constant
    }
- data Variable t = Variable {
  - varName :: String
  - varType :: Type
  - varRole :: VariableRole
  - varLabel :: Label t Variable
  }
- data Length
  - = LiteralLen Int
  - | UndefinedLen
- data Size
  - = S8
  - | S16
  - | S32
  - | S40
  - | S64
- data Signedness
  - = Signed
  - | Unsigned
- data Type
  - = VoidType
  - | BoolType
  - | BitType
  - | FloatType
  - | NumType Signedness Size
  - | ComplexType Type
  - | UserType String
  - | Alias Type String
  - | ArrayType Length Type
  - | StructType [(String, Type)]
  - | IVarType Type
- data FunctionMode
  - = Prefix
  - | Infix
- data VariableRole
  - = Value
  - | Pointer
- data Place
  - = Declaration_pl
  - | MainParameter_pl
  - | ValueNeed_pl
  - | AddressNeed_pl
  - | FunctionCallIn_pl
- data TypeParameterMode
  - = Auto
  - | Scalar
- class HasType a where
  - type TypeOf a
  - typeof :: a -> TypeOf a
- reprError :: forall a. ErrorClass -> String -> a
- data Struct t
- data ProcDef t
- data ProcDecl t
- data Empty t
- data Comment t
- data Assign t
- data ProcedureCall t
- data Spawn t
- data Run t
- data Sequence t
- data Branch t
- data SeqLoop t
- data ParLoop t
- data FunctionCall t
- data Cast t
- data SizeOf t
- data ArrayElem t
- data StructField t
- data LeftFunCall t
- data IntConst t
- data FloatConst t
- data BoolConst t
- data ArrayConst t
- data ComplexConst t
- class (Show (Label t Module), Show (Label t Entity), Show (Label t Struct), Show (Label t ProcDef), Show (Label t ProcDecl), Show (Label t StructMember), Show (Label t Block), Show (Label t Program), Show (Label t Empty), Show (Label t Comment), Show (Label t Assign), Show (Label t ProcedureCall), Show (Label t Spawn), Show (Label t Run), Show (Label t Sequence), Show (Label t Branch), Show (Label t SeqLoop), Show (Label t ParLoop), Show (Label t ActualParameter), Show (Label t Declaration), Show (Label t Expression), Show (Label t FunctionCall), Show (Label t Cast), Show (Label t SizeOf), Show (Label t ArrayElem), Show (Label t StructField), Show (Label t Constant), Show (Label t IntConst), Show (Label t FloatConst), Show (Label t BoolConst), Show (Label t ArrayConst), Show (Label t ComplexConst), Show (Label t Variable)) => ShowLabel t
- class (Eq (Label t Module), Eq (Label t Entity), Eq (Label t Struct), Eq (Label t ProcDef), Eq (Label t ProcDecl), Eq (Label t StructMember), Eq (Label t Block), Eq (Label t Program), Eq (Label t Empty), Eq (Label t Comment), Eq (Label t Assign), Eq (Label t ProcedureCall), Eq (Label t Spawn), Eq (Label t Run), Eq (Label t Sequence), Eq (Label t Branch), Eq (Label t SeqLoop), Eq (Label t ParLoop), Eq (Label t ActualParameter), Eq (Label t Declaration), Eq (Label t Expression), Eq (Label t FunctionCall), Eq (Label t Cast), Eq (Label t SizeOf), Eq (Label t StructField), Eq (Label t ArrayElem), Eq (Label t Constant), Eq (Label t IntConst), Eq (Label t FloatConst), Eq (Label t BoolConst), Eq (Label t ArrayConst), Eq (Label t ComplexConst), Eq (Label t Variable)) => EqLabel t
- class Labeled c where
  - label :: c t -> Label t c
  - setLabel :: c t -> Label t c -> c t

# Documentation

class Annotation t s

Associated Types

type Label t s

Instances

Annotation () s |
Annotation UnrollSemInf ComplexConst |
Annotation UnrollSemInf ArrayConst |
Annotation UnrollSemInf BoolConst |
Annotation UnrollSemInf FloatConst |
Annotation UnrollSemInf IntConst |
Annotation UnrollSemInf StructField |
Annotation UnrollSemInf ArrayElem |
Annotation UnrollSemInf SizeOf |
Annotation UnrollSemInf Cast |
Annotation UnrollSemInf FunctionCall |
Annotation UnrollSemInf ParLoop |
Annotation UnrollSemInf SeqLoop |
Annotation UnrollSemInf Branch |
Annotation UnrollSemInf Sequence |
Annotation UnrollSemInf Run |
Annotation UnrollSemInf Spawn |
Annotation UnrollSemInf ProcedureCall |
Annotation UnrollSemInf Assign |
Annotation UnrollSemInf Comment |
Annotation UnrollSemInf Empty |
Annotation UnrollSemInf ProcDecl |
Annotation UnrollSemInf ProcDef |
Annotation UnrollSemInf Struct |
Annotation UnrollSemInf Variable |
Annotation UnrollSemInf Constant |
Annotation UnrollSemInf Expression |
Annotation UnrollSemInf Declaration |
Annotation UnrollSemInf ActualParameter |
Annotation UnrollSemInf Program |
Annotation UnrollSemInf Block |
Annotation UnrollSemInf StructMember |
Annotation UnrollSemInf Entity |
Annotation UnrollSemInf Module |
Annotation DebugToCSemanticInfo ComplexConst |
Annotation DebugToCSemanticInfo ArrayConst |
Annotation DebugToCSemanticInfo BoolConst |
Annotation DebugToCSemanticInfo FloatConst |
Annotation DebugToCSemanticInfo IntConst |
Annotation DebugToCSemanticInfo StructField |
Annotation DebugToCSemanticInfo ArrayElem |
Annotation DebugToCSemanticInfo SizeOf |
Annotation DebugToCSemanticInfo Cast |
Annotation DebugToCSemanticInfo FunctionCall |
Annotation DebugToCSemanticInfo ParLoop |
Annotation DebugToCSemanticInfo SeqLoop |
Annotation DebugToCSemanticInfo Branch |
Annotation DebugToCSemanticInfo Sequence |
Annotation DebugToCSemanticInfo Run |
Annotation DebugToCSemanticInfo Spawn |
Annotation DebugToCSemanticInfo ProcedureCall |
Annotation DebugToCSemanticInfo Assign |
Annotation DebugToCSemanticInfo Comment |
Annotation DebugToCSemanticInfo Empty |
Annotation DebugToCSemanticInfo ProcDecl |
Annotation DebugToCSemanticInfo ProcDef |
Annotation DebugToCSemanticInfo Struct |
Annotation DebugToCSemanticInfo Variable |
Annotation DebugToCSemanticInfo Constant |
Annotation DebugToCSemanticInfo Expression |
Annotation DebugToCSemanticInfo Declaration |
Annotation DebugToCSemanticInfo ActualParameter |
Annotation DebugToCSemanticInfo Program |
Annotation DebugToCSemanticInfo Block |
Annotation DebugToCSemanticInfo StructMember |
Annotation DebugToCSemanticInfo Entity |
Annotation DebugToCSemanticInfo Module |

data Module t

Constructors

Module |
Fields entities :: [Entity t] moduleLabel :: Label t Module

Instances

Typeable1 Module |
Labeled Module |
(Transformable1 t [] Entity, Conversion t Module) => DefaultTransformable t Module |
Transformable DebugToC Module |
Transformable TypeDefinitionGenerator Module |
Annotation UnrollSemInf Module |
Annotation DebugToCSemanticInfo Module |
EqLabel t => Eq (Module t) |
ShowLabel t => Show (Module t) |

data Entity t

Constructors

StructDef |
Fields structName :: String structMembers :: [StructMember t] structLabel :: Label t Struct definitionLabel :: Label t Entity
TypeDef |
Fields actualType :: Type typeName :: String definitionLabel :: Label t Entity
ProcDef |
Fields procName :: String inParams :: [Variable t] outParams :: [Variable t] procBody :: Block t procDefLabel :: Label t ProcDef definitionLabel :: Label t Entity
ProcDecl |
Fields procName :: String inParams :: [Variable t] outParams :: [Variable t] procDeclLabel :: Label t ProcDecl definitionLabel :: Label t Entity

Instances

Typeable1 Entity |
Labeled Entity |
(Transformable1 t [] StructMember, Transformable1 t [] Variable, Transformable t Block, Transformable t Declaration, Conversion t Entity, Conversion t Struct, Conversion t ProcDef, Conversion t ProcDecl) => DefaultTransformable t Entity |
Transformable IVarPlugin Entity |
Transformable VariableRoleAssigner Entity |
Transformable Precompilation Entity |
Transformable DebugToC Entity |
Transformable TypeCorrector Entity |
Transformable TypeCheck Entity |
Transformable GlobalCollector Entity |
Annotation UnrollSemInf Entity |
Annotation DebugToCSemanticInfo Entity |
Transformable1 DebugToC [] Entity |
EqLabel t => Eq (Entity t) |
ShowLabel t => Show (Entity t) |

data StructMember t

Constructors

StructMember |
Fields structMemberName :: String structMemberType :: Type structMemberLabel :: Label t StructMember

Instances

Typeable1 StructMember |
Labeled StructMember |
(Conversion t StructMember, Default (Up t)) => DefaultTransformable t StructMember |
Transformable DebugToC StructMember |
Annotation UnrollSemInf StructMember |
Annotation DebugToCSemanticInfo StructMember |
Transformable1 DebugToC [] StructMember |
EqLabel t => Eq (StructMember t) |
ShowLabel t => Show (StructMember t) |

data Block t

Constructors

Block |
Fields locals :: [Declaration t] blockBody :: Program t blockLabel :: Label t Block

Instances

Typeable1 Block |
Labeled Block |
(Transformable1 t [] Declaration, Transformable t Program, Conversion t Block) => DefaultTransformable t Block |
Transformable Collect Block |
Transformable Free Block |
Transformable IVarPlugin Block |
Transformable BlockProgramHandler Block |
Transformable DebugToC Block |
Transformable TypeCheck Block |
Annotation UnrollSemInf Block |
Annotation DebugToCSemanticInfo Block |
EqLabel t => Eq (Block t) |
ShowLabel t => Show (Block t) |

data Program t

Constructors

Empty |
Fields emptyLabel :: Label t Empty programLabel :: Label t Program
Comment |
Fields isBlockComment :: Bool commentValue :: String commentLabel :: Label t Comment programLabel :: Label t Program
Assign |
Fields lhs :: Expression t rhs :: Expression t assignLabel :: Label t Assign programLabel :: Label t Program
ProcedureCall |
Fields procCallName :: String procCallParams :: [ActualParameter t] procCallLabel :: Label t ProcedureCall programLabel :: Label t Program
Sequence |
Fields sequenceProgs :: [Program t] sequenceLabel :: Label t Sequence programLabel :: Label t Program
Branch |
Fields branchCond :: Expression t thenBlock :: Block t elseBlock :: Block t branchLabel :: Label t Branch programLabel :: Label t Program
SeqLoop |
Fields sLoopCond :: Expression t sLoopCondCalc :: Block t sLoopBlock :: Block t sLoopLabel :: Label t SeqLoop programLabel :: Label t Program
ParLoop |
Fields pLoopCounter :: Variable t pLoopBound :: Expression t pLoopStep :: Int pLoopBlock :: Block t pLoopLabel :: Label t ParLoop programLabel :: Label t Program
BlockProgram |
Fields blockProgram :: Block t programLabel :: Label t Program

Instances

Typeable1 Program |
Labeled Program |
(Transformable1 t [] Program, Transformable t Expression, Transformable1 t [] ActualParameter, Transformable t Block, Transformable t Variable, Conversion t Program, Conversion t Empty, Conversion t Comment, Conversion t Assign, Conversion t ProcedureCall, Conversion t Spawn, Conversion t Run, Conversion t Sequence, Conversion t Branch, Conversion t SeqLoop, Conversion t ParLoop, Default (Up t)) => DefaultTransformable t Program |
Transformable Collect Program |
Transformable IVarPlugin Program |
Transformable BlockProgramHandler Program |
Transformable Unroll2 Program |
Transformable Unroll1 Program |
Transformable Precompilation Program |
Transformable DebugToC Program |
Transformable GetPrgSeqLoop Program |
Transformable GetPrgProcCall Program |
Transformable GetPrgBranch Program |
Transformable GetPrgAssign Program |
Transformable GetPrgParLoop Program |
Transformable TypeCheck Program |
Annotation UnrollSemInf Program |
Annotation DebugToCSemanticInfo Program |
Transformable1 DebugToC [] Program |
EqLabel t => Eq (Program t) |
ShowLabel t => Show (Program t) |
Combine (Program DebugToCSemanticInfo) |
Default (Program DebugToCSemanticInfo) |

data ActualParameter t

Constructors

In |
Fields inParam :: Expression t actParamLabel :: Label t ActualParameter
Out |
Fields outParam :: Expression t actParamLabel :: Label t ActualParameter
TypeParameter |
Fields typeParam :: Type typeParamMode :: TypeParameterMode actParamLabel :: Label t ActualParameter
FunParameter |
Fields funParamName :: String addressNeeded :: Bool actParamLabel :: Label t ActualParameter

Instances

Typeable1 ActualParameter |
Labeled ActualParameter |
(Transformable t Expression, Conversion t ActualParameter) => DefaultTransformable t ActualParameter |
Transformable Precompilation ActualParameter |
Transformable DebugToC ActualParameter |
Annotation UnrollSemInf ActualParameter |
Annotation DebugToCSemanticInfo ActualParameter |
Transformable1 DebugToC [] ActualParameter |
EqLabel t => Eq (ActualParameter t) |
ShowLabel t => Show (ActualParameter t) |
ShowLabel t => HasType (ActualParameter t) |

data Declaration t

Constructors

Declaration |
Fields declVar :: Variable t initVal :: Maybe (Expression t) declLabel :: Label t Declaration

Instances

Typeable1 Declaration |
Labeled Declaration |
(Transformable t Variable, Transformable1 t Maybe Expression, Conversion t Declaration) => DefaultTransformable t Declaration |
Transformable DebugToC Declaration |
Transformable TypeCheck Declaration |
Annotation UnrollSemInf Declaration |
Annotation DebugToCSemanticInfo Declaration |
Transformable1 DebugToC [] Declaration |
EqLabel t => Eq (Declaration t) |
ShowLabel t => Show (Declaration t) |
Combine [Declaration ()] |
Default [Declaration ()] |

data Expression t

Constructors

VarExpr |
Fields var :: Variable t exprLabel :: Label t Expression
ArrayElem |
Fields array :: Expression t arrayIndex :: Expression t arrayLabel :: Label t ArrayElem exprLabel :: Label t Expression
StructField |
Fields struct :: Expression t fieldName :: String structFieldLabel :: Label t StructField exprLabel :: Label t Expression
ConstExpr |
Fields constExpr :: Constant t exprLabel :: Label t Expression
FunctionCall |
Fields function :: Function funCallParams :: [Expression t] funCallLabel :: Label t FunctionCall exprLabel :: Label t Expression
Cast |
Fields castType :: Type castExpr :: Expression t castLabel :: Label t Cast exprLabel :: Label t Expression
SizeOf |
Fields sizeOf :: Either Type (Expression t) sizeOfLabel :: Label t SizeOf exprLabel :: Label t Expression

Instances

Typeable1 Expression |
Labeled Expression |
(Transformable t Expression, Transformable t Variable, Transformable t Constant, Transformable1 t [] Expression, Conversion t Expression, Conversion t FunctionCall, Conversion t ArrayElem, Conversion t StructField, Conversion t SizeOf, Conversion t Cast, Default (Up t)) => DefaultTransformable t Expression |
Transformable ConstantFolding Expression |
Transformable Unroll2 Expression |
Transformable DebugToC Expression |
Annotation UnrollSemInf Expression |
Annotation DebugToCSemanticInfo Expression |
Transformable1 DebugToC [] Expression |
EqLabel t => Eq (Expression t) |
ShowLabel t => Show (Expression t) |
ShowLabel t => HasType (Expression t) |

data Function

Constructors

Function |
Fields funName :: String returnType :: Type funMode :: FunctionMode

Instances

Eq Function |
Show Function |

data Constant t

Constructors

IntConst |
Fields intValue :: Integer intType :: Type intConstLabel :: Label t IntConst constLabel :: Label t Constant
FloatConst |
Fields floatValue :: Double floatConstLabel :: Label t FloatConst constLabel :: Label t Constant
BoolConst |
Fields boolValue :: Bool boolConstLabel :: Label t BoolConst constLabel :: Label t Constant
ComplexConst |
Fields realPartComplexValue :: Constant t imagPartComplexValue :: Constant t complexConstLabel :: Label t ComplexConst constLabel :: Label t Constant

Instances

Eq ShowValue |
Typeable1 Constant |
Labeled Constant |
(Transformable t Constant, Transformable1 t [] Constant, Conversion t Constant, Conversion t IntConst, Conversion t FloatConst, Conversion t BoolConst, Conversion t ArrayConst, Conversion t ComplexConst, Default (Up t)) => DefaultTransformable t Constant |
Transformable DebugToC Constant |
Annotation UnrollSemInf Constant |
Annotation DebugToCSemanticInfo Constant |
Transformable1 DebugToC [] Constant |
EqLabel t => Eq (Constant t) |
ShowLabel t => Show (Constant t) |
ShowLabel t => HasType (Constant t) |

data Variable t

Constructors

Variable |
Fields varName :: String varType :: Type varRole :: VariableRole varLabel :: Label t Variable

Instances

Typeable1 Variable |
Labeled Variable |
(Conversion t Variable, Default (Up t)) => DefaultTransformable t Variable |
Transformable Collect Variable |
Transformable VariableRoleAssigner Variable |
Transformable Unroll2 Variable |
Transformable Precompilation Variable |
Transformable DebugToC Variable |
Transformable TypeCorrector Variable |
Transformable TypeCheck Variable |
Transformable GlobalCollector Variable |
Transformable TypeDefinitionGenerator Variable |
Annotation UnrollSemInf Variable |
Annotation DebugToCSemanticInfo Variable |
Transformable1 DebugToC [] Variable |
EqLabel t => Eq (Variable t) |
ShowLabel t => Show (Variable t) |
HasType (Variable t) |
ToC (Variable ()) |

data Length

Constructors

LiteralLen Int |
UndefinedLen |

Instances

Eq Length |
Show Length |

data Size

Constructors

S8 |
S16 |
S32 |
S40 |
S64 |

Instances

Eq Size |
Show Size |

data Signedness

Constructors

Signed |
Unsigned |

Instances

Eq Signedness |
Show Signedness |

data Type

Constructors

VoidType |
BoolType |
BitType |
FloatType |
NumType Signedness Size |
ComplexType Type |
UserType String |
Alias Type String |
ArrayType Length Type |
StructType [(String, Type)] |
IVarType Type |

Instances

Eq Type |
Show Type |
Default TypeCatalog |
ToC Type |

data FunctionMode

Constructors

Prefix |
Infix |

Instances

Eq FunctionMode |
Show FunctionMode |

data VariableRole

Constructors

Value |
Pointer |

Instances

Eq VariableRole |
Show VariableRole |

data Place

Constructors

Declaration_pl |
MainParameter_pl |
ValueNeed_pl |
AddressNeed_pl |
FunctionCallIn_pl |

Instances

Eq Place |
Show Place |

data TypeParameterMode

Constructors

Auto |
Scalar |

Instances

Eq TypeParameterMode |
Show TypeParameterMode |

class HasType a where

Associated Types

type TypeOf a

Methods

typeof :: a -> TypeOf a

Instances

HasType Var |
HasType Expr |
HasType (Variable t) |
ShowLabel t => HasType (Constant t) |
ShowLabel t => HasType (Expression t) |
ShowLabel t => HasType (ActualParameter t) |

reprError :: forall a. ErrorClass -> String -> a

data Struct t

Instances

Annotation UnrollSemInf Struct |
Annotation DebugToCSemanticInfo Struct |

data ProcDef t

Instances

Annotation UnrollSemInf ProcDef |
Annotation DebugToCSemanticInfo ProcDef |

data ProcDecl t

Instances

Annotation UnrollSemInf ProcDecl |
Annotation DebugToCSemanticInfo ProcDecl |

data Empty t

Instances

Annotation UnrollSemInf Empty |
Annotation DebugToCSemanticInfo Empty |

data Comment t

Instances

Annotation UnrollSemInf Comment |
Annotation DebugToCSemanticInfo Comment |

data Assign t

Instances

Annotation UnrollSemInf Assign |
Annotation DebugToCSemanticInfo Assign |

data ProcedureCall t

Instances

Annotation UnrollSemInf ProcedureCall |
Annotation DebugToCSemanticInfo ProcedureCall |

data Spawn t

Instances

Annotation UnrollSemInf Spawn |
Annotation DebugToCSemanticInfo Spawn |

data Run t

Instances

Annotation UnrollSemInf Run |
Annotation DebugToCSemanticInfo Run |

data Sequence t

Instances

Annotation UnrollSemInf Sequence |
Annotation DebugToCSemanticInfo Sequence |

data Branch t

Instances

Annotation UnrollSemInf Branch |
Annotation DebugToCSemanticInfo Branch |

data SeqLoop t

Instances

Annotation UnrollSemInf SeqLoop |
Annotation DebugToCSemanticInfo SeqLoop |

data ParLoop t

Instances

Annotation UnrollSemInf ParLoop |
Annotation DebugToCSemanticInfo ParLoop |

data FunctionCall t

Instances

Annotation UnrollSemInf FunctionCall |
Annotation DebugToCSemanticInfo FunctionCall |

data Cast t

Instances

Annotation UnrollSemInf Cast |
Annotation DebugToCSemanticInfo Cast |

data SizeOf t

Instances

Annotation UnrollSemInf SizeOf |
Annotation DebugToCSemanticInfo SizeOf |

data ArrayElem t

Instances

Annotation UnrollSemInf ArrayElem |
Annotation DebugToCSemanticInfo ArrayElem |

data StructField t

Instances

Annotation UnrollSemInf StructField |
Annotation DebugToCSemanticInfo StructField |

data LeftFunCall t

data IntConst t

Instances

Annotation UnrollSemInf IntConst |
Annotation DebugToCSemanticInfo IntConst |

data FloatConst t

Instances

Annotation UnrollSemInf FloatConst |
Annotation DebugToCSemanticInfo FloatConst |

data BoolConst t

Instances

Annotation UnrollSemInf BoolConst |
Annotation DebugToCSemanticInfo BoolConst |

data ArrayConst t

Instances

Annotation UnrollSemInf ArrayConst |
Annotation DebugToCSemanticInfo ArrayConst |

data ComplexConst t

Instances

Annotation UnrollSemInf ComplexConst |
Annotation DebugToCSemanticInfo ComplexConst |

class (Show (Label t Module), Show (Label t Entity), Show (Label t Struct), Show (Label t ProcDef), Show (Label t ProcDecl), Show (Label t StructMember), Show (Label t Block), Show (Label t Program), Show (Label t Empty), Show (Label t Comment), Show (Label t Assign), Show (Label t ProcedureCall), Show (Label t Spawn), Show (Label t Run), Show (Label t Sequence), Show (Label t Branch), Show (Label t SeqLoop), Show (Label t ParLoop), Show (Label t ActualParameter), Show (Label t Declaration), Show (Label t Expression), Show (Label t FunctionCall), Show (Label t Cast), Show (Label t SizeOf), Show (Label t ArrayElem), Show (Label t StructField), Show (Label t Constant), Show (Label t IntConst), Show (Label t FloatConst), Show (Label t BoolConst), Show (Label t ArrayConst), Show (Label t ComplexConst), Show (Label t Variable)) => ShowLabel t

Instances

(Show (Label t Module), Show (Label t Entity), Show (Label t Struct), Show (Label t ProcDef), Show (Label t ProcDecl), Show (Label t StructMember), Show (Label t Block), Show (Label t Program), Show (Label t Empty), Show (Label t Comment), Show (Label t Assign), Show (Label t ProcedureCall), Show (Label t Spawn), Show (Label t Run), Show (Label t Sequence), Show (Label t Branch), Show (Label t SeqLoop), Show (Label t ParLoop), Show (Label t ActualParameter), Show (Label t Declaration), Show (Label t Expression), Show (Label t FunctionCall), Show (Label t Cast), Show (Label t SizeOf), Show (Label t ArrayElem), Show (Label t StructField), Show (Label t Constant), Show (Label t IntConst), Show (Label t FloatConst), Show (Label t BoolConst), Show (Label t ArrayConst), Show (Label t ComplexConst), Show (Label t Variable)) => ShowLabel t |

class (Eq (Label t Module), Eq (Label t Entity), Eq (Label t Struct), Eq (Label t ProcDef), Eq (Label t ProcDecl), Eq (Label t StructMember), Eq (Label t Block), Eq (Label t Program), Eq (Label t Empty), Eq (Label t Comment), Eq (Label t Assign), Eq (Label t ProcedureCall), Eq (Label t Spawn), Eq (Label t Run), Eq (Label t Sequence), Eq (Label t Branch), Eq (Label t SeqLoop), Eq (Label t ParLoop), Eq (Label t ActualParameter), Eq (Label t Declaration), Eq (Label t Expression), Eq (Label t FunctionCall), Eq (Label t Cast), Eq (Label t SizeOf), Eq (Label t StructField), Eq (Label t ArrayElem), Eq (Label t Constant), Eq (Label t IntConst), Eq (Label t FloatConst), Eq (Label t BoolConst), Eq (Label t ArrayConst), Eq (Label t ComplexConst), Eq (Label t Variable)) => EqLabel t

Instances

(Eq (Label t Module), Eq (Label t Entity), Eq (Label t Struct), Eq (Label t ProcDef), Eq (Label t ProcDecl), Eq (Label t StructMember), Eq (Label t Block), Eq (Label t Program), Eq (Label t Empty), Eq (Label t Comment), Eq (Label t Assign), Eq (Label t ProcedureCall), Eq (Label t Spawn), Eq (Label t Run), Eq (Label t Sequence), Eq (Label t Branch), Eq (Label t SeqLoop), Eq (Label t ParLoop), Eq (Label t ActualParameter), Eq (Label t Declaration), Eq (Label t Expression), Eq (Label t FunctionCall), Eq (Label t Cast), Eq (Label t SizeOf), Eq (Label t StructField), Eq (Label t ArrayElem), Eq (Label t Constant), Eq (Label t IntConst), Eq (Label t FloatConst), Eq (Label t BoolConst), Eq (Label t ArrayConst), Eq (Label t ComplexConst), Eq (Label t Variable)) => EqLabel t |

# Set and get labels

class Labeled c where

Methods

label :: c t -> Label t c

setLabel :: c t -> Label t c -> c t

Instances

Labeled Variable |
Labeled Constant |
Labeled Expression |
Labeled Declaration |
Labeled ActualParameter |
Labeled Program |
Labeled Block |
Labeled StructMember |
Labeled Entity |
Labeled Module |