equal
deleted
inserted
replaced
8 ! |
8 ! |
9 |
9 |
10 |
10 |
11 !PPPossessiveRepeatingParser methodsFor:'parsing'! |
11 !PPPossessiveRepeatingParser methodsFor:'parsing'! |
12 |
12 |
13 parseOn: aStream |
13 parseOn: aPPContext |
14 | start element elements | |
14 | memento element elements | |
15 start := aStream position. |
15 memento := aPPContext remember. |
16 elements := OrderedCollection new. |
16 elements := OrderedCollection new. |
17 [ elements size < min ] whileTrue: [ |
17 [ elements size < min ] whileTrue: [ |
18 (element := parser parseOn: aStream) isPetitFailure ifTrue: [ |
18 (element := parser parseOn: aPPContext) isPetitFailure ifTrue: [ |
19 aStream position: start. |
19 aPPContext restore: memento. |
20 ^ element ]. |
20 ^ element ]. |
21 elements addLast: element ]. |
21 elements addLast: element ]. |
22 [ elements size < max ] whileTrue: [ |
22 [ elements size < max ] whileTrue: [ |
23 (element := parser parseOn: aStream) isPetitFailure |
23 (element := parser parseOn: aPPContext) isPetitFailure |
24 ifTrue: [ ^ elements asArray ]. |
24 ifTrue: [ ^ elements asArray ]. |
25 elements addLast: element ]. |
25 elements addLast: element ]. |
26 ^ elements asArray |
26 ^ elements asArray |
27 ! ! |
27 ! ! |
28 |
28 |