UNPKG

@abaplint/core

Version:
30 lines 2.39 kB
"use strict"; 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