anchor.diff:  // declarations and the interface|component. This null token is awkward.
   //
   nesC_file
  -    :    translation_unit? interface_definition -> ^(FILE translation_unit? interface_definition)
  -    |    translation_unit? component            -> ^(FILE translation_unit? component);
  +    :    translation_unit? large_scale_construct
  +             -> ^(FILE translation_unit? large_scale_construct);
  +
  +large_scale_construct
  +    :    interface_definition
  +    |    component;
   
   // This is deprecated. The nesC 1.2 manual doesn't even discuss the semantics of 'includes'
   // include_statement
  
positive.code:     |    '-'  cast_expression  -> ^(UNARY_MINUS   cast_expression )
      |    ('~'^ | '!'^) cast_expression
      |    SIZEOF '(' type_name ')' -> ^(SIZEOF_TYPE type_name)
      |    SIZEOF unary_expression  -> ^(SIZEOF_EXPRESSION unary_expression)
      |    postfix_expression;
      
  // It is convenient to put the cast_expression first in the AST because that way the various
  // tokens composing the type_name do not have to be wrapped in a pseudo-token. Note that the
  // expression should be entirely contained inside its own tree.
  
negative.code: argument_expression_list
      :    assignment_expression (','! assignment_expression)*;
      
  // With SIZEOF unary_expression there's a non-LL(*) decision that arises because unary_expression
  // can expand as postfix_expression -> primary_expression -> '(' expression ')'. In other words
  // the grammar has problems telling sizeof(int) from sizeof(x+y). Applying sizeof to expressions
  // is unusual. I'll just make it illegal for now.
  //
  unary_expression
      :    '++' unary_expression -> ^(PRE_INCREMENT unary_expression)
      |    '--' unary_expression -> ^(PRE_DECREMENT unary_expression)
  