"{ Package: 'stx:goodies/petitparser' }"
PPListParser subclass:#PPSequenceParser
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'PetitParser-Parsers'
!
!PPSequenceParser methodsFor:'operations'!
, aRule
^ self copyWith: aRule
!
map: aBlock
^ self ==> [ :nodes | aBlock valueWithArguments: nodes ]
!
permutation: anArrayOfIntegers
"Answer a permutation of the receivers sequence."
anArrayOfIntegers do: [ :index |
(index isInteger and: [ index between: 1 and: parsers size ])
ifFalse: [ self error: 'Invalid permutation index: ' , index printString ] ].
^ self ==> [ :nodes | anArrayOfIntegers collect: [ :index | nodes at: index ] ]
! !
!PPSequenceParser methodsFor:'parsing'!
parseOn: aStream
"This is optimized code that avoids unnecessary block activations, do not change."
| start elements element |
start := aStream position.
elements := Array new: parsers size.
1 to: parsers size do: [ :index |
element := (parsers at: index)
parseOn: aStream.
element isPetitFailure ifTrue: [
aStream position: start.
^ element ].
elements at: index put: element ].
^ elements
! !
!PPSequenceParser class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/goodies/petitparser/PPSequenceParser.st,v 1.3 2012-05-04 21:59:14 vrany Exp $'
!
version_CVS
^ '$Header: /cvs/stx/stx/goodies/petitparser/PPSequenceParser.st,v 1.3 2012-05-04 21:59:14 vrany Exp $'
!
version_SVN
^ '§Id: PPSequenceParser.st 2 2010-12-17 18:44:23Z vranyj1 §'
! !