diff -r 1e45d3c96ec5 -r b5316ef15274 compiler/PPCDistinctResultStrategy.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/compiler/PPCDistinctResultStrategy.st Mon Aug 17 12:13:16 2015 +0100 @@ -0,0 +1,47 @@ +"{ Package: 'stx:goodies/petitparser/compiler' }" + +"{ NameSpace: Smalltalk }" + +PPCScannerResultStrategy subclass:#PPCDistinctResultStrategy + instanceVariableNames:'' + classVariableNames:'' + poolDictionaries:'' + category:'PetitCompiler-Scanner' +! + +!PPCDistinctResultStrategy methodsFor:'as yet unclassified'! + +recordFailure: retval + ^ self recordFailure: retval offset: 0 +! + +recordFailure: retval offset: offset + offset == 0 ifTrue: [ + codeGen codeRecordDistinctMatch: nil. + ^ self + ]. + codeGen codeRecordDistinctMatch: nil offset: offset +! + +recordMatch: retval + ^ self recordMatch: retval offset: 0 +! + +recordMatch: retval offset: offset + offset == 0 ifTrue: [ + codeGen codeRecordDistinctMatch: retval. + ^ self + ]. + + codeGen codeRecordDistinctMatch: retval offset: offset +! + +reset + ^ codeGen code: 'self resetDistinct.'. +! + +returnResult: state + codeGen codeNl. + codeGen codeReturnDistinct. +! ! +