@abaplint/transpiler
Version:
34 lines • 1.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DoTranspiler = void 0;
const abaplint = require("@abaplint/core");
const expressions_1 = require("../expressions");
const unique_identifier_1 = require("../unique_identifier");
const chunk_1 = require("../chunk");
class DoTranspiler {
syIndexBackup;
constructor(syIndexBackup) {
this.syIndexBackup = syIndexBackup;
}
transpile(node, traversal) {
const found = node.findFirstExpression(abaplint.Expressions.Source);
if (found) {
const source = new expressions_1.SourceTranspiler(true).transpile(found, traversal).getCode();
const idSource = unique_identifier_1.UniqueIdentifier.get();
const id = unique_identifier_1.UniqueIdentifier.get();
return new chunk_1.Chunk(`const ${this.syIndexBackup} = abap.builtin.sy.get().index.get();
const ${idSource} = ${source};
for (let ${id} = 0; ${id} < ${idSource}; ${id}++) {
abap.builtin.sy.get().index.set(${id} + 1);`);
}
else {
const unique = unique_identifier_1.UniqueIdentifier.get();
return new chunk_1.Chunk(`const ${this.syIndexBackup} = abap.builtin.sy.get().index.get();
let ${unique} = 1;
while (true) {
abap.builtin.sy.get().index.set(${unique}++);`);
}
}
}
exports.DoTranspiler = DoTranspiler;
//# sourceMappingURL=do.js.map