feldspar-compiler-0.4.0.2: Compiler for the Feldspar language

Feldspar.Compiler.Imperative.Representation

# 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 UnionField |
Annotation UnrollSemInf StructField |
Annotation UnrollSemInf ArrayElem |
Annotation UnrollSemInf SizeOf |
Annotation UnrollSemInf Cast |
Annotation UnrollSemInf FunctionCall |
Annotation UnrollSemInf ParLoop |
Annotation UnrollSemInf SeqLoop |
Annotation UnrollSemInf Switch |
Annotation UnrollSemInf Branch |
Annotation UnrollSemInf Sequence |
Annotation UnrollSemInf ProcedureCall |
Annotation UnrollSemInf Assign |
Annotation UnrollSemInf Comment |
Annotation UnrollSemInf Empty |
Annotation UnrollSemInf GlobalVar |
Annotation UnrollSemInf Prototype |
Annotation UnrollSemInf Procedure |
Annotation UnrollSemInf Union |
Annotation UnrollSemInf Struct |
Annotation UnrollSemInf Variable |
Annotation UnrollSemInf Constant |
Annotation UnrollSemInf Expression |
Annotation UnrollSemInf Declaration |
Annotation UnrollSemInf ActualParameter |
Annotation UnrollSemInf SwitchCase |
Annotation UnrollSemInf Program |
Annotation UnrollSemInf Block |
Annotation UnrollSemInf UnionMember |
Annotation UnrollSemInf StructMember |
Annotation UnrollSemInf Definition |
Annotation UnrollSemInf Module |
Annotation DebugToCSemanticInfo ComplexConst |
Annotation DebugToCSemanticInfo ArrayConst |
Annotation DebugToCSemanticInfo BoolConst |
Annotation DebugToCSemanticInfo FloatConst |
Annotation DebugToCSemanticInfo IntConst |
Annotation DebugToCSemanticInfo UnionField |
Annotation DebugToCSemanticInfo StructField |
Annotation DebugToCSemanticInfo ArrayElem |
Annotation DebugToCSemanticInfo SizeOf |
Annotation DebugToCSemanticInfo Cast |
Annotation DebugToCSemanticInfo FunctionCall |
Annotation DebugToCSemanticInfo ParLoop |
Annotation DebugToCSemanticInfo SeqLoop |
Annotation DebugToCSemanticInfo Switch |
Annotation DebugToCSemanticInfo Branch |
Annotation DebugToCSemanticInfo Sequence |
Annotation DebugToCSemanticInfo ProcedureCall |
Annotation DebugToCSemanticInfo Assign |
Annotation DebugToCSemanticInfo Comment |
Annotation DebugToCSemanticInfo Empty |
Annotation DebugToCSemanticInfo GlobalVar |
Annotation DebugToCSemanticInfo Prototype |
Annotation DebugToCSemanticInfo Procedure |
Annotation DebugToCSemanticInfo Union |
Annotation DebugToCSemanticInfo Struct |
Annotation DebugToCSemanticInfo Variable |
Annotation DebugToCSemanticInfo Constant |
Annotation DebugToCSemanticInfo Expression |
Annotation DebugToCSemanticInfo Declaration |
Annotation DebugToCSemanticInfo ActualParameter |
Annotation DebugToCSemanticInfo SwitchCase |
Annotation DebugToCSemanticInfo Program |
Annotation DebugToCSemanticInfo Block |
Annotation DebugToCSemanticInfo UnionMember |
Annotation DebugToCSemanticInfo StructMember |
Annotation DebugToCSemanticInfo Definition |
Annotation DebugToCSemanticInfo Module |

data Module t

Constructors

Module |
Fields definitions :: [Definition t] moduleLabel :: Label t Module

Instances

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

data Definition t

Constructors

Struct |
Fields structName :: String structMembers :: [StructMember t] structLabel :: Label t Struct definitionLabel :: Label t Definition
Union |
Fields unionName :: String unionMembers :: [UnionMember t] unionLabel :: Label t Union definitionLabel :: Label t Definition
Procedure |
Fields procName :: String inParams :: [Variable t] outParams :: [Variable t] procBody :: Block t procLabel :: Label t Procedure definitionLabel :: Label t Definition
Prototype |
Fields protoReturnType :: Type protoName :: String inParams :: [Variable t] outParams :: [Variable t] protoLabel :: Label t Prototype definitionLabel :: Label t Definition
GlobalVar |
Fields globalVarDecl :: Declaration t globalVarDeclLabel :: Label t GlobalVar definitionLabel :: Label t Definition

Instances

Annotation UnrollSemInf Definition |
Annotation DebugToCSemanticInfo Definition |
(Transformable1 t [] StructMember, Transformable1 t [] UnionMember, Transformable1 t [] Variable, Transformable t Block, Transformable t Declaration, Conversion t Definition, Conversion t Struct, Conversion t Union, Conversion t Procedure, Conversion t Prototype, Conversion t GlobalVar) => DefaultTransformable t Definition |
Transformable Precompilation Definition |
Transformable VariableRoleAssigner Definition |
Transformable AllocationEliminator Definition |
Transformable TypeCorrector Definition |
Transformable TypeCheck Definition |
Transformable GlobalCollector Definition |
Transformable DebugToC Definition |
Transformable HandleTraceFunctions Definition |
Transformable1 DebugToC [] Definition |
EqLabel t => Eq (Definition t) |
ShowLabel t => Show (Definition t) |

data StructMember t

Constructors

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

Instances

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

data UnionMember t

Constructors

UnionMember |
Fields unionMemberName :: String unionMemberType :: Type unionMemberLabel :: Label t UnionMember

Instances

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

data Block t

Constructors

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

Instances

Annotation UnrollSemInf Block |
Annotation DebugToCSemanticInfo Block |
(Transformable1 t [] Declaration, Transformable t Program, Conversion t Block) => DefaultTransformable t Block |
Transformable BlockProgramHandler Block |
Transformable TypeCheck Block |
Transformable DebugToC Block |
Transformable HandlePrimitives 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
Switch |
Fields switchCond :: Expression t switchCases :: [SwitchCase t] switchLabel :: Label t Switch 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

Annotation UnrollSemInf Program |
Annotation DebugToCSemanticInfo Program |
(Transformable1 t [] Program, Transformable t Expression, Transformable1 t [] ActualParameter, Transformable t Block, Transformable t Variable, Transformable1 t [] SwitchCase, Conversion t Program, Conversion t Empty, Conversion t Comment, Conversion t Assign, Conversion t ProcedureCall, Conversion t Sequence, Conversion t Branch, Conversion t Switch, Conversion t SeqLoop, Conversion t ParLoop, Default (Up t)) => DefaultTransformable t Program |
Transformable Unroll_2 Program |
Transformable Unroll_1 Program |
Transformable BlockProgramHandler Program |
Transformable TypeCheck Program |
Transformable DebugToC Program |
Transformable GetPrgSwitch Program |
Transformable GetPrgBranch Program |
Transformable GetPrgAssign Program |
Transformable GetPrgParLoop Program |
Transformable HandlePrimitives Program |
Transformable1 DebugToC [] Program |
Transformable1 HandlePrimitives [] Program |
EqLabel t => Eq (Program t) |
ShowLabel t => Show (Program t) |
Combine (Program DebugToCSemanticInfo) |
Default [Program ()] |
Default (Program DebugToCSemanticInfo) |
Combine ([Declaration ()], [Program ()]) |

data SwitchCase t

Constructors

SwitchCase |
Fields switchCasePattern :: Constant t switchCaseImpl :: Block t switchCaseLabel :: Label t SwitchCase

Instances

Annotation UnrollSemInf SwitchCase |
Annotation DebugToCSemanticInfo SwitchCase |
(Transformable t Constant, Transformable t Block, Conversion t SwitchCase) => DefaultTransformable t SwitchCase |
Transformable DebugToC SwitchCase |
Transformable1 DebugToC [] SwitchCase |
EqLabel t => Eq (SwitchCase t) |
ShowLabel t => Show (SwitchCase t) |

data ActualParameter t

Constructors

In |
Fields inParam :: Expression t actParamLabel :: Label t ActualParameter
Out |
Fields outParam :: Expression t actParamLabel :: Label t ActualParameter

Instances

Annotation UnrollSemInf ActualParameter |
Annotation DebugToCSemanticInfo ActualParameter |
(Transformable t Expression, Conversion t ActualParameter) => DefaultTransformable t ActualParameter |
Transformable DebugToC 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

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

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
UnionField |
Fields union :: Expression t fieldName :: String unionFieldLabel :: Label t UnionField exprLabel :: Label t Expression
ConstExpr |
Fields constExpr :: Constant t exprLabel :: Label t Expression
FunctionCall |
Fields funCallName :: String returnType :: Type funRole :: FunctionRole 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

Eq TransformPrim |
Show TransformPrim |
Annotation UnrollSemInf Expression |
Annotation DebugToCSemanticInfo 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 UnionField, Conversion t SizeOf, Conversion t Cast, Default (Up t)) => DefaultTransformable t Expression |
Transformable ConstantFolding Expression |
Transformable AllocationEliminator Expression |
Transformable Unroll_2 Expression |
Transformable DebugToC Expression |
Transformable HandlePrimitives Expression |
Transformable HandleTraceFunctions Expression |
Transformable1 DebugToC [] Expression |
EqLabel t => Eq (Expression t) |
ShowLabel t => Show (Expression t) |
ShowLabel t => HasType (Expression t) |

data Constant t

Constructors

IntConst |
Fields intValue :: Integer 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
ArrayConst |
Fields arrayValues :: [Constant t] arrayConstLabel :: Label t ArrayConst constLabel :: Label t Constant
ComplexConst |
Fields realPartComplexValue :: Constant t imagPartComplexValue :: Constant t complexConstLabel :: Label t ComplexConst constLabel :: Label t Constant

Instances

Eq ShowValue |
Show ShowValue |
Annotation UnrollSemInf Constant |
Annotation DebugToCSemanticInfo 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 |
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

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

data Length

Constructors

LiteralLen Int |
IndirectLen String |
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 |
ArrayType Length Type |
StructType [(String, Type)] |
UnionType [(String, Type)] |

Instances

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

data FunctionRole

Constructors

SimpleFun |
InfixOp |
PrefixOp |

Instances

Eq FunctionRole |
Show FunctionRole |

data VariableRole

Constructors

Value |
Pointer |

Instances

Eq VariableRole |
Show VariableRole |

data Struct t

Instances

Annotation UnrollSemInf Struct |
Annotation DebugToCSemanticInfo Struct |

data Union t

Instances

Annotation UnrollSemInf Union |
Annotation DebugToCSemanticInfo Union |

data Procedure t

Instances

Annotation UnrollSemInf Procedure |
Annotation DebugToCSemanticInfo Procedure |

data Prototype t

Instances

Annotation UnrollSemInf Prototype |
Annotation DebugToCSemanticInfo Prototype |

data GlobalVar t

Instances

Annotation UnrollSemInf GlobalVar |
Annotation DebugToCSemanticInfo GlobalVar |

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 Sequence t

Instances

Annotation UnrollSemInf Sequence |
Annotation DebugToCSemanticInfo Sequence |

data Branch t

Instances

Annotation UnrollSemInf Branch |
Annotation DebugToCSemanticInfo Branch |

data Switch t

Instances

Annotation UnrollSemInf Switch |
Annotation DebugToCSemanticInfo Switch |

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 UnionField t

Instances

Annotation UnrollSemInf UnionField |
Annotation DebugToCSemanticInfo UnionField |

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 Definition), Show (Label t Struct), Show (Label t Union), Show (Label t Procedure), Show (Label t Prototype), Show (Label t GlobalVar), Show (Label t StructMember), Show (Label t UnionMember), 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 Sequence), Show (Label t Branch), Show (Label t Switch), Show (Label t SeqLoop), Show (Label t ParLoop), Show (Label t SwitchCase), 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 UnionField), 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 Definition), Show (Label t Struct), Show (Label t Union), Show (Label t Procedure), Show (Label t Prototype), Show (Label t GlobalVar), Show (Label t StructMember), Show (Label t UnionMember), 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 Sequence), Show (Label t Branch), Show (Label t Switch), Show (Label t SeqLoop), Show (Label t ParLoop), Show (Label t SwitchCase), 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 UnionField), 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 Definition), Eq (Label t Struct), Eq (Label t Union), Eq (Label t Procedure), Eq (Label t Prototype), Eq (Label t GlobalVar), Eq (Label t StructMember), Eq (Label t UnionMember), 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 Sequence), Eq (Label t Branch), Eq (Label t Switch), Eq (Label t SeqLoop), Eq (Label t ParLoop), Eq (Label t SwitchCase), 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 UnionField), 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 Definition), Eq (Label t Struct), Eq (Label t Union), Eq (Label t Procedure), Eq (Label t Prototype), Eq (Label t GlobalVar), Eq (Label t StructMember), Eq (Label t UnionMember), 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 Sequence), Eq (Label t Branch), Eq (Label t Switch), Eq (Label t SeqLoop), Eq (Label t ParLoop), Eq (Label t SwitchCase), 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 UnionField), 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 |