anchor.diff:  serial_start: 'serial' { obj->serial(true); } ;
   parallel_start: 'parallel' { obj->parallel(true); } ;
   
  -serial: serial_start '{' ( comment | act | tag | parser )+ '}'
  +spinc: (comment)* ( act | tag | parser ) ( act | tag | parser | comment )* ;
  +
  +serial: serial_start '{' spinc '}'
           { obj->serial(false); } ;
   
  -parallel: parallel_start '{' ( comment | act | tag | parser )+ '}'
  +parallel: parallel_start '{' spinc '}'
           { obj->parallel(false); } ;
   
   act: ( 'action' astr | 'input' istr | 'output' ostr ) {
  
positive.code: #include <stdlib.h>
  #include <string>
  #include <stdio.h>
  #include "aalang.hh"
  #include "aalang_cpp.hh"
  #include "aalang_java.hh"
  #include "aalang_py.hh"
  
  std::string result("");
  aalang* obj=NULL;
  
  typedef struct _node {
    std::string* str;
  } node;
  #define D_ParseNode_User node
  std::vector<std::string> aname;
  
  bool adapter,body,guard;
  
negative.code: pop:  'pop' '{' bstr '}' {
              obj->set_pop ($2.str,$n2.start_loc.pathname,$n2.start_loc.line,$n2.start_loc.col); } ;
  
  language: language_kw cpp    { if (!obj) obj=new aalang_cpp  ; obj->set_parser((Parser*)_parser); } starter ';'? |
            language_kw java   { if (!obj) obj=new aalang_java ; obj->set_parser((Parser*)_parser); } starter ';'? |
            language_kw python { if (!obj) obj=new aalang_py   ; obj->set_parser((Parser*)_parser); } starter ';'? ;
  
  language_kw:  'language' | 'language:';
  
  