aboutsummaryrefslogtreecommitdiff
path: root/language/functions.rst
blob: 86d11440ae1c8a623005261f7af634c605abdc5f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Functions
---------

.. crowbar:element:: FunctionDeclaration <- FunctionSignature ';'

    A function declaration defines the return type, name, and arguments of a function without specifying its behavior.
    It is generally used as part of an API boundary.

.. crowbar:element:: FunctionDefinition <- FunctionSignature Block

    A function definition provides the actual behavior of a function, which may have been declared previously or may not.

    .. todo::

        define function linkage/exportedness

.. crowbar:element:: FunctionSignature <- Type identifier '(' SignatureArguments? ')'
                     SignatureArguments <- Type identifier (',' Type identifier)* ','?
    
    A function signature specifies the return type, name, and arguments of a function.