@abaplint/core
Version:
abaplint - Core API
62 lines • 3.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Describe = void 0;
const Expressions = require("../../2_statements/expressions");
const inline_data_1 = require("../expressions/inline_data");
const basic_1 = require("../../types/basic");
const target_1 = require("../expressions/target");
const source_1 = require("../expressions/source");
const field_chain_1 = require("../expressions/field_chain");
const _reference_1 = require("../_reference");
class Describe {
runSyntax(node, input) {
for (const s of node.findDirectExpressions(Expressions.Source)) {
source_1.Source.runSyntax(s, input);
}
for (const s of node.findDirectExpressions(Expressions.FieldChain)) {
field_chain_1.FieldChain.runSyntax(s, input, _reference_1.ReferenceType.DataReadReference);
}
const linesTarget = node.findExpressionAfterToken("LINES");
if ((linesTarget === null || linesTarget === void 0 ? void 0 : linesTarget.get()) instanceof Expressions.Target) {
const inline = linesTarget === null || linesTarget === void 0 ? void 0 : linesTarget.findDirectExpression(Expressions.InlineData);
if (inline) {
inline_data_1.InlineData.runSyntax(inline, input, basic_1.IntegerType.get());
}
else {
target_1.Target.runSyntax(linesTarget, input);
}
}
const typeTarget = node.findExpressionAfterToken("TYPE");
if ((typeTarget === null || typeTarget === void 0 ? void 0 : typeTarget.get()) instanceof Expressions.Target) {
const inline = typeTarget === null || typeTarget === void 0 ? void 0 : typeTarget.findDirectExpression(Expressions.InlineData);
if (inline) {
inline_data_1.InlineData.runSyntax(inline, input, new basic_1.CharacterType(1));
}
else {
target_1.Target.runSyntax(typeTarget, input);
}
}
const lengthTarget = node.findExpressionAfterToken("LENGTH");
if ((lengthTarget === null || lengthTarget === void 0 ? void 0 : lengthTarget.get()) instanceof Expressions.Target) {
const inline = lengthTarget === null || lengthTarget === void 0 ? void 0 : lengthTarget.findDirectExpression(Expressions.InlineData);
if (inline) {
inline_data_1.InlineData.runSyntax(inline, input, basic_1.IntegerType.get());
}
else {
target_1.Target.runSyntax(lengthTarget, input);
}
}
const componentsTarget = node.findExpressionAfterToken("COMPONENTS");
if ((componentsTarget === null || componentsTarget === void 0 ? void 0 : componentsTarget.get()) instanceof Expressions.Target) {
const inline = componentsTarget === null || componentsTarget === void 0 ? void 0 : componentsTarget.findDirectExpression(Expressions.InlineData);
if (inline) {
inline_data_1.InlineData.runSyntax(inline, input, basic_1.IntegerType.get());
}
else {
target_1.Target.runSyntax(componentsTarget, input);
}
}
}
}
exports.Describe = Describe;
//# sourceMappingURL=describe.js.map