anchor.diff:              obj->set_name($2.str);
           } ;
   
  -tag: 'tag' tstr '{' guard '}' { obj->next_tag(); };
  +tag: 'tag' tstr '{' comment* guard  comment* '}' { obj->next_tag(); };
  +
  +itag: 'new_tag' tstr '{' implicit_guard '}' { obj->next_tag(); };
   
   tstr:   string          {
               obj->set_tagname($0.str);
  
positive.code: starter: |
          '{' bstr '}' { obj->set_starter($1.str); };
  
  python: 'python' | 'py';
  
  namestr: unquoted_string {
              $$.str=$0.str; // I'm too lazy to figure out why this can't be returned in $0
  
negative.code: }
  }
  
  aal: aal_start header+ ( act | tag | itag | comment )* '}' ;
  
  aal_start: 'aal' string '{' language {
              obj->set_namestr($1.str);
          } ;
  
  header: variables | istate | push | pop | comment;
  
  comment: '#' "[^\n]*" {} ;
  
  act: 'action' astr '{' comment* guard comment* body comment* adapter comment* '}' {
              obj->next_action();
          };
  
  astr:   string          {
              obj->set_name($0.str);
  