1: ================================================================================
  2: 
  3: Smalltalk defineClass: #SynapseParseNode
  4:     superclass: #{Core.Object}
  5:     indexedType: #none
  6:     private: false
  7:     instanceVariableNames: 'nodeType token symbol subNodes '
  8:     classInstanceVariableNames: ''
  9:     imports: ''
 10:     category: ''
 11: 
 12: ================================================================================
 13: 
 14: SynapseParseNode method for 'accessing'
 15: 
 16: allNodesDo: aBlock
 17: 
 18:     aBlock value: self.
 19:     self subNodes ifNil: [^self].
 20:     self subNodes do: [:aNode | aNode allNodesDo: aBlock]
 21: 
 22: ------------------------------------------------------------
 23: 
 24: SynapseParseNode method for 'initialize-release'
 25: 
 26: initialize
 27: 
 28:     nodeType := nil.
 29:     token := nil.
 30:     symbol := nil.
 31:     subNodes := nil
 32: 
 33: ------------------------------------------------------------
 34: 
 35: SynapseParseNode method for 'testing'
 36: 
 37: isInnerNode
 38: 
 39:     ^self isLeafNode not
 40: 
 41: ------------------------------------------------------------
 42: 
 43: SynapseParseNode method for 'testing'
 44: 
 45: isLeafNode
 46: 
 47:     ^self nodeType = #leaf
 48: 
 49: ------------------------------------------------------------
 50: 
 51: SynapseParseNode method for 'accessing'
 52: 
 53: nodeType
 54: 
 55:     ^nodeType
 56: 
 57: ------------------------------------------------------------
 58: 
 59: SynapseParseNode method for 'printing'
 60: 
 61: printOn: aStream
 62: 
 63:     self isLeafNode
 64:         ifTrue: 
 65:             [aStream
 66:                 nextPutAll: 'Node(';
 67:                 nextPutAll: self token printString;
 68:                 nextPutAll: ')']
 69:         ifFalse: 
 70:             [aStream
 71:                 nextPutAll: 'Node(';
 72:                 nextPutAll: self symbol printString;
 73:                 nextPutAll: ',';
 74:                 nextPutAll: self subNodes printString;
 75:                 nextPutAll: ')']
 76: 
 77: ------------------------------------------------------------
 78: 
 79: SynapseParseNode method for 'accessing'
 80: 
 81: subNode
 82: 
 83:     ^self subNodes first
 84: 
 85: ------------------------------------------------------------
 86: 
 87: SynapseParseNode method for 'accessing'
 88: 
 89: subNodes
 90: 
 91:     ^subNodes
 92: 
 93: ------------------------------------------------------------
 94: 
 95: SynapseParseNode method for 'accessing'
 96: 
 97: symbol
 98: 
 99:     ^symbol
100: 
101: ------------------------------------------------------------
102: 
103: SynapseParseNode method for 'initialize-release'
104: 
105: symbol: aSymbol subNodes: nodeCollection
106: 
107:     nodeType := #inner.
108:     symbol := aSymbol.
109:     subNodes := nodeCollection
110: 
111: ------------------------------------------------------------
112: 
113: SynapseParseNode method for 'accessing'
114: 
115: token
116: 
117:     ^token
118: 
119: ------------------------------------------------------------
120: 
121: SynapseParseNode method for 'initialize-release'
122: 
123: token: aToken
124: 
125:     nodeType := #leaf.
126:     token := aToken
127: 
128: ================================================================================
129: 
130: Smalltalk.SynapseParseNode class
131:     instanceVariableNames: ''
132: 
133: ================================================================================
134: 
135: SynapseParseNode class method for 'instance creation'
136: 
137: new
138: 
139:     ^(super new)
140:         initialize;
141:         yourself
142: 
143: ------------------------------------------------------------
144: 
145: SynapseParseNode class method for 'instance creation'
146: 
147: symbol: aToken subNodes: nodeCollection
148: 
149:     ^(self new)
150:         symbol: aToken subNodes: nodeCollection;
151:         yourself
152: 
153: ------------------------------------------------------------
154: 
155: SynapseParseNode class method for 'instance creation'
156: 
157: token: aToken
158: 
159:     ^(self new)
160:         token: aToken;
161:         yourself
162: 
163: ================================================================================

This document was generated by KSU.TextDoclet on 2013/02/22 at 01:01:17.