author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Tue, 05 May 2015 15:07:56 +0200 | |
changeset 450 | 914c2567c987 |
parent 377 | 6112a403a52d |
permissions | -rw-r--r-- |
167 | 1 |
"{ Package: 'stx:goodies/petitparser' }" |
2 |
||
3 |
PPLimitedRepeatingParser subclass:#PPLazyRepeatingParser |
|
4 |
instanceVariableNames:'' |
|
5 |
classVariableNames:'' |
|
6 |
poolDictionaries:'' |
|
7 |
category:'PetitParser-Parsers' |
|
8 |
! |
|
9 |
||
10 |
||
11 |
!PPLazyRepeatingParser methodsFor:'parsing'! |
|
12 |
||
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
167
diff
changeset
|
13 |
parseOn: aPPContext |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
167
diff
changeset
|
14 |
| memento element elements | |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
167
diff
changeset
|
15 |
memento := aPPContext remember. |
167 | 16 |
elements := OrderedCollection new. |
17 |
[ elements size < min ] whileTrue: [ |
|
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
167
diff
changeset
|
18 |
(element := parser parseOn: aPPContext) isPetitFailure ifTrue: [ |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
167
diff
changeset
|
19 |
aPPContext restore: memento. |
167 | 20 |
^ element ]. |
21 |
elements addLast: element ]. |
|
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
167
diff
changeset
|
22 |
[ self matchesLimitOn: aPPContext ] whileFalse: [ |
167 | 23 |
elements size < max ifFalse: [ |
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
167
diff
changeset
|
24 |
aPPContext restore: memento. |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
167
diff
changeset
|
25 |
^ PPFailure message: 'overflow' context: aPPContext at: memento position ]. |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
167
diff
changeset
|
26 |
element := parser parseOn: aPPContext. |
167 | 27 |
element isPetitFailure ifTrue: [ |
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
167
diff
changeset
|
28 |
aPPContext restore: memento. |
167 | 29 |
^ element ]. |
30 |
elements addLast: element ]. |
|
31 |
^ elements asArray |
|
32 |
! ! |
|
33 |
||
34 |
!PPLazyRepeatingParser class methodsFor:'documentation'! |
|
35 |
||
36 |
version |
|
37 |
^ '$Header: /cvs/stx/stx/goodies/petitparser/PPLazyRepeatingParser.st,v 1.1 2014-03-04 14:32:47 cg Exp $' |
|
38 |
! |
|
39 |
||
40 |
version_CVS |
|
41 |
^ '$Header: /cvs/stx/stx/goodies/petitparser/PPLazyRepeatingParser.st,v 1.1 2014-03-04 14:32:47 cg Exp $' |
|
42 |
! ! |
|
43 |