@abaplint/core
Version:
abaplint - Core API
30 lines • 2.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Import = void 0;
const combi_1 = require("../combi");
const tokens_1 = require("../../1_lexer/tokens");
const expressions_1 = require("../expressions");
class Import {
getMatcher() {
const dto = (0, combi_1.seq)("TO", expressions_1.Target);
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.Source);
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.Source);
const shared = (0, combi_1.seq)((0, combi_1.alt)("SHARED MEMORY", "SHARED BUFFER"), cluster, (0, combi_1.per)(dto, client, id));
const database = (0, combi_1.seq)("DATABASE", cluster, (0, combi_1.per)(dto, client, id, using));
const logfile = (0, combi_1.seq)("LOGFILE ID", expressions_1.Source);
const source = (0, combi_1.alt)(buffer, memory, database, table, shared, logfile);
const to = (0, combi_1.plus)((0, combi_1.seq)(expressions_1.ComponentChainSimple, (0, combi_1.alt)("TO", "INTO"), expressions_1.Target));
const toeq = (0, combi_1.plus)((0, combi_1.seq)((0, combi_1.alt)(expressions_1.ComponentChainSimple, expressions_1.FieldSymbol), "=", expressions_1.Target));
const target = (0, combi_1.alt)(toeq, to, expressions_1.Dynamic, (0, combi_1.plus)(expressions_1.Target));
const options = (0, combi_1.per)("ACCEPTING PADDING", "IGNORING CONVERSION ERRORS", "IN CHAR-TO-HEX MODE", "IGNORING STRUCTURE BOUNDARIES", "ACCEPTING TRUNCATION", (0, combi_1.seq)("REPLACEMENT CHARACTER", expressions_1.Source), (0, combi_1.seq)("CODE PAGE INTO", expressions_1.Source), (0, combi_1.seq)("ENDIAN INTO", expressions_1.Source));
const ret = (0, combi_1.seq)("IMPORT", target, "FROM", source, (0, combi_1.opt)(options));
return ret;
}
}
exports.Import = Import;
//# sourceMappingURL=import.js.map