packages feed

hydra-kernel-0.16.0: src/main/haskell/Hydra/Ast.hs

-- Note: this is an automatically generated file. Do not edit.
-- | A model which provides a common syntax tree for Hydra serializers

module Hydra.Ast where
import qualified Hydra.Core as Core
import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
import qualified Data.Scientific as Sci
-- | Operator associativity
data Associativity =
  AssociativityNone |
  AssociativityLeft |
  AssociativityRight |
  AssociativityBoth
  deriving (Eq, Ord, Read, Show)
_Associativity = Core.Name "hydra.ast.Associativity"
_Associativity_none = Core.Name "none"
_Associativity_left = Core.Name "left"
_Associativity_right = Core.Name "right"
_Associativity_both = Core.Name "both"
-- | Formatting option for code blocks
data BlockStyle =
  BlockStyle {
    -- | An optional indentation string
    blockStyleIndent :: (Maybe String),
    -- | Whether to place a newline before the content
    blockStyleNewlineBeforeContent :: Bool,
    -- | Whether to place a newline after the content
    blockStyleNewlineAfterContent :: Bool}
  deriving (Eq, Ord, Read, Show)
_BlockStyle = Core.Name "hydra.ast.BlockStyle"
_BlockStyle_indent = Core.Name "indent"
_BlockStyle_newlineBeforeContent = Core.Name "newlineBeforeContent"
_BlockStyle_newlineAfterContent = Core.Name "newlineAfterContent"
-- | An expression enclosed by brackets
data BracketExpr =
  BracketExpr {
    -- | The bracket pair enclosing the expression
    bracketExprBrackets :: Brackets,
    -- | The expression within the brackets
    bracketExprEnclosed :: Expr,
    -- | The formatting style for the bracketed block
    bracketExprStyle :: BlockStyle}
  deriving (Eq, Ord, Read, Show)
_BracketExpr = Core.Name "hydra.ast.BracketExpr"
_BracketExpr_brackets = Core.Name "brackets"
_BracketExpr_enclosed = Core.Name "enclosed"
_BracketExpr_style = Core.Name "style"
-- | Matching open and close bracket symbols
data Brackets =
  Brackets {
    -- | The opening bracket symbol
    bracketsOpen :: Symbol,
    -- | The closing bracket symbol
    bracketsClose :: Symbol}
  deriving (Eq, Ord, Read, Show)
_Brackets = Core.Name "hydra.ast.Brackets"
_Brackets_open = Core.Name "open"
_Brackets_close = Core.Name "close"
-- | An abstract expression
data Expr =
  -- | A constant symbol
  ExprConst Symbol |
  -- | An indented expression
  ExprIndent IndentedExpression |
  -- | An operator expression
  ExprOp OpExpr |
  -- | A bracketed expression
  ExprBrackets BracketExpr |
  -- | A sequence of expressions joined by a separator, treated as structural layout (not subject to parenthesization)
  ExprSeq SeqExpr
  deriving (Eq, Ord, Read, Show)
_Expr = Core.Name "hydra.ast.Expr"
_Expr_const = Core.Name "const"
_Expr_indent = Core.Name "indent"
_Expr_op = Core.Name "op"
_Expr_brackets = Core.Name "brackets"
_Expr_seq = Core.Name "seq"
-- | Any of several indentation styles
data IndentStyle =
  -- | Indent all lines with the given string
  IndentStyleAllLines String |
  -- | Indent only lines after the first with the given string
  IndentStyleSubsequentLines String
  deriving (Eq, Ord, Read, Show)
_IndentStyle = Core.Name "hydra.ast.IndentStyle"
_IndentStyle_allLines = Core.Name "allLines"
_IndentStyle_subsequentLines = Core.Name "subsequentLines"
-- | An expression indented in a certain style
data IndentedExpression =
  IndentedExpression {
    -- | The indentation style
    indentedExpressionStyle :: IndentStyle,
    -- | The expression to be indented
    indentedExpressionExpr :: Expr}
  deriving (Eq, Ord, Read, Show)
_IndentedExpression = Core.Name "hydra.ast.IndentedExpression"
_IndentedExpression_style = Core.Name "style"
_IndentedExpression_expr = Core.Name "expr"
-- | An operator symbol
data Op =
  Op {
    -- | The operator symbol
    opSymbol :: Symbol,
    -- | The padding around the operator
    opPadding :: Padding,
    -- | The precedence of the operator
    opPrecedence :: Precedence,
    -- | The associativity of the operator
    opAssociativity :: Associativity}
  deriving (Eq, Ord, Read, Show)
_Op = Core.Name "hydra.ast.Op"
_Op_symbol = Core.Name "symbol"
_Op_padding = Core.Name "padding"
_Op_precedence = Core.Name "precedence"
_Op_associativity = Core.Name "associativity"
-- | An operator expression
data OpExpr =
  OpExpr {
    -- | The operator
    opExprOp :: Op,
    -- | The left-hand side operand
    opExprLhs :: Expr,
    -- | The right-hand side operand
    opExprRhs :: Expr}
  deriving (Eq, Ord, Read, Show)
_OpExpr = Core.Name "hydra.ast.OpExpr"
_OpExpr_op = Core.Name "op"
_OpExpr_lhs = Core.Name "lhs"
_OpExpr_rhs = Core.Name "rhs"
-- | Left and right padding for an operator
data Padding =
  Padding {
    -- | Padding to the left of the operator
    paddingLeft :: Ws,
    -- | Padding to the right of the operator
    paddingRight :: Ws}
  deriving (Eq, Ord, Read, Show)
_Padding = Core.Name "hydra.ast.Padding"
_Padding_left = Core.Name "left"
_Padding_right = Core.Name "right"
-- | Operator precedence
newtype Precedence =
  Precedence {
    unPrecedence :: Int}
  deriving (Eq, Ord, Read, Show)
_Precedence = Core.Name "hydra.ast.Precedence"
-- | A sequence of expressions joined by a separator operator. Unlike OpExpr, parenthesize ignores SeqExpr boundaries.
data SeqExpr =
  SeqExpr {
    -- | The separator operator
    seqExprOp :: Op,
    -- | The expressions to join
    seqExprElements :: [Expr]}
  deriving (Eq, Ord, Read, Show)
_SeqExpr = Core.Name "hydra.ast.SeqExpr"
_SeqExpr_op = Core.Name "op"
_SeqExpr_elements = Core.Name "elements"
-- | Any symbol
newtype Symbol =
  Symbol {
    unSymbol :: String}
  deriving (Eq, Ord, Read, Show)
_Symbol = Core.Name "hydra.ast.Symbol"
-- | One of several classes of whitespace
data Ws =
  -- | No whitespace
  WsNone |
  -- | A single space
  WsSpace |
  -- | A line break
  WsBreak |
  -- | A line break followed by indentation
  WsBreakAndIndent String |
  -- | Two line breaks
  WsDoubleBreak
  deriving (Eq, Ord, Read, Show)
_Ws = Core.Name "hydra.ast.Ws"
_Ws_none = Core.Name "none"
_Ws_space = Core.Name "space"
_Ws_break = Core.Name "break"
_Ws_breakAndIndent = Core.Name "breakAndIndent"
_Ws_doubleBreak = Core.Name "doubleBreak"