Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

Ovid (2709)

  (email not shown publicly)
AOL IM: ovidperl (Add Buddy, Send Message)

Stuff with the Perl Foundation. A couple of patches in the Perl core. A few CPAN modules. That about sums it up.

Journal of Ovid (2709)

Saturday May 14, 2005
03:27 PM

Parrot Languages -- Prolog?

[ #24691 ]

Today I played around a bit with the Parrot languages. Regrettably, the documentation on them seems a bit, er, lacking. It would be nice to find a more straightforward guide to converting simple languages. The Scheme example seemed the most straightforward and even that has documentation errors and is incomplete. I've read through Sugalski's Building a Parrot Compiler, but regrettably, I can't use Perl 5 to boostrap this because in Prolog, the code and the data are pretty much the same thing and the code needs to be able to parse Prolog and possibly modify itself at runtime. Thus, I think my parser needs to be in Parrot.

After a bit of research, I think I've determined my main obstacle for porting AI::Prolog to Parrot. Specifically, I can't just do a straight code transformation. A machine must be written in Parrot and higher level "logic opcodes" must be available for a Prolog interface to call. That, of course, is exactly how the Warren Abstract Machine does things. I need a six-month sabbatical. Damn.

In other news, sitting on my hard-drive now is a version of AI::Prolog with anonymous variables working. Previously, you had to make up variable names for every variable, even if you didn't need it. That's no longer a requirement. However, it did show the parser limitations again. I have to make things aware of their context and a recursive descent parser that inches through, one character at a time doesn't do that too well. However, it does appear to work despite being a hack. Internally these are regular variables but they assign unique names for you. However, this still means the engine tries to unify them. What I really need is an anonymous variable class which doesn't unify with anything. That would be much cleaner and faster.

And what I just realized is that not only am I sitting here talking about writing a compiler for a language, I now know how to go about it, albeit clumsily. Wow. I feel a bit weird about that though I'm not quite sure why.

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.