anchor.diff:    : constant_expression
     ;
   
  +statement_expression
  +  : expression LT_EQ delay_or_event_control? expression  // non-blocking assignment
  +  | expression EQ delay_or_event_control expression      // blocking assignment
  +  | expression EQ dynamic_array_new                      // dynamic array init
  +  | expression EQ class_new                              // object init
  +  | expression assignment_operator expression            // variable assignment
  +  | expression
  +  ;
  +
   expression
     : term (
           binary_operator attribute_instances term
  
positive.code: // TODO bug #16, primary and method_call_root are mutually left-recursive in spec grammar.
  // FIXME method call root can be any expression really. E.g. obj.getchildren()[0].method();
  // See also: http://www.eda.org/svdb/view.php?id=1480
  // Method calls really should be handled as postfix expressions, but that would mean rewriting the
  // expression rules. Trying to stick close the the spec here, sigh.
  method_call_root
    : identifier (LPAREN list_of_arguments RPAREN)?
    ;
  
negative.code: 
  // ESL statement
  statement_item
    : procedural_continuous_assignment SEMI
    | case_statement
    | conditional_statement
    | disable_statement
  