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' }"
"{ NameSpace: Smalltalk }"
PPDelegateParser subclass:#PPConditionalParser
instanceVariableNames:'block'
classVariableNames:''
poolDictionaries:''
category:'PetitParser-Parsers'
!
!PPConditionalParser class methodsFor:'as yet unclassified'!
on: aPPParser block: block
^ (PPConditionalParser on: aPPParser)
block: block;
yourself
! !
!PPConditionalParser methodsFor:'accessing'!
block: aBlock
block := aBlock
! !
!PPConditionalParser methodsFor:'parsing'!
parseOn: aPPContext
^ (block value: aPPContext)
ifTrue: [ parser parseOn: aPPContext ]
ifFalse: [ PPFailure message: block asString, ' was not evaluated to true.' context: aPPContext ]
! !