Compiler-AST.js 31 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330
  1. smalltalk.addPackage('Compiler-AST', {});
  2. smalltalk.addClass('Node', smalltalk.Object, ['nodes'], 'Compiler-AST');
  3. smalltalk.Node.comment="I am the abstract root class of the abstract syntax tree."
  4. smalltalk.addMethod(
  5. "_accept_",
  6. smalltalk.method({
  7. selector: "accept:",
  8. category: 'visiting',
  9. fn: function (aVisitor) {
  10. var self=this;
  11. return smalltalk.send(aVisitor, "_visitNode_", [self]);
  12. return self;},
  13. args: ["aVisitor"],
  14. source: "accept: aVisitor\x0a\x09^ aVisitor visitNode: self",
  15. messageSends: ["visitNode:"],
  16. referencedClasses: []
  17. }),
  18. smalltalk.Node);
  19. smalltalk.addMethod(
  20. "_addNode_",
  21. smalltalk.method({
  22. selector: "addNode:",
  23. category: 'accessing',
  24. fn: function (aNode) {
  25. var self=this;
  26. smalltalk.send(smalltalk.send(self, "_nodes", []), "_add_", [aNode]);
  27. return self;},
  28. args: ["aNode"],
  29. source: "addNode: aNode\x0a\x09self nodes add: aNode",
  30. messageSends: ["add:", "nodes"],
  31. referencedClasses: []
  32. }),
  33. smalltalk.Node);
  34. smalltalk.addMethod(
  35. "_isAssignmentNode",
  36. smalltalk.method({
  37. selector: "isAssignmentNode",
  38. category: 'testing',
  39. fn: function () {
  40. var self=this;
  41. return false;
  42. return self;},
  43. args: [],
  44. source: "isAssignmentNode\x0a\x09^ false",
  45. messageSends: [],
  46. referencedClasses: []
  47. }),
  48. smalltalk.Node);
  49. smalltalk.addMethod(
  50. "_isBlockNode",
  51. smalltalk.method({
  52. selector: "isBlockNode",
  53. category: 'testing',
  54. fn: function () {
  55. var self=this;
  56. return false;
  57. return self;},
  58. args: [],
  59. source: "isBlockNode\x0a\x09^false",
  60. messageSends: [],
  61. referencedClasses: []
  62. }),
  63. smalltalk.Node);
  64. smalltalk.addMethod(
  65. "_isBlockSequenceNode",
  66. smalltalk.method({
  67. selector: "isBlockSequenceNode",
  68. category: 'testing',
  69. fn: function () {
  70. var self=this;
  71. return false;
  72. return self;},
  73. args: [],
  74. source: "isBlockSequenceNode\x0a\x09^false",
  75. messageSends: [],
  76. referencedClasses: []
  77. }),
  78. smalltalk.Node);
  79. smalltalk.addMethod(
  80. "_isSendNode",
  81. smalltalk.method({
  82. selector: "isSendNode",
  83. category: 'testing',
  84. fn: function () {
  85. var self=this;
  86. return false;
  87. return self;},
  88. args: [],
  89. source: "isSendNode\x0a\x09^false",
  90. messageSends: [],
  91. referencedClasses: []
  92. }),
  93. smalltalk.Node);
  94. smalltalk.addMethod(
  95. "_isValueNode",
  96. smalltalk.method({
  97. selector: "isValueNode",
  98. category: 'testing',
  99. fn: function () {
  100. var self=this;
  101. return false;
  102. return self;},
  103. args: [],
  104. source: "isValueNode\x0a\x09^false",
  105. messageSends: [],
  106. referencedClasses: []
  107. }),
  108. smalltalk.Node);
  109. smalltalk.addMethod(
  110. "_nodes",
  111. smalltalk.method({
  112. selector: "nodes",
  113. category: 'accessing',
  114. fn: function () {
  115. var self=this;
  116. return (($receiver = self['@nodes']) == nil || $receiver == undefined) ? (function(){return (self['@nodes']=smalltalk.send((smalltalk.Array || Array), "_new", []));})() : $receiver;
  117. return self;},
  118. args: [],
  119. source: "nodes\x0a\x09^nodes ifNil: [nodes := Array new]",
  120. messageSends: ["ifNil:", "new"],
  121. referencedClasses: ["Array"]
  122. }),
  123. smalltalk.Node);
  124. smalltalk.addMethod(
  125. "_nodes_",
  126. smalltalk.method({
  127. selector: "nodes:",
  128. category: 'building',
  129. fn: function (aCollection) {
  130. var self=this;
  131. (self['@nodes']=aCollection);
  132. return self;},
  133. args: ["aCollection"],
  134. source: "nodes: aCollection\x0a\x09nodes := aCollection",
  135. messageSends: [],
  136. referencedClasses: []
  137. }),
  138. smalltalk.Node);
  139. smalltalk.addClass('AssignmentNode', smalltalk.Node, ['left', 'right'], 'Compiler-AST');
  140. smalltalk.addMethod(
  141. "_accept_",
  142. smalltalk.method({
  143. selector: "accept:",
  144. category: 'visiting',
  145. fn: function (aVisitor) {
  146. var self=this;
  147. return smalltalk.send(aVisitor, "_visitAssignmentNode_", [self]);
  148. return self;},
  149. args: ["aVisitor"],
  150. source: "accept: aVisitor\x0a\x09^ aVisitor visitAssignmentNode: self",
  151. messageSends: ["visitAssignmentNode:"],
  152. referencedClasses: []
  153. }),
  154. smalltalk.AssignmentNode);
  155. smalltalk.addMethod(
  156. "_isAssignmentNode",
  157. smalltalk.method({
  158. selector: "isAssignmentNode",
  159. category: 'testing',
  160. fn: function () {
  161. var self=this;
  162. return true;
  163. return self;},
  164. args: [],
  165. source: "isAssignmentNode\x0a\x09^ true",
  166. messageSends: [],
  167. referencedClasses: []
  168. }),
  169. smalltalk.AssignmentNode);
  170. smalltalk.addMethod(
  171. "_left",
  172. smalltalk.method({
  173. selector: "left",
  174. category: 'accessing',
  175. fn: function () {
  176. var self=this;
  177. return self['@left'];
  178. return self;},
  179. args: [],
  180. source: "left\x0a\x09^left",
  181. messageSends: [],
  182. referencedClasses: []
  183. }),
  184. smalltalk.AssignmentNode);
  185. smalltalk.addMethod(
  186. "_left_",
  187. smalltalk.method({
  188. selector: "left:",
  189. category: 'accessing',
  190. fn: function (aNode){
  191. var self=this;
  192. (self['@left']=aNode);
  193. return self;},
  194. args: ["aNode"],
  195. source: "left: aNode\x0a\x09left := aNode",
  196. messageSends: [],
  197. referencedClasses: []
  198. }),
  199. smalltalk.AssignmentNode);
  200. smalltalk.addMethod(
  201. "_nodes",
  202. smalltalk.method({
  203. selector: "nodes",
  204. category: 'accessing',
  205. fn: function () {
  206. var self=this;
  207. return smalltalk.send((smalltalk.Array || Array), "_with_with_", [smalltalk.send(self, "_left", []), smalltalk.send(self, "_right", [])]);
  208. return self;},
  209. args: [],
  210. source: "nodes\x0a\x09^ Array with: self left with: self right",
  211. messageSends: ["with:with:", "left", "right"],
  212. referencedClasses: ["Array"]
  213. }),
  214. smalltalk.AssignmentNode);
  215. smalltalk.addMethod(
  216. "_right",
  217. smalltalk.method({
  218. selector: "right",
  219. category: 'accessing',
  220. fn: function () {
  221. var self=this;
  222. return self['@right'];
  223. return self;},
  224. args: [],
  225. source: "right\x0a\x09^right",
  226. messageSends: [],
  227. referencedClasses: []
  228. }),
  229. smalltalk.AssignmentNode);
  230. smalltalk.addMethod(
  231. "_right_",
  232. smalltalk.method({
  233. selector: "right:",
  234. category: 'accessing',
  235. fn: function (aNode) {
  236. var self=this;
  237. (self['@right']=aNode);
  238. return self;},
  239. args: ["aNode"],
  240. source: "right: aNode\x0a\x09right := aNode",
  241. messageSends: [],
  242. referencedClasses: []
  243. }),
  244. smalltalk.AssignmentNode);
  245. smalltalk.addClass('BlockNode', smalltalk.Node, ['parameters', 'scope'], 'Compiler-AST');
  246. smalltalk.addMethod(
  247. "_accept_",
  248. smalltalk.method({
  249. selector: "accept:",
  250. category: 'visiting',
  251. fn: function (aVisitor) {
  252. var self=this;
  253. return smalltalk.send(aVisitor, "_visitBlockNode_", [self]);
  254. return self;},
  255. args: ["aVisitor"],
  256. source: "accept: aVisitor\x0a\x09^ aVisitor visitBlockNode: self",
  257. messageSends: ["visitBlockNode:"],
  258. referencedClasses: []
  259. }),
  260. smalltalk.BlockNode);
  261. smalltalk.addMethod(
  262. "_isBlockNode",
  263. smalltalk.method({
  264. selector: "isBlockNode",
  265. category: 'testing',
  266. fn: function () {
  267. var self=this;
  268. return true;
  269. return self;},
  270. args: [],
  271. source: "isBlockNode\x0a\x09^true",
  272. messageSends: [],
  273. referencedClasses: []
  274. }),
  275. smalltalk.BlockNode);
  276. smalltalk.addMethod(
  277. "_parameters",
  278. smalltalk.method({
  279. selector: "parameters",
  280. category: 'accessing',
  281. fn: function () {
  282. var self=this;
  283. return (($receiver = self['@parameters']) == nil || $receiver == undefined) ? (function(){return (self['@parameters']=smalltalk.send((smalltalk.Array || Array), "_new", []));})() : $receiver;
  284. return self;},
  285. args: [],
  286. source: "parameters\x0a\x09^parameters ifNil: [parameters := Array new]",
  287. messageSends: ["ifNil:", "new"],
  288. referencedClasses: ["Array"]
  289. }),
  290. smalltalk.BlockNode);
  291. smalltalk.addMethod(
  292. "_parameters_",
  293. smalltalk.method({
  294. selector: "parameters:",
  295. category: 'accessing',
  296. fn: function (aCollection) {
  297. var self=this;
  298. (self['@parameters']=aCollection);
  299. return self;},
  300. args: ["aCollection"],
  301. source: "parameters: aCollection\x0a\x09parameters := aCollection",
  302. messageSends: [],
  303. referencedClasses: []
  304. }),
  305. smalltalk.BlockNode);
  306. smalltalk.addMethod(
  307. "_scope",
  308. smalltalk.method({
  309. selector: "scope",
  310. category: 'accessing',
  311. fn: function () {
  312. var self=this;
  313. return self['@scope'];
  314. return self;},
  315. args: [],
  316. source: "scope\x0a\x09^ scope",
  317. messageSends: [],
  318. referencedClasses: []
  319. }),
  320. smalltalk.BlockNode);
  321. smalltalk.addMethod(
  322. "_scope_",
  323. smalltalk.method({
  324. selector: "scope:",
  325. category: 'accessing',
  326. fn: function (aLexicalScope) {
  327. var self=this;
  328. (self['@scope']=aLexicalScope);
  329. return self;},
  330. args: ["aLexicalScope"],
  331. source: "scope: aLexicalScope\x0a\x09scope := aLexicalScope",
  332. messageSends: [],
  333. referencedClasses: []
  334. }),
  335. smalltalk.BlockNode);
  336. smalltalk.addClass('CascadeNode', smalltalk.Node, ['receiver'], 'Compiler-AST');
  337. smalltalk.addMethod(
  338. "_accept_",
  339. smalltalk.method({
  340. selector: "accept:",
  341. category: 'visiting',
  342. fn: function (aVisitor) {
  343. var self=this;
  344. return smalltalk.send(aVisitor, "_visitCascadeNode_", [self]);
  345. return self;},
  346. args: ["aVisitor"],
  347. source: "accept: aVisitor\x0a\x09^ aVisitor visitCascadeNode: self",
  348. messageSends: ["visitCascadeNode:"],
  349. referencedClasses: []
  350. }),
  351. smalltalk.CascadeNode);
  352. smalltalk.addMethod(
  353. "_receiver",
  354. smalltalk.method({
  355. selector: "receiver",
  356. category: 'accessing',
  357. fn: function () {
  358. var self=this;
  359. return self['@receiver'];
  360. return self;},
  361. args: [],
  362. source: "receiver\x0a\x09^receiver",
  363. messageSends: [],
  364. referencedClasses: []
  365. }),
  366. smalltalk.CascadeNode);
  367. smalltalk.addMethod(
  368. "_receiver_",
  369. smalltalk.method({
  370. selector: "receiver:",
  371. category: 'accessing',
  372. fn: function (aNode) {
  373. var self=this;
  374. (self['@receiver']=aNode);
  375. return self;},
  376. args: ["aNode"],
  377. source: "receiver: aNode\x0a\x09receiver := aNode",
  378. messageSends: [],
  379. referencedClasses: []
  380. }),
  381. smalltalk.CascadeNode);
  382. smalltalk.addClass('DynamicArrayNode', smalltalk.Node, [], 'Compiler-AST');
  383. smalltalk.addMethod(
  384. "_accept_",
  385. smalltalk.method({
  386. selector: "accept:",
  387. category: 'visiting',
  388. fn: function (aVisitor) {
  389. var self=this;
  390. return smalltalk.send(aVisitor, "_visitDynamicArrayNode_", [self]);
  391. return self;},
  392. args: ["aVisitor"],
  393. source: "accept: aVisitor\x0a\x09^ aVisitor visitDynamicArrayNode: self",
  394. messageSends: ["visitDynamicArrayNode:"],
  395. referencedClasses: []
  396. }),
  397. smalltalk.DynamicArrayNode);
  398. smalltalk.addClass('DynamicDictionaryNode', smalltalk.Node, [], 'Compiler-AST');
  399. smalltalk.addMethod(
  400. "_accept_",
  401. smalltalk.method({
  402. selector: "accept:",
  403. category: 'visiting',
  404. fn: function (aVisitor) {
  405. var self=this;
  406. return smalltalk.send(aVisitor, "_visitDynamicDictionaryNode_", [self]);
  407. return self;},
  408. args: ["aVisitor"],
  409. source: "accept: aVisitor\x0a\x09^ aVisitor visitDynamicDictionaryNode: self",
  410. messageSends: ["visitDynamicDictionaryNode:"],
  411. referencedClasses: []
  412. }),
  413. smalltalk.DynamicDictionaryNode);
  414. smalltalk.addClass('JSStatementNode', smalltalk.Node, ['source'], 'Compiler-AST');
  415. smalltalk.addMethod(
  416. "_accept_",
  417. smalltalk.method({
  418. selector: "accept:",
  419. category: 'visiting',
  420. fn: function (aVisitor) {
  421. var self=this;
  422. return smalltalk.send(aVisitor, "_visitJSStatementNode_", [self]);
  423. return self;},
  424. args: ["aVisitor"],
  425. source: "accept: aVisitor\x0a\x09^ aVisitor visitJSStatementNode: self",
  426. messageSends: ["visitJSStatementNode:"],
  427. referencedClasses: []
  428. }),
  429. smalltalk.JSStatementNode);
  430. smalltalk.addMethod(
  431. "_source",
  432. smalltalk.method({
  433. selector: "source",
  434. category: 'accessing',
  435. fn: function () {
  436. var self=this;
  437. return (($receiver = self['@source']) == nil || $receiver == undefined) ? (function(){return "";})() : $receiver;
  438. return self;},
  439. args: [],
  440. source: "source\x0a\x09^source ifNil: ['']",
  441. messageSends: ["ifNil:"],
  442. referencedClasses: []
  443. }),
  444. smalltalk.JSStatementNode);
  445. smalltalk.addMethod(
  446. "_source_",
  447. smalltalk.method({
  448. selector: "source:",
  449. category: 'accessing',
  450. fn: function (aString) {
  451. var self=this;
  452. (self['@source']=aString);
  453. return self;},
  454. args: ["aString"],
  455. source: "source: aString\x0a\x09source := aString",
  456. messageSends: [],
  457. referencedClasses: []
  458. }),
  459. smalltalk.JSStatementNode);
  460. smalltalk.addClass('MethodNode', smalltalk.Node, ['selector', 'arguments', 'source', 'scope', 'classReferences', 'messageSends'], 'Compiler-AST');
  461. smalltalk.addMethod(
  462. "_accept_",
  463. smalltalk.method({
  464. selector: "accept:",
  465. category: 'visiting',
  466. fn: function (aVisitor) {
  467. var self=this;
  468. return smalltalk.send(aVisitor, "_visitMethodNode_", [self]);
  469. return self;},
  470. args: ["aVisitor"],
  471. source: "accept: aVisitor\x0a\x09^ aVisitor visitMethodNode: self",
  472. messageSends: ["visitMethodNode:"],
  473. referencedClasses: []
  474. }),
  475. smalltalk.MethodNode);
  476. smalltalk.addMethod(
  477. "_arguments",
  478. smalltalk.method({
  479. selector: "arguments",
  480. category: 'accessing',
  481. fn: function () {
  482. var self=this;
  483. return (($receiver = self['@arguments']) == nil || $receiver == undefined) ? (function(){return [];})() : $receiver;
  484. return self;},
  485. args: [],
  486. source: "arguments\x0a\x09^arguments ifNil: [#()]",
  487. messageSends: ["ifNil:"],
  488. referencedClasses: []
  489. }),
  490. smalltalk.MethodNode);
  491. smalltalk.addMethod(
  492. "_arguments_",
  493. smalltalk.method({
  494. selector: "arguments:",
  495. category: 'accessing',
  496. fn: function (aCollection) {
  497. var self=this;
  498. (self['@arguments']=aCollection);
  499. return self;},
  500. args: ["aCollection"],
  501. source: "arguments: aCollection\x0a\x09arguments := aCollection",
  502. messageSends: [],
  503. referencedClasses: []
  504. }),
  505. smalltalk.MethodNode);
  506. smalltalk.addMethod(
  507. "_classReferences",
  508. smalltalk.method({
  509. selector: "classReferences",
  510. category: 'accessing',
  511. fn: function () {
  512. var self=this;
  513. return self['@classReferences'];
  514. return self;},
  515. args: [],
  516. source: "classReferences\x0a\x09^ classReferences",
  517. messageSends: [],
  518. referencedClasses: []
  519. }),
  520. smalltalk.MethodNode);
  521. smalltalk.addMethod(
  522. "_classReferences_",
  523. smalltalk.method({
  524. selector: "classReferences:",
  525. category: 'accessing',
  526. fn: function (aCollection) {
  527. var self=this;
  528. (self['@classReferences']=aCollection);
  529. return self;},
  530. args: ["aCollection"],
  531. source: "classReferences: aCollection\x0a\x09classReferences := aCollection",
  532. messageSends: [],
  533. referencedClasses: []
  534. }),
  535. smalltalk.MethodNode);
  536. smalltalk.addMethod(
  537. "_messageSends",
  538. smalltalk.method({
  539. selector: "messageSends",
  540. category: 'accessing',
  541. fn: function () {
  542. var self=this;
  543. return self['@messageSends'];
  544. return self;},
  545. args: [],
  546. source: "messageSends\x0a\x09^ messageSends",
  547. messageSends: [],
  548. referencedClasses: []
  549. }),
  550. smalltalk.MethodNode);
  551. smalltalk.addMethod(
  552. "_messageSends_",
  553. smalltalk.method({
  554. selector: "messageSends:",
  555. category: 'accessing',
  556. fn: function (aCollection) {
  557. var self=this;
  558. (self['@messageSends']=aCollection);
  559. return self;},
  560. args: ["aCollection"],
  561. source: "messageSends: aCollection\x0a\x09messageSends := aCollection",
  562. messageSends: [],
  563. referencedClasses: []
  564. }),
  565. smalltalk.MethodNode);
  566. smalltalk.addMethod(
  567. "_scope",
  568. smalltalk.method({
  569. selector: "scope",
  570. category: 'accessing',
  571. fn: function () {
  572. var self=this;
  573. return self['@scope'];
  574. return self;},
  575. args: [],
  576. source: "scope\x0a\x09^ scope",
  577. messageSends: [],
  578. referencedClasses: []
  579. }),
  580. smalltalk.MethodNode);
  581. smalltalk.addMethod(
  582. "_scope_",
  583. smalltalk.method({
  584. selector: "scope:",
  585. category: 'accessing',
  586. fn: function (aMethodScope) {
  587. var self=this;
  588. (self['@scope']=aMethodScope);
  589. return self;},
  590. args: ["aMethodScope"],
  591. source: "scope: aMethodScope\x0a\x09scope := aMethodScope",
  592. messageSends: [],
  593. referencedClasses: []
  594. }),
  595. smalltalk.MethodNode);
  596. smalltalk.addMethod(
  597. "_selector",
  598. smalltalk.method({
  599. selector: "selector",
  600. category: 'accessing',
  601. fn: function () {
  602. var self=this;
  603. return self['@selector'];
  604. return self;},
  605. args: [],
  606. source: "selector\x0a\x09^selector",
  607. messageSends: [],
  608. referencedClasses: []
  609. }),
  610. smalltalk.MethodNode);
  611. smalltalk.addMethod(
  612. "_selector_",
  613. smalltalk.method({
  614. selector: "selector:",
  615. category: 'accessing',
  616. fn: function (aString) {
  617. var self=this;
  618. (self['@selector']=aString);
  619. return self;},
  620. args: ["aString"],
  621. source: "selector: aString\x0a\x09selector := aString",
  622. messageSends: [],
  623. referencedClasses: []
  624. }),
  625. smalltalk.MethodNode);
  626. smalltalk.addMethod(
  627. "_source",
  628. smalltalk.method({
  629. selector: "source",
  630. category: 'accessing',
  631. fn: function () {
  632. var self=this;
  633. return self['@source'];
  634. return self;},
  635. args: [],
  636. source: "source\x0a\x09^source",
  637. messageSends: [],
  638. referencedClasses: []
  639. }),
  640. smalltalk.MethodNode);
  641. smalltalk.addMethod(
  642. "_source_",
  643. smalltalk.method({
  644. selector: "source:",
  645. category: 'accessing',
  646. fn: function (aString) {
  647. var self=this;
  648. (self['@source']=aString);
  649. return self;},
  650. args: ["aString"],
  651. source: "source: aString\x0a\x09source := aString",
  652. messageSends: [],
  653. referencedClasses: []
  654. }),
  655. smalltalk.MethodNode);
  656. smalltalk.addClass('ReturnNode', smalltalk.Node, ['scope'], 'Compiler-AST');
  657. smalltalk.addMethod(
  658. "_accept_",
  659. smalltalk.method({
  660. selector: "accept:",
  661. category: 'visiting',
  662. fn: function (aVisitor) {
  663. var self=this;
  664. return smalltalk.send(aVisitor, "_visitReturnNode_", [self]);
  665. return self;},
  666. args: ["aVisitor"],
  667. source: "accept: aVisitor\x0a\x09^ aVisitor visitReturnNode: self",
  668. messageSends: ["visitReturnNode:"],
  669. referencedClasses: []
  670. }),
  671. smalltalk.ReturnNode);
  672. smalltalk.addMethod(
  673. "_nonLocalReturn",
  674. smalltalk.method({
  675. selector: "nonLocalReturn",
  676. category: 'testing',
  677. fn: function (){
  678. var self=this;
  679. return smalltalk.send(smalltalk.send(smalltalk.send(self, "_scope", []), "_isMethodScope", []), "_not", []);
  680. return self;},
  681. args: [],
  682. source: "nonLocalReturn\x0a\x09^ self scope isMethodScope not",
  683. messageSends: ["not", "isMethodScope", "scope"],
  684. referencedClasses: []
  685. }),
  686. smalltalk.ReturnNode);
  687. smalltalk.addMethod(
  688. "_scope",
  689. smalltalk.method({
  690. selector: "scope",
  691. category: 'accessing',
  692. fn: function (){
  693. var self=this;
  694. return self['@scope'];
  695. return self;},
  696. args: [],
  697. source: "scope\x0a\x09^ scope",
  698. messageSends: [],
  699. referencedClasses: []
  700. }),
  701. smalltalk.ReturnNode);
  702. smalltalk.addMethod(
  703. "_scope_",
  704. smalltalk.method({
  705. selector: "scope:",
  706. category: 'accessing',
  707. fn: function (aLexicalScope){
  708. var self=this;
  709. (self['@scope']=aLexicalScope);
  710. return self;},
  711. args: ["aLexicalScope"],
  712. source: "scope: aLexicalScope\x0a\x09scope := aLexicalScope",
  713. messageSends: [],
  714. referencedClasses: []
  715. }),
  716. smalltalk.ReturnNode);
  717. smalltalk.addClass('SendNode', smalltalk.Node, ['selector', 'arguments', 'receiver', 'superSend'], 'Compiler-AST');
  718. smalltalk.addMethod(
  719. "_accept_",
  720. smalltalk.method({
  721. selector: "accept:",
  722. category: 'visiting',
  723. fn: function (aVisitor) {
  724. var self=this;
  725. return smalltalk.send(aVisitor, "_visitSendNode_", [self]);
  726. return self;},
  727. args: ["aVisitor"],
  728. source: "accept: aVisitor\x0a\x09^ aVisitor visitSendNode: self",
  729. messageSends: ["visitSendNode:"],
  730. referencedClasses: []
  731. }),
  732. smalltalk.SendNode);
  733. smalltalk.addMethod(
  734. "_arguments",
  735. smalltalk.method({
  736. selector: "arguments",
  737. category: 'accessing',
  738. fn: function () {
  739. var self=this;
  740. return (($receiver = self['@arguments']) == nil || $receiver == undefined) ? (function(){return (self['@arguments']=[]);})() : $receiver;
  741. return self;},
  742. args: [],
  743. source: "arguments\x0a\x09^arguments ifNil: [arguments := #()]",
  744. messageSends: ["ifNil:"],
  745. referencedClasses: []
  746. }),
  747. smalltalk.SendNode);
  748. smalltalk.addMethod(
  749. "_arguments_",
  750. smalltalk.method({
  751. selector: "arguments:",
  752. category: 'accessing',
  753. fn: function (aCollection) {
  754. var self=this;
  755. (self['@arguments']=aCollection);
  756. return self;},
  757. args: ["aCollection"],
  758. source: "arguments: aCollection\x0a\x09arguments := aCollection",
  759. messageSends: [],
  760. referencedClasses: []
  761. }),
  762. smalltalk.SendNode);
  763. smalltalk.addMethod(
  764. "_cascadeNodeWithMessages_",
  765. smalltalk.method({
  766. selector: "cascadeNodeWithMessages:",
  767. category: 'accessing',
  768. fn: function (aCollection) {
  769. var self=this;
  770. var first=nil;
  771. (first=(function($rec){smalltalk.send($rec, "_selector_", [smalltalk.send(self, "_selector", [])]);smalltalk.send($rec, "_arguments_", [smalltalk.send(self, "_arguments", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.SendNode || SendNode), "_new", [])));
  772. return (function($rec){smalltalk.send($rec, "_receiver_", [smalltalk.send(self, "_receiver", [])]);smalltalk.send($rec, "_nodes_", [smalltalk.send(smalltalk.send((smalltalk.Array || Array), "_with_", [first]), "__comma", [aCollection])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.CascadeNode || CascadeNode), "_new", []));
  773. return self;},
  774. args: ["aCollection"],
  775. source: "cascadeNodeWithMessages: aCollection\x0a\x09| first |\x0a\x09first := SendNode new\x0a\x09 selector: self selector;\x0a\x09 arguments: self arguments;\x0a\x09 yourself.\x0a\x09^CascadeNode new\x0a\x09 receiver: self receiver;\x0a\x09 nodes: (Array with: first), aCollection;\x0a\x09 yourself",
  776. messageSends: ["selector:", "selector", "arguments:", "arguments", "yourself", "new", "receiver:", "receiver", "nodes:", ",", "with:"],
  777. referencedClasses: ["SendNode", "Array", "CascadeNode"]
  778. }),
  779. smalltalk.SendNode);
  780. smalltalk.addMethod(
  781. "_isSendNode",
  782. smalltalk.method({
  783. selector: "isSendNode",
  784. category: 'testing',
  785. fn: function () {
  786. var self=this;
  787. return true;
  788. return self;},
  789. args: [],
  790. source: "isSendNode\x0a\x09^ true",
  791. messageSends: [],
  792. referencedClasses: []
  793. }),
  794. smalltalk.SendNode);
  795. smalltalk.addMethod(
  796. "_nodes",
  797. smalltalk.method({
  798. selector: "nodes",
  799. category: 'accessing',
  800. fn: function () {
  801. var self=this;
  802. return (function($rec){smalltalk.send($rec, "_add_", [smalltalk.send(self, "_receiver", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.Array || Array), "_withAll_", [smalltalk.send(self, "_arguments", [])]));
  803. return self;},
  804. args: [],
  805. source: "nodes\x0a\x09^ (Array withAll: self arguments)\x0a\x09\x09add: self receiver;\x0a\x09\x09yourself",
  806. messageSends: ["add:", "receiver", "yourself", "withAll:", "arguments"],
  807. referencedClasses: ["Array"]
  808. }),
  809. smalltalk.SendNode);
  810. smalltalk.addMethod(
  811. "_receiver",
  812. smalltalk.method({
  813. selector: "receiver",
  814. category: 'accessing',
  815. fn: function () {
  816. var self=this;
  817. return self['@receiver'];
  818. return self;},
  819. args: [],
  820. source: "receiver\x0a\x09^receiver",
  821. messageSends: [],
  822. referencedClasses: []
  823. }),
  824. smalltalk.SendNode);
  825. smalltalk.addMethod(
  826. "_receiver_",
  827. smalltalk.method({
  828. selector: "receiver:",
  829. category: 'accessing',
  830. fn: function (aNode) {
  831. var self=this;
  832. (self['@receiver']=aNode);
  833. return self;},
  834. args: ["aNode"],
  835. source: "receiver: aNode\x0a\x09receiver := aNode",
  836. messageSends: [],
  837. referencedClasses: []
  838. }),
  839. smalltalk.SendNode);
  840. smalltalk.addMethod(
  841. "_selector",
  842. smalltalk.method({
  843. selector: "selector",
  844. category: 'accessing',
  845. fn: function () {
  846. var self=this;
  847. return self['@selector'];
  848. return self;},
  849. args: [],
  850. source: "selector\x0a\x09^selector",
  851. messageSends: [],
  852. referencedClasses: []
  853. }),
  854. smalltalk.SendNode);
  855. smalltalk.addMethod(
  856. "_selector_",
  857. smalltalk.method({
  858. selector: "selector:",
  859. category: 'accessing',
  860. fn: function (aString) {
  861. var self=this;
  862. (self['@selector']=aString);
  863. return self;},
  864. args: ["aString"],
  865. source: "selector: aString\x0a\x09selector := aString",
  866. messageSends: [],
  867. referencedClasses: []
  868. }),
  869. smalltalk.SendNode);
  870. smalltalk.addMethod(
  871. "_superSend",
  872. smalltalk.method({
  873. selector: "superSend",
  874. category: 'accessing',
  875. fn: function () {
  876. var self=this;
  877. return (($receiver = self['@superSend']) == nil || $receiver == undefined) ? (function(){return false;})() : $receiver;
  878. return self;},
  879. args: [],
  880. source: "superSend\x0a\x09^ superSend ifNil: [ false ]",
  881. messageSends: ["ifNil:"],
  882. referencedClasses: []
  883. }),
  884. smalltalk.SendNode);
  885. smalltalk.addMethod(
  886. "_superSend_",
  887. smalltalk.method({
  888. selector: "superSend:",
  889. category: 'accessing',
  890. fn: function (aBoolean) {
  891. var self=this;
  892. (self['@superSend']=aBoolean);
  893. return self;},
  894. args: ["aBoolean"],
  895. source: "superSend: aBoolean\x0a\x09superSend := aBoolean",
  896. messageSends: [],
  897. referencedClasses: []
  898. }),
  899. smalltalk.SendNode);
  900. smalltalk.addMethod(
  901. "_valueForReceiver_",
  902. smalltalk.method({
  903. selector: "valueForReceiver:",
  904. category: 'accessing',
  905. fn: function (anObject) {
  906. var self=this;
  907. return (function($rec){smalltalk.send($rec, "_receiver_", [(($receiver = smalltalk.send(self, "_receiver", [])) == nil || $receiver == undefined) ? (function(){return anObject;})() : (function(){return smalltalk.send(smalltalk.send(self, "_receiver", []), "_valueForReceiver_", [anObject]);})()]);smalltalk.send($rec, "_selector_", [smalltalk.send(self, "_selector", [])]);smalltalk.send($rec, "_arguments_", [smalltalk.send(self, "_arguments", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.SendNode || SendNode), "_new", []));
  908. return self;},
  909. args: ["anObject"],
  910. source: "valueForReceiver: anObject\x0a\x09^SendNode new\x0a\x09 receiver: (self receiver \x0a\x09\x09ifNil: [anObject]\x0a\x09\x09ifNotNil: [self receiver valueForReceiver: anObject]);\x0a\x09 selector: self selector;\x0a\x09 arguments: self arguments;\x0a\x09 yourself",
  911. messageSends: ["receiver:", "ifNil:ifNotNil:", "receiver", "valueForReceiver:", "selector:", "selector", "arguments:", "arguments", "yourself", "new"],
  912. referencedClasses: ["SendNode"]
  913. }),
  914. smalltalk.SendNode);
  915. smalltalk.addClass('SequenceNode', smalltalk.Node, ['temps', 'scope'], 'Compiler-AST');
  916. smalltalk.addMethod(
  917. "_accept_",
  918. smalltalk.method({
  919. selector: "accept:",
  920. category: 'visiting',
  921. fn: function (aVisitor) {
  922. var self=this;
  923. return smalltalk.send(aVisitor, "_visitSequenceNode_", [self]);
  924. return self;},
  925. args: ["aVisitor"],
  926. source: "accept: aVisitor\x0a\x09^ aVisitor visitSequenceNode: self",
  927. messageSends: ["visitSequenceNode:"],
  928. referencedClasses: []
  929. }),
  930. smalltalk.SequenceNode);
  931. smalltalk.addMethod(
  932. "_asBlockSequenceNode",
  933. smalltalk.method({
  934. selector: "asBlockSequenceNode",
  935. category: 'testing',
  936. fn: function () {
  937. var self=this;
  938. return (function($rec){smalltalk.send($rec, "_nodes_", [smalltalk.send(self, "_nodes", [])]);smalltalk.send($rec, "_temps_", [smalltalk.send(self, "_temps", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.BlockSequenceNode || BlockSequenceNode), "_new", []));
  939. return self;},
  940. args: [],
  941. source: "asBlockSequenceNode\x0a\x09^BlockSequenceNode new\x0a\x09 nodes: self nodes;\x0a\x09 temps: self temps;\x0a\x09 yourself",
  942. messageSends: ["nodes:", "nodes", "temps:", "temps", "yourself", "new"],
  943. referencedClasses: ["BlockSequenceNode"]
  944. }),
  945. smalltalk.SequenceNode);
  946. smalltalk.addMethod(
  947. "_scope",
  948. smalltalk.method({
  949. selector: "scope",
  950. category: 'accessing',
  951. fn: function () {
  952. var self=this;
  953. return self['@scope'];
  954. return self;},
  955. args: [],
  956. source: "scope\x0a\x09^ scope",
  957. messageSends: [],
  958. referencedClasses: []
  959. }),
  960. smalltalk.SequenceNode);
  961. smalltalk.addMethod(
  962. "_scope_",
  963. smalltalk.method({
  964. selector: "scope:",
  965. category: 'accessing',
  966. fn: function (aLexicalScope) {
  967. var self=this;
  968. (self['@scope']=aLexicalScope);
  969. return self;},
  970. args: ["aLexicalScope"],
  971. source: "scope: aLexicalScope\x0a\x09scope := aLexicalScope",
  972. messageSends: [],
  973. referencedClasses: []
  974. }),
  975. smalltalk.SequenceNode);
  976. smalltalk.addMethod(
  977. "_temps",
  978. smalltalk.method({
  979. selector: "temps",
  980. category: 'accessing',
  981. fn: function () {
  982. var self=this;
  983. return (($receiver = self['@temps']) == nil || $receiver == undefined) ? (function(){return [];})() : $receiver;
  984. return self;},
  985. args: [],
  986. source: "temps\x0a\x09^temps ifNil: [#()]",
  987. messageSends: ["ifNil:"],
  988. referencedClasses: []
  989. }),
  990. smalltalk.SequenceNode);
  991. smalltalk.addMethod(
  992. "_temps_",
  993. smalltalk.method({
  994. selector: "temps:",
  995. category: 'accessing',
  996. fn: function (aCollection) {
  997. var self=this;
  998. (self['@temps']=aCollection);
  999. return self;},
  1000. args: ["aCollection"],
  1001. source: "temps: aCollection\x0a\x09temps := aCollection",
  1002. messageSends: [],
  1003. referencedClasses: []
  1004. }),
  1005. smalltalk.SequenceNode);
  1006. smalltalk.addClass('BlockSequenceNode', smalltalk.SequenceNode, [], 'Compiler-AST');
  1007. smalltalk.addMethod(
  1008. "_accept_",
  1009. smalltalk.method({
  1010. selector: "accept:",
  1011. category: 'visiting',
  1012. fn: function (aVisitor) {
  1013. var self=this;
  1014. return smalltalk.send(aVisitor, "_visitBlockSequenceNode_", [self]);
  1015. return self;},
  1016. args: ["aVisitor"],
  1017. source: "accept: aVisitor\x0a\x09^ aVisitor visitBlockSequenceNode: self",
  1018. messageSends: ["visitBlockSequenceNode:"],
  1019. referencedClasses: []
  1020. }),
  1021. smalltalk.BlockSequenceNode);
  1022. smalltalk.addMethod(
  1023. "_isBlockSequenceNode",
  1024. smalltalk.method({
  1025. selector: "isBlockSequenceNode",
  1026. category: 'testing',
  1027. fn: function () {
  1028. var self=this;
  1029. return true;
  1030. return self;},
  1031. args: [],
  1032. source: "isBlockSequenceNode\x0a\x09^true",
  1033. messageSends: [],
  1034. referencedClasses: []
  1035. }),
  1036. smalltalk.BlockSequenceNode);
  1037. smalltalk.addClass('ValueNode', smalltalk.Node, ['value'], 'Compiler-AST');
  1038. smalltalk.addMethod(
  1039. "_accept_",
  1040. smalltalk.method({
  1041. selector: "accept:",
  1042. category: 'visiting',
  1043. fn: function (aVisitor) {
  1044. var self=this;
  1045. return smalltalk.send(aVisitor, "_visitValueNode_", [self]);
  1046. return self;},
  1047. args: ["aVisitor"],
  1048. source: "accept: aVisitor\x0a\x09^ aVisitor visitValueNode: self",
  1049. messageSends: ["visitValueNode:"],
  1050. referencedClasses: []
  1051. }),
  1052. smalltalk.ValueNode);
  1053. smalltalk.addMethod(
  1054. "_isValueNode",
  1055. smalltalk.method({
  1056. selector: "isValueNode",
  1057. category: 'testing',
  1058. fn: function () {
  1059. var self=this;
  1060. return true;
  1061. return self;},
  1062. args: [],
  1063. source: "isValueNode\x0a\x09^true",
  1064. messageSends: [],
  1065. referencedClasses: []
  1066. }),
  1067. smalltalk.ValueNode);
  1068. smalltalk.addMethod(
  1069. "_value",
  1070. smalltalk.method({
  1071. selector: "value",
  1072. category: 'accessing',
  1073. fn: function () {
  1074. var self=this;
  1075. return self['@value'];
  1076. return self;},
  1077. args: [],
  1078. source: "value\x0a\x09^value",
  1079. messageSends: [],
  1080. referencedClasses: []
  1081. }),
  1082. smalltalk.ValueNode);
  1083. smalltalk.addMethod(
  1084. "_value_",
  1085. smalltalk.method({
  1086. selector: "value:",
  1087. category: 'accessing',
  1088. fn: function (anObject) {
  1089. var self=this;
  1090. (self['@value']=anObject);
  1091. return self;},
  1092. args: ["anObject"],
  1093. source: "value: anObject\x0a\x09value := anObject",
  1094. messageSends: [],
  1095. referencedClasses: []
  1096. }),
  1097. smalltalk.ValueNode);
  1098. smalltalk.addClass('VariableNode', smalltalk.ValueNode, ['assigned', 'binding'], 'Compiler-AST');
  1099. smalltalk.addMethod(
  1100. "_accept_",
  1101. smalltalk.method({
  1102. selector: "accept:",
  1103. category: 'visiting',
  1104. fn: function (aVisitor) {
  1105. var self=this;
  1106. return smalltalk.send(aVisitor, "_visitVariableNode_", [self]);
  1107. return self;},
  1108. args: ["aVisitor"],
  1109. source: "accept: aVisitor\x0a\x09^ aVisitor visitVariableNode: self",
  1110. messageSends: ["visitVariableNode:"],
  1111. referencedClasses: []
  1112. }),
  1113. smalltalk.VariableNode);
  1114. smalltalk.addMethod(
  1115. "_alias",
  1116. smalltalk.method({
  1117. selector: "alias",
  1118. category: 'accessing',
  1119. fn: function () {
  1120. var self=this;
  1121. return smalltalk.send(smalltalk.send(self, "_binding", []), "_alias", []);
  1122. return self;},
  1123. args: [],
  1124. source: "alias\x0a\x09^ self binding alias",
  1125. messageSends: ["alias", "binding"],
  1126. referencedClasses: []
  1127. }),
  1128. smalltalk.VariableNode);
  1129. smalltalk.addMethod(
  1130. "_assigned",
  1131. smalltalk.method({
  1132. selector: "assigned",
  1133. category: 'accessing',
  1134. fn: function () {
  1135. var self=this;
  1136. return (($receiver = self['@assigned']) == nil || $receiver == undefined) ? (function(){return false;})() : $receiver;
  1137. return self;},
  1138. args: [],
  1139. source: "assigned\x0a\x09^assigned ifNil: [false]",
  1140. messageSends: ["ifNil:"],
  1141. referencedClasses: []
  1142. }),
  1143. smalltalk.VariableNode);
  1144. smalltalk.addMethod(
  1145. "_assigned_",
  1146. smalltalk.method({
  1147. selector: "assigned:",
  1148. category: 'accessing',
  1149. fn: function (aBoolean) {
  1150. var self=this;
  1151. (self['@assigned']=aBoolean);
  1152. return self;},
  1153. args: ["aBoolean"],
  1154. source: "assigned: aBoolean\x0a\x09assigned := aBoolean",
  1155. messageSends: [],
  1156. referencedClasses: []
  1157. }),
  1158. smalltalk.VariableNode);
  1159. smalltalk.addMethod(
  1160. "_beAssigned",
  1161. smalltalk.method({
  1162. selector: "beAssigned",
  1163. category: 'accessing',
  1164. fn: function () {
  1165. var self=this;
  1166. smalltalk.send(smalltalk.send(self, "_binding", []), "_validateAssignment", []);
  1167. (self['@assigned']=true);
  1168. return self;},
  1169. args: [],
  1170. source: "beAssigned\x0a\x09self binding validateAssignment.\x0a\x09assigned := true",
  1171. messageSends: ["validateAssignment", "binding"],
  1172. referencedClasses: []
  1173. }),
  1174. smalltalk.VariableNode);
  1175. smalltalk.addMethod(
  1176. "_binding",
  1177. smalltalk.method({
  1178. selector: "binding",
  1179. category: 'accessing',
  1180. fn: function () {
  1181. var self=this;
  1182. return self['@binding'];
  1183. return self;},
  1184. args: [],
  1185. source: "binding\x0a\x09^ binding",
  1186. messageSends: [],
  1187. referencedClasses: []
  1188. }),
  1189. smalltalk.VariableNode);
  1190. smalltalk.addMethod(
  1191. "_binding_",
  1192. smalltalk.method({
  1193. selector: "binding:",
  1194. category: 'accessing',
  1195. fn: function (aScopeVar) {
  1196. var self=this;
  1197. (self['@binding']=aScopeVar);
  1198. return self;},
  1199. args: ["aScopeVar"],
  1200. source: "binding: aScopeVar\x0a\x09binding := aScopeVar",
  1201. messageSends: [],
  1202. referencedClasses: []
  1203. }),
  1204. smalltalk.VariableNode);
  1205. smalltalk.addClass('ClassReferenceNode', smalltalk.VariableNode, [], 'Compiler-AST');
  1206. smalltalk.addMethod(
  1207. "_accept_",
  1208. smalltalk.method({
  1209. selector: "accept:",
  1210. category: 'visiting',
  1211. fn: function (aVisitor) {
  1212. var self=this;
  1213. return smalltalk.send(aVisitor, "_visitClassReferenceNode_", [self]);
  1214. return self;},
  1215. args: ["aVisitor"],
  1216. source: "accept: aVisitor\x0a\x09^ aVisitor visitClassReferenceNode: self",
  1217. messageSends: ["visitClassReferenceNode:"],
  1218. referencedClasses: []
  1219. }),
  1220. smalltalk.ClassReferenceNode);