compiler/PPCStarMessagePredicateNode.st
changeset 438 20598d7ce9fa
parent 422 116d2b2af905
child 452 9f4558b3be66
equal deleted inserted replaced
437:54b3bc9e3987 438:20598d7ce9fa
     8 	poolDictionaries:''
     8 	poolDictionaries:''
     9 	category:'PetitCompiler-Nodes'
     9 	category:'PetitCompiler-Nodes'
    10 !
    10 !
    11 
    11 
    12 !PPCStarMessagePredicateNode methodsFor:'accessing'!
    12 !PPCStarMessagePredicateNode methodsFor:'accessing'!
       
    13 
       
    14 children
       
    15 	^ #()
       
    16 !
    13 
    17 
    14 firstCharSet
    18 firstCharSet
    15 	^ PPCharSetPredicate on: [:char | char perform: message ] 	
    19 	^ PPCharSetPredicate on: [:char | char perform: message ] 	
    16 !
    20 !
    17 
    21 
    25 	message := anObject
    29 	message := anObject
    26 !
    30 !
    27 
    31 
    28 prefix
    32 prefix
    29 	^ #starPredicate
    33 	^ #starPredicate
    30 !
       
    31 
       
    32 rewrite: changeStatus
       
    33 	"Nothing TODO"
       
    34 ! !
       
    35 
       
    36 !PPCStarMessagePredicateNode methodsFor:'as yet unclassified'!
       
    37 
       
    38 compileWith: compiler effect: effect id: id
       
    39 	compiler startMethod: id.
       
    40 	compiler addVariable: 'retval'.
       
    41 	compiler add: 'retval := OrderedCollection new.'.	
       
    42 	compiler add: '[ context peek ', message, ' ] whileTrue: ['.
       
    43 	compiler indent.
       
    44 	compiler add: ' retval add: context next'.
       
    45 	compiler dedent.
       
    46 	compiler add: '].'.
       
    47 	compiler add: '^ retval asArray'.
       
    48  ^ compiler stopMethod.
       
    49 ! !
    34 ! !
    50 
    35 
    51 !PPCStarMessagePredicateNode methodsFor:'comparing'!
    36 !PPCStarMessagePredicateNode methodsFor:'comparing'!
    52 
    37 
    53 = anotherNode
    38 = anotherNode
    57 
    42 
    58 hash
    43 hash
    59 	^ super hash bitXor: message hash
    44 	^ super hash bitXor: message hash
    60 ! !
    45 ! !
    61 
    46 
    62 !PPCStarMessagePredicateNode methodsFor:'optimizing'!
    47 !PPCStarMessagePredicateNode methodsFor:'visiting'!
    63 
    48 
    64 asFast
    49 accept: visitor
    65 	^ PPCTokenStarMessagePredicateNode new
    50 	^ visitor visitStarMessagePredicateNode: self
    66 		name: name;
       
    67 		message: message;
       
    68 		child: child;
       
    69 		yourself
       
    70 ! !
    51 ! !
    71 
    52