Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
A better AST dumper
Placeholder for on based on slast syntax.
  • Loading branch information
cognominal committed Sep 7, 2015
1 parent e0bf056 commit d9b1712
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 7 deletions.
6 changes: 5 additions & 1 deletion src/QAST/IVal.nqp
Expand Up @@ -20,5 +20,9 @@ class QAST::IVal is QAST::Node {
method evaluate_unquotes(@unquotes) {
self
}
method dump_extra_node_info() { ~$!value }

method dump_extra_node_info() {
my $name := self.named;
$name ?? ":$name\($!value)" !! ~$!value;
}
}
6 changes: 5 additions & 1 deletion src/QAST/NVal.nqp
Expand Up @@ -21,5 +21,9 @@ class QAST::NVal is QAST::Node {
self
}

method dump_extra_node_info() { ~$!value }
method dump_extra_node_info() {
my $name := self.named;
$name ?? ":$name\(~$!value)" !! ~$!value;
}

}
9 changes: 8 additions & 1 deletion src/QAST/Node.nqp
Expand Up @@ -105,8 +105,14 @@ class QAST::Node {
unless nqp::defined($indent) {
$indent := 0;
}
my $class-name := nqp::substr(self.HOW.name(self), 6);
# get rid of the "+{QAST::SpecialArg}", 19 chars
# assumes no other roles.
# IVal, NVal and SVal, sprints the "pair"
my $index := nqp::index($class-name, '+');
$class-name := nqp::substr($class-name, 0, nqp::chars($class-name)-19) if $index > 0;
my @chunks := [
nqp::x(' ', $indent), '- ', self.HOW.name(self),
nqp::x(' ', $indent), '- ', $class-name
];
my $extra := self.dump_extra_node_info();
if nqp::chars($extra) {
Expand All @@ -125,6 +131,7 @@ class QAST::Node {
return join('', @chunks);
}


method dump_children(int $indent, @onto) { }

method dump_extra_node_info() { '' }
Expand Down
6 changes: 5 additions & 1 deletion src/QAST/SVal.nqp
Expand Up @@ -20,7 +20,11 @@ class QAST::SVal is QAST::Node {
method evaluate_unquotes(@unquotes) {
self
}

method dump_extra_node_info() {
nqp::escape($!value);
my $s := nqp::escape($!value);
my $name := self.named;
$name ?? ":$name\<$s>" !! $s;
}

}
6 changes: 4 additions & 2 deletions src/QAST/Var.nqp
Expand Up @@ -42,7 +42,9 @@ class QAST::Var is QAST::Node does QAST::Children {
}

method dump_extra_node_info() {
my $info := nqp::isnull_s($!name) ?? $!scope !! "$!scope $!name";
nqp::isnull_s($!decl) ?? $info !! "$info :decl($!decl)"
my $name := self.named;
$name := nqp::chars($name) ?? ":$name\<$!name>" !! ~$!name;
my $info := nqp::isnull_s($!name) ?? $!scope !! "$!scope $name";
nqp::chars($!decl) ?? "$info :decl($!decl)" !! $info
}
}
5 changes: 4 additions & 1 deletion src/QAST/WVal.nqp
Expand Up @@ -24,6 +24,9 @@ class QAST::WVal is QAST::Node does QAST::CompileTimeValue {

method dump_extra_node_info() {
my $v := self.compile_time_value();
$v.HOW.name($v);
$v := $v.HOW.name($v);
my $name := self.named;
$name ?? ":$name\($v)" !! ~$v;
}

}

0 comments on commit d9b1712

Please sign in to comment.