Fix in completion class vars and pools for class-side methods.
"{ Package: 'jv:smallsense' }"
Object subclass:#SmallSenseParseNodeVisitor
instanceVariableNames:'class'
classVariableNames:''
poolDictionaries:''
category:'SmallSense-Core'
!
!SmallSenseParseNodeVisitor class methodsFor:'documentation'!
documentation
"
An abstract parse tree visitor. Copied from libcomp
as ParseNodeVisitor is autoloaded and we need smallsense
to be fully compiled.
[author:]
Jan Vrany <jan.vrany@fit.cvut.cz>
[instance variables:]
[class variables:]
[see also:]
"
! !
!SmallSenseParseNodeVisitor class methodsFor:'instance creation'!
new
"return an initialized instance"
^ self basicNew initialize.
! !
!SmallSenseParseNodeVisitor class methodsFor:'processing'!
process: tree in: class
^self new process: tree in: class
"Created: / 26-11-2011 / 13:48:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!SmallSenseParseNodeVisitor methodsFor:'initialization'!
initialize
"Invoked when a new instance is created."
"/ please change as required (and remove this comment)
"/ super initialize. -- commented since inherited method does nothing
! !
!SmallSenseParseNodeVisitor methodsFor:'processing'!
process: tree in: cls
class := cls.
self visit: tree
"Created: / 26-11-2011 / 13:48:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!SmallSenseParseNodeVisitor methodsFor:'visiting'!
visit:anObject
| stmt |
^anObject isStatementNode ifTrue:[
stmt := anObject.
[ stmt isNil ] whileFalse:[
stmt acceptVisitor:self.
stmt := stmt nextStatement.
]
] ifFalse:[
anObject acceptVisitor: self.
]
"Modified: / 25-07-2011 / 22:33:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
visitAssignmentNode:anObject
self visit: anObject variable.
self visit: anObject expression.
"Modified: / 26-11-2011 / 13:20:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
visitBinaryNode:anObject
^self visitMessageNode: anObject
"Modified: / 25-07-2011 / 22:30:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
visitBlockNode:anObject
anObject statements ifNotNil:[
self visit: anObject statements
].
"Modified: / 25-07-2011 / 22:45:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
visitCascadeNode:anObject
self visitMessageNode: anObject.
"Modified: / 25-07-2011 / 22:37:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
visitConstantNode:anObject
"Modified: / 25-07-2011 / 22:41:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
visitECompletionConstantNode:anObject
"dispatched back from the visited eCompletionConstantNode-object (visitor pattern)"
"fall back to general object-case - please change as required"
^ self visitObject:anObject
!
visitMessageNode:anObject
self visit: anObject receiver.
anObject arguments do:[:arg|
self visit: arg.
]
"Modified: / 25-07-2011 / 22:37:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
visitObject:anObject
"dispatched back from the visited objects (visitor pattern)"
"general fallBack - please change as required"
self halt:'not yet implemented'
!
visitParseErrorNode:anObject
"Modified: / 25-07-2011 / 22:38:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
visitPrimitiveNode:anObject
"Modified: / 25-07-2011 / 22:38:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
visitReturnNode:anObject
self visitStatementNode: anObject
"Modified: / 25-07-2011 / 22:34:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
visitSelfNode:anObject
"Modified: / 25-07-2011 / 22:38:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
visitStatementNode:anObject
self visit: anObject expression.
"Modified: / 25-07-2011 / 22:34:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
visitSuperNode:anObject
"Modified: / 25-07-2011 / 22:38:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
visitUnaryNode:anObject
self visitMessageNode: anObject
"Modified: / 25-07-2011 / 22:38:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
visitVariableNode:anObject
"Modified: / 25-07-2011 / 22:38:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!SmallSenseParseNodeVisitor class methodsFor:'documentation'!
version_HG
^ '$Changeset: <not expanded> $'
!
version_SVN
^ '$Id: SmallSenseParseNodeVisitor.st 7823 2011-11-26 16:55:59Z vranyj1 $'
! !