aboutsummaryrefslogtreecommitdiff
path: root/language/type-definition.rst
diff options
context:
space:
mode:
Diffstat (limited to 'language/type-definition.rst')
-rw-r--r--language/type-definition.rst23
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