anchor.diff:  classRequirement: 'class' ;
   
   // ------ Build Configurations (Macros) -------
  -// Used http://apple.co/1M4GNVf as reference
  -
  -macroDeclaration: '#if' macroConditional statements? macroElseIfClause* macroElseClause? '#endif' ;
  -macroElseIfClause: '#elseif' macroConditional statements? ;
  -macroElseClause: '#else' statements? ;
  -macroConditional: buildConfigurations | conditionClause ; // currently unclear exactly what a macro conditional could be
  -buildConfigurations: buildConfiguration (('&&' | '||') buildConfigurations)? ;
  -buildConfiguration: '!'? macroFunction '(' macroArguments ')' ;
  -macroFunction: 'os' | 'arch' ;
  -macroArguments: macroArgument (',' macroArgument)* ;
  -macroArgument: 'OSX' | 'iOS' | 'watchOS' | 'x86_64' | 'arm' | 'arm64' | 'i386' ;
  +
  +compilerControlStatement: buildConfigurationStatement | lineControlStatement ;
  +buildConfigurationStatement: '#if' buildConfiguration statements? buildConfigurationElseIfClauses? buildConfigurationElseClause? '#endif' ;
  +buildConfigurationElseIfClauses: buildConfigurationElseIfClause+ ;
  +buildConfigurationElseIfClause: '#elseif' buildConfiguration statements? ;
  +buildConfigurationElseClause: '#else' statements? ;
  +
  +buildConfiguration: platformTestingFunction | identifier | booleanLiteral
  + | '(' buildConfiguration ')'
  + | '!' buildConfiguration
  + | buildConfiguration ('&&' | '||') buildConfiguration
  + ;
  +
  +platformTestingFunction: 'os' '(' operatingSystem ')' | 'arch' '(' architecture ')' ;
  +operatingSystem: 'OSX' | 'iOS' | 'watchOS' | 'tvOS' ;
  +architecture: 'i386' | 'x86_64' | 'arm' | 'arm64' ;
  +
  +lineControlStatement: '#line' (lineNumber fileName)? ;
  +lineNumber: integerLiteral ;
  +fileName: StringLiteral ;
   
   // ---------- Lexical Structure -----------
   
  
positive.code: 
  // GRAMMAR OF A LITERAL
  
  literal : numericLiteral | StringLiteral | BooleanLiteral | NilLiteral ;
  
  // GRAMMAR OF AN INTEGER LITERAL
  
negative.code:  | extensionDeclaration ';'?
   | subscriptDeclaration ';'?
   | operatorDeclaration ';'?
   | compilerControlStatement
   ;
  
  declarations : declaration declarations? ;
  