fs = require('fs'); lex = require('./lex.js'); parse = require('./parse.js'); function debugExpr(expr) { const tokens = new lex.TokenStream(expr); //console.log(tokens.getPrettyTokenList()); const parser = new parse.Parser(tokens); const result = parser.statements(); if (result.error) { console.log("Error: " + result.error.msg + " on line " + result.error.line + " char " + result.error.pos); let relevent = expr.substring(Math.max(0, result.error.inputPos - 50), result.error.inputPos + 1).trim(); const parts = relevent.split("\n"); relevent = parts[parts.length - 1]; console.log(relevent); console.log(" ".repeat(Math.max(0, relevent.length - 1)) + "^"); } else { console.format(parse.getPrettyAST(result)); } } debugExpr(fs.readFileSync(process.argv[2], "utf8"));