@abaplint/core
Version:
abaplint - Core API
25 lines • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SQLField = void 0;
const combi_1 = require("../combi");
const _1 = require(".");
const version_1 = require("../../../version");
const tokens_1 = require("../../1_lexer/tokens");
const sql_function_1 = require("./sql_function");
const sql_path_1 = require("./sql_path");
class SQLField extends combi_1.Expression {
getRunnable() {
const abap = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), _1.SimpleFieldChain2), version_1.Version.OpenABAP);
const as = (0, combi_1.seq)("AS", _1.SQLAsName);
const parenFieldName = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFieldName, (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenRightW), (0, combi_1.tok)(tokens_1.WParenRight)));
const field = (0, combi_1.altPrio)(_1.SQLAggregation, _1.SQLCase, sql_function_1.SQLFunction, sql_path_1.SQLPath, _1.SQLFieldName, abap, _1.Constant, parenFieldName);
const parenField = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), field, (0, combi_1.tok)(tokens_1.WParenRightW));
const sub = (0, combi_1.plusPrio)((0, combi_1.seq)((0, combi_1.altPrio)("+", "-", "*", "/", "&&"), (0, combi_1.altPrio)(parenField, field)));
const arith = (0, combi_1.ver)(version_1.Version.v740sp05, sub);
const arithSequence = (0, combi_1.seq)(field, (0, combi_1.optPrio)(arith));
const parenArithSequence = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), arithSequence, (0, combi_1.tok)(tokens_1.WParenRightW));
return (0, combi_1.seq)((0, combi_1.altPrio)(parenArithSequence, arithSequence), (0, combi_1.optPrio)(as));
}
}
exports.SQLField = SQLField;
//# sourceMappingURL=sql_field.js.map