compiler/PPCUniversalResultStrategy.st
changeset 515 b5316ef15274
child 524 f6f68d32de73
equal deleted inserted replaced
502:1e45d3c96ec5 515:b5316ef15274
       
     1 "{ Package: 'stx:goodies/petitparser/compiler' }"
       
     2 
       
     3 "{ NameSpace: Smalltalk }"
       
     4 
       
     5 PPCScannerResultStrategy subclass:#PPCUniversalResultStrategy
       
     6 	instanceVariableNames:'tokens'
       
     7 	classVariableNames:''
       
     8 	poolDictionaries:''
       
     9 	category:'PetitCompiler-Scanner'
       
    10 !
       
    11 
       
    12 !PPCUniversalResultStrategy methodsFor:'accessing'!
       
    13 
       
    14 indexForRetval: retval
       
    15 "	tokens withIndexDo: [ :e :index | 
       
    16         (e == retval) ifTrue: [ ^ index ]
       
    17     ].
       
    18 
       
    19     self error: 'This should not happen!!'
       
    20 "
       
    21     ^ codeGen idGen numericIdFor: retval
       
    22 !
       
    23 
       
    24 tokens
       
    25     ^ tokens
       
    26 !
       
    27 
       
    28 tokens: array
       
    29     self assert: (array isArray).
       
    30     tokens := array 
       
    31 ! !
       
    32 
       
    33 !PPCUniversalResultStrategy methodsFor:'as yet unclassified'!
       
    34 
       
    35 recordFailure: retval
       
    36     codeGen codeRecordFailure: (self indexForRetval: retval)
       
    37 !
       
    38 
       
    39 recordFailure: retval offset: offset
       
    40     codeGen codeRecordFailure: (self indexForRetval: retval)
       
    41 !
       
    42 
       
    43 recordMatch: retval
       
    44     codeGen codeComment: 'symbol: ', retval storeString.
       
    45     codeGen codeRecordMatch: (self indexForRetval: retval)
       
    46 !
       
    47 
       
    48 recordMatch: retval offset: offset
       
    49     codeGen codeComment: 'symbol: ', retval storeString.
       
    50     codeGen codeRecordMatch: (self indexForRetval: retval) offset: offset
       
    51 !
       
    52 
       
    53 reset
       
    54 "	^ codeGen code: 'self reset:', tokens storeString, '.'"
       
    55     ^ codeGen code: 'self reset.'	
       
    56 !
       
    57 
       
    58 returnResult: state
       
    59     self assert: (state isKindOf: PEGFsaState).
       
    60     codeGen codeReturn.
       
    61 ! !
       
    62