petitparser2 icon indicating copy to clipboard operation
petitparser2 copied to clipboard

PP2FlexiblePredicateSequenceNode

Open seandenigris opened this issue 5 years ago • 0 comments

Matches input against a predicate block, like PP2PredicateSequenceNode, but for an unknown/variable length.

For example, whereas for fixed-length matches you can already do: parser := PP2PredicateSequenceNode on: [ :value | value first isUppercase ] message: 'uppercase 3 letter words' size: 3. (parser parse: 'Abc') isPetitFailure not.

Now you can do: parser := PP2FlexiblePredicateSequenceNode on: [ :value | Object new respondsTo: value asSymbol ] message: 'message to an object' while: [ :e | e ~= Character space ].

	(parser parse: 'hash ijk') isPetitFailure not. 
	(parser parse: '99 ijk') isPetitFailure.

seandenigris avatar Nov 29 '20 04:11 seandenigris