diff options
Diffstat (limited to 'src/parser/parser.js')
-rw-r--r-- | src/parser/parser.js | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/parser/parser.js b/src/parser/parser.js index ef84be3..7d3dd95 100644 --- a/src/parser/parser.js +++ b/src/parser/parser.js @@ -22,15 +22,29 @@ parser.yy = { return this.equ[l]; } - return this.line[l] - this.pc; + return l; + }, + + tidyAddress: function(pc, addr) { + if (typeof(addr.value) === "string") { + addr.value = this.line[addr.value] - pc; + } }, }; + //if (process.argv[1] === 'parser.js' && process.argv.length >= 3) { fs.readFile(process.argv[2], 'utf8', (err, data) => { if (err) throw err; - let result = parser.parse(data.toUpperCase()); - console.log(result); + let program = parser.parse(data.toUpperCase()); + if (typeof(program.start) === "string") { + program.start = parser.yy.line[program.start]; + } + for (let pc=0; pc<program.program.length; pc += 1) { + parser.yy.tidyAddress(pc, program.program[pc].a); + parser.yy.tidyAddress(pc, program.program[pc].b); + } + console.log(program); console.log(parser.yy); }); //} |