hydra-0.15.0: src/main/haskell/Hydra/Cpp/Syntax.hs
-- Note: this is an automatically generated file. Do not edit.
-- | A C++ syntax model, focusing on features for representing algebraic data types and declarative computations
module Hydra.Cpp.Syntax where
import qualified Hydra.Core as Core
import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
import qualified Data.Scientific as Sci
data AccessSpecifier =
AccessSpecifierPublic |
AccessSpecifierProtected |
AccessSpecifierPrivate |
AccessSpecifierNone
deriving (Eq, Ord, Read, Show)
_AccessSpecifier = Core.Name "hydra.cpp.syntax.AccessSpecifier"
_AccessSpecifier_public = Core.Name "public"
_AccessSpecifier_protected = Core.Name "protected"
_AccessSpecifier_private = Core.Name "private"
_AccessSpecifier_none = Core.Name "none"
data Program =
Program {
programPreprocessorDirectives :: [PreprocessorDirective],
programIncludes :: [IncludeDirective],
programDeclarations :: [Declaration]}
deriving (Eq, Ord, Read, Show)
_Program = Core.Name "hydra.cpp.syntax.Program"
_Program_preprocessorDirectives = Core.Name "preprocessorDirectives"
_Program_includes = Core.Name "includes"
_Program_declarations = Core.Name "declarations"
data IncludeDirective =
IncludeDirective {
includeDirectiveName :: String,
includeDirectiveIsSystem :: Bool}
deriving (Eq, Ord, Read, Show)
_IncludeDirective = Core.Name "hydra.cpp.syntax.IncludeDirective"
_IncludeDirective_name = Core.Name "name"
_IncludeDirective_isSystem = Core.Name "isSystem"
data Declaration =
DeclarationPreprocessor PreprocessorDirective |
DeclarationClass ClassDeclaration |
DeclarationFunction FunctionDeclaration |
DeclarationVariable VariableDeclaration |
DeclarationTypedef TypedefDeclaration |
DeclarationNamespace NamespaceDeclaration |
DeclarationTemplate TemplateDeclaration
deriving (Eq, Ord, Read, Show)
_Declaration = Core.Name "hydra.cpp.syntax.Declaration"
_Declaration_preprocessor = Core.Name "preprocessor"
_Declaration_class = Core.Name "class"
_Declaration_function = Core.Name "function"
_Declaration_variable = Core.Name "variable"
_Declaration_typedef = Core.Name "typedef"
_Declaration_namespace = Core.Name "namespace"
_Declaration_template = Core.Name "template"
data NamespaceDeclaration =
NamespaceDeclaration {
namespaceDeclarationName :: String,
namespaceDeclarationDeclarations :: [Declaration]}
deriving (Eq, Ord, Read, Show)
_NamespaceDeclaration = Core.Name "hydra.cpp.syntax.NamespaceDeclaration"
_NamespaceDeclaration_name = Core.Name "name"
_NamespaceDeclaration_declarations = Core.Name "declarations"
data TypedefDeclaration =
TypedefDeclaration {
typedefDeclarationName :: String,
typedefDeclarationType :: TypeExpression,
typedefDeclarationIsUsing :: Bool}
deriving (Eq, Ord, Read, Show)
_TypedefDeclaration = Core.Name "hydra.cpp.syntax.TypedefDeclaration"
_TypedefDeclaration_name = Core.Name "name"
_TypedefDeclaration_type = Core.Name "type"
_TypedefDeclaration_isUsing = Core.Name "isUsing"
data ClassDeclaration =
ClassDeclaration {
classDeclarationSpecifier :: ClassSpecifier,
classDeclarationBody :: (Maybe ClassBody)}
deriving (Eq, Ord, Read, Show)
_ClassDeclaration = Core.Name "hydra.cpp.syntax.ClassDeclaration"
_ClassDeclaration_specifier = Core.Name "specifier"
_ClassDeclaration_body = Core.Name "body"
data TemplateDeclaration =
TemplateDeclaration {
templateDeclarationInline :: Bool,
templateDeclarationParameters :: [String],
templateDeclarationDeclaration :: Declaration}
deriving (Eq, Ord, Read, Show)
_TemplateDeclaration = Core.Name "hydra.cpp.syntax.TemplateDeclaration"
_TemplateDeclaration_inline = Core.Name "inline"
_TemplateDeclaration_parameters = Core.Name "parameters"
_TemplateDeclaration_declaration = Core.Name "declaration"
data PreprocessorDirective =
PreprocessorDirectiveInclude IncludeDirective |
PreprocessorDirectivePragma PragmaDirective |
PreprocessorDirectiveDefine DefineDirective |
PreprocessorDirectiveUndef UndefDirective |
PreprocessorDirectiveIfdef IfdefDirective |
PreprocessorDirectiveIfndef IfndefDirective |
PreprocessorDirectiveIf IfDirective |
PreprocessorDirectiveElif ElifDirective |
PreprocessorDirectiveElse ElseDirective |
PreprocessorDirectiveEndif EndifDirective |
PreprocessorDirectiveLine LineDirective |
PreprocessorDirectiveError ErrorDirective |
PreprocessorDirectiveWarning WarningDirective
deriving (Eq, Ord, Read, Show)
_PreprocessorDirective = Core.Name "hydra.cpp.syntax.PreprocessorDirective"
_PreprocessorDirective_include = Core.Name "include"
_PreprocessorDirective_pragma = Core.Name "pragma"
_PreprocessorDirective_define = Core.Name "define"
_PreprocessorDirective_undef = Core.Name "undef"
_PreprocessorDirective_ifdef = Core.Name "ifdef"
_PreprocessorDirective_ifndef = Core.Name "ifndef"
_PreprocessorDirective_if = Core.Name "if"
_PreprocessorDirective_elif = Core.Name "elif"
_PreprocessorDirective_else = Core.Name "else"
_PreprocessorDirective_endif = Core.Name "endif"
_PreprocessorDirective_line = Core.Name "line"
_PreprocessorDirective_error = Core.Name "error"
_PreprocessorDirective_warning = Core.Name "warning"
data PragmaDirective =
PragmaDirective {
pragmaDirectiveContent :: String}
deriving (Eq, Ord, Read, Show)
_PragmaDirective = Core.Name "hydra.cpp.syntax.PragmaDirective"
_PragmaDirective_content = Core.Name "content"
data DefineDirective =
DefineDirective {
defineDirectiveName :: String,
defineDirectiveParameters :: (Maybe [String]),
defineDirectiveReplacement :: (Maybe String)}
deriving (Eq, Ord, Read, Show)
_DefineDirective = Core.Name "hydra.cpp.syntax.DefineDirective"
_DefineDirective_name = Core.Name "name"
_DefineDirective_parameters = Core.Name "parameters"
_DefineDirective_replacement = Core.Name "replacement"
data UndefDirective =
UndefDirective {
undefDirectiveName :: String}
deriving (Eq, Ord, Read, Show)
_UndefDirective = Core.Name "hydra.cpp.syntax.UndefDirective"
_UndefDirective_name = Core.Name "name"
data IfdefDirective =
IfdefDirective {
ifdefDirectiveIdentifier :: String}
deriving (Eq, Ord, Read, Show)
_IfdefDirective = Core.Name "hydra.cpp.syntax.IfdefDirective"
_IfdefDirective_identifier = Core.Name "identifier"
data IfndefDirective =
IfndefDirective {
ifndefDirectiveIdentifier :: String}
deriving (Eq, Ord, Read, Show)
_IfndefDirective = Core.Name "hydra.cpp.syntax.IfndefDirective"
_IfndefDirective_identifier = Core.Name "identifier"
data IfDirective =
IfDirective {
ifDirectiveCondition :: String}
deriving (Eq, Ord, Read, Show)
_IfDirective = Core.Name "hydra.cpp.syntax.IfDirective"
_IfDirective_condition = Core.Name "condition"
data ElifDirective =
ElifDirective {
elifDirectiveCondition :: String}
deriving (Eq, Ord, Read, Show)
_ElifDirective = Core.Name "hydra.cpp.syntax.ElifDirective"
_ElifDirective_condition = Core.Name "condition"
type ElseDirective = ()
_ElseDirective = Core.Name "hydra.cpp.syntax.ElseDirective"
type EndifDirective = ()
_EndifDirective = Core.Name "hydra.cpp.syntax.EndifDirective"
data LineDirective =
LineDirective {
lineDirectiveLineNumber :: Int,
lineDirectiveFilename :: (Maybe String)}
deriving (Eq, Ord, Read, Show)
_LineDirective = Core.Name "hydra.cpp.syntax.LineDirective"
_LineDirective_lineNumber = Core.Name "lineNumber"
_LineDirective_filename = Core.Name "filename"
data ErrorDirective =
ErrorDirective {
errorDirectiveMessage :: String}
deriving (Eq, Ord, Read, Show)
_ErrorDirective = Core.Name "hydra.cpp.syntax.ErrorDirective"
_ErrorDirective_message = Core.Name "message"
data WarningDirective =
WarningDirective {
warningDirectiveMessage :: String}
deriving (Eq, Ord, Read, Show)
_WarningDirective = Core.Name "hydra.cpp.syntax.WarningDirective"
_WarningDirective_message = Core.Name "message"
data ClassSpecifier =
ClassSpecifier {
classSpecifierKey :: ClassKey,
classSpecifierName :: String,
classSpecifierInheritance :: [BaseSpecifier]}
deriving (Eq, Ord, Read, Show)
_ClassSpecifier = Core.Name "hydra.cpp.syntax.ClassSpecifier"
_ClassSpecifier_key = Core.Name "key"
_ClassSpecifier_name = Core.Name "name"
_ClassSpecifier_inheritance = Core.Name "inheritance"
data ClassKey =
ClassKeyClass |
ClassKeyEnum |
ClassKeyEnumClass |
ClassKeyStruct
deriving (Eq, Ord, Read, Show)
_ClassKey = Core.Name "hydra.cpp.syntax.ClassKey"
_ClassKey_class = Core.Name "class"
_ClassKey_enum = Core.Name "enum"
_ClassKey_enumClass = Core.Name "enumClass"
_ClassKey_struct = Core.Name "struct"
data BaseSpecifier =
BaseSpecifier {
baseSpecifierAccess :: AccessSpecifier,
baseSpecifierName :: String}
deriving (Eq, Ord, Read, Show)
_BaseSpecifier = Core.Name "hydra.cpp.syntax.BaseSpecifier"
_BaseSpecifier_access = Core.Name "access"
_BaseSpecifier_name = Core.Name "name"
newtype ClassBody =
ClassBody {
unClassBody :: [MemberSpecification]}
deriving (Eq, Ord, Read, Show)
_ClassBody = Core.Name "hydra.cpp.syntax.ClassBody"
data MemberSpecification =
MemberSpecificationAccessLabel AccessSpecifier |
MemberSpecificationMember MemberDeclaration
deriving (Eq, Ord, Read, Show)
_MemberSpecification = Core.Name "hydra.cpp.syntax.MemberSpecification"
_MemberSpecification_accessLabel = Core.Name "accessLabel"
_MemberSpecification_member = Core.Name "member"
data MemberDeclaration =
MemberDeclarationFunction FunctionDeclaration |
MemberDeclarationVariable VariableDeclaration |
MemberDeclarationConstructor ConstructorDeclaration |
MemberDeclarationDestructor DestructorDeclaration |
MemberDeclarationNestedClass ClassDeclaration |
MemberDeclarationTemplate TemplateDeclaration
deriving (Eq, Ord, Read, Show)
_MemberDeclaration = Core.Name "hydra.cpp.syntax.MemberDeclaration"
_MemberDeclaration_function = Core.Name "function"
_MemberDeclaration_variable = Core.Name "variable"
_MemberDeclaration_constructor = Core.Name "constructor"
_MemberDeclaration_destructor = Core.Name "destructor"
_MemberDeclaration_nestedClass = Core.Name "nestedClass"
_MemberDeclaration_template = Core.Name "template"
data ConstructorDeclaration =
ConstructorDeclaration {
constructorDeclarationName :: String,
constructorDeclarationParameters :: [Parameter],
constructorDeclarationInitializers :: [MemInitializer],
constructorDeclarationBody :: FunctionBody}
deriving (Eq, Ord, Read, Show)
_ConstructorDeclaration = Core.Name "hydra.cpp.syntax.ConstructorDeclaration"
_ConstructorDeclaration_name = Core.Name "name"
_ConstructorDeclaration_parameters = Core.Name "parameters"
_ConstructorDeclaration_initializers = Core.Name "initializers"
_ConstructorDeclaration_body = Core.Name "body"
data MemInitializer =
MemInitializer {
memInitializerName :: String,
memInitializerArguments :: [Expression]}
deriving (Eq, Ord, Read, Show)
_MemInitializer = Core.Name "hydra.cpp.syntax.MemInitializer"
_MemInitializer_name = Core.Name "name"
_MemInitializer_arguments = Core.Name "arguments"
data DestructorDeclaration =
DestructorDeclaration {
destructorDeclarationPrefixSpecifiers :: [FunctionSpecifierPrefix],
destructorDeclarationName :: String,
destructorDeclarationSuffixSpecifiers :: [FunctionSpecifierSuffix],
destructorDeclarationBody :: FunctionBody}
deriving (Eq, Ord, Read, Show)
_DestructorDeclaration = Core.Name "hydra.cpp.syntax.DestructorDeclaration"
_DestructorDeclaration_prefixSpecifiers = Core.Name "prefixSpecifiers"
_DestructorDeclaration_name = Core.Name "name"
_DestructorDeclaration_suffixSpecifiers = Core.Name "suffixSpecifiers"
_DestructorDeclaration_body = Core.Name "body"
data FunctionDeclaration =
FunctionDeclaration {
functionDeclarationPrefixSpecifiers :: [FunctionSpecifierPrefix],
functionDeclarationReturnType :: TypeExpression,
functionDeclarationName :: String,
functionDeclarationParameters :: [Parameter],
functionDeclarationSuffixSpecifiers :: [FunctionSpecifierSuffix],
functionDeclarationBody :: FunctionBody}
deriving (Eq, Ord, Read, Show)
_FunctionDeclaration = Core.Name "hydra.cpp.syntax.FunctionDeclaration"
_FunctionDeclaration_prefixSpecifiers = Core.Name "prefixSpecifiers"
_FunctionDeclaration_returnType = Core.Name "returnType"
_FunctionDeclaration_name = Core.Name "name"
_FunctionDeclaration_parameters = Core.Name "parameters"
_FunctionDeclaration_suffixSpecifiers = Core.Name "suffixSpecifiers"
_FunctionDeclaration_body = Core.Name "body"
data FunctionSpecifierPrefix =
FunctionSpecifierPrefixInline |
FunctionSpecifierPrefixVirtual |
FunctionSpecifierPrefixStatic |
FunctionSpecifierPrefixExplicit
deriving (Eq, Ord, Read, Show)
_FunctionSpecifierPrefix = Core.Name "hydra.cpp.syntax.FunctionSpecifierPrefix"
_FunctionSpecifierPrefix_inline = Core.Name "inline"
_FunctionSpecifierPrefix_virtual = Core.Name "virtual"
_FunctionSpecifierPrefix_static = Core.Name "static"
_FunctionSpecifierPrefix_explicit = Core.Name "explicit"
data FunctionSpecifierSuffix =
FunctionSpecifierSuffixConst |
FunctionSpecifierSuffixNoexcept |
FunctionSpecifierSuffixOverride |
FunctionSpecifierSuffixFinal
deriving (Eq, Ord, Read, Show)
_FunctionSpecifierSuffix = Core.Name "hydra.cpp.syntax.FunctionSpecifierSuffix"
_FunctionSpecifierSuffix_const = Core.Name "const"
_FunctionSpecifierSuffix_noexcept = Core.Name "noexcept"
_FunctionSpecifierSuffix_override = Core.Name "override"
_FunctionSpecifierSuffix_final = Core.Name "final"
data Parameter =
Parameter {
parameterType :: TypeExpression,
parameterName :: String,
parameterUnnamed :: Bool,
parameterDefaultValue :: (Maybe Expression)}
deriving (Eq, Ord, Read, Show)
_Parameter = Core.Name "hydra.cpp.syntax.Parameter"
_Parameter_type = Core.Name "type"
_Parameter_name = Core.Name "name"
_Parameter_unnamed = Core.Name "unnamed"
_Parameter_defaultValue = Core.Name "defaultValue"
data FunctionBody =
FunctionBodyCompound CompoundStatement |
FunctionBodyDeclaration |
FunctionBodyPure |
FunctionBodyDefault
deriving (Eq, Ord, Read, Show)
_FunctionBody = Core.Name "hydra.cpp.syntax.FunctionBody"
_FunctionBody_compound = Core.Name "compound"
_FunctionBody_declaration = Core.Name "declaration"
_FunctionBody_pure = Core.Name "pure"
_FunctionBody_default = Core.Name "default"
data VariableDeclaration =
VariableDeclaration {
variableDeclarationType :: (Maybe TypeExpression),
variableDeclarationName :: String,
variableDeclarationInitializer :: (Maybe Expression),
variableDeclarationIsAuto :: Bool}
deriving (Eq, Ord, Read, Show)
_VariableDeclaration = Core.Name "hydra.cpp.syntax.VariableDeclaration"
_VariableDeclaration_type = Core.Name "type"
_VariableDeclaration_name = Core.Name "name"
_VariableDeclaration_initializer = Core.Name "initializer"
_VariableDeclaration_isAuto = Core.Name "isAuto"
data VariantDeclaration =
VariantDeclaration {
variantDeclarationTypes :: [TypeExpression],
variantDeclarationName :: String}
deriving (Eq, Ord, Read, Show)
_VariantDeclaration = Core.Name "hydra.cpp.syntax.VariantDeclaration"
_VariantDeclaration_types = Core.Name "types"
_VariantDeclaration_name = Core.Name "name"
data ProductDeclaration =
ProductDeclaration {
productDeclarationName :: String,
productDeclarationFields :: [VariableDeclaration]}
deriving (Eq, Ord, Read, Show)
_ProductDeclaration = Core.Name "hydra.cpp.syntax.ProductDeclaration"
_ProductDeclaration_name = Core.Name "name"
_ProductDeclaration_fields = Core.Name "fields"
data ContainerDeclaration =
ContainerDeclarationList ListDeclaration |
ContainerDeclarationMap MapDeclaration |
ContainerDeclarationSet SetDeclaration |
ContainerDeclarationOptional OptionalDeclaration
deriving (Eq, Ord, Read, Show)
_ContainerDeclaration = Core.Name "hydra.cpp.syntax.ContainerDeclaration"
_ContainerDeclaration_list = Core.Name "list"
_ContainerDeclaration_map = Core.Name "map"
_ContainerDeclaration_set = Core.Name "set"
_ContainerDeclaration_optional = Core.Name "optional"
data ListDeclaration =
ListDeclaration {
listDeclarationElementType :: TypeExpression,
listDeclarationName :: String}
deriving (Eq, Ord, Read, Show)
_ListDeclaration = Core.Name "hydra.cpp.syntax.ListDeclaration"
_ListDeclaration_elementType = Core.Name "elementType"
_ListDeclaration_name = Core.Name "name"
data MapDeclaration =
MapDeclaration {
mapDeclarationKeyType :: TypeExpression,
mapDeclarationValueType :: TypeExpression,
mapDeclarationName :: String}
deriving (Eq, Ord, Read, Show)
_MapDeclaration = Core.Name "hydra.cpp.syntax.MapDeclaration"
_MapDeclaration_keyType = Core.Name "keyType"
_MapDeclaration_valueType = Core.Name "valueType"
_MapDeclaration_name = Core.Name "name"
data SetDeclaration =
SetDeclaration {
setDeclarationElementType :: TypeExpression,
setDeclarationName :: String}
deriving (Eq, Ord, Read, Show)
_SetDeclaration = Core.Name "hydra.cpp.syntax.SetDeclaration"
_SetDeclaration_elementType = Core.Name "elementType"
_SetDeclaration_name = Core.Name "name"
data OptionalDeclaration =
OptionalDeclaration {
optionalDeclarationValueType :: TypeExpression,
optionalDeclarationName :: String}
deriving (Eq, Ord, Read, Show)
_OptionalDeclaration = Core.Name "hydra.cpp.syntax.OptionalDeclaration"
_OptionalDeclaration_valueType = Core.Name "valueType"
_OptionalDeclaration_name = Core.Name "name"
data Expression =
ExpressionAssignment AssignmentExpression |
ExpressionComma CommaExpression
deriving (Eq, Ord, Read, Show)
_Expression = Core.Name "hydra.cpp.syntax.Expression"
_Expression_assignment = Core.Name "assignment"
_Expression_comma = Core.Name "comma"
data CommaExpression =
CommaExpression {
commaExpressionLeft :: Expression,
commaExpressionRight :: AssignmentExpression}
deriving (Eq, Ord, Read, Show)
_CommaExpression = Core.Name "hydra.cpp.syntax.CommaExpression"
_CommaExpression_left = Core.Name "left"
_CommaExpression_right = Core.Name "right"
data AssignmentExpression =
AssignmentExpressionConditional ConditionalExpression |
AssignmentExpressionAssignment ExplicitAssignment
deriving (Eq, Ord, Read, Show)
_AssignmentExpression = Core.Name "hydra.cpp.syntax.AssignmentExpression"
_AssignmentExpression_conditional = Core.Name "conditional"
_AssignmentExpression_assignment = Core.Name "assignment"
data ExplicitAssignment =
ExplicitAssignment {
explicitAssignmentLeft :: LogicalOrExpression,
explicitAssignmentOp :: AssignmentOperator,
explicitAssignmentRight :: AssignmentExpression}
deriving (Eq, Ord, Read, Show)
_ExplicitAssignment = Core.Name "hydra.cpp.syntax.ExplicitAssignment"
_ExplicitAssignment_left = Core.Name "left"
_ExplicitAssignment_op = Core.Name "op"
_ExplicitAssignment_right = Core.Name "right"
data AssignmentOperator =
AssignmentOperatorAssign |
AssignmentOperatorPlusAssign |
AssignmentOperatorMinusAssign |
AssignmentOperatorMultiplyAssign |
AssignmentOperatorDivideAssign |
AssignmentOperatorModuloAssign |
AssignmentOperatorLeftShiftAssign |
AssignmentOperatorRightShiftAssign |
AssignmentOperatorBitwiseAndAssign |
AssignmentOperatorBitwiseXorAssign |
AssignmentOperatorBitwiseOrAssign
deriving (Eq, Ord, Read, Show)
_AssignmentOperator = Core.Name "hydra.cpp.syntax.AssignmentOperator"
_AssignmentOperator_assign = Core.Name "assign"
_AssignmentOperator_plusAssign = Core.Name "plusAssign"
_AssignmentOperator_minusAssign = Core.Name "minusAssign"
_AssignmentOperator_multiplyAssign = Core.Name "multiplyAssign"
_AssignmentOperator_divideAssign = Core.Name "divideAssign"
_AssignmentOperator_moduloAssign = Core.Name "moduloAssign"
_AssignmentOperator_leftShiftAssign = Core.Name "leftShiftAssign"
_AssignmentOperator_rightShiftAssign = Core.Name "rightShiftAssign"
_AssignmentOperator_bitwiseAndAssign = Core.Name "bitwiseAndAssign"
_AssignmentOperator_bitwiseXorAssign = Core.Name "bitwiseXorAssign"
_AssignmentOperator_bitwiseOrAssign = Core.Name "bitwiseOrAssign"
data ConditionalExpression =
ConditionalExpressionLogicalOr LogicalOrExpression |
ConditionalExpressionTernary TernaryExpression
deriving (Eq, Ord, Read, Show)
_ConditionalExpression = Core.Name "hydra.cpp.syntax.ConditionalExpression"
_ConditionalExpression_logicalOr = Core.Name "logicalOr"
_ConditionalExpression_ternary = Core.Name "ternary"
data TernaryExpression =
TernaryExpression {
ternaryExpressionCondition :: LogicalOrExpression,
ternaryExpressionTrueExpr :: Expression,
ternaryExpressionFalseExpr :: ConditionalExpression}
deriving (Eq, Ord, Read, Show)
_TernaryExpression = Core.Name "hydra.cpp.syntax.TernaryExpression"
_TernaryExpression_condition = Core.Name "condition"
_TernaryExpression_trueExpr = Core.Name "trueExpr"
_TernaryExpression_falseExpr = Core.Name "falseExpr"
data LogicalOrExpression =
LogicalOrExpressionLogicalAnd LogicalAndExpression |
LogicalOrExpressionLogicalOr LogicalOrOperation
deriving (Eq, Ord, Read, Show)
_LogicalOrExpression = Core.Name "hydra.cpp.syntax.LogicalOrExpression"
_LogicalOrExpression_logicalAnd = Core.Name "logicalAnd"
_LogicalOrExpression_logicalOr = Core.Name "logicalOr"
data LogicalOrOperation =
LogicalOrOperation {
logicalOrOperationLeft :: LogicalOrExpression,
logicalOrOperationRight :: LogicalAndExpression}
deriving (Eq, Ord, Read, Show)
_LogicalOrOperation = Core.Name "hydra.cpp.syntax.LogicalOrOperation"
_LogicalOrOperation_left = Core.Name "left"
_LogicalOrOperation_right = Core.Name "right"
data LogicalAndExpression =
LogicalAndExpressionInclusiveOr InclusiveOrExpression |
LogicalAndExpressionLogicalAnd LogicalAndOperation
deriving (Eq, Ord, Read, Show)
_LogicalAndExpression = Core.Name "hydra.cpp.syntax.LogicalAndExpression"
_LogicalAndExpression_inclusiveOr = Core.Name "inclusiveOr"
_LogicalAndExpression_logicalAnd = Core.Name "logicalAnd"
data LogicalAndOperation =
LogicalAndOperation {
logicalAndOperationLeft :: LogicalAndExpression,
logicalAndOperationRight :: InclusiveOrExpression}
deriving (Eq, Ord, Read, Show)
_LogicalAndOperation = Core.Name "hydra.cpp.syntax.LogicalAndOperation"
_LogicalAndOperation_left = Core.Name "left"
_LogicalAndOperation_right = Core.Name "right"
data InclusiveOrExpression =
InclusiveOrExpressionExclusiveOr ExclusiveOrExpression |
InclusiveOrExpressionBitwiseOr BitwiseOrOperation
deriving (Eq, Ord, Read, Show)
_InclusiveOrExpression = Core.Name "hydra.cpp.syntax.InclusiveOrExpression"
_InclusiveOrExpression_exclusiveOr = Core.Name "exclusiveOr"
_InclusiveOrExpression_bitwiseOr = Core.Name "bitwiseOr"
data BitwiseOrOperation =
BitwiseOrOperation {
bitwiseOrOperationLeft :: InclusiveOrExpression,
bitwiseOrOperationRight :: ExclusiveOrExpression}
deriving (Eq, Ord, Read, Show)
_BitwiseOrOperation = Core.Name "hydra.cpp.syntax.BitwiseOrOperation"
_BitwiseOrOperation_left = Core.Name "left"
_BitwiseOrOperation_right = Core.Name "right"
data ExclusiveOrExpression =
ExclusiveOrExpressionAnd AndExpression |
ExclusiveOrExpressionBitwiseXor BitwiseXorOperation
deriving (Eq, Ord, Read, Show)
_ExclusiveOrExpression = Core.Name "hydra.cpp.syntax.ExclusiveOrExpression"
_ExclusiveOrExpression_and = Core.Name "and"
_ExclusiveOrExpression_bitwiseXor = Core.Name "bitwiseXor"
data BitwiseXorOperation =
BitwiseXorOperation {
bitwiseXorOperationLeft :: ExclusiveOrExpression,
bitwiseXorOperationRight :: AndExpression}
deriving (Eq, Ord, Read, Show)
_BitwiseXorOperation = Core.Name "hydra.cpp.syntax.BitwiseXorOperation"
_BitwiseXorOperation_left = Core.Name "left"
_BitwiseXorOperation_right = Core.Name "right"
data AndExpression =
AndExpressionEquality EqualityExpression |
AndExpressionBitwiseAnd BitwiseAndOperation
deriving (Eq, Ord, Read, Show)
_AndExpression = Core.Name "hydra.cpp.syntax.AndExpression"
_AndExpression_equality = Core.Name "equality"
_AndExpression_bitwiseAnd = Core.Name "bitwiseAnd"
data BitwiseAndOperation =
BitwiseAndOperation {
bitwiseAndOperationLeft :: AndExpression,
bitwiseAndOperationRight :: EqualityExpression}
deriving (Eq, Ord, Read, Show)
_BitwiseAndOperation = Core.Name "hydra.cpp.syntax.BitwiseAndOperation"
_BitwiseAndOperation_left = Core.Name "left"
_BitwiseAndOperation_right = Core.Name "right"
data EqualityExpression =
EqualityExpressionRelational RelationalExpression |
EqualityExpressionEqual EqualOperation |
EqualityExpressionNotEqual NotEqualOperation
deriving (Eq, Ord, Read, Show)
_EqualityExpression = Core.Name "hydra.cpp.syntax.EqualityExpression"
_EqualityExpression_relational = Core.Name "relational"
_EqualityExpression_equal = Core.Name "equal"
_EqualityExpression_notEqual = Core.Name "notEqual"
data EqualOperation =
EqualOperation {
equalOperationLeft :: EqualityExpression,
equalOperationRight :: RelationalExpression}
deriving (Eq, Ord, Read, Show)
_EqualOperation = Core.Name "hydra.cpp.syntax.EqualOperation"
_EqualOperation_left = Core.Name "left"
_EqualOperation_right = Core.Name "right"
data NotEqualOperation =
NotEqualOperation {
notEqualOperationLeft :: EqualityExpression,
notEqualOperationRight :: RelationalExpression}
deriving (Eq, Ord, Read, Show)
_NotEqualOperation = Core.Name "hydra.cpp.syntax.NotEqualOperation"
_NotEqualOperation_left = Core.Name "left"
_NotEqualOperation_right = Core.Name "right"
data RelationalExpression =
RelationalExpressionShift ShiftExpression |
RelationalExpressionLess LessOperation |
RelationalExpressionGreater GreaterOperation |
RelationalExpressionLessEqual LessEqualOperation |
RelationalExpressionGreaterEqual GreaterEqualOperation
deriving (Eq, Ord, Read, Show)
_RelationalExpression = Core.Name "hydra.cpp.syntax.RelationalExpression"
_RelationalExpression_shift = Core.Name "shift"
_RelationalExpression_less = Core.Name "less"
_RelationalExpression_greater = Core.Name "greater"
_RelationalExpression_lessEqual = Core.Name "lessEqual"
_RelationalExpression_greaterEqual = Core.Name "greaterEqual"
data LessOperation =
LessOperation {
lessOperationLeft :: RelationalExpression,
lessOperationRight :: ShiftExpression}
deriving (Eq, Ord, Read, Show)
_LessOperation = Core.Name "hydra.cpp.syntax.LessOperation"
_LessOperation_left = Core.Name "left"
_LessOperation_right = Core.Name "right"
data GreaterOperation =
GreaterOperation {
greaterOperationLeft :: RelationalExpression,
greaterOperationRight :: ShiftExpression}
deriving (Eq, Ord, Read, Show)
_GreaterOperation = Core.Name "hydra.cpp.syntax.GreaterOperation"
_GreaterOperation_left = Core.Name "left"
_GreaterOperation_right = Core.Name "right"
data LessEqualOperation =
LessEqualOperation {
lessEqualOperationLeft :: RelationalExpression,
lessEqualOperationRight :: ShiftExpression}
deriving (Eq, Ord, Read, Show)
_LessEqualOperation = Core.Name "hydra.cpp.syntax.LessEqualOperation"
_LessEqualOperation_left = Core.Name "left"
_LessEqualOperation_right = Core.Name "right"
data GreaterEqualOperation =
GreaterEqualOperation {
greaterEqualOperationLeft :: RelationalExpression,
greaterEqualOperationRight :: ShiftExpression}
deriving (Eq, Ord, Read, Show)
_GreaterEqualOperation = Core.Name "hydra.cpp.syntax.GreaterEqualOperation"
_GreaterEqualOperation_left = Core.Name "left"
_GreaterEqualOperation_right = Core.Name "right"
data ShiftExpression =
ShiftExpressionAdditive AdditiveExpression |
ShiftExpressionLeftShift LeftShiftOperation |
ShiftExpressionRightShift RightShiftOperation
deriving (Eq, Ord, Read, Show)
_ShiftExpression = Core.Name "hydra.cpp.syntax.ShiftExpression"
_ShiftExpression_additive = Core.Name "additive"
_ShiftExpression_leftShift = Core.Name "leftShift"
_ShiftExpression_rightShift = Core.Name "rightShift"
data LeftShiftOperation =
LeftShiftOperation {
leftShiftOperationLeft :: ShiftExpression,
leftShiftOperationRight :: AdditiveExpression}
deriving (Eq, Ord, Read, Show)
_LeftShiftOperation = Core.Name "hydra.cpp.syntax.LeftShiftOperation"
_LeftShiftOperation_left = Core.Name "left"
_LeftShiftOperation_right = Core.Name "right"
data RightShiftOperation =
RightShiftOperation {
rightShiftOperationLeft :: ShiftExpression,
rightShiftOperationRight :: AdditiveExpression}
deriving (Eq, Ord, Read, Show)
_RightShiftOperation = Core.Name "hydra.cpp.syntax.RightShiftOperation"
_RightShiftOperation_left = Core.Name "left"
_RightShiftOperation_right = Core.Name "right"
data AdditiveExpression =
AdditiveExpressionMultiplicative MultiplicativeExpression |
AdditiveExpressionAdd AddOperation |
AdditiveExpressionSubtract SubtractOperation
deriving (Eq, Ord, Read, Show)
_AdditiveExpression = Core.Name "hydra.cpp.syntax.AdditiveExpression"
_AdditiveExpression_multiplicative = Core.Name "multiplicative"
_AdditiveExpression_add = Core.Name "add"
_AdditiveExpression_subtract = Core.Name "subtract"
data AddOperation =
AddOperation {
addOperationLeft :: AdditiveExpression,
addOperationRight :: MultiplicativeExpression}
deriving (Eq, Ord, Read, Show)
_AddOperation = Core.Name "hydra.cpp.syntax.AddOperation"
_AddOperation_left = Core.Name "left"
_AddOperation_right = Core.Name "right"
data SubtractOperation =
SubtractOperation {
subtractOperationLeft :: AdditiveExpression,
subtractOperationRight :: MultiplicativeExpression}
deriving (Eq, Ord, Read, Show)
_SubtractOperation = Core.Name "hydra.cpp.syntax.SubtractOperation"
_SubtractOperation_left = Core.Name "left"
_SubtractOperation_right = Core.Name "right"
data MultiplicativeExpression =
MultiplicativeExpressionUnary UnaryExpression |
MultiplicativeExpressionMultiply MultiplyOperation |
MultiplicativeExpressionDivide DivideOperation |
MultiplicativeExpressionModulo ModuloOperation
deriving (Eq, Ord, Read, Show)
_MultiplicativeExpression = Core.Name "hydra.cpp.syntax.MultiplicativeExpression"
_MultiplicativeExpression_unary = Core.Name "unary"
_MultiplicativeExpression_multiply = Core.Name "multiply"
_MultiplicativeExpression_divide = Core.Name "divide"
_MultiplicativeExpression_modulo = Core.Name "modulo"
data MultiplyOperation =
MultiplyOperation {
multiplyOperationLeft :: MultiplicativeExpression,
multiplyOperationRight :: UnaryExpression}
deriving (Eq, Ord, Read, Show)
_MultiplyOperation = Core.Name "hydra.cpp.syntax.MultiplyOperation"
_MultiplyOperation_left = Core.Name "left"
_MultiplyOperation_right = Core.Name "right"
data DivideOperation =
DivideOperation {
divideOperationLeft :: MultiplicativeExpression,
divideOperationRight :: UnaryExpression}
deriving (Eq, Ord, Read, Show)
_DivideOperation = Core.Name "hydra.cpp.syntax.DivideOperation"
_DivideOperation_left = Core.Name "left"
_DivideOperation_right = Core.Name "right"
data ModuloOperation =
ModuloOperation {
moduloOperationLeft :: MultiplicativeExpression,
moduloOperationRight :: UnaryExpression}
deriving (Eq, Ord, Read, Show)
_ModuloOperation = Core.Name "hydra.cpp.syntax.ModuloOperation"
_ModuloOperation_left = Core.Name "left"
_ModuloOperation_right = Core.Name "right"
data UnaryExpression =
UnaryExpressionPostfix PostfixExpression |
UnaryExpressionUnaryOp UnaryOperation |
UnaryExpressionSizeof SizeofExpression
deriving (Eq, Ord, Read, Show)
_UnaryExpression = Core.Name "hydra.cpp.syntax.UnaryExpression"
_UnaryExpression_postfix = Core.Name "postfix"
_UnaryExpression_unaryOp = Core.Name "unaryOp"
_UnaryExpression_sizeof = Core.Name "sizeof"
data UnaryOperation =
UnaryOperation {
unaryOperationOperator :: UnaryOperator,
unaryOperationOperand :: UnaryExpression}
deriving (Eq, Ord, Read, Show)
_UnaryOperation = Core.Name "hydra.cpp.syntax.UnaryOperation"
_UnaryOperation_operator = Core.Name "operator"
_UnaryOperation_operand = Core.Name "operand"
data UnaryOperator =
UnaryOperatorPlus |
UnaryOperatorMinus |
UnaryOperatorLogicalNot |
UnaryOperatorBitwiseNot |
UnaryOperatorDereference |
UnaryOperatorAddressOf |
UnaryOperatorPreIncrement |
UnaryOperatorPreDecrement
deriving (Eq, Ord, Read, Show)
_UnaryOperator = Core.Name "hydra.cpp.syntax.UnaryOperator"
_UnaryOperator_plus = Core.Name "plus"
_UnaryOperator_minus = Core.Name "minus"
_UnaryOperator_logicalNot = Core.Name "logicalNot"
_UnaryOperator_bitwiseNot = Core.Name "bitwiseNot"
_UnaryOperator_dereference = Core.Name "dereference"
_UnaryOperator_addressOf = Core.Name "addressOf"
_UnaryOperator_preIncrement = Core.Name "preIncrement"
_UnaryOperator_preDecrement = Core.Name "preDecrement"
newtype SizeofExpression =
SizeofExpression {
unSizeofExpression :: TypeExpression}
deriving (Eq, Ord, Read, Show)
_SizeofExpression = Core.Name "hydra.cpp.syntax.SizeofExpression"
data PostfixExpression =
PostfixExpressionPrimary PrimaryExpression |
PostfixExpressionSubscript SubscriptOperation |
PostfixExpressionFunctionCall FunctionCallOperation |
PostfixExpressionTemplateFunctionCall TemplateFunctionCallOperation |
PostfixExpressionMemberAccess MemberAccessOperation |
PostfixExpressionPointerMemberAccess PointerMemberAccessOperation |
PostfixExpressionPostIncrement PostfixExpression |
PostfixExpressionPostDecrement PostfixExpression
deriving (Eq, Ord, Read, Show)
_PostfixExpression = Core.Name "hydra.cpp.syntax.PostfixExpression"
_PostfixExpression_primary = Core.Name "primary"
_PostfixExpression_subscript = Core.Name "subscript"
_PostfixExpression_functionCall = Core.Name "functionCall"
_PostfixExpression_templateFunctionCall = Core.Name "templateFunctionCall"
_PostfixExpression_memberAccess = Core.Name "memberAccess"
_PostfixExpression_pointerMemberAccess = Core.Name "pointerMemberAccess"
_PostfixExpression_postIncrement = Core.Name "postIncrement"
_PostfixExpression_postDecrement = Core.Name "postDecrement"
data SubscriptOperation =
SubscriptOperation {
subscriptOperationArray :: PostfixExpression,
subscriptOperationIndex :: Expression}
deriving (Eq, Ord, Read, Show)
_SubscriptOperation = Core.Name "hydra.cpp.syntax.SubscriptOperation"
_SubscriptOperation_array = Core.Name "array"
_SubscriptOperation_index = Core.Name "index"
data FunctionCallOperation =
FunctionCallOperation {
functionCallOperationFunction :: PostfixExpression,
functionCallOperationArguments :: [Expression]}
deriving (Eq, Ord, Read, Show)
_FunctionCallOperation = Core.Name "hydra.cpp.syntax.FunctionCallOperation"
_FunctionCallOperation_function = Core.Name "function"
_FunctionCallOperation_arguments = Core.Name "arguments"
data MemberAccessOperation =
MemberAccessOperation {
memberAccessOperationObject :: PostfixExpression,
memberAccessOperationMember :: String}
deriving (Eq, Ord, Read, Show)
_MemberAccessOperation = Core.Name "hydra.cpp.syntax.MemberAccessOperation"
_MemberAccessOperation_object = Core.Name "object"
_MemberAccessOperation_member = Core.Name "member"
data PointerMemberAccessOperation =
PointerMemberAccessOperation {
pointerMemberAccessOperationPointer :: PostfixExpression,
pointerMemberAccessOperationMember :: String}
deriving (Eq, Ord, Read, Show)
_PointerMemberAccessOperation = Core.Name "hydra.cpp.syntax.PointerMemberAccessOperation"
_PointerMemberAccessOperation_pointer = Core.Name "pointer"
_PointerMemberAccessOperation_member = Core.Name "member"
data TemplateFunctionCallOperation =
TemplateFunctionCallOperation {
templateFunctionCallOperationFunction :: PostfixExpression,
templateFunctionCallOperationTemplateArguments :: [TemplateArgument],
templateFunctionCallOperationArguments :: [Expression]}
deriving (Eq, Ord, Read, Show)
_TemplateFunctionCallOperation = Core.Name "hydra.cpp.syntax.TemplateFunctionCallOperation"
_TemplateFunctionCallOperation_function = Core.Name "function"
_TemplateFunctionCallOperation_templateArguments = Core.Name "templateArguments"
_TemplateFunctionCallOperation_arguments = Core.Name "arguments"
data PrimaryExpression =
PrimaryExpressionIdentifier String |
PrimaryExpressionLiteral Literal |
PrimaryExpressionParenthesized Expression |
PrimaryExpressionLambda LambdaExpression
deriving (Eq, Ord, Read, Show)
_PrimaryExpression = Core.Name "hydra.cpp.syntax.PrimaryExpression"
_PrimaryExpression_identifier = Core.Name "identifier"
_PrimaryExpression_literal = Core.Name "literal"
_PrimaryExpression_parenthesized = Core.Name "parenthesized"
_PrimaryExpression_lambda = Core.Name "lambda"
data LambdaExpression =
LambdaExpression {
lambdaExpressionCaptures :: CaptureList,
lambdaExpressionParameters :: [Parameter],
lambdaExpressionReturnType :: (Maybe TypeExpression),
lambdaExpressionBody :: CompoundStatement}
deriving (Eq, Ord, Read, Show)
_LambdaExpression = Core.Name "hydra.cpp.syntax.LambdaExpression"
_LambdaExpression_captures = Core.Name "captures"
_LambdaExpression_parameters = Core.Name "parameters"
_LambdaExpression_returnType = Core.Name "returnType"
_LambdaExpression_body = Core.Name "body"
data CaptureList =
CaptureListCaptureByValue |
CaptureListCaptures [Capture]
deriving (Eq, Ord, Read, Show)
_CaptureList = Core.Name "hydra.cpp.syntax.CaptureList"
_CaptureList_captureByValue = Core.Name "captureByValue"
_CaptureList_captures = Core.Name "captures"
data Capture =
Capture {
captureName :: String,
captureByReference :: Bool}
deriving (Eq, Ord, Read, Show)
_Capture = Core.Name "hydra.cpp.syntax.Capture"
_Capture_name = Core.Name "name"
_Capture_byReference = Core.Name "byReference"
data PatternMatch =
PatternMatch {
patternMatchVisitor :: Visitor,
patternMatchVariant :: Expression}
deriving (Eq, Ord, Read, Show)
_PatternMatch = Core.Name "hydra.cpp.syntax.PatternMatch"
_PatternMatch_visitor = Core.Name "visitor"
_PatternMatch_variant = Core.Name "variant"
data Visitor =
VisitorLambda LambdaExpression |
VisitorOverloaded OverloadedLambdas
deriving (Eq, Ord, Read, Show)
_Visitor = Core.Name "hydra.cpp.syntax.Visitor"
_Visitor_lambda = Core.Name "lambda"
_Visitor_overloaded = Core.Name "overloaded"
newtype OverloadedLambdas =
OverloadedLambdas {
unOverloadedLambdas :: [LambdaExpression]}
deriving (Eq, Ord, Read, Show)
_OverloadedLambdas = Core.Name "hydra.cpp.syntax.OverloadedLambdas"
data FunctionApplication =
FunctionApplication {
functionApplicationFunction :: FunctionIdentifier,
functionApplicationArguments :: [Expression]}
deriving (Eq, Ord, Read, Show)
_FunctionApplication = Core.Name "hydra.cpp.syntax.FunctionApplication"
_FunctionApplication_function = Core.Name "function"
_FunctionApplication_arguments = Core.Name "arguments"
data FunctionIdentifier =
FunctionIdentifierSimple String |
FunctionIdentifierQualified QualifiedIdentifier
deriving (Eq, Ord, Read, Show)
_FunctionIdentifier = Core.Name "hydra.cpp.syntax.FunctionIdentifier"
_FunctionIdentifier_simple = Core.Name "simple"
_FunctionIdentifier_qualified = Core.Name "qualified"
data QualifiedIdentifier =
QualifiedIdentifier {
qualifiedIdentifierNamespace :: String,
qualifiedIdentifierName :: String}
deriving (Eq, Ord, Read, Show)
_QualifiedIdentifier = Core.Name "hydra.cpp.syntax.QualifiedIdentifier"
_QualifiedIdentifier_namespace = Core.Name "namespace"
_QualifiedIdentifier_name = Core.Name "name"
data Statement =
StatementLabeled LabeledStatement |
StatementCompound CompoundStatement |
StatementSelection SelectionStatement |
StatementSwitch SwitchStatement |
StatementIteration IterationStatement |
StatementJump JumpStatement |
StatementDeclaration VariableDeclaration |
StatementExpression Expression
deriving (Eq, Ord, Read, Show)
_Statement = Core.Name "hydra.cpp.syntax.Statement"
_Statement_labeled = Core.Name "labeled"
_Statement_compound = Core.Name "compound"
_Statement_selection = Core.Name "selection"
_Statement_switch = Core.Name "switch"
_Statement_iteration = Core.Name "iteration"
_Statement_jump = Core.Name "jump"
_Statement_declaration = Core.Name "declaration"
_Statement_expression = Core.Name "expression"
data LabeledStatement =
LabeledStatement {
labeledStatementLabel :: String,
labeledStatementStatement :: Statement}
deriving (Eq, Ord, Read, Show)
_LabeledStatement = Core.Name "hydra.cpp.syntax.LabeledStatement"
_LabeledStatement_label = Core.Name "label"
_LabeledStatement_statement = Core.Name "statement"
newtype CompoundStatement =
CompoundStatement {
unCompoundStatement :: [Statement]}
deriving (Eq, Ord, Read, Show)
_CompoundStatement = Core.Name "hydra.cpp.syntax.CompoundStatement"
data SelectionStatement =
SelectionStatement {
selectionStatementCondition :: Expression,
selectionStatementThenBranch :: Statement,
selectionStatementElseBranch :: (Maybe Statement)}
deriving (Eq, Ord, Read, Show)
_SelectionStatement = Core.Name "hydra.cpp.syntax.SelectionStatement"
_SelectionStatement_condition = Core.Name "condition"
_SelectionStatement_thenBranch = Core.Name "thenBranch"
_SelectionStatement_elseBranch = Core.Name "elseBranch"
data SwitchStatement =
SwitchStatement {
switchStatementValue :: Expression,
switchStatementCases :: [CaseStatement]}
deriving (Eq, Ord, Read, Show)
_SwitchStatement = Core.Name "hydra.cpp.syntax.SwitchStatement"
_SwitchStatement_value = Core.Name "value"
_SwitchStatement_cases = Core.Name "cases"
data CaseStatement =
CaseStatementCase CaseValue |
CaseStatementDefault Statement
deriving (Eq, Ord, Read, Show)
_CaseStatement = Core.Name "hydra.cpp.syntax.CaseStatement"
_CaseStatement_case = Core.Name "case"
_CaseStatement_default = Core.Name "default"
data CaseValue =
CaseValue {
caseValueValue :: Expression,
caseValueStatement :: Statement}
deriving (Eq, Ord, Read, Show)
_CaseValue = Core.Name "hydra.cpp.syntax.CaseValue"
_CaseValue_value = Core.Name "value"
_CaseValue_statement = Core.Name "statement"
data IterationStatement =
IterationStatementWhile WhileStatement |
IterationStatementDo DoStatement |
IterationStatementFor ForStatement |
IterationStatementRangeFor RangeForStatement
deriving (Eq, Ord, Read, Show)
_IterationStatement = Core.Name "hydra.cpp.syntax.IterationStatement"
_IterationStatement_while = Core.Name "while"
_IterationStatement_do = Core.Name "do"
_IterationStatement_for = Core.Name "for"
_IterationStatement_rangeFor = Core.Name "rangeFor"
data WhileStatement =
WhileStatement {
whileStatementCondition :: Expression,
whileStatementBody :: Statement}
deriving (Eq, Ord, Read, Show)
_WhileStatement = Core.Name "hydra.cpp.syntax.WhileStatement"
_WhileStatement_condition = Core.Name "condition"
_WhileStatement_body = Core.Name "body"
data DoStatement =
DoStatement {
doStatementBody :: Statement,
doStatementCondition :: Expression}
deriving (Eq, Ord, Read, Show)
_DoStatement = Core.Name "hydra.cpp.syntax.DoStatement"
_DoStatement_body = Core.Name "body"
_DoStatement_condition = Core.Name "condition"
data ForStatement =
ForStatement {
forStatementInit :: ForInit,
forStatementCondition :: Expression,
forStatementIncrement :: Expression,
forStatementBody :: Statement}
deriving (Eq, Ord, Read, Show)
_ForStatement = Core.Name "hydra.cpp.syntax.ForStatement"
_ForStatement_init = Core.Name "init"
_ForStatement_condition = Core.Name "condition"
_ForStatement_increment = Core.Name "increment"
_ForStatement_body = Core.Name "body"
data ForInit =
ForInitExpression Expression |
ForInitDeclaration VariableDeclaration |
ForInitEmpty
deriving (Eq, Ord, Read, Show)
_ForInit = Core.Name "hydra.cpp.syntax.ForInit"
_ForInit_expression = Core.Name "expression"
_ForInit_declaration = Core.Name "declaration"
_ForInit_empty = Core.Name "empty"
data RangeForStatement =
RangeForStatement {
rangeForStatementType :: TypeExpression,
rangeForStatementVariable :: String,
rangeForStatementRange :: Expression,
rangeForStatementBody :: Statement}
deriving (Eq, Ord, Read, Show)
_RangeForStatement = Core.Name "hydra.cpp.syntax.RangeForStatement"
_RangeForStatement_type = Core.Name "type"
_RangeForStatement_variable = Core.Name "variable"
_RangeForStatement_range = Core.Name "range"
_RangeForStatement_body = Core.Name "body"
data JumpStatement =
JumpStatementBreak |
JumpStatementContinue |
JumpStatementReturnValue Expression |
JumpStatementReturnVoid |
JumpStatementThrow Expression
deriving (Eq, Ord, Read, Show)
_JumpStatement = Core.Name "hydra.cpp.syntax.JumpStatement"
_JumpStatement_break = Core.Name "break"
_JumpStatement_continue = Core.Name "continue"
_JumpStatement_returnValue = Core.Name "returnValue"
_JumpStatement_returnVoid = Core.Name "returnVoid"
_JumpStatement_throw = Core.Name "throw"
newtype ExpressionStatement =
ExpressionStatement {
unExpressionStatement :: Expression}
deriving (Eq, Ord, Read, Show)
_ExpressionStatement = Core.Name "hydra.cpp.syntax.ExpressionStatement"
data TypeExpression =
TypeExpressionBasic BasicType |
TypeExpressionQualified QualifiedType |
TypeExpressionTemplate TemplateType |
TypeExpressionFunction FunctionType |
TypeExpressionAuto
deriving (Eq, Ord, Read, Show)
_TypeExpression = Core.Name "hydra.cpp.syntax.TypeExpression"
_TypeExpression_basic = Core.Name "basic"
_TypeExpression_qualified = Core.Name "qualified"
_TypeExpression_template = Core.Name "template"
_TypeExpression_function = Core.Name "function"
_TypeExpression_auto = Core.Name "auto"
data BasicType =
BasicTypeVoid |
BasicTypeBool |
BasicTypeChar |
BasicTypeInt |
BasicTypeFloat |
BasicTypeDouble |
BasicTypeString |
BasicTypeAuto |
BasicTypeNamed String
deriving (Eq, Ord, Read, Show)
_BasicType = Core.Name "hydra.cpp.syntax.BasicType"
_BasicType_void = Core.Name "void"
_BasicType_bool = Core.Name "bool"
_BasicType_char = Core.Name "char"
_BasicType_int = Core.Name "int"
_BasicType_float = Core.Name "float"
_BasicType_double = Core.Name "double"
_BasicType_string = Core.Name "string"
_BasicType_auto = Core.Name "auto"
_BasicType_named = Core.Name "named"
data QualifiedType =
QualifiedType {
qualifiedTypeBaseType :: TypeExpression,
qualifiedTypeQualifier :: TypeQualifier}
deriving (Eq, Ord, Read, Show)
_QualifiedType = Core.Name "hydra.cpp.syntax.QualifiedType"
_QualifiedType_baseType = Core.Name "baseType"
_QualifiedType_qualifier = Core.Name "qualifier"
data TypeQualifier =
TypeQualifierConst |
TypeQualifierLvalueRef |
TypeQualifierRvalueRef |
TypeQualifierPointer
deriving (Eq, Ord, Read, Show)
_TypeQualifier = Core.Name "hydra.cpp.syntax.TypeQualifier"
_TypeQualifier_const = Core.Name "const"
_TypeQualifier_lvalueRef = Core.Name "lvalueRef"
_TypeQualifier_rvalueRef = Core.Name "rvalueRef"
_TypeQualifier_pointer = Core.Name "pointer"
data TemplateType =
TemplateType {
templateTypeName :: String,
templateTypeArguments :: [TemplateArgument]}
deriving (Eq, Ord, Read, Show)
_TemplateType = Core.Name "hydra.cpp.syntax.TemplateType"
_TemplateType_name = Core.Name "name"
_TemplateType_arguments = Core.Name "arguments"
data TemplateArgument =
TemplateArgumentType TypeExpression |
TemplateArgumentValue Expression
deriving (Eq, Ord, Read, Show)
_TemplateArgument = Core.Name "hydra.cpp.syntax.TemplateArgument"
_TemplateArgument_type = Core.Name "type"
_TemplateArgument_value = Core.Name "value"
data FunctionType =
FunctionType {
functionTypeReturnType :: TypeExpression,
functionTypeParameters :: [Parameter]}
deriving (Eq, Ord, Read, Show)
_FunctionType = Core.Name "hydra.cpp.syntax.FunctionType"
_FunctionType_returnType = Core.Name "returnType"
_FunctionType_parameters = Core.Name "parameters"
data Literal =
LiteralInteger IntegerLiteral |
LiteralFloating FloatingLiteral |
LiteralCharacter CharacterLiteral |
LiteralString StringLiteral |
LiteralBoolean BooleanLiteral |
LiteralNull
deriving (Eq, Ord, Read, Show)
_Literal = Core.Name "hydra.cpp.syntax.Literal"
_Literal_integer = Core.Name "integer"
_Literal_floating = Core.Name "floating"
_Literal_character = Core.Name "character"
_Literal_string = Core.Name "string"
_Literal_boolean = Core.Name "boolean"
_Literal_null = Core.Name "null"
data IntegerLiteral =
IntegerLiteralDecimal Integer |
IntegerLiteralHexadecimal String |
IntegerLiteralOctal String |
IntegerLiteralBinary String
deriving (Eq, Ord, Read, Show)
_IntegerLiteral = Core.Name "hydra.cpp.syntax.IntegerLiteral"
_IntegerLiteral_decimal = Core.Name "decimal"
_IntegerLiteral_hexadecimal = Core.Name "hexadecimal"
_IntegerLiteral_octal = Core.Name "octal"
_IntegerLiteral_binary = Core.Name "binary"
newtype FloatingLiteral =
FloatingLiteral {
unFloatingLiteral :: Double}
deriving (Eq, Ord, Read, Show)
_FloatingLiteral = Core.Name "hydra.cpp.syntax.FloatingLiteral"
newtype CharacterLiteral =
CharacterLiteral {
unCharacterLiteral :: String}
deriving (Eq, Ord, Read, Show)
_CharacterLiteral = Core.Name "hydra.cpp.syntax.CharacterLiteral"
newtype StringLiteral =
StringLiteral {
unStringLiteral :: String}
deriving (Eq, Ord, Read, Show)
_StringLiteral = Core.Name "hydra.cpp.syntax.StringLiteral"
newtype BooleanLiteral =
BooleanLiteral {
unBooleanLiteral :: Bool}
deriving (Eq, Ord, Read, Show)
_BooleanLiteral = Core.Name "hydra.cpp.syntax.BooleanLiteral"
data Vector =
Vector {
vectorElementType :: TypeExpression,
vectorElements :: [Expression]}
deriving (Eq, Ord, Read, Show)
_Vector = Core.Name "hydra.cpp.syntax.Vector"
_Vector_elementType = Core.Name "elementType"
_Vector_elements = Core.Name "elements"
data Map =
Map {
mapKeyType :: TypeExpression,
mapValueType :: TypeExpression,
mapEntries :: [MapEntry]}
deriving (Eq, Ord, Read, Show)
_Map = Core.Name "hydra.cpp.syntax.Map"
_Map_keyType = Core.Name "keyType"
_Map_valueType = Core.Name "valueType"
_Map_entries = Core.Name "entries"
data MapEntry =
MapEntry {
mapEntryKey :: Expression,
mapEntryValue :: Expression}
deriving (Eq, Ord, Read, Show)
_MapEntry = Core.Name "hydra.cpp.syntax.MapEntry"
_MapEntry_key = Core.Name "key"
_MapEntry_value = Core.Name "value"
data Set =
Set {
setElementType :: TypeExpression,
setElements :: [Expression]}
deriving (Eq, Ord, Read, Show)
_Set = Core.Name "hydra.cpp.syntax.Set"
_Set_elementType = Core.Name "elementType"
_Set_elements = Core.Name "elements"
data Optional =
Optional {
optionalValueType :: TypeExpression,
optionalValue :: (Maybe Expression)}
deriving (Eq, Ord, Read, Show)
_Optional = Core.Name "hydra.cpp.syntax.Optional"
_Optional_valueType = Core.Name "valueType"
_Optional_value = Core.Name "value"
type Identifier = String
_Identifier = Core.Name "hydra.cpp.syntax.Identifier"
data Comment =
Comment {
commentText :: String,
commentIsMultiline :: Bool}
deriving (Eq, Ord, Read, Show)
_Comment = Core.Name "hydra.cpp.syntax.Comment"
_Comment_text = Core.Name "text"
_Comment_isMultiline = Core.Name "isMultiline"
data BinaryOperator =
BinaryOperatorPlus |
BinaryOperatorMinus |
BinaryOperatorMultiply |
BinaryOperatorDivide |
BinaryOperatorModulo |
BinaryOperatorBitwiseAnd |
BinaryOperatorBitwiseOr |
BinaryOperatorBitwiseXor |
BinaryOperatorLogicalAnd |
BinaryOperatorLogicalOr |
BinaryOperatorEqual |
BinaryOperatorNotEqual |
BinaryOperatorLess |
BinaryOperatorGreater |
BinaryOperatorLessEqual |
BinaryOperatorGreaterEqual |
BinaryOperatorLeftShift |
BinaryOperatorRightShift
deriving (Eq, Ord, Read, Show)
_BinaryOperator = Core.Name "hydra.cpp.syntax.BinaryOperator"
_BinaryOperator_plus = Core.Name "plus"
_BinaryOperator_minus = Core.Name "minus"
_BinaryOperator_multiply = Core.Name "multiply"
_BinaryOperator_divide = Core.Name "divide"
_BinaryOperator_modulo = Core.Name "modulo"
_BinaryOperator_bitwiseAnd = Core.Name "bitwiseAnd"
_BinaryOperator_bitwiseOr = Core.Name "bitwiseOr"
_BinaryOperator_bitwiseXor = Core.Name "bitwiseXor"
_BinaryOperator_logicalAnd = Core.Name "logicalAnd"
_BinaryOperator_logicalOr = Core.Name "logicalOr"
_BinaryOperator_equal = Core.Name "equal"
_BinaryOperator_notEqual = Core.Name "notEqual"
_BinaryOperator_less = Core.Name "less"
_BinaryOperator_greater = Core.Name "greater"
_BinaryOperator_lessEqual = Core.Name "lessEqual"
_BinaryOperator_greaterEqual = Core.Name "greaterEqual"
_BinaryOperator_leftShift = Core.Name "leftShift"
_BinaryOperator_rightShift = Core.Name "rightShift"