From 347a635d04df610e1a5a56a46eddf071533a13ac Mon Sep 17 00:00:00 2001 From: Drahflow Date: Mon, 14 Jan 2013 12:19:52 +0100 Subject: More performance. --- interpreter/Elymas.pm | 25 +++++++++++++------------ interpreter/ElymasGlobal.pm | 4 ++++ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/interpreter/Elymas.pm b/interpreter/Elymas.pm index 2f81365..20f8c36 100644 --- a/interpreter/Elymas.pm +++ b/interpreter/Elymas.pm @@ -52,23 +52,24 @@ sub arrayAccess { sub interpretCode { my ($code, $data, $scope) = @_; - foreach my $t (@$code) { - eval { - if($t->[1] eq 'tok') { - die "unexpanded token in interpretCode"; - } elsif(ref($t->[1]) eq 'ARRAY' and $t->[1]->[0] eq 'func') { + my $t; + + eval { + foreach my $tt (@$code) { + $t = $tt; + if(ref($t->[1]) eq 'ARRAY' and $t->[1]->[0] eq 'func') { execute($t, $data, $scope); } else { push @$data, $t; } - }; - if($@) { - #print "Code: " . Dumper($tokens); - #print "Scope: " . Dumper($scope); - print "Stack: " . Dumper($data); - print "Token: " . Dumper($t); - die; } + }; + if($@) { + #print "Code: " . Dumper($tokens); + #print "Scope: " . Dumper($scope); + print "Stack: " . Dumper($data); + print "Token: " . Dumper($t); + die; } } diff --git a/interpreter/ElymasGlobal.pm b/interpreter/ElymasGlobal.pm index 8fda948..5384cb5 100644 --- a/interpreter/ElymasGlobal.pm +++ b/interpreter/ElymasGlobal.pm @@ -49,6 +49,8 @@ our $global = { unshift @code, $t; }; + die "unexpanded token in quoted code" if grep { $_->[1] eq 'tok' } @code; + if($quoted) { push @$data, [sub { my ($data, $refScope) = @_; @@ -82,6 +84,8 @@ our $global = { unshift @code, $t; }; + die "unexpanded token in quoted code" if grep { $_->[1] eq 'tok' } @code; + if($quoted) { push @$data, [sub { my ($data, $refScope) = @_; -- cgit v1.2.3