     name>> % " [ dup ] " %
     " | " %
     %  
-    " ]" %     
+    " nip ]" %     
   ] "" make ;
 
 M: object build-locals ( code ast -- )

  dup infer {
    { [ dup (( a -- b )) effect<= ] [ drop ] }
    { [ dup (( -- b )) effect<= ] [ drop [ drop ] prepose ] }
    [ "Bad effect: " swap effect>string append throw ]
  } cond ;
 
M: ebnf-action (transform) ( ast -- parser )

        ] 2each
        " | " %
        %  
        " nip ]" %     
    ] "" make 
  ] if ;

