NAME

P6C::IMCC::ExtRegex::CodeGen

SUMMARY

Subclass of Regex::Rewrite (found in languages/regex/lib) for generating code that requires Perl6-specific functionality.

Regex::Rewrite calls methods named rewrite_X for every tree opcode X generated by the parser or adapter. (see P6C::IMCC::ExtRegex::Adapter). Each rewrite method must return an array of list ops implementing the "operation" X.

FUNCTIONS

lop

Shortcut for creating a new list op.

otherop

Create a passthru op that inserts a PIR expression directly into the output stream.

new_local

Create a new local variable. Mainly just dispatches to P6C::IMCC::add_localvar, but also make the variable unique. Uniquer. Um... something.

The intent is to create a variable that is local to the currently-being-rewritten rule match. The reason why it can't just bounce over to the P6C routine is because we could generate multiple rule matches within one subroutine, so we need to ensure that their local variables do not collide.

rewrite_string

Match a Perl6 string variable. $atom is a Node corresponding to the string var to match (it will have $atom->var called on it.)

rewrite_array_literal

Match a Perl6 array $array by doing an exact match on each element of the array. Uses rewrite_dynamic_alternate, defined in the superclass Regex::Rewrite.

rewrite_call

Call a subrule. $rule is a P6C::rx_call.