1: ================================================================================
2:
3: Smalltalk defineClass: #SynapseParseTable
4: superclass: #{Core.Object}
5: indexedType: #none
6: private: false
7: instanceVariableNames: 'table selectorDictionary '
8: classInstanceVariableNames: ''
9: imports: ''
10: category: ''
11:
12: ================================================================================
13:
14: SynapseParseTable method for 'accessing'
15:
16: at: stateSymbol
17:
18: | aDictionary |
19: aDictionary := self table at: stateSymbol ifAbsent: [nil].
20: aDictionary ifNotNil: [^aDictionary].
21: aDictionary := self defaultDictionary: stateSymbol.
22: aDictionary ifNil: [^nil].
23: self table at: stateSymbol put: aDictionary.
24: ^aDictionary
25:
26: ------------------------------------------------------------
27:
28: SynapseParseTable method for 'accessing'
29:
30: at: stateSymbol tokenSymbol: tokenSymbol
31:
32: | aDictionary anAction |
33: aDictionary := self at: stateSymbol.
34: aDictionary ifNil: [^nil].
35: anAction := aDictionary at: tokenSymbol ifAbsent: [self defaultActionClass errorAction].
36: ^anAction
37:
38: ------------------------------------------------------------
39:
40: SynapseParseTable method for 'defaults'
41:
42: defaultActionClass
43:
44: ^KSU.SynapseParseAction
45:
46: ------------------------------------------------------------
47:
48: SynapseParseTable method for 'default dictionaries'
49:
50: defaultDictionary: stateSymbol
51:
52: | aSelector aDictionary |
53: aSelector := self selectorDictionary at: stateSymbol ifAbsent: [nil].
54: aSelector ifNil: [^nil].
55: aDictionary := self perform: aSelector.
56: ^aDictionary
57:
58: ------------------------------------------------------------
59:
60: SynapseParseTable method for 'initialize-release'
61:
62: initialize
63:
64: table := nil
65:
66: ------------------------------------------------------------
67:
68: SynapseParseTable method for 'defaults'
69:
70: initialState
71:
72: ^#state0
73:
74: ------------------------------------------------------------
75:
76: SynapseParseTable method for 'default dictionaries'
77:
78: selectorDictionary
79:
80: selectorDictionary ifNotNil: [^selectorDictionary].
81: selectorDictionary := (Dictionary new)
82: add: #state0 -> #state0;
83: add: #state1 -> #state1;
84: add: #state2 -> #state2;
85: add: #state3 -> #state3;
86: add: #state4 -> #state4;
87: add: #state5 -> #state5;
88: add: #state6 -> #state6;
89: add: #state7 -> #state7;
90: add: #state8 -> #state8;
91: add: #state9 -> #state9;
92: add: #state10 -> #state10;
93: add: #state18 -> #state18;
94: add: #state19 -> #state19;
95: add: #state20 -> #state20;
96: add: #state21 -> #state21;
97: add: #state22 -> #state22;
98: add: #state23 -> #state23;
99: add: #state24 -> #state24;
100: add: #state25 -> #state25;
101: add: #state26 -> #state26;
102: add: #state27 -> #state27;
103: add: #state28 -> #state28;
104: add: #state29 -> #state29;
105: add: #state30 -> #state30;
106: add: #state31 -> #state31;
107: add: #state34 -> #state34;
108: add: #state35 -> #state35;
109: add: #state37 -> #state37;
110: add: #state39 -> #state39;
111: add: #state41 -> #state41;
112: add: #state42 -> #state42;
113: add: #state43 -> #state43;
114: add: #state44 -> #state44;
115: add: #state45 -> #state45;
116: add: #state46 -> #state46;
117: add: #state48 -> #state48;
118: add: #state49 -> #state49;
119: add: #state50 -> #state50;
120: yourself.
121: ^selectorDictionary
122:
123: ------------------------------------------------------------
124:
125: SynapseParseTable method for 'default dictionaries'
126:
127: state0
128:
129: ^(Dictionary new)
130: add: #ID -> (self defaultActionClass shiftAction: #state8);
131: add: #COMMENT -> (self defaultActionClass shiftAction: #state9);
132: add: #Statements -> (self defaultActionClass shiftAction: #state1);
133: add: #Statement -> (self defaultActionClass shiftAction: #state2);
134: add: #Assignment -> (self defaultActionClass shiftAction: #state3);
135: add: #Synapse -> (self defaultActionClass shiftAction: #state4);
136: add: #Variable -> (self defaultActionClass shiftAction: #state7);
137: add: #VariableName -> (self defaultActionClass shiftAction: #state6);
138: add: #Comment -> (self defaultActionClass shiftAction: #state5);
139: yourself
140:
141: ------------------------------------------------------------
142:
143: SynapseParseTable method for 'default dictionaries'
144:
145: state1
146:
147: ^(Dictionary new)
148: add: #ID -> (self defaultActionClass shiftAction: #state8);
149: add: #COMMENT -> (self defaultActionClass shiftAction: #state9);
150: add: #acceptance -> self defaultActionClass acceptAction;
151: add: #Statement -> (self defaultActionClass shiftAction: #state10);
152: add: #Assignment -> (self defaultActionClass shiftAction: #state3);
153: add: #Synapse -> (self defaultActionClass shiftAction: #state4);
154: add: #Variable -> (self defaultActionClass shiftAction: #state7);
155: add: #VariableName -> (self defaultActionClass shiftAction: #state6);
156: add: #Comment -> (self defaultActionClass shiftAction: #state5);
157: yourself
158:
159: ------------------------------------------------------------
160:
161: SynapseParseTable method for 'default dictionaries'
162:
163: state10
164:
165: ^(Dictionary new)
166: add: #ID -> (self defaultActionClass reduceAction: #(#Statements #Statement) to: #Statements);
167: add: #COMMENT -> (self defaultActionClass reduceAction: #(#Statements #Statement) to: #Statements);
168: add: #acceptance -> (self defaultActionClass reduceAction: #(#Statements #Statement) to: #Statements);
169: yourself
170:
171: ------------------------------------------------------------
172:
173: SynapseParseTable method for 'default dictionaries'
174:
175: state18
176:
177: ^(Dictionary new)
178: add: #ID -> (self defaultActionClass reduceAction: #(#Assignment #SEMICOLON) to: #Statement);
179: add: #COMMENT -> (self defaultActionClass reduceAction: #(#Assignment #SEMICOLON) to: #Statement);
180: add: #acceptance -> (self defaultActionClass reduceAction: #(#Assignment #SEMICOLON) to: #Statement);
181: yourself
182:
183: ------------------------------------------------------------
184:
185: SynapseParseTable method for 'default dictionaries'
186:
187: state19
188:
189: ^(Dictionary new)
190: add: #ID -> (self defaultActionClass reduceAction: #(#Synapse #SEMICOLON) to: #Statement);
191: add: #COMMENT -> (self defaultActionClass reduceAction: #(#Synapse #SEMICOLON) to: #Statement);
192: add: #acceptance -> (self defaultActionClass reduceAction: #(#Synapse #SEMICOLON) to: #Statement);
193: yourself
194:
195: ------------------------------------------------------------
196:
197: SynapseParseTable method for 'default dictionaries'
198:
199: state2
200:
201: ^(Dictionary new)
202: add: #ID -> (self defaultActionClass reduceAction: #(#Statement) to: #Statements);
203: add: #COMMENT -> (self defaultActionClass reduceAction: #(#Statement) to: #Statements);
204: add: #acceptance -> (self defaultActionClass reduceAction: #(#Statement) to: #Statements);
205: yourself
206:
207: ------------------------------------------------------------
208:
209: SynapseParseTable method for 'default dictionaries'
210:
211: state20
212:
213: ^(Dictionary new)
214: add: #ID -> (self defaultActionClass shiftAction: #state28);
215: add: #Constructor -> (self defaultActionClass shiftAction: #state26);
216: add: #ConstructorName -> (self defaultActionClass shiftAction: #state27);
217: yourself
218:
219: ------------------------------------------------------------
220:
221: SynapseParseTable method for 'default dictionaries'
222:
223: state21
224:
225: ^(Dictionary new)
226: add: #ID -> (self defaultActionClass shiftAction: #state30);
227: add: #MemberName -> (self defaultActionClass shiftAction: #state29);
228: yourself
229:
230: ------------------------------------------------------------
231:
232: SynapseParseTable method for 'default dictionaries'
233:
234: state22
235:
236: ^(Dictionary new)
237: add: #SEND -> (self defaultActionClass shiftAction: #state25);
238: add: #TO -> (self defaultActionClass shiftAction: #state24);
239: add: #SEMICOLON -> (self defaultActionClass reduceAction: #(#Variable #Mappings) to: #Synapse);
240: add: #Mapping -> (self defaultActionClass shiftAction: #state31);
241: yourself
242:
243: ------------------------------------------------------------
244:
245: SynapseParseTable method for 'default dictionaries'
246:
247: state23
248:
249: ^(Dictionary new)
250: add: #SEND -> (self defaultActionClass reduceAction: #(#Mapping) to: #Mappings);
251: add: #TO -> (self defaultActionClass reduceAction: #(#Mapping) to: #Mappings);
252: add: #SEMICOLON -> (self defaultActionClass reduceAction: #(#Mapping) to: #Mappings);
253: yourself
254:
255: ------------------------------------------------------------
256:
257: SynapseParseTable method for 'default dictionaries'
258:
259: state24
260:
261: ^(Dictionary new)
262: add: #ID -> (self defaultActionClass shiftAction: #state8);
263: add: #Variable -> (self defaultActionClass shiftAction: #state34);
264: add: #VariableName -> (self defaultActionClass shiftAction: #state35);
265: yourself
266:
267: ------------------------------------------------------------
268:
269: SynapseParseTable method for 'default dictionaries'
270:
271: state25
272:
273: ^(Dictionary new)
274: add: #ID -> (self defaultActionClass shiftAction: #state30);
275: add: #MemberName -> (self defaultActionClass shiftAction: #state37);
276: yourself
277:
278: ------------------------------------------------------------
279:
280: SynapseParseTable method for 'default dictionaries'
281:
282: state26
283:
284: ^(Dictionary new)
285: add: #SEMICOLON -> (self defaultActionClass reduceAction: #(#VariableName #GETS #Constructor) to: #Assignment);
286: yourself
287:
288: ------------------------------------------------------------
289:
290: SynapseParseTable method for 'default dictionaries'
291:
292: state27
293:
294: ^(Dictionary new)
295: add: #LPAR -> (self defaultActionClass shiftAction: #state39);
296: yourself
297:
298: ------------------------------------------------------------
299:
300: SynapseParseTable method for 'default dictionaries'
301:
302: state28
303:
304: ^(Dictionary new)
305: add: #LPAR -> (self defaultActionClass reduceAction: #(#ID) to: #ConstructorName);
306: yourself
307:
308: ------------------------------------------------------------
309:
310: SynapseParseTable method for 'default dictionaries'
311:
312: state29
313:
314: ^(Dictionary new)
315: add: #SEND -> (self defaultActionClass reduceAction: #(#VariableName #PERIOD #MemberName) to: #Variable);
316: add: #TO -> (self defaultActionClass reduceAction: #(#VariableName #PERIOD #MemberName) to: #Variable);
317: add: #SEMICOLON -> (self defaultActionClass reduceAction: #(#VariableName #PERIOD #MemberName) to: #Variable);
318: yourself
319:
320: ------------------------------------------------------------
321:
322: SynapseParseTable method for 'default dictionaries'
323:
324: state3
325:
326: ^(Dictionary new)
327: add: #SEMICOLON -> (self defaultActionClass shiftAction: #state18);
328: yourself
329:
330: ------------------------------------------------------------
331:
332: SynapseParseTable method for 'default dictionaries'
333:
334: state30
335:
336: ^(Dictionary new)
337: add: #SEND -> (self defaultActionClass reduceAction: #(#ID) to: #MemberName);
338: add: #TO -> (self defaultActionClass reduceAction: #(#ID) to: #MemberName);
339: add: #SEMICOLON -> (self defaultActionClass reduceAction: #(#ID) to: #MemberName);
340: yourself
341:
342: ------------------------------------------------------------
343:
344: SynapseParseTable method for 'default dictionaries'
345:
346: state31
347:
348: ^(Dictionary new)
349: add: #SEND -> (self defaultActionClass reduceAction: #(#Mappings #Mapping) to: #Mappings);
350: add: #TO -> (self defaultActionClass reduceAction: #(#Mappings #Mapping) to: #Mappings);
351: add: #SEMICOLON -> (self defaultActionClass reduceAction: #(#Mappings #Mapping) to: #Mappings);
352: yourself
353:
354: ------------------------------------------------------------
355:
356: SynapseParseTable method for 'default dictionaries'
357:
358: state34
359:
360: ^(Dictionary new)
361: add: #SEND -> (self defaultActionClass reduceAction: #(#TO #Variable) to: #Mapping);
362: add: #TO -> (self defaultActionClass reduceAction: #(#TO #Variable) to: #Mapping);
363: add: #SEMICOLON -> (self defaultActionClass reduceAction: #(#TO #Variable) to: #Mapping);
364: yourself
365:
366: ------------------------------------------------------------
367:
368: SynapseParseTable method for 'default dictionaries'
369:
370: state35
371:
372: ^(Dictionary new)
373: add: #SEND -> (self defaultActionClass reduceAction: #(#VariableName) to: #Variable);
374: add: #TO -> (self defaultActionClass reduceAction: #(#VariableName) to: #Variable);
375: add: #SEMICOLON -> (self defaultActionClass reduceAction: #(#VariableName) to: #Variable);
376: add: #PERIOD -> (self defaultActionClass shiftAction: #state21);
377: yourself
378:
379: ------------------------------------------------------------
380:
381: SynapseParseTable method for 'default dictionaries'
382:
383: state37
384:
385: ^(Dictionary new)
386: add: #TO -> (self defaultActionClass shiftAction: #state41);
387: yourself
388:
389: ------------------------------------------------------------
390:
391: SynapseParseTable method for 'default dictionaries'
392:
393: state39
394:
395: ^(Dictionary new)
396: add: #RPAR -> (self defaultActionClass shiftAction: #state42);
397: add: #STRING -> (self defaultActionClass shiftAction: #state45);
398: add: #Arguments -> (self defaultActionClass shiftAction: #state43);
399: add: #Argument -> (self defaultActionClass shiftAction: #state44);
400: yourself
401:
402: ------------------------------------------------------------
403:
404: SynapseParseTable method for 'default dictionaries'
405:
406: state4
407:
408: ^(Dictionary new)
409: add: #SEMICOLON -> (self defaultActionClass shiftAction: #state19);
410: yourself
411:
412: ------------------------------------------------------------
413:
414: SynapseParseTable method for 'default dictionaries'
415:
416: state41
417:
418: ^(Dictionary new)
419: add: #ID -> (self defaultActionClass shiftAction: #state8);
420: add: #Variable -> (self defaultActionClass shiftAction: #state46);
421: add: #VariableName -> (self defaultActionClass shiftAction: #state35);
422: yourself
423:
424: ------------------------------------------------------------
425:
426: SynapseParseTable method for 'default dictionaries'
427:
428: state42
429:
430: ^(Dictionary new)
431: add: #SEMICOLON -> (self defaultActionClass reduceAction: #(#ConstructorName #LPAR #RPAR) to: #Constructor);
432: yourself
433:
434: ------------------------------------------------------------
435:
436: SynapseParseTable method for 'default dictionaries'
437:
438: state43
439:
440: ^(Dictionary new)
441: add: #RPAR -> (self defaultActionClass shiftAction: #state48);
442: add: #COMMA -> (self defaultActionClass shiftAction: #state49);
443: yourself
444:
445: ------------------------------------------------------------
446:
447: SynapseParseTable method for 'default dictionaries'
448:
449: state44
450:
451: ^(Dictionary new)
452: add: #RPAR -> (self defaultActionClass reduceAction: #(#Argument) to: #Arguments);
453: add: #COMMA -> (self defaultActionClass reduceAction: #(#Argument) to: #Arguments);
454: yourself
455:
456: ------------------------------------------------------------
457:
458: SynapseParseTable method for 'default dictionaries'
459:
460: state45
461:
462: ^(Dictionary new)
463: add: #RPAR -> (self defaultActionClass reduceAction: #(#STRING) to: #Argument);
464: add: #COMMA -> (self defaultActionClass reduceAction: #(#STRING) to: #Argument);
465: yourself
466:
467: ------------------------------------------------------------
468:
469: SynapseParseTable method for 'default dictionaries'
470:
471: state46
472:
473: ^(Dictionary new)
474: add: #SEND -> (self defaultActionClass reduceAction: #(#SEND #MemberName #TO #Variable) to: #Mapping);
475: add: #TO -> (self defaultActionClass reduceAction: #(#SEND #MemberName #TO #Variable) to: #Mapping);
476: add: #SEMICOLON -> (self defaultActionClass reduceAction: #(#SEND #MemberName #TO #Variable) to: #Mapping);
477: yourself
478:
479: ------------------------------------------------------------
480:
481: SynapseParseTable method for 'default dictionaries'
482:
483: state48
484:
485: ^(Dictionary new)
486: add: #SEMICOLON -> (self defaultActionClass reduceAction: #(#ConstructorName #LPAR #Arguments #RPAR) to: #Constructor);
487: yourself
488:
489: ------------------------------------------------------------
490:
491: SynapseParseTable method for 'default dictionaries'
492:
493: state49
494:
495: ^(Dictionary new)
496: add: #STRING -> (self defaultActionClass shiftAction: #state45);
497: add: #Argument -> (self defaultActionClass shiftAction: #state50);
498: yourself
499:
500: ------------------------------------------------------------
501:
502: SynapseParseTable method for 'default dictionaries'
503:
504: state5
505:
506: ^(Dictionary new)
507: add: #ID -> (self defaultActionClass reduceAction: #(#Comment) to: #Statement);
508: add: #COMMENT -> (self defaultActionClass reduceAction: #(#Comment) to: #Statement);
509: add: #acceptance -> (self defaultActionClass reduceAction: #(#Comment) to: #Statement);
510: yourself
511:
512: ------------------------------------------------------------
513:
514: SynapseParseTable method for 'default dictionaries'
515:
516: state50
517:
518: ^(Dictionary new)
519: add: #RPAR -> (self defaultActionClass reduceAction: #(#Arguments #COMMA #Argument) to: #Arguments);
520: add: #COMMA -> (self defaultActionClass reduceAction: #(#Arguments #COMMA #Argument) to: #Arguments);
521: yourself
522:
523: ------------------------------------------------------------
524:
525: SynapseParseTable method for 'default dictionaries'
526:
527: state6
528:
529: ^(Dictionary new)
530: add: #SEND -> (self defaultActionClass reduceAction: #(#VariableName) to: #Variable);
531: add: #TO -> (self defaultActionClass reduceAction: #(#VariableName) to: #Variable);
532: add: #GETS -> (self defaultActionClass shiftAction: #state20);
533: add: #SEMICOLON -> (self defaultActionClass reduceAction: #(#VariableName) to: #Variable);
534: add: #PERIOD -> (self defaultActionClass shiftAction: #state21);
535: yourself
536:
537: ------------------------------------------------------------
538:
539: SynapseParseTable method for 'default dictionaries'
540:
541: state7
542:
543: ^(Dictionary new)
544: add: #SEND -> (self defaultActionClass shiftAction: #state25);
545: add: #TO -> (self defaultActionClass shiftAction: #state24);
546: add: #Mappings -> (self defaultActionClass shiftAction: #state22);
547: add: #Mapping -> (self defaultActionClass shiftAction: #state23);
548: yourself
549:
550: ------------------------------------------------------------
551:
552: SynapseParseTable method for 'default dictionaries'
553:
554: state8
555:
556: ^(Dictionary new)
557: add: #SEND -> (self defaultActionClass reduceAction: #(#ID) to: #VariableName);
558: add: #TO -> (self defaultActionClass reduceAction: #(#ID) to: #VariableName);
559: add: #GETS -> (self defaultActionClass reduceAction: #(#ID) to: #VariableName);
560: add: #SEMICOLON -> (self defaultActionClass reduceAction: #(#ID) to: #VariableName);
561: add: #PERIOD -> (self defaultActionClass reduceAction: #(#ID) to: #VariableName);
562: yourself
563:
564: ------------------------------------------------------------
565:
566: SynapseParseTable method for 'default dictionaries'
567:
568: state9
569:
570: ^(Dictionary new)
571: add: #ID -> (self defaultActionClass reduceAction: #(#COMMENT) to: #Comment);
572: add: #COMMENT -> (self defaultActionClass reduceAction: #(#COMMENT) to: #Comment);
573: add: #acceptance -> (self defaultActionClass reduceAction: #(#COMMENT) to: #Comment);
574: yourself
575:
576: ------------------------------------------------------------
577:
578: SynapseParseTable method for 'accessing'
579:
580: table
581:
582: table ifNil: [table := Dictionary new].
583: ^table
584:
585: ================================================================================
586:
587: Smalltalk.SynapseParseTable class
588: instanceVariableNames: ''
589:
590: ================================================================================
591:
592: SynapseParseTable class method for 'examples'
593:
594: example1
595: "KSU.SynapseParseTable example1."
596:
597: | aTable |
598: aTable := KSU.SynapseParseTable new.
599: ^aTable
600:
601: ------------------------------------------------------------
602:
603: SynapseParseTable class method for 'instance creation'
604:
605: new
606:
607: ^(super new)
608: initialize;
609: yourself
610:
611: ================================================================================
This document was generated by KSU.TextDoclet on 2013/02/22 at 01:01:17.