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")