compiler/PPCTokenizingCompiler.st
changeset 452 9f4558b3be66
child 459 4751c407bb40
equal deleted inserted replaced
438:20598d7ce9fa 452:9f4558b3be66
       
     1 "{ Package: 'stx:goodies/petitparser/compiler' }"
       
     2 
       
     3 "{ NameSpace: Smalltalk }"
       
     4 
       
     5 PPCCompiler subclass:#PPCTokenizingCompiler
       
     6 	instanceVariableNames:'rememberStrategy'
       
     7 	classVariableNames:''
       
     8 	poolDictionaries:''
       
     9 	category:'PetitCompiler-Core'
       
    10 !
       
    11 
       
    12 !PPCTokenizingCompiler methodsFor:'accessing'!
       
    13 
       
    14 compiledParserSuperclass
       
    15     ^ compiledParserSuperclass ifNil: [ PPTokenizingCompiledParser ]
       
    16 ! !
       
    17 
       
    18 !PPCTokenizingCompiler methodsFor:'code generation'!
       
    19 
       
    20 smartRemember: parser to: variableName 
       
    21     rememberStrategy smartRemember: parser to: variableName
       
    22 !
       
    23 
       
    24 smartRestore: parser from: mementoName
       
    25     rememberStrategy smartRestore: parser from: mementoName
       
    26 ! !
       
    27 
       
    28 !PPCTokenizingCompiler methodsFor:'initialization'!
       
    29 
       
    30 initialize
       
    31     super initialize.
       
    32     rememberStrategy := PPCCompilerTokenizingRememberStrategy on: self
       
    33 ! !
       
    34 
       
    35 !PPCTokenizingCompiler methodsFor:'remember strategy'!
       
    36 
       
    37 toNormalRememberStrategy
       
    38     "
       
    39         When backtracking, currentTokenValue and currentTokenType has
       
    40         to be restored
       
    41     "
       
    42     rememberStrategy := PPCCompilerTokenizingRememberStrategy on: self
       
    43 !
       
    44 
       
    45 toTokenRememberStrategy
       
    46     "
       
    47         We dont have to remember currentTokenType and currentTokenValue,
       
    48         while parsing token
       
    49     "
       
    50     rememberStrategy := PPCCompilerTokenRememberStrategy on: self
       
    51 ! !
       
    52