packages feed

hydra-0.1.0: src/gen-main/haskell/Hydra/Util/Codetree/Ast.hs

-- | A model which provides a common syntax tree for Hydra serializers

module Hydra.Util.Codetree.Ast where

import qualified Hydra.Core as Core
import Data.List
import Data.Map
import Data.Set

-- | Operator associativity
data Associativity = 
  AssociativityNone  |
  AssociativityLeft  |
  AssociativityRight  |
  AssociativityBoth 
  deriving (Eq, Ord, Read, Show)

_Associativity = (Core.Name "hydra/util/codetree/ast.Associativity")

_Associativity_none = (Core.FieldName "none")

_Associativity_left = (Core.FieldName "left")

_Associativity_right = (Core.FieldName "right")

_Associativity_both = (Core.FieldName "both")

-- | Formatting option for code blocks
data BlockStyle = 
  BlockStyle {
    blockStyleIndent :: Bool,
    blockStyleNewlineBeforeContent :: Bool,
    blockStyleNewlineAfterContent :: Bool}
  deriving (Eq, Ord, Read, Show)

_BlockStyle = (Core.Name "hydra/util/codetree/ast.BlockStyle")

_BlockStyle_indent = (Core.FieldName "indent")

_BlockStyle_newlineBeforeContent = (Core.FieldName "newlineBeforeContent")

_BlockStyle_newlineAfterContent = (Core.FieldName "newlineAfterContent")

-- | An expression enclosed by brackets
data BracketExpr = 
  BracketExpr {
    bracketExprBrackets :: Brackets,
    bracketExprEnclosed :: Expr,
    bracketExprStyle :: BlockStyle}
  deriving (Eq, Ord, Read, Show)

_BracketExpr = (Core.Name "hydra/util/codetree/ast.BracketExpr")

_BracketExpr_brackets = (Core.FieldName "brackets")

_BracketExpr_enclosed = (Core.FieldName "enclosed")

_BracketExpr_style = (Core.FieldName "style")

-- | Matching open and close bracket symbols
data Brackets = 
  Brackets {
    bracketsOpen :: Symbol,
    bracketsClose :: Symbol}
  deriving (Eq, Ord, Read, Show)

_Brackets = (Core.Name "hydra/util/codetree/ast.Brackets")

_Brackets_open = (Core.FieldName "open")

_Brackets_close = (Core.FieldName "close")

-- | An abstract expression
data Expr = 
  ExprConst Symbol |
  ExprOp OpExpr |
  ExprBrackets BracketExpr
  deriving (Eq, Ord, Read, Show)

_Expr = (Core.Name "hydra/util/codetree/ast.Expr")

_Expr_const = (Core.FieldName "const")

_Expr_op = (Core.FieldName "op")

_Expr_brackets = (Core.FieldName "brackets")

-- | An operator symbol
data Op = 
  Op {
    opSymbol :: Symbol,
    opPadding :: Padding,
    opPrecedence :: Precedence,
    opAssociativity :: Associativity}
  deriving (Eq, Ord, Read, Show)

_Op = (Core.Name "hydra/util/codetree/ast.Op")

_Op_symbol = (Core.FieldName "symbol")

_Op_padding = (Core.FieldName "padding")

_Op_precedence = (Core.FieldName "precedence")

_Op_associativity = (Core.FieldName "associativity")

-- | An operator expression
data OpExpr = 
  OpExpr {
    opExprOp :: Op,
    opExprLhs :: Expr,
    opExprRhs :: Expr}
  deriving (Eq, Ord, Read, Show)

_OpExpr = (Core.Name "hydra/util/codetree/ast.OpExpr")

_OpExpr_op = (Core.FieldName "op")

_OpExpr_lhs = (Core.FieldName "lhs")

_OpExpr_rhs = (Core.FieldName "rhs")

-- | Left and right padding for an operator
data Padding = 
  Padding {
    paddingLeft :: Ws,
    paddingRight :: Ws}
  deriving (Eq, Ord, Read, Show)

_Padding = (Core.Name "hydra/util/codetree/ast.Padding")

_Padding_left = (Core.FieldName "left")

_Padding_right = (Core.FieldName "right")

-- | Operator precedence
newtype Precedence = 
  Precedence {
    -- | Operator precedence
    unPrecedence :: Int}
  deriving (Eq, Ord, Read, Show)

_Precedence = (Core.Name "hydra/util/codetree/ast.Precedence")

-- | Any symbol
newtype Symbol = 
  Symbol {
    -- | Any symbol
    unSymbol :: String}
  deriving (Eq, Ord, Read, Show)

_Symbol = (Core.Name "hydra/util/codetree/ast.Symbol")

-- | One of several classes of whitespace
data Ws = 
  WsNone  |
  WsSpace  |
  WsBreak  |
  WsBreakAndIndent  |
  WsDoubleBreak 
  deriving (Eq, Ord, Read, Show)

_Ws = (Core.Name "hydra/util/codetree/ast.Ws")

_Ws_none = (Core.FieldName "none")

_Ws_space = (Core.FieldName "space")

_Ws_break = (Core.FieldName "break")

_Ws_breakAndIndent = (Core.FieldName "breakAndIndent")

_Ws_doubleBreak = (Core.FieldName "doubleBreak")