UNPKG

@neo4j-cypher/extract-statements

Version:

Utility function to extract statements from a cypher query

41 lines (40 loc) 1.57 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.extractStatements = void 0; var _antlr4Browser = _interopRequireDefault(require("@neo4j-cypher/antlr4-browser")); var _editorSupport = require("@neo4j-cypher/editor-support"); var _antlr4Simple = require("@neo4j-cypher/antlr4-simple"); var _ReferencesListener = require("./ReferencesListener.simple"); const extractStatements = input => { const referencesListener = new _ReferencesListener.ReferencesListener(); const errorListener = new _editorSupport.ErrorListener(); const chars = new _antlr4Browser.default.InputStream(input); const lexer = new _antlr4Simple.CypherLexer(chars); lexer.removeErrorListeners(); lexer.addErrorListener(errorListener); const tokens = new _antlr4Browser.default.CommonTokenStream(lexer); const parser = new _antlr4Simple.CypherParser(tokens); parser.buildParseTrees = true; parser.removeErrorListeners(); parser.addErrorListener(errorListener); parser.addParseListener(referencesListener); const parseTree = parser.cypher(); const { queries, indexes } = referencesListener; const referencesProviders = new Map(); _editorSupport.CypherTypes.SYMBOLIC_CONTEXTS.forEach(sc => { referencesProviders.set(sc, new _editorSupport.ReferencesProvider(queries, indexes.get(sc))); }); return { parseTree, referencesListener, errorListener, referencesProviders }; }; exports.extractStatements = extractStatements;