-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | A stream DSL for writing embedded C programs.
--
-- Copilot is a stream-based runtime verification framework implemented
-- as an embedded domain-specific language (EDSL) in Haskell. Programs
-- can be interpreted for testing, or translated into C99 code to be
-- incorporated in a project, or as a standalone application. The C99
-- backend output is constant in memory and time, making it suitable for
-- systems with hard realtime requirements.
--
-- This package is the main entry-point for using Copilot.
--
-- A tutorial, examples, and other information are available at
-- https://copilot-language.github.io.
@package copilot
@version 3.15
-- | Create Copilot executables that generate code or interpret streams and
-- print the results to stdout.
module Language.Copilot.Main
-- | Create a main to either compile or interpret a copilot specification.
--
-- This function must be provided an auxiliary function capable of
-- compiling Copilot Core specifications for some target.
--
-- The command line program supports four main commands:
--
--
-- - --output/-o: use the given compiler to produce C
-- code.
-- - --justrun/-c: execute a dry-run, which parses and
-- converts the specification to core but does not produce any
-- output.
-- - --print/-p: pretty print the specification.
-- - --interpret/-i NUM: interpret the specification for a
-- given number of steps.
--
copilotMain :: Interpreter -> Printer -> Compiler -> Spec -> IO ()
-- | Create a main function with a default interpreter and pretty printer.
--
-- This function must be provided an auxiliary function capable of
-- compiling Copilot Core specifications for some target.
--
-- This function relies on copilotMain, please refer to that
-- function for the command line options.
defaultMain :: Compiler -> Spec -> IO ()
-- | Copilot is a stream-based runtime verification framework. Programs can
-- be interpreted for testing, or translated into C99 code to be
-- incorporated in a project, or as a standalone application. The C99
-- backend output is constant in memory and time, making it suitable for
-- systems with hard realtime requirements.
--
-- This module is the main entry point for the Copilot language. The
-- expectation is that most Copilot users will only need to import this
-- module, together with one of the backend modules (at present, only
-- C99 from the copilot-c99 library is available).
module Language.Copilot
-- | Create a main to either compile or interpret a copilot specification.
--
-- This function must be provided an auxiliary function capable of
-- compiling Copilot Core specifications for some target.
--
-- The command line program supports four main commands:
--
--
-- - --output/-o: use the given compiler to produce C
-- code.
-- - --justrun/-c: execute a dry-run, which parses and
-- converts the specification to core but does not produce any
-- output.
-- - --print/-p: pretty print the specification.
-- - --interpret/-i NUM: interpret the specification for a
-- given number of steps.
--
copilotMain :: Interpreter -> Printer -> Compiler -> Spec -> IO ()
-- | Create a main function with a default interpreter and pretty printer.
--
-- This function must be provided an auxiliary function capable of
-- compiling Copilot Core specifications for some target.
--
-- This function relies on copilotMain, please refer to that
-- function for the command line options.
defaultMain :: Compiler -> Spec -> IO ()