Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Lang.Crucible.Syntax.Concrete
Synopsis
- data ExprErr s where
- TrivialErr :: Position -> ExprErr s
- Errs :: ExprErr s -> ExprErr s -> ExprErr s
- DuplicateAtom :: Position -> AtomName -> ExprErr s
- DuplicateLabel :: Position -> LabelName -> ExprErr s
- EmptyBlock :: Position -> ExprErr s
- NotGlobal :: Position -> AST s -> ExprErr s
- InvalidRegister :: Position -> AST s -> ExprErr s
- SyntaxParseError :: SyntaxError Atomic -> ExprErr s
- data ParserHooks ext = ParserHooks {
- extensionTypeParser :: forall m. MonadSyntax Atomic m => m (Some TypeRepr)
- extensionParser :: forall s m. (MonadSyntax Atomic m, MonadWriter [Posd (Stmt ext s)] m, MonadState (SyntaxState s) m, MonadIO m, IsSyntaxExtension ext, ?parserHooks :: ParserHooks ext) => m (Some (Atom s))
- data ParsedProgram ext = ParsedProgram {}
- defaultParserHooks :: ParserHooks ()
- top :: NonceGenerator IO s -> HandleAllocator -> [(SomeHandle, Position)] -> TopParser s a -> IO (Either (ExprErr s) a)
- cfgs :: (IsSyntaxExtension ext, ?parserHooks :: ParserHooks ext) => [AST s] -> TopParser s [AnyCFG ext]
- prog :: (TraverseExt ext, IsSyntaxExtension ext, ?parserHooks :: ParserHooks ext) => [AST s] -> TopParser s (ParsedProgram ext)
- data SyntaxState s = SyntaxState {
- _stxLabels :: Map LabelName (LabelInfo s)
- _stxAtoms :: Map AtomName (Some (Atom s))
- _stxRegisters :: Map RegName (Some (Reg s))
- _stxNonceGen :: NonceGenerator IO s
- _stxProgState :: ProgramState s
- atomName :: MonadSyntax Atomic m => m AtomName
- freshAtom :: (MonadWriter [Posd (Stmt ext s)] m, MonadState (SyntaxState s) m, MonadIO m, IsSyntaxExtension ext) => Position -> AtomValue ext s t -> m (Atom s t)
- nat :: MonadSyntax Atomic m => m Natural
- string :: MonadSyntax Atomic m => m Text
- isType :: (?parserHooks :: ParserHooks ext, MonadSyntax Atomic m) => m (Some TypeRepr)
- operands :: 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 -> m (Assignment (Atom s) tps)
- data BoundedNat bnd = forall w.bnd <= w => BoundedNat (NatRepr w)
- type PosNat = BoundedNat 1
- posNat :: MonadSyntax Atomic m => m PosNat
- someAssign :: forall m ext a. (MonadSyntax Atomic m, ?parserHooks :: ParserHooks ext) => Text -> m (Some a) -> m (Some (Assignment a))
- printExpr :: AST s -> Text
Errors
Constructors
TrivialErr :: Position -> ExprErr s | |
Errs :: ExprErr s -> ExprErr s -> ExprErr s | |
DuplicateAtom :: Position -> AtomName -> ExprErr s | |
DuplicateLabel :: Position -> LabelName -> ExprErr s | |
EmptyBlock :: Position -> ExprErr s | |
NotGlobal :: Position -> AST s -> ExprErr s | |
InvalidRegister :: Position -> AST s -> ExprErr s | |
SyntaxParseError :: SyntaxError Atomic -> ExprErr s |
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 #
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) |
type PosNat = BoundedNat 1 Source #
someAssign :: forall m ext a. (MonadSyntax Atomic m, ?parserHooks :: ParserHooks ext) => Text -> m (Some a) -> m (Some (Assignment a)) Source #