compiler/PPCTokenizingCodeGenerator.st
changeset 516 3b81c9e53352
parent 508 c74a0dbfa161
parent 515 b5316ef15274
child 525 751532c8f3db
--- a/compiler/PPCTokenizingCodeGenerator.st	Fri Jul 31 14:07:31 2015 +0100
+++ b/compiler/PPCTokenizingCodeGenerator.st	Mon Aug 17 12:56:02 2015 +0100
@@ -18,9 +18,12 @@
 !
 
 tokenGenerator
+    self error: 'deprecated'.
+    
     tokenGenerator isNil ifTrue: [ 
-        tokenGenerator := PPCTokenCodeGenerator on: compiler.
-        tokenGenerator arguments: arguments.
+        tokenGenerator := (PPCTokenCodeGenerator on: compiler)
+            arguments: arguments;
+            yourself.
     ].
     ^ tokenGenerator
 !
@@ -63,6 +66,12 @@
     ^ true
 ! !
 
+!PPCTokenizingCodeGenerator methodsFor:'scanner'!
+
+compileScanner
+    compiler addConstant: self tokenGenerator compileScanner as: #scannerClass.
+! !
+
 !PPCTokenizingCodeGenerator methodsFor:'visiting'!
 
 visitAndNode: node
@@ -95,10 +104,12 @@
 
         "TODO: JK: fix this in a proper way. Commented for now to make LRPParser cimpilable 
          with tokenizing"
-        "child acceptsEpsilon"false ifTrue: [  
+        child acceptsEpsilon "false" ifTrue: [  
             possibleError := false.
-            compiler codeAssignParsedValueOf:[ self visit:child ] to:self retvalVar.
-            compiler codeReturn
+            compiler codeIf: 'true' then: [ 
+                compiler codeAssignParsedValueOf:[ self visit:child ] to:self retvalVar.
+                compiler codeReturn
+            ].
         ] ifFalse: [
             child firstSetWithTokens do: [ :first |
                 "For each child, for each first compile this:"
@@ -186,30 +197,15 @@
 !
 
 visitTokenConsumeNode: node
-    | id |
-    id := (compiler idFor: node child).
-    compiler add: 'self ', id asString, ' ifTrue: ['.
-        compiler indent.
-        compiler codeAssign: 'nil.' to: 'currentTokenType'.
-        compiler codeReturn: 'currentTokenValue'.
-        compiler dedent.
-    compiler add: '] ifFalse: ['.
-    compiler indent.
-    compiler codeError: id asString, ' expected'.
-    compiler dedent.
-    compiler add: '].'.
-
-"
-    compiler codeReturn: 'self consume: ', (compiler idFor: node child) storeString, '.'
-"
+    "dont do anything here"
+    ^ node
 !
 
 visitTokenNode: node
-    self error: 'shoudl not happend!!'
+    self error: 'should not happen!!'
 !
 
 visitTokenizingParserNode: node
-    self visit: node tokenizer.
     self visit: node whitespace.
     
     compiler codeHaltIfShiftPressed.
@@ -219,8 +215,12 @@
     compiler codeReturn.
 !
 
+visitTrimmingTokenCharacterNode: node
+    self error: 'should not happen!!'
+!
+
 visitTrimmingTokenNode: node
-    self error: 'shoudl not happend!!'
+    self error: 'should not happen!!'
 ! !
 
 !PPCTokenizingCodeGenerator class methodsFor:'documentation'!