compiler/PPCDistinctResultStrategy.st
changeset 515 b5316ef15274
child 524 f6f68d32de73
--- /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.	
+! !
+