PPLimitedRepeatingParser.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 16 Jun 2015 07:49:21 +0100
changeset 491 82b272c7dc37
parent 377 6112a403a52d
permissions -rw-r--r--
Codegen: added support for smart action node compiling. Avoid creation of intermediate result collection for action nodes if all references to action block's argument (i.e., the nodes collection) is in form of: * <nodes> at: <numeric constant> * <nodes> first (second, third...

"{ Package: 'stx:goodies/petitparser' }"

PPRepeatingParser subclass:#PPLimitedRepeatingParser
	instanceVariableNames:'limit'
	classVariableNames:''
	poolDictionaries:''
	category:'PetitParser-Parsers'
!


!PPLimitedRepeatingParser class methodsFor:'instance creation'!

on: aParser limit: aLimitParser
	^ (self on: aParser) setLimit: aLimitParser
! !


!PPLimitedRepeatingParser methodsFor:'accessing'!

children
	^ Array with: parser with: limit
!

limit
	"Answer the parser that limits (or ends) this repetition."
	
	^ limit
! !

!PPLimitedRepeatingParser methodsFor:'initialization'!

setLimit: aParser
	limit := aParser
! !

!PPLimitedRepeatingParser methodsFor:'parsing'!

matchesLimitOn: aPPContext
	| element position |
	position := aPPContext remember.
	element := limit parseOn: aPPContext.
	aPPContext restore: position.
	^ element isPetitFailure not
! !

!PPLimitedRepeatingParser class methodsFor:'documentation'!

version
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPLimitedRepeatingParser.st,v 1.1 2014-03-04 14:32:55 cg Exp $'
!

version_CVS
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPLimitedRepeatingParser.st,v 1.1 2014-03-04 14:32:55 cg Exp $'
! !