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/compiler' }"
"{ NameSpace: Smalltalk }"
PPCConfiguration subclass:#PPCTokenizingConfiguration
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'PetitCompiler-Core'
!
!PPCTokenizingConfiguration methodsFor:'compiling'!
invokePhases
self toPPCIr.
self createTokens.
self cacheFirstFollow.
self createLL1Choices.
self tokenize.
self merge.
self specialize.
self createRecognizingComponents.
self specialize.
self inline.
self merge.
self check.
self cacheFirstFollow.
self generate.
! !
!PPCTokenizingConfiguration methodsFor:'hooks'!
codeCompilerOn: args
^ PPCTokenizingCompiler on: args
!
codeGeneratorVisitorOn: compiler
^ PPCTokenizingCodeGenerator on: compiler
! !
!PPCTokenizingConfiguration methodsFor:'phases'!
createLL1Choices
ir := PPCLL1Visitor new
arguments: arguments;
visit: ir.
self remember: #LL1
!
tokenize
"
This will try transform the parser into the tokenizing parser
"
arguments tokenize ifFalse: [ ^ self ] .
ir := PPCTokenizingVisitor new
arguments: arguments;
visit: ir.
self remember: #tokenize
! !
!PPCTokenizingConfiguration class methodsFor:'documentation'!
version_HG
^ '$Changeset: <not expanded> $'
! !