summaryrefslogtreecommitdiff
path: root/src/parser/parser.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser/parser.js')
-rw-r--r--src/parser/parser.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/parser/parser.js b/src/parser/parser.js
new file mode 100644
index 0000000..ef84be3
--- /dev/null
+++ b/src/parser/parser.js
@@ -0,0 +1,36 @@
+const process = require('node:process');
+const fs = require('node:fs');
+const parser = require('./grammar.js').parser;
+
+parser.yy = {
+ pc: 0,
+
+ step: function() { this.pc += 1; },
+
+ equ: {},
+ line: {},
+
+ setEqu: function(l, v) {
+ this.equ[l] = v;
+ },
+ setLine: function(l) {
+ this.line[l] = this.pc;
+ },
+
+ getLabel: function(l) {
+ if (this.equ[l] !== undefined) {
+ return this.equ[l];
+ }
+
+ return this.line[l] - this.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);
+ console.log(parser.yy);
+ });
+//}