Advertisement
Guest User

Untitled

a guest
Apr 24th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. "use strict";
  2.  
  3. // import fs for reading
  4. var fs = require ('fs');
  5.  
  6. // import the generated Parser
  7. var parser = require ('./alf.js').parser;
  8.  
  9. var str = fs.readFileSync (process.argv[2], 'UTF-8');
  10.  
  11.  
  12.  
  13.  
  14. function writeThreeAddressCode (node)
  15.  
  16.  
  17. {
  18. function nextVariable ()
  19. {
  20. if(node.op == '*')
  21. {
  22. return 'mull';
  23. }
  24. else return 'add';
  25. }
  26.  
  27.  
  28. if (node.type === 'script')
  29. {
  30. for (var statementIndex in node.statements)
  31. {
  32. writeThreeAddressCode(node.statements[statementIndex]);
  33. }
  34. }
  35. else
  36. if (node.type === 'expr')
  37. {
  38. if (node.left !== undefined && node.right !== undefined)
  39. {
  40. writeThreeAddressCode (node.left);
  41. writeThreeAddressCode (node.right);
  42. // node.left is the result of node.left
  43. // node.right is the result of node.right
  44. // write the three address code here
  45.  
  46. var t = nextVariable();
  47. console.log(t);
  48. //node.result = t;
  49. }
  50. }
  51. else
  52. if (node.type === 'number')
  53. {
  54. // the result for a number is the number itself
  55. console.log ('push '+node.value);
  56. }
  57. else
  58. if (node.type === 'id')
  59. {
  60. console.log ('push '+node.value);
  61.  
  62. }
  63. else
  64. if (node.type === 'function_run')
  65. {
  66.  
  67. }
  68.  
  69. else
  70.  
  71.  
  72. if (node.type === 'function')
  73. {
  74.  
  75. }
  76. }
  77.  
  78. var ast = parser.parse (str);
  79. console.log (JSON.stringify(ast, null, 4));
  80.  
  81. writeThreeAddressCode(ast);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement