anchor.diff:      |    '-'  cast_expression  -> ^(UNARY_MINUS   cast_expression )
       |    ('~'^ | '!'^) cast_expression
       |    SIZEOF '(' type_name ')' -> ^(SIZEOF_TYPE type_name)
  -    |    SIZEOF unary_expression  -> ^(SIZEOF_EXPRESSION unary_expression)
  +//    |    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.
  
positive.code: // 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);
  
  // This is deprecated. The nesC 1.2 manual doesn't even discuss the semantics of 'includes'
  // include_statement
  
negative.code: grammar nesC;
  
  options {
      // backtrack = true;      // Quick and dirty. Should try to remove eventually.
      // memoize   = true;      // Quick and dirty. Should try to remove eventually.
      output    = AST;
  }
  
  