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

Reply via email to