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 |