#!/usr/bin/perl -w
use strict;
use Test::More tests=>3;
use_ok qw(Parse::Eyapp::Node) or exit;
my $string = 'ASSIGN(VAR(TERMINAL), TIMES(NUM(TERMINAL),NUM(TERMINAL))) ';
my @t = Parse::Eyapp::Node->new($string, sub { my $i = 0; $_->{n} = $i++ for @_ });
my $expected = [
bless( {
'n' => 0,
'children' => [
bless( {
'n' => 1,
'children' => [
bless( {
'n' => 2,
'children' => []
}, 'TERMINAL' )
]
}, 'VAR' ),
bless( {
'n' => 3,
'children' => [
bless( {
'n' => 4,
'children' => [
bless( {
'n' => 5,
'children' => []
}, 'TERMINAL' )
]
}, 'NUM' ),
bless( {
'n' => 6,
'children' => [
bless( {
'n' => 7,
'children' => []
}, 'TERMINAL' )
]
}, 'NUM' )
]
}, 'TIMES' )
]
}, 'ASSIGN' ),
{},
{},
{},
{},
{},
{},
{}
];
$expected->[1] = $expected->[0]{'children'}[0];
$expected->[2] = $expected->[0]{'children'}[0]{'children'}[0];
$expected->[3] = $expected->[0]{'children'}[1];
$expected->[4] = $expected->[0]{'children'}[1]{'children'}[0];
$expected->[5] = $expected->[0]{'children'}[1]{'children'}[0]{'children'}[0];
$expected->[6] = $expected->[0]{'children'}[1]{'children'}[1];
$expected->[7] = $expected->[0]{'children'}[1]{'children'}[1]{'children'}[0];
is_deeply($expected, \@t, 'Parse::Eyapp::Node->new with blanks at the end');
$string = ' ASSIGN( VAR( TERMINAL), TIMES( NUM(TERMINAL), NUM( TERMINAL) ) ) ';
@t = Parse::Eyapp::Node->new($string, sub { my $i = 0; $_->{n} = $i++ for @_ });
is_deeply($expected, \@t, 'Parse::Eyapp::Node->new with blanks in the middle');