diff -r 20598d7ce9fa -r 9f4558b3be66 compiler/PPCCompilerTokenizingRememberStrategy.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/compiler/PPCCompilerTokenizingRememberStrategy.st Sun May 10 06:28:36 2015 +0100 @@ -0,0 +1,47 @@ +"{ Package: 'stx:goodies/petitparser/compiler' }" + +"{ NameSpace: Smalltalk }" + +Object subclass:#PPCCompilerTokenizingRememberStrategy + instanceVariableNames:'compiler' + classVariableNames:'' + poolDictionaries:'' + category:'PetitCompiler-Core' +! + +!PPCCompilerTokenizingRememberStrategy class methodsFor:'instance creation'! + +on: aPPCCompiler + ^ self new + compiler: aPPCCompiler; + yourself +! ! + +!PPCCompilerTokenizingRememberStrategy methodsFor:'accessing'! + +compiler: aPPCCompiler + compiler := aPPCCompiler +! ! + +!PPCCompilerTokenizingRememberStrategy methodsFor:'as yet unclassified'! + +smartRemember: parser to: variableName + parser isContextFree ifTrue: [ + compiler codeAssign: '{ context lwRemember. currentTokenType . currentTokenValue }.' + to: variableName. + ] ifFalse: [ + compiler codeAssign: '{ context remember. currentTokenType . currentTokenValue }.' + to: variableName. + ] +! + +smartRestore: parser from: mementoName + parser isContextFree ifTrue: [ + compiler add: 'context lwRestore: ', mementoName, ' first.'. + ] ifFalse: [ + compiler add: 'context restore: ', mementoName, ' first.'. + ]. + compiler codeAssign: mementoName, ' second.' to: 'currentTokenType'. + compiler codeAssign: mementoName, ' third.' to: 'currentTokenValue'. +! ! +