Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- "use strict";
- // import fs for reading
- var fs = require ('fs');
- // import the generated Parser
- var parser = require ('./alf.js').parser;
- var str = fs.readFileSync (process.argv[2], 'UTF-8');
- function writeThreeAddressCode (node)
- {
- function nextVariable ()
- {
- if(node.op == '*')
- {
- return 'mull';
- }
- else return 'add';
- }
- if (node.type === 'script')
- {
- for (var statementIndex in node.statements)
- {
- writeThreeAddressCode(node.statements[statementIndex]);
- }
- }
- else
- if (node.type === 'expr')
- {
- if (node.left !== undefined && node.right !== undefined)
- {
- writeThreeAddressCode (node.left);
- writeThreeAddressCode (node.right);
- // node.left is the result of node.left
- // node.right is the result of node.right
- // write the three address code here
- var t = nextVariable();
- console.log(t);
- //node.result = t;
- }
- }
- else
- if (node.type === 'number')
- {
- // the result for a number is the number itself
- console.log ('push '+node.value);
- }
- else
- if (node.type === 'id')
- {
- console.log ('push '+node.value);
- }
- else
- if (node.type === 'function_run')
- {
- }
- else
- if (node.type === 'function')
- {
- }
- }
- var ast = parser.parse (str);
- console.log (JSON.stringify(ast, null, 4));
- writeThreeAddressCode(ast);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement