12 Compile Units, Projects and Solutions

12.1 Compile Units

12.1.1 Syntax

compile‑unit → namespace‑content
namespace‑content → using‑directives definitions
using‑directives → using‑directive*
using‑directive → using‑alias‑directive | using‑namespace‑directive
using‑alias‑directive → using identifier = qualified‑id ;
using‑namespace‑directive → using qualified‑id ;
definitions → definition*
definition → namespace‑definition | function‑definition | class‑definition | interface‑definition | enum‑type‑definition | constant‑definition | delegate‑definition | class‑delegate‑definition |
namespace‑definition → namespace qualified‑id { namespace‑content }
function‑definition → function
class‑definition → class
interface‑definition → interface
enum‑type‑definition → enumerated‑type
constant‑definition → constant
delegate‑definition → delegate
class‑delegate‑definition → class‑delegate

12.2 Projects

12.2.1 Syntax

project → project project‑name ;
project‑declaration*
project‑name → id‑char‑sequence ( . id‑char‑sequence )*
project‑declaration → reference‑declaration | source‑file‑declaration | target‑declaration
reference‑declaration → reference file‑path ;
source‑file‑declaration → source file‑path ;
target‑declaration → target = (program | library) ;
file‑path → < [^ >]+ >

12.3 Solutions

12.3.1 Syntax

solution → solution solution‑name ;
solution‑declaration*
solution‑name → id‑char‑sequence ( . id‑char‑sequence )*
solution‑declaration → solution‑project‑declaration
solution‑project‑declaration → project file‑path ;