anchor.diff:   | boolean_literal
    | '(' compilation_condition ')'
    | '!' compilation_condition
  - | compilation_condition '&&' compilation_condition
  - | compilation_condition '||' compilation_condition
  +// | compilation_condition '&&' compilation_condition TODO: conflicting operator
  +// | compilation_condition '||' compilation_condition
    ;
   
   platform_condition
  
positive.code: arrow_operator	: {SwiftSupport.isOperator(_input,"->")}?  '-' '>' ;
  same_type_equals: {SwiftSupport.isOperator(_input,"==")}? '=' '=' ;
  
  /**
   "If an operator has whitespace around both sides or around neither side,
   it is treated as a binary operator. As an example, the + operator in a+b
  
negative.code: function_body : code_block  ;
  parameter_clause : '(' ')' |  '(' parameter_list ')'  ;
  parameter_list : parameter (',' parameter)*  ;
  parameter : external_parameter_name? local_parameter_name type_annotation? variadic_parameter_notation? default_argument_clause? ;
  external_parameter_name : identifier ;
  local_parameter_name : identifier ;
  default_argument_clause : assignment_operator expression  ;
  