aboutsummaryrefslogtreecommitdiff
path: root/language/type-definition.rst
blob: 02616b8f6a3d0afe4b924a9c232bb2b1cfaff1fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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