ParseNodeVisitor.st
author Claus Gittinger <cg@exept.de>
Sun, 03 May 2020 23:44:59 +0200
changeset 4650 e9b212d470ff
parent 4542 6ebb1ee3f2e6
child 4723 524785227024
permissions -rw-r--r--
#FEATURE by cg class: ParseError added: #position
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4542
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
     1
"{ Encoding: utf8 }"
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
     2
2584
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ Package: 'stx:libcomp' }"
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
3781
05e4db8b31e3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2584
diff changeset
     5
"{ NameSpace: Smalltalk }"
05e4db8b31e3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2584
diff changeset
     6
2584
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
Object subclass:#ParseNodeVisitor
4542
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
     8
	instanceVariableNames:'pluggableActionsPerNodeType'
2584
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	classVariableNames:''
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
	poolDictionaries:''
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
	category:'System-Compiler-Support'
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
3781
05e4db8b31e3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2584
diff changeset
    14
!ParseNodeVisitor class methodsFor:'documentation'!
05e4db8b31e3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2584
diff changeset
    15
05e4db8b31e3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2584
diff changeset
    16
documentation
05e4db8b31e3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2584
diff changeset
    17
"
05e4db8b31e3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2584
diff changeset
    18
    a whitebox expandable abstract parsenode visitor.
05e4db8b31e3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2584
diff changeset
    19
    Subclasses should redefine those acceptXXX methods, in which they are interested.
05e4db8b31e3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2584
diff changeset
    20
"    
05e4db8b31e3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2584
diff changeset
    21
! !
2584
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
4542
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    23
!ParseNodeVisitor methodsFor:'pluggable setup'!
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    24
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    25
actionForNodeClass:aNodeClass put:aBlock
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    26
    "setup so that for nodes of type aNodeClass, aBlock is invoked.
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    27
     If the block returns true, subnodes (eg. right side of assignments, etc.)
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    28
     will be enumerated as well.
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    29
     Otherwise, no subnodes are visited."
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    30
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    31
    pluggableActionsPerNodeType isNil ifTrue:[
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    32
         pluggableActionsPerNodeType := Dictionary new.
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    33
    ].
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    34
    pluggableActionsPerNodeType at:aNodeClass put:aBlock
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    35
! !
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    36
2584
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
!ParseNodeVisitor methodsFor:'visiting'!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
visit:anObject 
4542
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    40
    |action stmt lastResult|
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    41
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    42
    action := pluggableActionsPerNodeType at:(anObject class) ifAbsent:[nil].
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    43
    action notNil ifTrue:[ 
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    44
        (action value:anObject) ifFalse:[^ self].
6ebb1ee3f2e6 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 4516
diff changeset
    45
    ].
2584
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
4470
8e9fd99e36d9 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 3964
diff changeset
    47
    anObject isStatementNode ifTrue:[
8e9fd99e36d9 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 3964
diff changeset
    48
        stmt := anObject.
8e9fd99e36d9 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 3964
diff changeset
    49
        [ stmt isNil ] whileFalse:[
8e9fd99e36d9 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 3964
diff changeset
    50
            lastResult := stmt acceptVisitor:self.
8e9fd99e36d9 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 3964
diff changeset
    51
            stmt := stmt nextStatement.
8e9fd99e36d9 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 3964
diff changeset
    52
        ].
8e9fd99e36d9 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 3964
diff changeset
    53
        ^ lastResult
8e9fd99e36d9 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 3964
diff changeset
    54
    ] ifFalse:[
8e9fd99e36d9 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 3964
diff changeset
    55
        ^ anObject acceptVisitor: self.
8e9fd99e36d9 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 3964
diff changeset
    56
    ]
2584
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
    "Modified: / 25-07-2011 / 22:33:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
visitAssignmentNode:anObject 
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
    self visit: anObject variable.
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    self visit: anObject expression.
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    "Modified: / 25-07-2011 / 22:30:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
visitBinaryNode:anObject 
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    ^self visitMessageNode: anObject
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    "Modified: / 25-07-2011 / 22:30:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
visitBlockNode:anObject 
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    anObject statements ifNotNil:[
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
        self visit: anObject statements
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    ].
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    "Modified: / 25-07-2011 / 22:45:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
visitCascadeNode:anObject 
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
    self visitMessageNode: anObject.
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
    "Modified: / 25-07-2011 / 22:37:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
visitConstantNode:anObject
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
    "Modified: / 25-07-2011 / 22:41:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
visitECompletionConstantNode:anObject 
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    "dispatched back from the visited eCompletionConstantNode-object (visitor pattern)"
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
    "fall back to general object-case - please change as required"
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
    ^ self visitObject:anObject
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
visitMessageNode:anObject 
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    self visit: anObject receiver.
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
    anObject arguments do:[:arg|
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
        self visit: arg.
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
    ]
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
    "Modified: / 25-07-2011 / 22:37:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
visitObject:anObject 
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
    "dispatched back from the visited objects (visitor pattern)"
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
    "general fallBack - please change as required"
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
    self halt:'not yet implemented'
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
visitParseErrorNode:anObject
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
    "Modified: / 25-07-2011 / 22:38:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
visitPrimitiveNode:anObject
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
    "Modified: / 25-07-2011 / 22:38:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
visitReturnNode:anObject 
3807
b310b46dae58 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 3781
diff changeset
   134
    self visit: anObject expression.
2584
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
3807
b310b46dae58 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 3781
diff changeset
   137
visitSelfNode:anObject 
b310b46dae58 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 3781
diff changeset
   138
    "/ to be redefined in subclasses
2584
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
visitStatementNode:anObject 
3964
f24f12ed11a1 #OTHER by mawalch
mawalch
parents: 3807
diff changeset
   142
    |expr|
f24f12ed11a1 #OTHER by mawalch
mawalch
parents: 3807
diff changeset
   143
f24f12ed11a1 #OTHER by mawalch
mawalch
parents: 3807
diff changeset
   144
    (expr := anObject expression) notNil ifTrue:[
f24f12ed11a1 #OTHER by mawalch
mawalch
parents: 3807
diff changeset
   145
        self visit: expr.
f24f12ed11a1 #OTHER by mawalch
mawalch
parents: 3807
diff changeset
   146
    ]
2584
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
3807
b310b46dae58 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 3781
diff changeset
   149
visitSuperNode:anObject 
b310b46dae58 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 3781
diff changeset
   150
    "/ to be redefined in subclasses
2584
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
visitUnaryNode:anObject 
3807
b310b46dae58 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 3781
diff changeset
   154
    ^self visitMessageNode: anObject
2584
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
3807
b310b46dae58 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 3781
diff changeset
   157
visitVariableNode:anObject 
b310b46dae58 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 3781
diff changeset
   158
    "/ to be redefined in subclasses
2584
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
! !
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
4470
8e9fd99e36d9 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 3964
diff changeset
   161
!ParseNodeVisitor methodsFor:'visiting - javaScript'!
8e9fd99e36d9 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 3964
diff changeset
   162
4497
25868e8ec797 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 4470
diff changeset
   163
doesNotUnderstand:aMessage
25868e8ec797 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 4470
diff changeset
   164
    "catch to prevent stupid error reports from Explainer in end-user app (expecco)"
25868e8ec797 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 4470
diff changeset
   165
25868e8ec797 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 4470
diff changeset
   166
    Smalltalk isStandAloneApp ifTrue:[^ self].
25868e8ec797 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 4470
diff changeset
   167
    "/ ((aMessage selector startsWith:'visit') 
25868e8ec797 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 4470
diff changeset
   168
    "/ and:[ aMessage selector endsWith:'Node:' ]) ifTrue:[
25868e8ec797 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 4470
diff changeset
   169
    "/     ^ self.
25868e8ec797 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 4470
diff changeset
   170
    "/ ].
25868e8ec797 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 4470
diff changeset
   171
    ^ super doesNotUnderstand:aMessage.
4470
8e9fd99e36d9 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 3964
diff changeset
   172
! !
8e9fd99e36d9 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 3964
diff changeset
   173
2584
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
!ParseNodeVisitor class methodsFor:'documentation'!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
version
3781
05e4db8b31e3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2584
diff changeset
   177
    ^ '$Header$'
2584
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
!
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
version_CVS
3781
05e4db8b31e3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2584
diff changeset
   181
    ^ '$Header$'
2584
9ad2a6f1a1c7 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
! !
3781
05e4db8b31e3 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2584
diff changeset
   183