@abaplint/core
Version:
abaplint - Core API
29 lines • 2.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Export = void 0;
const combi_1 = require("../combi");
const tokens_1 = require("../../1_lexer/tokens");
const expressions_1 = require("../expressions");
// todo, cloud, split?
class Export {
getMatcher() {
const from = (0, combi_1.seq)((0, combi_1.altPrio)("FROM", "="), expressions_1.Source);
const client = (0, combi_1.seq)("CLIENT", expressions_1.Source);
const id = (0, combi_1.seq)("ID", expressions_1.Source);
const using = (0, combi_1.seq)("USING", expressions_1.Source);
const cluster = (0, combi_1.seq)(expressions_1.NamespaceSimpleName, (0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.regex)(/^[\w$%\^~]{2}$/), (0, combi_1.tok)(tokens_1.ParenRightW));
const buffer = (0, combi_1.seq)("DATA BUFFER", expressions_1.Target);
const memory = (0, combi_1.seq)("MEMORY", (0, combi_1.opt)((0, combi_1.seq)("ID", expressions_1.Source)));
const table = (0, combi_1.seq)("INTERNAL TABLE", expressions_1.Target);
const shared = (0, combi_1.seq)((0, combi_1.alt)("SHARED MEMORY", "SHARED BUFFER"), cluster, (0, combi_1.per)(from, client, id));
const database = (0, combi_1.seq)("DATABASE", cluster, (0, combi_1.per)(from, client, id, using));
const target = (0, combi_1.alt)(buffer, memory, database, table, shared);
const left = (0, combi_1.alt)(expressions_1.FieldSub, expressions_1.FieldSymbol);
const source = (0, combi_1.alt)((0, combi_1.plus)((0, combi_1.altPrio)((0, combi_1.seq)(left, from), left)), expressions_1.Dynamic, expressions_1.Constant);
const compression = (0, combi_1.seq)("COMPRESSION", (0, combi_1.alt)("ON", "OFF"));
const hint = (0, combi_1.seq)("CODE PAGE HINT", expressions_1.Source);
return (0, combi_1.seq)("EXPORT", source, "TO", target, (0, combi_1.opt)(compression), (0, combi_1.opt)(hint));
}
}
exports.Export = Export;
//# sourceMappingURL=export.js.map