beginnings of a shell prototype
[scpubgit/DX.git] / bin / protoshell
CommitLineData
88eac4d2 1use strictures 2;
2use Module::Runtime qw(use_module);
3use DX::Utils qw(dict deparse);
4use Devel::Dwarn;
5BEGIN { *u = \&use_module }
6
7my $scope = u('DX::Scope')->new(
8 predicates => {
9 map +(
10 $_ => u('DX::Predicate::'.join('', map ucfirst, split '_', $_))->new
11 ), qw(eq member_at is_dict)
12 },
13 globals => dict(),
14 locals => [],
15);
16
17my $exp = u('DX::Expander')->new;
18
19my $tcl = u('Tcl')->new;
20
21foreach my $pred (keys %{$scope->predicates}) {
22 $tcl->CreateCommand($pred => sub {
23 my (undef, undef, undef, @args) = @_;
24 Dwarn [ $pred, $exp->expand_args(@args) ];
25 });
26}
27
28my $rl = u('Caroline')->new;
29
30while (my $line = $rl->readline('$ ')) {
31 $tcl->Eval($line);
32}