4.2. Source Files

HeaderFile <- IncludeStatement* HeaderFileElement+
HeaderFileElement <- TypeDefinition / FunctionDeclaration / VariableDefinition / VariableDeclaration

A Crowbar header file defines an API boundary, either at the surface of a library or between pieces of a library or application. IncludeStatements can only appear at the beginning of the header file, and header files cannot define behavior directly. Conventionally, a header file has a .hro file extension.

ImplementationFile <- IncludeStatement* ImplementationFileElement+
ImplementationFileElement <- TypeDefinition / VariableDefinition / FunctionDefinition

A Crowbar implementation file defines the actual behavior of some piece of a library or application. It can also define internal types, functions, and variables. IncludeStatements can only appear at the beginning of the implementation file. Conventionally, an implementation file has a .cro file extension.