copilot-0.22: A stream DSL for writing embedded C.

Language.Copilot.Analyser

Contents

Description

This module provides a way to check that a Copilot specification is compilable

Synopsis

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

data Error Source

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

Instances

data SpecSet Source

Instances

Varied other things