PPPossessiveRepeatingParser.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 23 Nov 2015 11:14:30 +0100
changeset 551 00ebb1b85f53
parent 377 6112a403a52d
permissions -rw-r--r--
Fixed CI scripts on Windows For an unknown reason, unzip on Windows reports status code 50 (presumably "the disk is (or was) full during extraction.") even if there's plenty of space. To workaround this, simply ignore status code 50 on Windows. Sigh.
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