diff options
author | Melody Horn <melody@boringcactus.com> | 2020-10-31 21:59:00 -0600 |
---|---|---|
committer | Melody Horn <melody@boringcactus.com> | 2020-10-31 21:59:00 -0600 |
commit | 5af481d62df80d8be3f5835042d30372ef9cbe04 (patch) | |
tree | 6d995adefedd90fd3db269f898a527313a37af10 /language/type-definition.rst | |
parent | c916253f17b329550250549ea0aef4b67ced026f (diff) | |
download | spec-5af481d62df80d8be3f5835042d30372ef9cbe04.tar.gz spec-5af481d62df80d8be3f5835042d30372ef9cbe04.zip |
define and annotate some language elements
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 |