GPL3 { package XMCluster::SXP::Parser; sub new { my $self={}; bless $self; return $self; } sub format { my $self=shift; $_=shift; s/(\(|\))/ \1 /g; s/(\S+)/'\1',/g; s/'(\(|\))'/\1/g; s/\s+/ /g; s/\(/, \(/g; s/\(/[/g; s/\)/]/g; s/, ]/]/g; s/\[,/\n[/g; s/, ,/,/g; s/,\s+$//; s/(,|\[|])\s?''/\1 "'/g; s/''\s?(,|\[|])/'" \1/g; s/^\s+,//; return $_; } sub parse { my $self=shift; return eval $self->format(shift); } };