16 "When tokenizing, do not use guards" |
16 "When tokenizing, do not use guards" |
17 ^ false |
17 ^ false |
18 ! |
18 ! |
19 |
19 |
20 tokenGenerator |
20 tokenGenerator |
|
21 self error: 'deprecated'. |
|
22 |
21 tokenGenerator isNil ifTrue: [ |
23 tokenGenerator isNil ifTrue: [ |
22 tokenGenerator := PPCTokenCodeGenerator on: compiler. |
24 tokenGenerator := (PPCTokenCodeGenerator on: compiler) |
23 tokenGenerator arguments: arguments. |
25 arguments: arguments; |
|
26 yourself. |
24 ]. |
27 ]. |
25 ^ tokenGenerator |
28 ^ tokenGenerator |
26 ! |
29 ! |
27 |
30 |
28 tokenGenerator: whatever |
31 tokenGenerator: whatever |
93 node children do: [ :child | |
102 node children do: [ :child | |
94 | tokenMethodName | |
103 | tokenMethodName | |
95 |
104 |
96 "TODO: JK: fix this in a proper way. Commented for now to make LRPParser cimpilable |
105 "TODO: JK: fix this in a proper way. Commented for now to make LRPParser cimpilable |
97 with tokenizing" |
106 with tokenizing" |
98 "child acceptsEpsilon"false ifTrue: [ |
107 child acceptsEpsilon "false" ifTrue: [ |
99 possibleError := false. |
108 possibleError := false. |
100 compiler codeAssignParsedValueOf:[ self visit:child ] to:self retvalVar. |
109 compiler codeIf: 'true' then: [ |
101 compiler codeReturn |
110 compiler codeAssignParsedValueOf:[ self visit:child ] to:self retvalVar. |
|
111 compiler codeReturn |
|
112 ]. |
102 ] ifFalse: [ |
113 ] ifFalse: [ |
103 child firstSetWithTokens do: [ :first | |
114 child firstSetWithTokens do: [ :first | |
104 "For each child, for each first compile this:" |
115 "For each child, for each first compile this:" |
105 |
116 |
106 tokenMethodName := compiler idFor: first. |
117 tokenMethodName := compiler idFor: first. |
184 ]. |
195 ]. |
185 super visitChoiceNode: node." |
196 super visitChoiceNode: node." |
186 ! |
197 ! |
187 |
198 |
188 visitTokenConsumeNode: node |
199 visitTokenConsumeNode: node |
189 | id | |
200 "dont do anything here" |
190 id := (compiler idFor: node child). |
201 ^ node |
191 compiler add: 'self ', id asString, ' ifTrue: ['. |
|
192 compiler indent. |
|
193 compiler codeAssign: 'nil.' to: 'currentTokenType'. |
|
194 compiler codeReturn: 'currentTokenValue'. |
|
195 compiler dedent. |
|
196 compiler add: '] ifFalse: ['. |
|
197 compiler indent. |
|
198 compiler codeError: id asString, ' expected'. |
|
199 compiler dedent. |
|
200 compiler add: '].'. |
|
201 |
|
202 " |
|
203 compiler codeReturn: 'self consume: ', (compiler idFor: node child) storeString, '.' |
|
204 " |
|
205 ! |
202 ! |
206 |
203 |
207 visitTokenNode: node |
204 visitTokenNode: node |
208 self error: 'shoudl not happend!!' |
205 self error: 'should not happen!!' |
209 ! |
206 ! |
210 |
207 |
211 visitTokenizingParserNode: node |
208 visitTokenizingParserNode: node |
212 self visit: node tokenizer. |
|
213 self visit: node whitespace. |
209 self visit: node whitespace. |
214 |
210 |
215 compiler codeHaltIfShiftPressed. |
211 compiler codeHaltIfShiftPressed. |
216 compiler |
212 compiler |
217 codeAssignParsedValueOf:[ self visit:node parser ] |
213 codeAssignParsedValueOf:[ self visit:node parser ] |
218 to:self retvalVar. |
214 to:self retvalVar. |
219 compiler codeReturn. |
215 compiler codeReturn. |
220 ! |
216 ! |
221 |
217 |
|
218 visitTrimmingTokenCharacterNode: node |
|
219 self error: 'should not happen!!' |
|
220 ! |
|
221 |
222 visitTrimmingTokenNode: node |
222 visitTrimmingTokenNode: node |
223 self error: 'shoudl not happend!!' |
223 self error: 'should not happen!!' |
224 ! ! |
224 ! ! |
225 |
225 |
226 !PPCTokenizingCodeGenerator class methodsFor:'documentation'! |
226 !PPCTokenizingCodeGenerator class methodsFor:'documentation'! |
227 |
227 |
228 version_HG |
228 version_HG |