Codegen refactoring [1/x]: Introduced a PPCCodeBlock
A PPCCodeBlock is an abstraction of a block of statements with temporaries. This will
allow for scoped temporary management in code generator - temporary variables could
be allocated for block only. (i.e., make them block-temporaries)
"{ Package: 'stx:goodies/petitparser/analyzer' }"
"{ NameSpace: Smalltalk }"
Object subclass:#PPProcessor
instanceVariableNames:'searches context'
classVariableNames:''
poolDictionaries:''
category:'PetitAnalyzer-Core'
!
!PPProcessor class methodsFor:'instance creation'!
new
^ self basicNew initialize
! !
!PPProcessor methodsFor:'initialization'!
initialize
super initialize.
searches := OrderedCollection new.
context := Dictionary new
! !
!PPProcessor methodsFor:'private'!
context
^ context
!
performRule: aRule on: aParser
context := Dictionary new.
^ aRule performOn: aParser
!
performRulesOn: aParser
| result |
searches do: [ :rule |
result := self performRule: rule on: aParser.
result notNil ifTrue: [ ^ result ] ].
^ nil
! !
!PPProcessor methodsFor:'rules'!
addRule: aGrammarRule
searches add: (aGrammarRule setOwner: self)
! !
!PPProcessor class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/goodies/petitparser/analyzer/PPProcessor.st,v 1.2 2014-03-04 20:27:44 cg Exp $'
!
version_CVS
^ '$Header: /cvs/stx/stx/goodies/petitparser/analyzer/PPProcessor.st,v 1.2 2014-03-04 20:27:44 cg Exp $'
!
version_HG
^ '$Changeset: <not expanded> $'
! !