@madie/cql-antlr-parser
Version:
Antlr Parsing of CQL in typescript
111 lines • 4.84 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const generated_1 = require("../generated");
const CqlVersionCreator_1 = __importDefault(require("./CqlVersionCreator"));
const CqlIncludeCreator_1 = __importDefault(require("./CqlIncludeCreator"));
const CqlCodeSystemCreator_1 = __importDefault(require("./CqlCodeSystemCreator"));
const CqlCodeValueSystemCreator_1 = __importDefault(require("./CqlCodeValueSystemCreator"));
const CqlCodeCreator_1 = __importDefault(require("./CqlCodeCreator"));
const CqlParameterCreator_1 = __importDefault(require("./CqlParameterCreator"));
const CqlContextCreator_1 = __importDefault(require("./CqlContextCreator"));
const CqlExpressionDefinitionCreator_1 = __importDefault(require("./CqlExpressionDefinitionCreator"));
const CqlIdentifierCreator_1 = __importDefault(require("./CqlIdentifierCreator"));
const CqlRetrieveCreator_1 = __importDefault(require("./CqlRetrieveCreator"));
const AntlrUtils_1 = __importDefault(require("./AntlrUtils"));
class CqlAntlrListener {
constructor(cqlResult, tokenStream) {
this.cqlResult = cqlResult;
this.bufferedTokenStream = tokenStream;
}
enterLibraryDefinition(ctx) {
const cqlVersionCreator = new CqlVersionCreator_1.default(ctx);
this.cqlResult.library = cqlVersionCreator.buildDao();
}
enterUsingDefinition(ctx) {
const using = new CqlVersionCreator_1.default(ctx).buildDao();
if (using) {
this.cqlResult.usings.push(using);
}
}
enterIncludeDefinition(ctx) {
const cqlCode = new CqlIncludeCreator_1.default(ctx).buildDao();
if (cqlCode) {
this.cqlResult.includes.push(cqlCode);
}
}
enterCodesystemDefinition(ctx) {
const cqlCodeSystem = new CqlCodeSystemCreator_1.default(ctx).buildDao();
if (cqlCodeSystem) {
this.cqlResult.codeSystems.push(cqlCodeSystem);
}
}
enterValuesetDefinition(ctx) {
var _a;
const cqlValueSet = new CqlCodeValueSystemCreator_1.default(ctx, (_a = this.cqlResult.usings[0]) === null || _a === void 0 ? void 0 : _a.name).buildDao();
if (cqlValueSet) {
this.cqlResult.valueSets.push(cqlValueSet);
}
}
enterCodeDefinition(ctx) {
const cqlCode = new CqlCodeCreator_1.default(ctx).buildDao();
if (cqlCode) {
this.cqlResult.codes.push(cqlCode);
}
}
enterParameterDefinition(ctx) {
const cqlCode = new CqlParameterCreator_1.default(ctx).buildDao();
if (cqlCode) {
this.cqlResult.parameters.push(cqlCode);
}
}
enterContextDefinition(ctx) {
this.cqlResult.context = new CqlContextCreator_1.default(ctx).buildDao();
}
processDefinitionWithComments(ctx, buildDao) {
const expressionDefinition = buildDao();
if (expressionDefinition && ctx.start.inputStream) {
const hiddenTokens = this.bufferedTokenStream.getHiddenTokensToLeft(ctx.start.tokenIndex, generated_1.cqlLexer.HIDDEN);
if (hiddenTokens && hiddenTokens.length > 0) {
const comment = hiddenTokens
.map((token) => { var _a; return (_a = token.text) === null || _a === void 0 ? void 0 : _a.trim(); })
.filter(Boolean)
.join(" ");
if (comment) {
expressionDefinition.start = new CqlExpressionDefinitionCreator_1.default(ctx).buildLineInfo(hiddenTokens[1]);
expressionDefinition.comment = AntlrUtils_1.default.formatComment(comment);
}
}
this.cqlResult.expressionDefinitions.push(expressionDefinition);
}
}
enterExpressionDefinition(ctx) {
this.processDefinitionWithComments(ctx, () => {
return new CqlExpressionDefinitionCreator_1.default(ctx).buildDao();
});
}
enterFunctionDefinition(ctx) {
this.processDefinitionWithComments(ctx, () => {
return new CqlExpressionDefinitionCreator_1.default(ctx).buildDao();
});
}
enterAggregateClause(ctx) {
const identifier = new CqlIdentifierCreator_1.default(ctx).buildDao();
if (identifier) {
this.cqlResult.identifiers.push(identifier);
}
}
enterRetrieve(ctx) {
if (ctx.terminology() === undefined) {
return;
}
const cqlRetrieve = new CqlRetrieveCreator_1.default(ctx).buildDao();
if (cqlRetrieve) {
this.cqlResult.retrieves.push(cqlRetrieve);
}
}
}
exports.default = CqlAntlrListener;
//# sourceMappingURL=CqlAntlrListener.js.map