Mitäs mieltä ootte tästä tulkista, joka on perlillä tehty?
itse tulkattava koodi löytyy viestin lopusta.
#!/usr/bin/perl -w use strict; my $fp = "default.oippa"; if ($ARGV[0]) { $fp = $ARGV[0]; } my $pphp = 0; my @filef = &openf($fp); foreach my $file (@filef) { chomp($file); next if ($file =~ /^\s*\#/); next if ($file =~ /^\s*$/); if ($file =~ /^\s*\!oippa\s*$/) { $pphp = 1; } if ($pphp eq 1) { my @com = split(/;/, $file); foreach my $comi (@com) { if ($comi =~ /^\s*if\s*(.*)\s(.*)\s=>\s*(.*)\s*$/ig) { if ($1 eq $2) { my @elsecom = split(/:/,$3); foreach my $elsec (@elsecom) { &commands($elsec); } } } else { &commands($comi); } } } if ($file =~ /^\s*\?oippa\s*$/) { $pphp = 0; } } sub commands { if ($_[0] =~ /^\s*print\s\s*"(.*)"\s*$/ig) { print $1; } if ($_[0] =~ /^\s*endl\s*$/ig) { print "\n"; } if ($_[0] =~ /^\s*echo\s\s*"(.*)"\s*$/ig) { print $1; } } sub openf { my @farray; open(FILE, $_[0]); @farray = <FILE>; close(FILE); return @farray; }
tulkattava koodi:
!oippa #tulostetaan hello world! echo "hello world!"; endl if 1 1 => echo "1 on 1": endl ?oippa tähän voi sepustaa ihan mitä lystää, jota ei suoriteta... !oippa endl; echo "jee"; endl ?oippa
eli tulostaa:
lainaus:
hello world!
1 on 1jee
Ehkä hieman rajoittunut, mutta aika pienellä koodimäärällä tuo näyttää onnistuvan. Kommentointi ainakin niin laiskaa, että Perliä osaamattoman on paha saada mitään tolkkua.
Pistä tavoitteeksi sama taso kuin tässä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.