I've just checked in the modified Punie code that runs on the improved
compiler tools. I sent various comments to the list as I went through
the port, so I won't repeat them here. A few more comments from the end
of the porting process:
- I like the way PAST-pm handles conditionals. It makes for simple
transformations at the PAST stage (especially if conditionals are parsed
recursively).
- I like the way PAST-pm handles comma operators.
- The modifications to HLLCompiler mean the core compiler script for
Punie is quite short. Very nice.
- I ran into one bit of strangeness with the assignment operator on
simple strings (it was generating an 'assign' opcode with 3 arguments
for the source code "$x = 'test'"). I solved it by setting 'pasttype' to
'assign', but now the generated code is unnecessarily calling the
'clone' opcode (e.g. "clone $P10, $P10"). I'll come back and look at it
later.
- The old Punie was loading a library of builtin functions in the 'main'
routine of every generated Perl 1 script. I haven't figured out how to
do that yet in the new PAST, which means that I can only run Perl 1
scripts interpreted. They fail when pre-compiled to .pir files because
the builtins aren't loaded.
I didn't delete the POST implementation from languages/punie/lib,
because IIRC, it was being used by other language implementations. I'll
come back and delete it after I hear that anyone who was using it has
moved to the new POST.
Many thanks to Patrick for all the work he's put into PAST-pm and
HLLCompiler. They're a huge step of progress.
Allison