Синтаксический анализ с Perl
Я использую Parse::RecDescent(код ниже), чтобы разобрать что-то вроде этого
это х = 2 и у = 2 и г =3
почему в приведенном ниже коде выводится только x!=2, а не вся указанная выше строка (т. е. x!=2 и y! = 2 и z!=3), даже указанная выше строка анализируется приведенным ниже кодом. код?
use strict;
use warnings;
use Parse::RecDescent;
my $input = 'x=2 and y=3 and z=3';
my $grammar = q{
startrule: expr(s?)
expr: statement operator(s?)
{ return $item{statement}. $item{operator}; }
statement : operand equal value
{ return $item{operand}.' ' .'!='.' '.$item{value} }
equal : /\=/
operator : /and/i
operand: /\w+/
value : /\w+/
};
my $parser = Parse::RecDescent->new($grammar);
my $result = $parser->startrule($input) or die "Couldn't parse!\n";
use Data::Dumper;
$Data::Dumper::Indent = 1;
$Data::Dumper::Sortkeys = 1;
print Dumper $result;