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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 361x 361x 361x 361x 361x 361x 361x 93x 93x 361x 82x 82x 361x 63x 63x 361x 61x 61x 361x 54x 54x 361x 49x 49x 361x 40x 40x 361x 15x 15x 361x 9x 9x 361x 5x 5x 356x 356x 1x 1x | import {Comment} from "../abap/1_lexer/tokens";
import {Combi} from "../abap/2_statements/combi";
import {ExpressionNode} from "../abap/nodes";
import {IFile} from "../files/_ifile";
import {defaultRelease} from "../version";
import {CDSLexer} from "./cds_lexer";
import * as Expressions from "./expressions";
// todo: the names of the ABAP + CDS + DDL expressions might overlap, if overlapping the singleton will fail
export class CDSParser {
public parse(file: IFile | undefined) {
if (file === undefined) {
return undefined;
}
let tokens = CDSLexer.run(file);
tokens = tokens.filter(t => !(t instanceof Comment));
let res = Combi.run(new Expressions.CDSDefineView(), tokens, defaultRelease);
if (res === undefined || !(res[0] instanceof ExpressionNode)) {
res = Combi.run(new Expressions.CDSDefineAbstract(), tokens, defaultRelease);
}
if (res === undefined || !(res[0] instanceof ExpressionNode)) {
res = Combi.run(new Expressions.CDSDefineProjection(), tokens, defaultRelease);
}
if (res === undefined || !(res[0] instanceof ExpressionNode)) {
res = Combi.run(new Expressions.CDSAnnotate(), tokens, defaultRelease);
}
if (res === undefined || !(res[0] instanceof ExpressionNode)) {
res = Combi.run(new Expressions.CDSDefineCustom(), tokens, defaultRelease);
}
if (res === undefined || !(res[0] instanceof ExpressionNode)) {
res = Combi.run(new Expressions.CDSDefineTableFunction(), tokens, defaultRelease);
}
if (res === undefined || !(res[0] instanceof ExpressionNode)) {
res = Combi.run(new Expressions.CDSExtendView(), tokens, defaultRelease);
}
if (res === undefined || !(res[0] instanceof ExpressionNode)) {
res = Combi.run(new Expressions.CDSDefineHierarchy(), tokens, defaultRelease);
}
if (res === undefined || !(res[0] instanceof ExpressionNode)) {
res = Combi.run(new Expressions.CDSDefineExternalEntity(), tokens, defaultRelease);
}
if (res === undefined || !(res[0] instanceof ExpressionNode)) {
res = Combi.run(new Expressions.CDSDefineTableEntity(), tokens, defaultRelease);
}
if (res === undefined || !(res[0] instanceof ExpressionNode)) {
return undefined;
}
return res[0];
}
}
|