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 462x 462x 462x 462x 462x 462x 462x 136x 136x 462x 112x 112x 462x 86x 86x 462x 83x 83x 462x 75x 75x 462x 69x 69x 462x 53x 53x 462x 26x 26x 462x 17x 17x 462x 6x 6x 456x 456x 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];
}
}
|