crucible-syntax-0.4.1: A syntax for reading and writing Crucible control-flow graphs
Safe HaskellSafe-Inferred
LanguageHaskell2010

Lang.Crucible.Syntax.Concrete

Synopsis

Errors

data ExprErr s where Source #

Instances

Instances details
Monoid (ExprErr s) Source # 
Instance details

Defined in Lang.Crucible.Syntax.Concrete

Methods

mempty :: ExprErr s #

mappend :: ExprErr s -> ExprErr s -> ExprErr s #

mconcat :: [ExprErr s] -> ExprErr s #

Semigroup (ExprErr s) Source # 
Instance details

Defined in Lang.Crucible.Syntax.Concrete

Methods

(<>) :: ExprErr s -> ExprErr s -> ExprErr s #

sconcat :: NonEmpty (ExprErr s) -> ExprErr s #

stimes :: Integral b => b -> ExprErr s -> ExprErr s #

Show (ExprErr s) Source # 
Instance details

Defined in Lang.Crucible.Syntax.Concrete

Methods

showsPrec :: Int -> ExprErr s -> ShowS #

show :: ExprErr s -> String #

showList :: [ExprErr s] -> ShowS #

Pretty (ExprErr s) Source # 
Instance details

Defined in Lang.Crucible.Syntax.Concrete

Methods

pretty :: ExprErr s -> Doc ann #

prettyList :: [ExprErr s] -> Doc ann #

Parsing and Results

data ParserHooks ext Source #

ParserHooks enables support for arbitrary syntax extensions by allowing users to supply their own parsers for types and syntax extensions.

Constructors

ParserHooks 

Fields

data ParsedProgram ext Source #

The results of parsing a program.

Constructors

ParsedProgram 

Fields

defaultParserHooks :: ParserHooks () Source #

A ParserHooks instance that adds no extensions to the crucible-syntax language.

top :: NonceGenerator IO s -> HandleAllocator -> [(SomeHandle, Position)] -> TopParser s a -> IO (Either (ExprErr s) a) Source #

cfgs :: (IsSyntaxExtension ext, ?parserHooks :: ParserHooks ext) => [AST s] -> TopParser s [AnyCFG ext] Source #

prog :: (TraverseExt ext, IsSyntaxExtension ext, ?parserHooks :: ParserHooks ext) => [AST s] -> TopParser s (ParsedProgram ext) Source #

Low level parsing operations

data SyntaxState s Source #

Constructors

SyntaxState 

Fields

freshAtom :: (MonadWriter [Posd (Stmt ext s)] m, MonadState (SyntaxState s) m, MonadIO m, IsSyntaxExtension ext) => Position -> AtomValue ext s t -> m (Atom s t) Source #

isType :: (?parserHooks :: ParserHooks ext, MonadSyntax Atomic m) => m (Some TypeRepr) Source #

operands Source #

Arguments

:: forall s ext m tps. (MonadState (SyntaxState s) m, MonadWriter [Posd (Stmt ext s)] m, MonadIO m, MonadSyntax Atomic m, IsSyntaxExtension ext, ?parserHooks :: ParserHooks ext) 
=> Assignment TypeRepr tps

Types of the operands

-> m (Assignment (Atom s) tps)

Atoms for the operands

Parse a list of operands (for example, the arguments to a function)

data BoundedNat bnd Source #

Constructors

forall w.bnd <= w => BoundedNat (NatRepr w) 

someAssign :: forall m ext a. (MonadSyntax Atomic m, ?parserHooks :: ParserHooks ext) => Text -> m (Some a) -> m (Some (Assignment a)) Source #

Rules for pretty-printing language syntax

printExpr :: AST s -> Text Source #