-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/

-- | Ogma: Runtime Monitor translator: Lustre Language Frontend
--   
--   Ogma is a tool to facilitate the integration of safe runtime monitors
--   into other systems. Ogma extends Copilot, a high-level runtime
--   verification framework that generates hard real-time C99 code.
--   
--   This library contains a frontend to read Lustre Boolean expressions,
--   extended with several operators related to temporal logic.
@package ogma-language-lustre
@version 1.12.0

-- | The abstract syntax of language Lustre.
module Language.Lustre.AbsLustre
data BoolSpec
BoolSpecPar :: BoolSpec -> BoolSpec
BoolSpecConstI :: Integer -> BoolSpec
BoolSpecConstD :: Double -> BoolSpec
BoolSpecConstB :: BoolConst -> BoolSpec
BoolSpecSignal :: Ident -> BoolSpec
BoolSpecOp1Pre :: Op1Pre -> BoolSpec -> BoolSpec
BoolSpecOp2In :: BoolSpec -> Op2In -> BoolSpec -> BoolSpec
BoolSpecOp2Pre :: Op2Pre -> BoolSpec -> BoolSpec -> BoolSpec
BoolSpecOp2OT :: NumExpr -> NumExpr -> BoolSpec -> BoolSpec
BoolSpecOp2HT :: NumExpr -> NumExpr -> BoolSpec -> BoolSpec
BoolSpecOp2ST :: NumExpr -> NumExpr -> BoolSpec -> BoolSpec -> BoolSpec
data Op1Pre
Op1Once :: Op1Pre
Op1Pre :: Op1Pre
Op1YtoPre :: Op1Pre
Op1ZtoPre :: Op1Pre
Op1Hist :: Op1Pre
Op1Y :: Op1Pre
Op1Not :: Op1Pre
Op1Bang :: Op1Pre
data Op2In
Op2And :: Op2In
Op2Amp :: Op2In
Op2Or :: Op2In
Op2Impl :: Op2In
Op2NumOp :: NumOp2In -> Op2In
Op2NumCmp :: BoolNumOp -> Op2In
Op2InPre :: Op2In
data Op2Pre
Op2SI :: Op2Pre
Op2OT :: Op2Pre
data NumExpr
NumExprNum :: Integer -> NumExpr
NumExprId :: Ident -> NumExpr
NumExprPar :: NumExpr -> NumExpr
NumExprOp2In :: NumExpr -> NumOp2In -> NumExpr -> NumExpr
data NumOp2In
NumOp2Plus :: NumOp2In
NumOp2Minus :: NumOp2In
NumOp2Mult :: NumOp2In
data BoolNumOp
BoolNumOp2Eq :: BoolNumOp
BoolNumOp2Ne :: BoolNumOp
BoolNumOp2Le :: BoolNumOp
BoolNumOp2Lt :: BoolNumOp
BoolNumOp2Gt :: BoolNumOp
BoolNumOp2Ge :: BoolNumOp
data BoolConst
BoolConstTrue :: BoolConst
BoolConstFalse :: BoolConst
BoolConstFTP :: BoolConst
newtype Ident
Ident :: String -> Ident
instance GHC.Classes.Eq Language.Lustre.AbsLustre.BoolConst
instance GHC.Classes.Eq Language.Lustre.AbsLustre.BoolNumOp
instance GHC.Classes.Eq Language.Lustre.AbsLustre.BoolSpec
instance GHC.Classes.Eq Language.Lustre.AbsLustre.Ident
instance GHC.Classes.Eq Language.Lustre.AbsLustre.NumExpr
instance GHC.Classes.Eq Language.Lustre.AbsLustre.NumOp2In
instance GHC.Classes.Eq Language.Lustre.AbsLustre.Op1Pre
instance GHC.Classes.Eq Language.Lustre.AbsLustre.Op2In
instance GHC.Classes.Eq Language.Lustre.AbsLustre.Op2Pre
instance GHC.Internal.Data.String.IsString Language.Lustre.AbsLustre.Ident
instance GHC.Classes.Ord Language.Lustre.AbsLustre.BoolConst
instance GHC.Classes.Ord Language.Lustre.AbsLustre.BoolNumOp
instance GHC.Classes.Ord Language.Lustre.AbsLustre.BoolSpec
instance GHC.Classes.Ord Language.Lustre.AbsLustre.Ident
instance GHC.Classes.Ord Language.Lustre.AbsLustre.NumExpr
instance GHC.Classes.Ord Language.Lustre.AbsLustre.NumOp2In
instance GHC.Classes.Ord Language.Lustre.AbsLustre.Op1Pre
instance GHC.Classes.Ord Language.Lustre.AbsLustre.Op2In
instance GHC.Classes.Ord Language.Lustre.AbsLustre.Op2Pre
instance GHC.Internal.Read.Read Language.Lustre.AbsLustre.BoolConst
instance GHC.Internal.Read.Read Language.Lustre.AbsLustre.BoolNumOp
instance GHC.Internal.Read.Read Language.Lustre.AbsLustre.BoolSpec
instance GHC.Internal.Read.Read Language.Lustre.AbsLustre.Ident
instance GHC.Internal.Read.Read Language.Lustre.AbsLustre.NumExpr
instance GHC.Internal.Read.Read Language.Lustre.AbsLustre.NumOp2In
instance GHC.Internal.Read.Read Language.Lustre.AbsLustre.Op1Pre
instance GHC.Internal.Read.Read Language.Lustre.AbsLustre.Op2In
instance GHC.Internal.Read.Read Language.Lustre.AbsLustre.Op2Pre
instance GHC.Internal.Show.Show Language.Lustre.AbsLustre.BoolConst
instance GHC.Internal.Show.Show Language.Lustre.AbsLustre.BoolNumOp
instance GHC.Internal.Show.Show Language.Lustre.AbsLustre.BoolSpec
instance GHC.Internal.Show.Show Language.Lustre.AbsLustre.Ident
instance GHC.Internal.Show.Show Language.Lustre.AbsLustre.NumExpr
instance GHC.Internal.Show.Show Language.Lustre.AbsLustre.NumOp2In
instance GHC.Internal.Show.Show Language.Lustre.AbsLustre.Op1Pre
instance GHC.Internal.Show.Show Language.Lustre.AbsLustre.Op2In
instance GHC.Internal.Show.Show Language.Lustre.AbsLustre.Op2Pre

module Language.Lustre.LexLustre
alex_tab_size :: Int
alex_base :: AlexAddr
alex_table :: AlexAddr
alex_check :: AlexAddr
alex_deflt :: AlexAddr
alex_accept :: Array Int (AlexAcc user)
alex_actions :: Array Int (Posn -> String -> Token)
alex_action_1 :: Posn -> String -> Token
alex_action_2 :: Posn -> String -> Token
alex_action_3 :: Posn -> String -> Token
alex_action_4 :: Posn -> String -> Token
data AlexAddr
AlexA# :: Addr# -> AlexAddr
alexIndexInt16OffAddr :: AlexAddr -> Int# -> Int#
alexIndexInt32OffAddr :: AlexAddr -> Int# -> Int#
quickIndex :: Array Int (AlexAcc (ZonkAny 0 :: Type)) -> Int -> AlexAcc (ZonkAny 0 :: Type)
data AlexReturn a
AlexEOF :: AlexReturn a
AlexError :: !AlexInput -> AlexReturn a
AlexSkip :: !AlexInput -> !Int -> AlexReturn a
AlexToken :: !AlexInput -> !Int -> a -> AlexReturn a
alexScan :: (Posn, Char, [Byte], String) -> Int -> AlexReturn (Posn -> String -> Token)
alexScanUser :: t -> (Posn, Char, [Byte], String) -> Int -> AlexReturn (Posn -> String -> Token)
alex_scan_tkn :: t1 -> t2 -> Int# -> AlexInput -> Int# -> AlexLastAcc -> (AlexLastAcc, AlexInput)
data AlexLastAcc
AlexNone :: AlexLastAcc
AlexLastAcc :: !Int -> !AlexInput -> !Int -> AlexLastAcc
AlexLastSkip :: !AlexInput -> !Int -> AlexLastAcc
data AlexAcc user
AlexAccNone :: AlexAcc user
AlexAcc :: Int -> AlexAcc user
AlexAccSkip :: AlexAcc user

-- | Create a token with position.
tok :: (String -> Tok) -> Posn -> String -> Token

-- | Token without position.
data Tok

-- | Reserved word or symbol.
TK :: {-# UNPACK #-} !TokSymbol -> Tok

-- | String literal.
TL :: !String -> Tok

-- | Integer literal.
TI :: !String -> Tok

-- | Identifier.
TV :: !String -> Tok

-- | Float literal.
TD :: !String -> Tok

-- | Character literal.
TC :: !String -> Tok

-- | Smart constructor for Tok for the sake of backwards
--   compatibility.
pattern TS :: String -> Int -> Tok

-- | Keyword or symbol tokens have a unique ID.
data TokSymbol
TokSymbol :: String -> !Int -> TokSymbol

-- | Keyword or symbol text.
[tsText] :: TokSymbol -> String

-- | Unique ID.
[tsID] :: TokSymbol -> !Int

-- | Token with position.
data Token
PT :: Posn -> Tok -> Token
Err :: Posn -> Token

-- | Pretty print a position.
printPosn :: Posn -> String

-- | Pretty print the position of the first token in the list.
tokenPos :: [Token] -> String

-- | Get the position of a token.
tokenPosn :: Token -> Posn

-- | Get line and column of a token.
tokenLineCol :: Token -> (Int, Int)

-- | Get line and column of a position.
posLineCol :: Posn -> (Int, Int)

-- | Convert a token into "position token" form.
mkPosToken :: Token -> ((Int, Int), String)

-- | Convert a token to its text.
tokenText :: Token -> String

-- | Convert a token to a string.
prToken :: Token -> String

-- | Finite map from text to token organized as binary search tree.
data BTree

-- | Nil (leaf).
N :: BTree

-- | Binary node.
B :: String -> Tok -> BTree -> BTree -> BTree

-- | Convert potential keyword into token or use fallback conversion.
eitherResIdent :: (String -> Tok) -> String -> Tok

-- | The keywords and symbols of the language organized as binary search
--   tree.
resWords :: BTree

-- | Unquote string literal.
unescapeInitTail :: String -> String
data Posn
Pn :: !Int -> !Int -> !Int -> Posn
alexStartPos :: Posn
alexMove :: Posn -> Char -> Posn
type Byte = Word8
type AlexInput = (Posn, Char, [Byte], String)
tokens :: String -> [Token]
alexGetByte :: AlexInput -> Maybe (Byte, AlexInput)
alexInputPrevChar :: AlexInput -> Char

-- | Encode a Haskell String to a list of Word8 values, in UTF8 format.
utf8Encode :: Char -> [Word8]
instance GHC.Classes.Eq Language.Lustre.LexLustre.Posn
instance GHC.Classes.Eq Language.Lustre.LexLustre.Tok
instance GHC.Classes.Eq Language.Lustre.LexLustre.TokSymbol
instance GHC.Classes.Eq Language.Lustre.LexLustre.Token
instance GHC.Classes.Ord Language.Lustre.LexLustre.Posn
instance GHC.Classes.Ord Language.Lustre.LexLustre.Tok
instance GHC.Classes.Ord Language.Lustre.LexLustre.TokSymbol
instance GHC.Classes.Ord Language.Lustre.LexLustre.Token
instance GHC.Internal.Show.Show Language.Lustre.LexLustre.BTree
instance GHC.Internal.Show.Show Language.Lustre.LexLustre.Posn
instance GHC.Internal.Show.Show Language.Lustre.LexLustre.Tok
instance GHC.Internal.Show.Show Language.Lustre.LexLustre.TokSymbol
instance GHC.Internal.Show.Show Language.Lustre.LexLustre.Token

module Language.Lustre.ParLustre
happyError :: [Token] -> Err a
myLexer :: String -> [Token]
pBoolSpec :: [Token] -> Err BoolSpec
instance GHC.Internal.Show.Show Language.Lustre.ParLustre.HappyAction

-- | Pretty-printer for Language.
module Language.Lustre.PrintLustre

-- | The top-level printing method.
printTree :: Print a => a -> String
type Doc = [ShowS] -> [ShowS]
doc :: ShowS -> Doc
render :: Doc -> String
parenth :: Doc -> Doc
concatS :: [ShowS] -> ShowS
concatD :: [Doc] -> Doc
replicateS :: Int -> ShowS -> ShowS

-- | The printer class does the job.
class Print a
prt :: Print a => Int -> a -> Doc
printString :: String -> Doc
mkEsc :: Char -> Char -> ShowS
prPrec :: Int -> Int -> Doc -> Doc
instance Language.Lustre.PrintLustre.Print Language.Lustre.AbsLustre.BoolConst
instance Language.Lustre.PrintLustre.Print Language.Lustre.AbsLustre.BoolNumOp
instance Language.Lustre.PrintLustre.Print Language.Lustre.AbsLustre.BoolSpec
instance Language.Lustre.PrintLustre.Print GHC.Types.Char
instance Language.Lustre.PrintLustre.Print GHC.Types.Double
instance Language.Lustre.PrintLustre.Print Language.Lustre.AbsLustre.Ident
instance Language.Lustre.PrintLustre.Print GHC.Num.Integer.Integer
instance Language.Lustre.PrintLustre.Print a => Language.Lustre.PrintLustre.Print [a]
instance Language.Lustre.PrintLustre.Print GHC.Internal.Base.String
instance Language.Lustre.PrintLustre.Print Language.Lustre.AbsLustre.NumExpr
instance Language.Lustre.PrintLustre.Print Language.Lustre.AbsLustre.NumOp2In
instance Language.Lustre.PrintLustre.Print Language.Lustre.AbsLustre.Op1Pre
instance Language.Lustre.PrintLustre.Print Language.Lustre.AbsLustre.Op2In
instance Language.Lustre.PrintLustre.Print Language.Lustre.AbsLustre.Op2Pre
