debugger-hs-0.1.0.0: src/Debugger/Statement.hs
module Debugger.Statement
( Line
, Location(..)
, Var
, Expr
, ShellCommand
, Id(..)
, Selection(..)
, Port
, TargetConfig(..)
, InfoOptions(..)
, Statement(..)
, Script
) where
import Data.Text (Text)
type Var = Text -- TODO different type?
type Expr = Text -- TODO different type?
type ShellCommand = Text
-- | Datatype representing a ID of a breakpoint.
newtype Id = Id Text
deriving (Eq, Show)
type Line = Int
-- | Helper datatype for a selection of 1 or more (breakpoints)
data Selection
= Single Id
| Many [Id]
| All
deriving (Eq, Show)
type Port = Int
-- TODO: add other variants
-- | Datatype for configuring the GDB target.
data TargetConfig
= Remote Port -- assumes tcp as protocol, and localhost as host for now
deriving (Eq, Show)
-- | Enumeration of all things info can be requested about.
data InfoOptions
= Breakpoints
deriving (Eq, Show)
-- | A place to set a breakpoint at.
data Location
= Function Text
| File FilePath Line
deriving (Eq, Show)
-- | Main AST data type used to build a script with.
data Statement
= Break Location
| Command Id [Statement]
| Continue
| Step (Maybe Int)
| Next (Maybe Int)
| Run
| Reset
| Delete Selection
| Enable Selection
| Disable Selection
| Shell ShellCommand
| Source FilePath
| Print Expr
| Set Var Expr
| Call Expr
| Target TargetConfig
| Info InfoOptions
deriving (Eq, Show)
-- | A script is a collection of statements.
type Script = [Statement]
{-
TODO
data Statement
= Break Location -- hbreak? conditional breakpoints?
| Printf Text [Expr]
| If Expr [Statement]
-- set logging on (opts), ...
-}