15 "When tokenizing, do not use guards" |
15 "When tokenizing, do not use guards" |
16 ^ false |
16 ^ false |
17 ! |
17 ! |
18 |
18 |
19 tokenGenerator |
19 tokenGenerator |
|
20 self error: 'deprecated'. |
|
21 |
20 tokenGenerator isNil ifTrue: [ |
22 tokenGenerator isNil ifTrue: [ |
21 tokenGenerator := PPCTokenCodeGenerator on: compiler. |
23 tokenGenerator := (PPCTokenCodeGenerator on: compiler) |
22 tokenGenerator arguments: arguments. |
24 arguments: arguments; |
|
25 yourself. |
23 ]. |
26 ]. |
24 ^ tokenGenerator |
27 ^ tokenGenerator |
25 ! |
28 ! |
26 |
29 |
27 tokenGenerator: whatever |
30 tokenGenerator: whatever |
89 | possibleError | |
98 | possibleError | |
90 possibleError := true. |
99 possibleError := true. |
91 |
100 |
92 node children do: [ :child | |
101 node children do: [ :child | |
93 | tokenMethodName | |
102 | tokenMethodName | |
94 |
103 |
95 child acceptsEpsilon ifTrue: [ |
104 "TODO: JK: fix this in a proper way. Commented for now to make LRPParser cimpilable |
|
105 with tokenizing" |
|
106 child acceptsEpsilon "false" ifTrue: [ |
96 possibleError := false. |
107 possibleError := false. |
97 compiler codeAssignParsedValueOf:[ self visit:child ] to:self retvalVar. |
108 compiler codeIf: 'true' then: [ |
98 compiler codeReturn |
109 compiler codeAssignParsedValueOf:[ self visit:child ] to:self retvalVar. |
|
110 compiler codeReturn |
|
111 ]. |
99 ] ifFalse: [ |
112 ] ifFalse: [ |
100 child firstSetWithTokens do: [ :first | |
113 child firstSetWithTokens do: [ :first | |
101 "For each child, for each first compile this:" |
114 "For each child, for each first compile this:" |
102 |
115 |
103 tokenMethodName := compiler idFor: first. |
116 tokenMethodName := compiler idFor: first. |
123 ]. |
136 ]. |
124 possibleError ifTrue: [ |
137 possibleError ifTrue: [ |
125 compiler codeError: 'no choice found'. |
138 compiler codeError: 'no choice found'. |
126 ] |
139 ] |
127 |
140 |
128 "Modified: / 10-05-2015 / 07:37:53 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
141 "Modified: / 31-07-2015 / 08:07:59 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
129 ! |
142 ! |
130 |
143 |
131 visitDeterministicChoiceNode: node |
144 visitDeterministicChoiceNode: node |
132 | dictionary isInlined | |
145 | dictionary isInlined | |
133 dictionary := IdentityDictionary new. |
146 dictionary := IdentityDictionary new. |
181 ]. |
194 ]. |
182 super visitChoiceNode: node." |
195 super visitChoiceNode: node." |
183 ! |
196 ! |
184 |
197 |
185 visitTokenConsumeNode: node |
198 visitTokenConsumeNode: node |
186 | id | |
199 "dont do anything here" |
187 id := (compiler idFor: node child). |
200 ^ node |
188 compiler add: 'self ', id asString, ' ifTrue: ['. |
|
189 compiler indent. |
|
190 compiler codeAssign: 'nil.' to: 'currentTokenType'. |
|
191 compiler codeReturn: 'currentTokenValue'. |
|
192 compiler dedent. |
|
193 compiler add: '] ifFalse: ['. |
|
194 compiler indent. |
|
195 compiler codeError: id asString, ' expected'. |
|
196 compiler dedent. |
|
197 compiler add: '].'. |
|
198 |
|
199 " |
|
200 compiler codeReturn: 'self consume: ', (compiler idFor: node child) storeString, '.' |
|
201 " |
|
202 ! |
201 ! |
203 |
202 |
204 visitTokenNode: node |
203 visitTokenNode: node |
205 self error: 'shoudl not happend!!' |
204 self error: 'should not happen!!' |
206 ! |
205 ! |
207 |
206 |
208 visitTokenizingParserNode: node |
207 visitTokenizingParserNode: node |
209 self visit: node tokenizer. |
|
210 self visit: node whitespace. |
208 self visit: node whitespace. |
211 |
209 |
212 compiler codeHaltIfShiftPressed. |
210 compiler codeHaltIfShiftPressed. |
213 compiler |
211 compiler |
214 codeAssignParsedValueOf:[ self visit:node parser ] |
212 codeAssignParsedValueOf:[ self visit:node parser ] |
215 to:self retvalVar. |
213 to:self retvalVar. |
216 compiler codeReturn. |
214 compiler codeReturn. |
217 ! |
215 ! |
218 |
216 |
|
217 visitTrimmingTokenCharacterNode: node |
|
218 self error: 'should not happen!!' |
|
219 ! |
|
220 |
219 visitTrimmingTokenNode: node |
221 visitTrimmingTokenNode: node |
220 self error: 'shoudl not happend!!' |
222 self error: 'should not happen!!' |
221 ! ! |
223 ! ! |
222 |
224 |