[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: another take on hackers and painters

I am lowly perl minion and this is a question better addressed by the
gods, however:

Perl has source filters.  This is a special kind of filter that
modifies the source after it is loaded into memory and before it
reaches the parser.  One can do whatever translation one wishes
provided the translation results in correct perl code.

So modules such as the following exist:

use Filter::cpp;
#define FOO 1
#ifdef FOO
print "fooing";
print "baring";


use Rot13;
cevag "uryyb serq\a" ;

A source filter that provides a scheme like syntax for perl would be
straightforward if one does not in fact exist already.


Michael Vanier <mvanier@cs.caltech.edu> writes:

> I'm glad you brought this up.  For those of us who aren't perl gurus, can
> you please explain to us in as little space as possible how the hell perl
> does this kind of thing?  Is the perl lexer/parser dynamically hackable or
> something?  Would it be possible to write a scheme-like syntax for perl if
> one was so inclined?  If not, where are the lines drawn?
> I'm wondering if perl has the same kind of power as, say, ocamlp4 gives to
> ocaml, or if it's doing something completely different.
> Really curious,
> Mike
>> From: Jasvir Nagra <jas@cs.arizona.edu>
>> Date: Wed, 21 May 2003 08:43:22 -0700
>> Dan Sugalski <dan@sidhe.org> writes:
>> > 2) If the parser saw 1 + three in the code stream it wouldn't do the
>> > math, so I'd generally assume that 1 + "three" wouldn't either.
>> >
>> > Both statements are language-local--I wouldn't be surprised to find a
>> > language that allowed "three" either as a string constant or bareword
>> > to translate to the number three. I'd expect it wouldn't be as useful
>> #!/usr/bin/perl -l
>> use Lingua::Romana::Perligata;
>> addementum tres tum 1 egresso scribe.
>> addementum tres tum unum egresso scribe.
>> addementum 3 tum 1 egresso scribe.
>> -- 
>> Jasvir Nagra
>> http://www.cs.auckland.ac.nz/~jas

Jasvir Nagra