синтаксический анализ с Perl - PullRequest
       16

синтаксический анализ с Perl

0 голосов
/ 26 октября 2018

Я использую Parse :: RecDescent (приведенный ниже код), чтобы проанализировать что-то вроде этого

this x = 2 и y = 2 и z = 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;
...