Skip to content

Conversation

@seandenigris
Copy link
Contributor

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.

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant