@madie/cql-antlr-parser
Version:
Antlr Parsing of CQL in typescript
57 lines • 1.98 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const tree_1 = require("antlr4ts/tree");
const generated_1 = require("../generated");
const AntlrUtils_1 = __importDefault(require("./AntlrUtils"));
const CqlFinder_1 = __importDefault(require("./util/CqlFinder"));
const CqlErrorCreator_1 = __importDefault(require("./CqlErrorCreator"));
class CqlExpressionVisitor extends tree_1.AbstractParseTreeVisitor {
constructor(result, aliases = []) {
super();
this.result = result;
this.aliases = aliases;
this.finder = new CqlFinder_1.default(result, aliases);
}
defaultResult() { }
visit(tree) {
tree.accept(this);
CqlExpressionVisitor.count += CqlExpressionVisitor.count;
}
visitChildren(/* @NotNull */ node) {
for (let i = 0; i < node.childCount; i += 1) {
this.visit(node.getChild(i));
}
}
visitAlias(ctx) {
const alias = AntlrUtils_1.default.findChildText(ctx.children, generated_1.cqlLexer.IDENTIFIER);
if (alias) {
this.aliases.push(alias);
}
}
visitInvocationTerm(ctx) {
this.checkForError(ctx);
}
visitTerminology(ctx) {
this.checkForError(ctx);
}
visitCodesystemIdentifier(ctx) {
this.checkForError(ctx);
}
checkForError(ctx) {
const term = AntlrUtils_1.default.findChildText(ctx.children, ctx.start.type);
if (term) {
if (!this.finder.find(term)) {
const cqlError = new CqlErrorCreator_1.default(ctx).buildDao();
if (cqlError) {
this.result.errors.push(cqlError);
}
}
}
}
}
exports.default = CqlExpressionVisitor;
CqlExpressionVisitor.count = 0;
//# sourceMappingURL=CqlExpressionVisitor.js.map