author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Wed, 17 Jun 2015 17:10:54 +0100 | |
changeset 493 | 0aed9c69ed48 |
parent 380 | 8fe3cb4e607f |
permissions | -rw-r--r-- |
166 | 1 |
"{ Package: 'stx:goodies/petitparser' }" |
2 |
||
3 |
PPLimitedRepeatingParser subclass:#PPGreedyRepeatingParser |
|
4 |
instanceVariableNames:'' |
|
5 |
classVariableNames:'' |
|
6 |
poolDictionaries:'' |
|
7 |
category:'PetitParser-Parsers' |
|
8 |
! |
|
9 |
||
10 |
||
11 |
!PPGreedyRepeatingParser methodsFor:'parsing'! |
|
12 |
||
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
166
diff
changeset
|
13 |
parseOn: aPPContext |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
166
diff
changeset
|
14 |
| memento element elements positions | |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
166
diff
changeset
|
15 |
memento := aPPContext remember. |
166 | 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:
166
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:
166
diff
changeset
|
19 |
aPPContext restore: memento. |
166 | 20 |
^ element ]. |
21 |
elements addLast: element ]. |
|
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
166
diff
changeset
|
22 |
positions := OrderedCollection with: aPPContext remember. |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
166
diff
changeset
|
23 |
[ elements size < max and: [ (element := parser parseOn: aPPContext) isPetitFailure not ] ] whileTrue: [ |
166 | 24 |
elements addLast: element. |
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
166
diff
changeset
|
25 |
positions addLast: aPPContext remember ]. |
166 | 26 |
[ positions isEmpty ] whileFalse: [ |
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
166
diff
changeset
|
27 |
aPPContext restore: positions last. |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
166
diff
changeset
|
28 |
element := limit parseOn: aPPContext. |
166 | 29 |
element isPetitFailure ifFalse: [ |
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
166
diff
changeset
|
30 |
aPPContext restore: positions last. |
166 | 31 |
^ elements asArray ]. |
32 |
elements isEmpty ifTrue: [ |
|
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
166
diff
changeset
|
33 |
aPPContext restore: memento. |
166 | 34 |
^ element ]. |
35 |
elements removeLast. |
|
36 |
positions removeLast ]. |
|
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
166
diff
changeset
|
37 |
aPPContext restore: memento. |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
166
diff
changeset
|
38 |
^ PPFailure message: 'overflow' context: aPPContext at: memento position |
166 | 39 |
! ! |
40 |
||
41 |
!PPGreedyRepeatingParser class methodsFor:'documentation'! |
|
42 |
||
43 |
version |
|
44 |
^ '$Header: /cvs/stx/stx/goodies/petitparser/PPGreedyRepeatingParser.st,v 1.1 2014-03-04 14:32:42 cg Exp $' |
|
45 |
! |
|
46 |
||
47 |
version_CVS |
|
48 |
^ '$Header: /cvs/stx/stx/goodies/petitparser/PPGreedyRepeatingParser.st,v 1.1 2014-03-04 14:32:42 cg Exp $' |
|
380
8fe3cb4e607f
Remove Pharoisms to make code more portable and running on Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
377
diff
changeset
|
49 |
! |
8fe3cb4e607f
Remove Pharoisms to make code more portable and running on Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
377
diff
changeset
|
50 |
|
8fe3cb4e607f
Remove Pharoisms to make code more portable and running on Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
377
diff
changeset
|
51 |
version_HG |
8fe3cb4e607f
Remove Pharoisms to make code more portable and running on Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
377
diff
changeset
|
52 |
|
8fe3cb4e607f
Remove Pharoisms to make code more portable and running on Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
377
diff
changeset
|
53 |
^ '$Changeset: <not expanded> $' |
166 | 54 |
! ! |
55 |