Matching subrules
[email protected] ("Peter van der Kamp") Mon, 23 Jun 2003 16:50:26 +0200
| Newsgroups | perl.recdescent |
|---|---|
| Organization | Instituut voor Nederlandse Lexicologie |
| Message-ID | <3EF72FD2.9727.1C77DD5@localhost> |
I'm wondering why my grammar (see hereafter) accepts
the following input:
medium='d' or medium='f' ant topic='t'
while it should raise an error on 'ant'.
With tracing enabled you can see that it really does
something with 'ant', except raising an error.
Peter van der Kamp
use Parse::RecDescent;
#$::RD_TRACE=100;
my $grammar = q{
Criteria:zoekVraag /\D/
zoekVraag:
basisZoekVraag (operator basisZoekVraag)(s)
|
<error>
basisZoekVraag:
mediumZoekVraag
|
onderwerpZoekVraag
|
titelZoekVraag
|
auteurZoekVraag
|
periodZoekVraag
|
<error>
mediumZoekVraag:
'medium=' zoekString
onderwerpZoekVraag:
'topic=' zoekString
titelZoekVraag:
'title=' zoekString
auteurZoekVraag:
'author=' zoekString
periodZoekVraag:
rangePeriodZoekVraag
|
singlePeriodZoekVraag
singlePeriodZoekVraag:
'p=' cijfers
rangePeriodZoekVraag:
'p=' cijfers '-' cijfers
|
'p=' '-' cijfers
|
'p=' cijfers '-'
operator:
/or|and/
|
<error>
zoekString: /\'[a-zA-Z:\. ]+\'/
cijfers: /[0-9]{4}/
};
my $parser = new Parse::RecDescent($grammar);
undef $/;
my $text = <STDIN>;
#print Data::Dumper->Dump([$parser-
>Criteria($text)]);
$result = $parser->Criteria($text);