the rules -- precedences are also default


  
  top: program { $$ = $1; }
  
  program : /*  empty  */      { $$ = mkterm("#empty:"); }      
          | program  any       { $$ = mkterm("#;:",$1,$2); }
          | program  error
            { $2 = mkterm("#error:", mkterm(_error)); }
            any { 
            term* err = mkterm(strof($4));
            term* msg = $2; 
            $$ = mkterm("#;:",$1,mkterm("#error:",err,msg));
            }
          ;
  
  any : item { if (!in_obj) return $1; }
  
  

slide: the rules -- precedences are also default