diff options
Diffstat (limited to 'language/type-definition.rst')
-rw-r--r-- | language/type-definition.rst | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/language/type-definition.rst b/language/type-definition.rst new file mode 100644 index 0000000..02616b8 --- /dev/null +++ b/language/type-definition.rst @@ -0,0 +1,23 @@ +Defining Types +-------------- + +.. crowbar:element:: TypeDefinition <- StructDefinition / EnumDefinition / UnionDefinition + + Crowbar has three different kinds of user-defined types. + +.. crowbar:element:: StructDefinition <- 'struct' identifier '{' VariableDeclaration+ '}' ';' + + A ``struct`` defines a composite type with several members. + + .. todo:: + + define struct layout in memory + +.. crowbar:element:: EnumDefinition <- 'enum' identifier '{' EnumMember (',' EnumMember)* ','? '}' ';' + EnumMember <- identifier ('=' Expression)? + + An ``enum`` defines a type which can take one of several specified values. + + .. todo:: + + define enum value assignment, type-related behavior |