On Fri, 5 Jul 2024 at 10:39, Rafael Luque <rafael.luque.le...@gmail.com>
wrote:

> Hi all,
>
> I'm struggling with a small parser using PetitParser2. Here is a fragment
> of some of the rules I'm defining but their behaviour is not as I could
> expect:
>
> andKeyword := 'and' asPParser trim, #letter asPParser not.
> notKeyword := 'not' asPParser trim, #letter asPParser not.
> keyword := andKeyword / notKeyword.
> nonKeywordIdentifier := keyword not, #letter asPParser, #word asPParser
> star.
> word := nonKeywordIdentifier, #blank asPParser star.
> words := word star.
>
> The behaviour of the "nonKeywordIdentifier" is the expected:
>
> identifier end parse: 'hello'. "It parses successfully"
> identifier end parse: 'and'. "It fails as 'and' is a keyword"
>
> However the "words" rule's behavior is the following:
>
> words end parse: 'hello Pharo'. "It parses successfully"
> words end parse: 'hello and bye'. "It parses, when I would expect it fails
> because of 'and' is a keyword"
>
> I don't understand why the "words" rule works this way, but I'm starting
> with PetitParser. Any suggestions?
>
> Thank  you.
>

You might consider asking on stackoverflow.

A PetitParser2 question has been answered there recently.
-- 
Frank Church

=======================

Reply via email to