@abaplint/core
Version:
abaplint - Core API
19 lines • 1.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CDSJoin = void 0;
const _1 = require(".");
const combi_1 = require("../../abap/2_statements/combi");
const cds_condition_1 = require("./cds_condition");
class CDSJoin extends combi_1.Expression {
getRunnable() {
const joinTypes = (0, combi_1.optPrio)((0, combi_1.altPrio)("LEFT OUTER MANY TO EXACT ONE", "LEFT OUTER ONE TO EXACT ONE", "LEFT OUTER ONE TO MANY", "LEFT OUTER TO ONE", "LEFT OUTER TO MANY", "LEFT OUTER", "INNER ONE TO MANY", "INNER MANY TO ONE", "INNER ONE TO EXACT ONE", "INNER MANY TO EXACT ONE", "INNER TO MANY", "INNER TO ONE", "INNER TO EXACT ONE", "INNER", "CROSS", "RIGHT OUTER"));
const cond = (0, combi_1.seq)(_1.CDSSource, "ON", cds_condition_1.CDSCondition);
const foo = (0, combi_1.altPrio)((0, combi_1.seq)("(", cond, ")"), cond);
// Parenthesized join sub-expression: JOIN (src innerJOIN src ON cond) ON outerCond
const innerJoin = (0, combi_1.seq)(joinTypes, "JOIN", (0, combi_1.altPrio)((0, combi_1.seq)("(", cond, ")"), cond));
const parenJoinChain = (0, combi_1.seq)("(", _1.CDSSource, (0, combi_1.star)(innerJoin), ")", "ON", cds_condition_1.CDSCondition);
return (0, combi_1.seq)(joinTypes, "JOIN", (0, combi_1.altPrio)(parenJoinChain, foo, _1.CDSSource));
}
}
exports.CDSJoin = CDSJoin;
//# sourceMappingURL=cds_join.js.map