compiler/PPCRewritingVisitor.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Fri, 01 May 2015 14:39:47 +0200
changeset 445 eb33780df2f9
parent 438 20598d7ce9fa
child 452 9f4558b3be66
permissions -rw-r--r--
Portability: Inlined #asLegalSelector since Smalltalk/X does not support it

"{ Package: 'stx:goodies/petitparser/compiler' }"

"{ NameSpace: Smalltalk }"

PPCNodeVisitor subclass:#PPCRewritingVisitor
	instanceVariableNames:'change'
	classVariableNames:''
	poolDictionaries:''
	category:'PetitCompiler-Visitors'
!

!PPCRewritingVisitor methodsFor:'as yet unclassified'!

change
	self flag: 'JK: Do we need this?'.
	change := true.
!

visitChild: child of: node
	| newChild |

	(self isOpen: child) ifTrue: [ 
		"already processing..."
		^ nil
	].

	(self isCached: child) ifTrue: [ 
		"Use Cached Value"
		node replace: child with: (self cachedValue: child).
		^ nil
	]. 


	change := false.
	newChild := self visit: child.
	change ifTrue: [ 
		node replace: child with: newChild.
	].
!

visitChildren: node
	node children do: [ :child | 
		self visitChild: child of: node
	]
! !