Andras Karacsony schrieb:
Hello Karl!
No, because the C grammar example doesn't tweak the skip pattern either.
(I made my program work by 'preprocessing' the target text.
$_ = lc ;
s/\b(and|or)\b/\U$1/g;
my $tree = $parser->start($_);
and getting rid of the 'i'
reserved_word: 'AND' | 'OR'
WORD: ...!reserved_word /[a-z0-9]+/
)
this is really not necessary, I think you should shrink
it down to a working example like:
<<<<<<<<<<<<<<<<< snip >>>>>>>>>>>>>>>>>>>>>>>>>>
#!/usr/local/bin/perl
use strict;
use warnings;
use Parse::RecDescent;
$::RD_TRACE = 1;
use Data::Dumper;
my $grammar = <<'EOG';
<autotree>
RESERVED : 'AND' | 'OR'
IDENTIFIER : ...!RESERVED m/[a-z0-9]+/i
EOG
my $parser = Parse::RecDescent->new($grammar)
or die "can't create parser,";
my $text = join '', <>;
print Dumper($parser->IDENTIFIER($text));
<<<<<<<<<<<<<<<<< snip >>>>>>>>>>>>>>>>>>>>>>>>>>
and this works very well. I think there is an other
problem hidden in your code.
Best Regards
Charly
Andras
-----Original Message-----
From: Karl Gaissmaier [mailto:[EMAIL PROTECTED]
Sent: Wednesday, March 31, 2004 4:24 AM
To: PerlDiscuss - Perl Newsgroups and mailing lists
Subject: Re: Negative Look-ahead problem
PerlDiscuss - Perl Newsgroups and mailing lists schrieb:
reserved_word: 'AND' | 'OR'
WORD: ...!reserved_word /[a-z0-9]+/i
Using the above grammar, rule WORD fails to match any token
that start
with a reserved word (e.g. Andy). That is not what I
expected since in
'demo_Cgrammar.pl', we have:
IDENTIFIER: ...!reserved_word /[a-z]\w*/i
I am I missing something?
Thanks!
Andras
hmm, did to tweak the skip pattern?
Regards
Charly
--
Karl Gaissmaier KIZ/Infrastructure, University of Ulm, Germany
Email:[EMAIL PROTECTED] Service Group Network
Tel.: ++49 731 50-22499
--
Karl Gaissmaier KIZ/Infrastructure, University of Ulm, Germany
Email:[EMAIL PROTECTED] Service Group Network
Tel.: ++49 731 50-22499