UNPKG

@making-sense/antlr-editor

Version:
94 lines 3.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validate = exports.createParser = exports.createLexer = void 0; const antlr4ng_1 = require("@making-sense/antlr4ng"); const log_1 = require("./log"); // @ts-ignore VALID class ConsoleErrorListener { // @ts-ignore TS7006 VALID syntaxError(recognizer, offendingSymbol, line, column, msg) { log_1.Log.info("ERROR " + msg, "ParserFacadeV3"); } // @ts-ignore TS7006 VALID // eslint-disable-next-line @typescript-eslint/no-unused-vars reportAttemptingFullContext(_recognizer, _dfa, _startIndex, _stopIndex, _conflictingAlts, _configs) { // Optional method - can be empty } // @ts-ignore TS7006 VALID // eslint-disable-next-line @typescript-eslint/no-unused-vars reportContextSensitivity(_recognizer, _dfa, _startIndex, _stopIndex, _prediction, _configs) { // Optional method - can be empty } // @ts-ignore TS7006 VALID // eslint-disable-next-line @typescript-eslint/no-unused-vars reportAmbiguity(_recognizer, _dfa, _startIndex, _stopIndex, _exact, _ambigAlts, _configs) { // Optional method - can be empty } } class Error { constructor(startLine, endLine, startCol, endCol, message) { this.startLine = startLine; this.endLine = endLine; this.startCol = startCol; this.endCol = endCol; this.message = message; } } // @ts-ignore VALID class CollectorErrorListener { constructor(errors) { this.errors = []; this.errors = errors; } // @ts-ignore TS7006 syntaxError(recognizer, offendingSymbol, line, column, msg) { let endColumn = column + 1; if (offendingSymbol._text !== null && offendingSymbol._text !== undefined) { endColumn = column + offendingSymbol._text.length; } this.errors.push(new Error(line, line, column, endColumn, msg)); } // @ts-ignore TS7006 // eslint-disable-next-line @typescript-eslint/no-unused-vars reportAttemptingFullContext(_recognizer, _dfa, _startIndex, _stopIndex, _conflictingAlts, _configs) { // Optional method - can be empty } // @ts-ignore TS7006 // eslint-disable-next-line @typescript-eslint/no-unused-vars reportContextSensitivity(_recognizer, _dfa, _startIndex, _stopIndex, _prediction, _configs) { // Optional method - can be empty } // @ts-ignore TS7006 // eslint-disable-next-line @typescript-eslint/no-unused-vars reportAmbiguity(_recognizer, _dfa, _startIndex, _stopIndex, _exact, _ambigAlts, _configs) { // Optional method - can be empty } } const createLexer = (Lexer) => (input) => { const chars = antlr4ng_1.CharStream.fromString(input || ""); const lexer = new Lexer(chars); return lexer; }; exports.createLexer = createLexer; const createParser = ({ Lexer, Parser }) => (input) => { const lexer = (0, exports.createLexer)(Lexer)(input); return createParserFromLexer(Parser)(lexer); }; exports.createParser = createParser; const createParserFromLexer = (Parser) => (lexer) => { const tokens = new antlr4ng_1.CommonTokenStream(lexer); return new Parser(tokens); }; const validate = ({ Lexer, Parser, initialRule }) => (input) => { const errors = []; const lexer = (0, exports.createLexer)(Lexer)(input); lexer.removeErrorListeners(); lexer.addErrorListener(new ConsoleErrorListener()); const parser = createParserFromLexer(Parser)(lexer); parser.removeErrorListeners(); parser.addErrorListener(new CollectorErrorListener(errors)); parser[initialRule](); return errors; }; exports.validate = validate; //# sourceMappingURL=ParserFacade.js.map