cql-antlr-parser
Version:
Antlr Parsing of CQL in typescript
39 lines (38 loc) • 1.36 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const antlr4ts_1 = require("antlr4ts");
const cqlLexer_1 = require("./generated/cqlLexer");
const cqlParser_1 = require("./generated/cqlParser");
const CqlAntlrListener_1 = __importDefault(require("./CqlAntlrListener"));
const tree_1 = require("antlr4ts/tree");
class CqlAntlr {
constructor(cql) {
this.cql = cql;
}
parse() {
const tree = this.buildTree();
const result = CqlAntlr.buildCqlResult();
const listener = new CqlAntlrListener_1.default(result);
tree_1.ParseTreeWalker.DEFAULT.walk(listener, tree);
return result;
}
static buildCqlResult() {
const result = {};
result.includes = [];
result.codeSystems = [];
result.valueSets = [];
result.codes = [];
return result;
}
buildTree() {
const charStream = antlr4ts_1.CharStreams.fromString(this.cql);
const lexer = new cqlLexer_1.cqlLexer(charStream);
const tokenStream = new antlr4ts_1.CommonTokenStream(lexer);
const parser = new cqlParser_1.cqlParser(tokenStream);
return parser.library();
}
}
exports.default = CqlAntlr;