line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Language::Zcode::Translator;
|
2
|
|
|
|
|
|
|
|
3
|
1
|
|
|
1
|
|
778
|
use strict;
|
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
38
|
|
4
|
1
|
|
|
1
|
|
5
|
use warnings;
|
|
1
|
|
|
|
|
1
|
|
|
1
|
|
|
|
|
35
|
|
5
|
|
|
|
|
|
|
|
6
|
|
|
|
|
|
|
# XXX For some reason, Constants & Memory aren't getting imported
|
7
|
|
|
|
|
|
|
# (But importing %Constants into PlotzParse works!)
|
8
|
1
|
|
|
1
|
|
475
|
use Language::Zcode::Util qw(%Constants @Memory);
|
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
153
|
|
9
|
1
|
|
|
1
|
|
624
|
use Language::Zcode::Translator::Generic;
|
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
156
|
|
10
|
|
|
|
|
|
|
|
11
|
|
|
|
|
|
|
=head1 Language::Zcode::Translator
|
12
|
|
|
|
|
|
|
|
13
|
|
|
|
|
|
|
This class is just a factory. It figure out which subclass of
|
14
|
|
|
|
|
|
|
Language::Zcode::Translator::Generic we want to use. It then
|
15
|
|
|
|
|
|
|
loads that class, and creates a translator object of that class.
|
16
|
|
|
|
|
|
|
|
17
|
|
|
|
|
|
|
A translator object has methods to translate Z-code into a given language.
|
18
|
|
|
|
|
|
|
See L.
|
19
|
|
|
|
|
|
|
|
20
|
|
|
|
|
|
|
=cut
|
21
|
|
|
|
|
|
|
|
22
|
|
|
|
|
|
|
my %known_languages = map {$_=>1} qw(Perl PIR XML);
|
23
|
|
|
|
|
|
|
|
24
|
|
|
|
|
|
|
sub new {
|
25
|
1
|
|
|
1
|
0
|
16
|
my ($class, $language, @arg) = @_;
|
26
|
|
|
|
|
|
|
# XXX I'll bet there's some fancy way of telling if a class exists.
|
27
|
|
|
|
|
|
|
# E.g., test $class->can("new")
|
28
|
1
|
50
|
|
|
|
6
|
die"Unknown language $language\n" unless exists $known_languages{$language};
|
29
|
1
|
|
|
|
|
4
|
my $new_class = "Language::Zcode::Translator::$language";
|
30
|
|
|
|
|
|
|
# Include the necessary translator code or die()
|
31
|
1
|
50
|
|
1
|
|
3460
|
eval "use $new_class"; die "$@\n" if $@;
|
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
24
|
|
|
1
|
|
|
|
|
109
|
|
|
1
|
|
|
|
|
8
|
|
32
|
1
|
|
|
|
|
7
|
return new $new_class @arg;
|
33
|
|
|
|
|
|
|
}
|
34
|
|
|
|
|
|
|
|
35
|
|
|
|
|
|
|
1;
|
36
|
|
|
|
|
|
|
|