compiler/PPCTokenVisitor.st
changeset 452 9f4558b3be66
parent 438 20598d7ce9fa
child 459 4751c407bb40
--- a/compiler/PPCTokenVisitor.st	Thu Apr 30 23:43:14 2015 +0200
+++ b/compiler/PPCTokenVisitor.st	Sun May 10 06:28:36 2015 +0100
@@ -9,86 +9,66 @@
 	category:'PetitCompiler-Visitors'
 !
 
-!PPCTokenVisitor methodsFor:'accessing'!
+!PPCTokenVisitor methodsFor:'as yet unclassified'!
 
-forbiddenNodes: nodeSet
-	forbiddenNodes := nodeSet.
-! !
+visitActionNode: node	
 
-!PPCTokenVisitor methodsFor:'initialization'!
+    (node hasProperty: #trimmingToken) ifTrue: [ 
+        | child newChild | 
+        "trimming token in token, remove it"
+        self change.
+        
+        child := node child secondChild.
+        newChild := self visit: child.
+        
+        child name isNil ifTrue: [ 
+            newChild name: node name.
+            ^ newChild.
+        ].
+        ^ PPCForwardNode new
+            child: newChild;
+            name: node name;
+            yourself
+    ].
 
-initialize
-	super initialize.
-	forbiddenNodes := IdentitySet new.
+    ^ super visitActionNode: node
+!
+
+visitTokenNode: node
+    "token in token, remove the token"
+    self visitChildren: node.
+    
+    node child name isNil ifTrue: [ 
+        self change.
+        node child name: node name.
+        ^ node child
+    ].
+
+ 	self change.
+    ^ PPCForwardNode new
+        child: node child;
+        name: node name;
+        yourself	
 ! !
 
 !PPCTokenVisitor methodsFor:'traversing'!
 
-beforeAccept: node
-	self assert: (forbiddenNodes includes: node) not description: 'Does not look like a token' 
-! !
-
-!PPCTokenVisitor methodsFor:'visiting'!
-
-visitActionNode: node
-	self visitChildren: node.
+afterAccept: node retval: retval
 
-	(node hasProperty: #trimmingToken) ifTrue: [ 
-		| child |
-		"token in token..."
-		child := node child children second.
-		child name ifNil: [ 
-			self change.
-			child name: node name.
-			^ child
-		]
-	].
-
-	self change.
-	^ node child
+    (retval name isNil not and: [ (retval name endsWith: '_ws') ]) ifTrue: [ 
+        self change.
+        ^ PPCTokenWhitespaceNode new
+            child: retval;
+            yourself
+    ].
+    ^ super afterAccept: node retval: retval
 !
 
-visitSequenceNode: node
-	self visitChildren: node.
-
-	self change.
-	^ PPCTokenSequenceNode new
-		children: node children;
-		name: node name;
-		properties: node properties;
-		yourself	
-!
-
-visitStarMessagePredicateNode: node
-	self visitChildren: node.
-	
-	self change.
-	^ PPCTokenStarMessagePredicateNode new
-		name: node name;
-		message: node message;
-		child: node child;
-		yourself
+beforeAccept: node
+    self assert: (forbiddenNodes includes: node) not description: 'Does not look like a token' 
 !
 
-visitSymbolActionNode: node
-	self visitChildren: node.
-	
-	self change.
-	^ node child
-!
-
-visitTokenNode: node
-	self visitChildren: node.
-	self change.
-	^ node child
-!
-
-visitTrimmingTokenNode: node
-	self visitChildren: node.
-        
-	self change.
-	^ node child
-
-    "Modified: / 23-04-2015 / 12:11:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+forbiddenNodes: nodeSet
+    forbiddenNodes := nodeSet.
 ! !