@neo4j-cypher/extract-statements
Version:
Utility function to extract statements from a cypher query
41 lines (40 loc) • 1.57 kB
JavaScript
;
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;