equal
deleted
inserted
replaced
3 PPDelegateParser subclass:#PPRepeatingParser |
3 PPDelegateParser subclass:#PPRepeatingParser |
4 instanceVariableNames:'min max' |
4 instanceVariableNames:'min max' |
5 classVariableNames:'' |
5 classVariableNames:'' |
6 poolDictionaries:'' |
6 poolDictionaries:'' |
7 category:'PetitParser-Parsers' |
7 category:'PetitParser-Parsers' |
8 ! |
|
9 |
|
10 PPRepeatingParser comment:'A parser that eagerly parses min to max instances of my delegate. The default instance parses eagerly an infinite number of elements, as min is set to 0 and max to infinity (SmallInteger maxVal). |
|
11 Instance Variables: |
|
12 min <Integer> The minimum number of repetitions. |
|
13 max <Integer> The maximum number of repetitions.' |
|
14 ! |
8 ! |
15 |
9 |
16 |
10 |
17 !PPRepeatingParser class methodsFor:'instance creation'! |
11 !PPRepeatingParser class methodsFor:'instance creation'! |
18 |
12 |
23 on: aParser max: aMaxInteger |
17 on: aParser max: aMaxInteger |
24 ^ (self on: aParser) setMin: 0 max: aMaxInteger |
18 ^ (self on: aParser) setMin: 0 max: aMaxInteger |
25 ! |
19 ! |
26 |
20 |
27 on: aParser min: aMinInteger |
21 on: aParser min: aMinInteger |
28 ^ (self on: aParser) setMin: aMinInteger max: SmallInteger maxVal |
22 ^ (self on: aParser) setMin: aMinInteger max: SmallInteger maxVal |
29 ! |
23 ! |
30 |
24 |
31 on: aParser min: aMinInteger max: aMaxInteger |
25 on: aParser min: aMinInteger max: aMaxInteger |
32 ^ (self on: aParser) setMin: aMinInteger max: aMaxInteger |
26 ^ (self on: aParser) setMin: aMinInteger max: aMaxInteger |
33 ! ! |
27 ! ! |
40 ^ max |
34 ^ max |
41 ! |
35 ! |
42 |
36 |
43 min |
37 min |
44 "Answer the minimum number of repetitions." |
38 "Answer the minimum number of repetitions." |
45 |
39 |
46 ^ min |
40 ^ min |
47 ! ! |
41 ! ! |
48 |
42 |
49 !PPRepeatingParser methodsFor:'initialization'! |
43 !PPRepeatingParser methodsFor:'initialization'! |
50 |
44 |
63 (element := parser parseOn: aStream) isPetitFailure ifTrue: [ |
57 (element := parser parseOn: aStream) isPetitFailure ifTrue: [ |
64 aStream position: start. |
58 aStream position: start. |
65 ^ element ]. |
59 ^ element ]. |
66 elements addLast: element ]. |
60 elements addLast: element ]. |
67 [ elements size < max ] whileTrue: [ |
61 [ elements size < max ] whileTrue: [ |
68 (element := parser parseOn: aStream) isPetitFailure |
62 (element := parser parseOn: aStream) isPetitFailure |
69 ifTrue: [ ^ elements asArray ]. |
63 ifTrue: [ ^ elements asArray ]. |
70 elements addLast: element ]. |
64 elements addLast: element ]. |
71 ^ elements asArray |
65 ^ elements asArray |
72 ! ! |
66 ! ! |
73 |
67 |
79 ifTrue: [ '*' ] ifFalse: [ max printString ]); nextPut: $] |
73 ifTrue: [ '*' ] ifFalse: [ max printString ]); nextPut: $] |
80 ! ! |
74 ! ! |
81 |
75 |
82 !PPRepeatingParser class methodsFor:'documentation'! |
76 !PPRepeatingParser class methodsFor:'documentation'! |
83 |
77 |
|
78 version |
|
79 ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPRepeatingParser.st,v 1.3 2012-05-04 22:09:29 vrany Exp $' |
|
80 ! |
|
81 |
|
82 version_CVS |
|
83 ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPRepeatingParser.st,v 1.3 2012-05-04 22:09:29 vrany Exp $' |
|
84 ! |
|
85 |
84 version_SVN |
86 version_SVN |
85 ^ '$Id: PPRepeatingParser.st,v 1.2 2012-01-13 11:22:50 cg Exp $' |
87 ^ '§Id: PPRepeatingParser.st 2 2010-12-17 18:44:23Z vranyj1 §' |
86 ! ! |
88 ! ! |