compiler/PPCUniversalResultStrategy.st
changeset 515 b5316ef15274
child 524 f6f68d32de73
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/PPCUniversalResultStrategy.st	Mon Aug 17 12:13:16 2015 +0100
@@ -0,0 +1,62 @@
+"{ Package: 'stx:goodies/petitparser/compiler' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCScannerResultStrategy subclass:#PPCUniversalResultStrategy
+	instanceVariableNames:'tokens'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Scanner'
+!
+
+!PPCUniversalResultStrategy methodsFor:'accessing'!
+
+indexForRetval: retval
+"	tokens withIndexDo: [ :e :index | 
+        (e == retval) ifTrue: [ ^ index ]
+    ].
+
+    self error: 'This should not happen!!'
+"
+    ^ codeGen idGen numericIdFor: retval
+!
+
+tokens
+    ^ tokens
+!
+
+tokens: array
+    self assert: (array isArray).
+    tokens := array 
+! !
+
+!PPCUniversalResultStrategy methodsFor:'as yet unclassified'!
+
+recordFailure: retval
+    codeGen codeRecordFailure: (self indexForRetval: retval)
+!
+
+recordFailure: retval offset: offset
+    codeGen codeRecordFailure: (self indexForRetval: retval)
+!
+
+recordMatch: retval
+    codeGen codeComment: 'symbol: ', retval storeString.
+    codeGen codeRecordMatch: (self indexForRetval: retval)
+!
+
+recordMatch: retval offset: offset
+    codeGen codeComment: 'symbol: ', retval storeString.
+    codeGen codeRecordMatch: (self indexForRetval: retval) offset: offset
+!
+
+reset
+"	^ codeGen code: 'self reset:', tokens storeString, '.'"
+    ^ codeGen code: 'self reset.'	
+!
+
+returnResult: state
+    self assert: (state isKindOf: PEGFsaState).
+    codeGen codeReturn.
+! !
+