Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import {altPrio, Expression, optPrio, seq, star} from "../../abap/2_statements/combi";
import {IStatementRunnable} from "../../abap/2_statements/statement_runnable";
import {CDSName} from "./cds_name";
import {CDSParameters} from "./cds_parameters";
import {CDSParametersSelect} from "./cds_parameters_select";
import {CDSCondition} from "./cds_condition";
import {CDSInteger} from "./cds_integer";
import {CDSString} from "./cds_string";
export class CDSPrefixedName extends Expression {
public getRunnable(): IStatementRunnable {
const joinType = altPrio("LEFT OUTER", "INNER", "CROSS");
const joinRedirect = seq("[", joinType, "]");
const cardSpec = altPrio(CDSInteger, "*");
const cardinalityJoin = seq("[", cardSpec, ":", joinType, "]");
const cardinalityJoinWhere = seq("[", cardSpec, ":", joinType, "WHERE", CDSCondition, "]");
const joinWhere = seq("[", joinType, "WHERE", CDSCondition, "]");
const textCard = altPrio("MANY TO EXACT ONE", "MANY TO ONE", "ONE TO MANY", "ONE TO ONE", "TO EXACT ONE", "TO ONE", "TO MANY");
const textCardFilter = seq("[", textCard, optPrio(seq(":", altPrio(
seq(joinType, "WHERE", CDSCondition),
joinType,
CDSCondition,
))), "]");
const cardNum = altPrio(CDSInteger, "*");
const rangeCard = seq(CDSInteger, ".", ".", cardNum);
const rangeCardFilter = seq("[", rangeCard, ":", CDSCondition, "]");
const pathFilter = altPrio(
cardinalityJoinWhere, joinWhere, cardinalityJoin, joinRedirect,
textCardFilter, rangeCardFilter,
seq("[", cardSpec, ":", CDSCondition, "]"),
seq("[", CDSCondition, "]"),
);
const segment = seq(".", altPrio(CDSString, CDSName, "*"), optPrio(altPrio(CDSParametersSelect, CDSParameters)), optPrio(pathFilter));
return seq(CDSName, optPrio(altPrio(CDSParameters, CDSParametersSelect)), optPrio(pathFilter), star(segment));
}
}
|