On Monday 08 September 2003 12:08 pm, dblack / superlink.net wrote:
>
> Namely, the idea of an extensible %_{} syntax, so that one could
> define the behavior of %y{}, %x{}, and so on from within a Ruby
> program or extension.
>
> Perhaps someone steeped in the ways of the parser could comment on
> how hard this would be (up to and including impossible).
>

this wouldn't be much of a problem.  right now there's a 'default' case on a 
switch in parse.y:

          default:
        yyerror("unknown type of %string");
        return 0;

establish a USERSTR set of tokens and node types.  (you can follow XSTR or 
DXSTR around to see how.)  Then, in rb_eval, add a case for NODE_MISCSTR, 
which could check for the character in a global hash, passing the string 
contents into a proc associated with that character.  return the result of 
the proc call from rb_eval.

the %y{...} hack could become:

   add_delimited_prefix( 'y' ) do |str|
      YAML::load( str )
   end

_why