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.