package JavaScript::Code::Expression::Op; use strict; use vars qw[ $VERSION ]; use JavaScript::Code::Expression::Op::Term; $VERSION = '0.08'; =head1 NAME JavaScript::Code::Expression::Node - Represents a Node in JavaScript Expression =head1 METHODS =head2 new =cut sub new { my $obj = shift; my $class = ref $obj || $obj; die("'$class' is a binary operator and must take exactly 2 operands.") unless @_ == 2; return bless [@_], $class; } =head2 children =cut sub children { return @{ shift() } } =head2 unary =cut sub unary { return 0; } =head2 output =cut sub output { my ( $self, $precedence ) = @_; $precedence = 0 if not defined $precedence; my $output = join $self->op, map { $_->output( $self->precedence ) } $self->children; $output = "($output)" if $precedence > $self->precedence; return $output; } =head1 SEE ALSO L =head1 AUTHOR Sascha Kiefer, C =head1 LICENSE This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut 1;