Language.Copilot.Analyser
Description
This module provides a way to check that a Copilot specification is compilable
- check :: StreamableMaps Spec -> Maybe Error
- data Error
- data SpecSet
- = AllSpecSet
- | FunSpecSet
- | DropSpecSet
- getExternalVars :: StreamableMaps Spec -> [(Type, Var, Phase)]
- getAtomType :: Streamable a => Spec a -> Type
Main error checking functions
check :: StreamableMaps Spec -> Maybe ErrorSource
Check a Copilot specification.
If it is not compilable, then returns an error describing the issue.
Else, returns Nothing
Used for representing an error in the specification, detected by check
Constructors
BadSyntax String Var | the BNF is not respected |
BadDrop Int Var | A drop expression of less than 0 is used |
BadSamplingPhase Var Var Phase | if an external variable is sampled at phase 0 then there is no time for the stream to be updated |
BadType Var Var | either a variable is not defined, or not with the good type ; there is no implicit conversion of types in Copilot |
NonNegativeWeightedClosedPath [Var] Weight | The algorithm to compile Copilot specification can only work if there is no negative weighted closed path in the specification, as described in the original research paper |
DependsOnClosePast [Var] Var Weight Weight | Could be compiled, but would need bigger prophecyArrays |
DependsOnFuture [Var] Var Weight | If an output depends of a future of an input it will be hard to compile to say the least |
Varied other things
getExternalVars :: StreamableMaps Spec -> [(Type, Var, Phase)]Source
getAtomType :: Streamable a => Spec a -> TypeSource