From 92b6155a1c3a209936dddebb8bf3372ebee78f94 Mon Sep 17 00:00:00 2001 From: Drahflow Date: Mon, 2 Sep 2013 11:27:01 +0200 Subject: I CAN HAZ TCP/IP CONNECTION! Very crappy HTTP client: "drahflow.name:80" net .tcp .connect "+" via "GET / HTTP/1.0\n\n" +writeall 4096 +read dump --- interpreter/ElymasGlobal.pm | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'interpreter') diff --git a/interpreter/ElymasGlobal.pm b/interpreter/ElymasGlobal.pm index 321a10d..1d1770d 100644 --- a/interpreter/ElymasGlobal.pm +++ b/interpreter/ElymasGlobal.pm @@ -168,6 +168,51 @@ EOPERL EOPERL compileCode(\@code) . <<'EOPERL'; }; +EOPERL + $sub = eval($sub); + push @$data, [$sub, ['func', 'compiled sub (2)']]; + weaken($sub); + } + }, ['func', "}'"], 'quote'], + "}\"" => [sub { + my ($data) = @_; + + --$quoted; + + my @code; + + while(1) { + my $t = pop @$data or die "Stack underflow"; + last if($t->[1] eq 'tok' and $t->[0] eq '{'); + + unshift @code, $t; + }; + + die "unexpanded token in quoted code" if grep { $_->[1] eq 'tok' } @code; + + if($quoted) { + my $sub = <<'EOPERL' . + sub { + my ($data) = @_; + my $s = sub { + my ($data, $lscope) = @_; +EOPERL + compileCode(\@code) . <<'EOPERL'; + }; + push @$data, [$s, ['func', 'compiled sub (1)']]; + weaken($s); + } +EOPERL + $sub = eval($sub); + push @$data, [$sub, ['func', 'func-quoted'], \@code]; + weaken($sub); + } else { + my $sub = <<'EOPERL' . + sub { + my ($data, $lscope) = @_; +EOPERL + compileCode(\@code) . <<'EOPERL'; + }; EOPERL $sub = eval($sub); push @$data, [$sub, ['func', 'compiled sub (2)']]; -- cgit v1.2.3