anchor.diff:  
   atom
       :   NAME
  +        -> VARIABLENAME[$NAME, newVarString($NAME.text).c_str()]
       |   INT
       |   FLOAT
       |   LBRACKET! expression RBRACKET!
  
positive.code: }
  
  @parser::members {
      // converts varname into a string formatted as a variable name
      // (lower_case_with_underscores)
      std::string newVarString(pANTLR3_STRING varname) {
  
negative.code: 
  attr_variable_name
      :   NAME_NAME ATTR_EQ ATTR_VALUE_START t=NAME ATTR_VALUE_END
          -> VARIABLENAME[$t, newVarString($t.text).c_str()]
      ;
  
  attr_type_name
  