aboutsummaryrefslogtreecommitdiff
path: root/interpreter/Elymas.pm
diff options
context:
space:
mode:
authorDrahflow <drahflow@gmx.de>2012-12-08 14:29:18 +0100
committerDrahflow <drahflow@gmx.de>2012-12-08 14:29:18 +0100
commit74f3f1354afe9b6fe866527a1de2a8d16d1210b8 (patch)
treeb98303d84e99ab1829410ae38317c27c911217b5 /interpreter/Elymas.pm
Initial commit
Diffstat (limited to 'interpreter/Elymas.pm')
-rw-r--r--interpreter/Elymas.pm37
1 files changed, 37 insertions, 0 deletions
diff --git a/interpreter/Elymas.pm b/interpreter/Elymas.pm
new file mode 100644
index 0000000..d82900d
--- /dev/null
+++ b/interpreter/Elymas.pm
@@ -0,0 +1,37 @@
+package Elymas;
+
+use strict;
+use warnings;
+
+require Exporter;
+our @ISA = qw(Exporter);
+our @EXPORT = qw(popInt popString);
+
+use Data::Dumper;
+
+sub popInt {
+ my ($data) = @_;
+
+ my $i = pop @$data or die "Stack underflow";
+ die "Not integer " . Dumper($i) unless $i->[1] eq 'int';
+ return $i->[0];
+}
+
+sub popString {
+ my ($data) = @_;
+
+ my $s = pop @$data or die "Stack underflow";
+ die "Not string " . Dumper($s) unless $s->[1] eq 'string';
+ return $s->[0];
+}
+
+sub popArray {
+ my ($data) = @_;
+
+ my $a = pop @$data or die "Stack underflow";
+ die "Not array: " . Dumper($a) unless ref($a->[1]) eq 'ARRAY' and $a->[1]->[0] eq 'array';
+
+ return $a->[0];
+}
+
+1;