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.