PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Move some context-related options from PPCConfiguration to PPCCompilationContext.
PPCConfiguration now access them wia accessor methods.
"{ Package: 'stx:goodies/petitparser/compiler' }"
"{ NameSpace: Smalltalk }"
PPCConfiguration subclass:#PPCUniversalConfiguration
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'PetitCompiler-Core'
!
!PPCUniversalConfiguration methodsFor:'compiling'!
initialize
super initialize.
"Modified: / 25-08-2015 / 00:03:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
invokePhases
self toPPCIr.
self createTokens.
self cacheFirstFollow.
self specialize.
self createRecognizingComponents.
self specialize.
self inline.
self merge.
self check.
self generate.
! !
!PPCUniversalConfiguration methodsFor:'error handling'!
buildClass
| builder |
self assert:(context parserClass isKindOf:PPCClass).
builder := PPCClassBuilder new.
builder compiledClassName:context options parserName.
builder compiledSuperclass:PPCompiledParser.
builder methodDictionary:context parserClass methodDictionary.
builder constants:context parserClass constants.
^ builder compileClass.
"Modified: / 25-08-2015 / 00:04:08 / Jan Vrany <jan.vrany@fit."
"Modified: / 26-08-2015 / 20:01:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
generate
| rootMethod compiledParser |
context options generate ifFalse:[
^ self
].
rootMethod := (self codeGenerator)
options:context options;
clazz:context parserClass;
visit:ir.
compiledParser := self buildClass.
compiledParser startSymbol:rootMethod methodName.
compiledParser := compiledParser new.
ir := compiledParser.
"Modified: / 25-08-2015 / 00:03:46 / Jan Vrany <jan.vr"
"Modified: / 26-08-2015 / 20:00:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!PPCUniversalConfiguration methodsFor:'hooks'!
codeGenerator
^ PPCUniversalCodeGenerator new options:context options
! !
!PPCUniversalConfiguration class methodsFor:'documentation'!
version
^ 'Path: stx/goodies/petitparser/compiler/PPCUniversalConfiguration.st, Version: 1.0, User: jv, Time: 2015-08-26T20:03:52.218+01'
!
version_HG
^ 'Path: stx/goodies/petitparser/compiler/PPCUniversalConfiguration.st, Version: 1.0, User: jv, Time: 2015-08-26T20:03:52.218+01'
! !