PPPossessiveRepeatingParser.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 21 May 2015 14:12:22 +0100
changeset 464 f6d77fee9811
parent 377 6112a403a52d
permissions -rw-r--r--
Updated to PetitCompiler-JanKurs.118, PetitCompiler-Tests-JanKurs.46, PetitCompiler-Extras-Tests-JanKurs.11, and PetitCompiler-Benchmarks-JanKurs.11 Name: PetitCompiler-JanKurs.118 Author: JanKurs Time: 13-05-2015, 03:59:01.292 PM UUID: 4a8ccd94-3131-4cc7-9098-528f8e5ea0b5 Name: PetitCompiler-Tests-JanKurs.46 Author: JanKurs Time: 04-05-2015, 04:25:06.162 PM UUID: 9f4cf8b7-876e-4a13-9579-b833f016db66 Name: PetitCompiler-Extras-Tests-JanKurs.11 Author: JanKurs Time: 13-05-2015, 04:27:27.940 PM UUID: e9f30c31-fbd0-4e96-ad2a-868f88d20ea8 Name: PetitCompiler-Benchmarks-JanKurs.11 Author: JanKurs Time: 13-05-2015, 02:21:49.932 PM UUID: 6a23fd1e-a86f-46db-8221-cc41b778d32c
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