Portability fixes
* do not use Object>>asString. Not all Smalltalks implement it.
* do not use Object>>name. Not all Smalltalks implement it.
* do not use Dictionary keysAndValuesRemove:. Not all Smalltalks implement it.
* do not use Class>>methods The semantics is different among Smalltalks.
Use `Class methodDictionary values` instead.
* do not modify dictionary in #at:ifAbsentPut: block!
"{ Package: 'stx:goodies/petitparser/compiler' }"
"{ NameSpace: Smalltalk }"
PPCCodeGen subclass:#PPCTokenizingCodeGen
instanceVariableNames:'rememberStrategy errorStrategy'
classVariableNames:''
poolDictionaries:''
category:'PetitCompiler-Compiler-Codegen'
!
!PPCTokenizingCodeGen methodsFor:'code generation'!
codeClearError
errorStrategy codeClearError
!
codeError
errorStrategy codeError
!
codeError: message
errorStrategy codeError: message.
!
smartRemember: parser to: variableName
rememberStrategy smartRemember: parser to: variableName
!
smartRestore: parser from: mementoName
rememberStrategy smartRestore: parser from: mementoName
! !
!PPCTokenizingCodeGen methodsFor:'hooks'!
errorStrategy
^ errorStrategy ifNil: [ PPCCompilerTokenizingErrorStrategy on: self ]
!
errorStrategy: whatever
errorStrategy := whatever
!
rememberStrategy
^ rememberStrategy ifNil: [ PPCCompilerTokenizingRememberStrategy on: self ]
!
rememberStrategy: whatever
rememberStrategy := whatever
! !
!PPCTokenizingCodeGen methodsFor:'initialization'!
initialize
super initialize.
rememberStrategy := PPCCompilerTokenizingRememberStrategy on: self.
errorStrategy := PPCCompilerTokenizingErrorStrategy on: self.
! !
!PPCTokenizingCodeGen class methodsFor:'documentation'!
version_HG
^ '$Changeset: <not expanded> $'
! !