PPPossessiveRepeatingParser.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 30 Jul 2015 08:37:37 +0100
changeset 510 869853decf31
parent 377 6112a403a52d
permissions -rw-r--r--
Tests refactoring - use generated test cases to make sure all posibilities are tested. Do not generate resource for all combinations, use PPCSetUpBeforeTearDownAfterResource instead that delegates parser compilation to the testcase itself (it calls it's #setUpBefore method).
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
175
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/petitparser' }"
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
PPRepeatingParser subclass:#PPPossessiveRepeatingParser
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:''
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'PetitParser-Parsers'
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!PPPossessiveRepeatingParser methodsFor:'parsing'!
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 175
diff changeset
    13
parseOn: aPPContext
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 175
diff changeset
    14
	| memento element elements |
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 175
diff changeset
    15
	memento := aPPContext remember.
175
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	elements := OrderedCollection new.
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	[ elements size < min ] whileTrue: [
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 175
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: 175
diff changeset
    19
			aPPContext restore: memento.
175
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
			^ element ].
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
		elements addLast: element ].
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	[ elements size < max ] whileTrue: [
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 175
diff changeset
    23
	 	(element := parser parseOn: aPPContext) isPetitFailure
175
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
			ifTrue: [ ^ elements asArray ].
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
		elements addLast: element ].
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
	^ elements asArray
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
! !
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
!PPPossessiveRepeatingParser class methodsFor:'documentation'!
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
version
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPPossessiveRepeatingParser.st,v 1.1 2014-03-04 14:33:19 cg Exp $'
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
!
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
version_CVS
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPPossessiveRepeatingParser.st,v 1.1 2014-03-04 14:33:19 cg Exp $'
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
! !
3affa13c4553 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38