drkcore

2009/04/14 21:20:33

perlでread-eval-print-loop

クォートされたS式を受け取って文字列を返すものをつくってみた。

use Term::ReadLine;
my $term = new Term::ReadLine 'Simple LISP REPL';
my $prompt = "CL-USER> ";
my $OUT = $term->OUT || \*STDOUT;

while ( defined ($_ = $term->readline($prompt)) ) {
  my $res = $_;
  warn $@ if $@;
  $res =~ s/^\'//;
  print $OUT $res, "\n" unless $@;
}

実行

$ perl s.pl
CL-USER> '(+ 1 2)
(+ 1 2)
CL-USER>

という手抜き。

だが、Readerを実装して処理させれば良いのであろう。

Comments