UNPKG

@abaplint/core

Version:
45 lines 2.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CDSParser = void 0; const tokens_1 = require("../abap/1_lexer/tokens"); const combi_1 = require("../abap/2_statements/combi"); const nodes_1 = require("../abap/nodes"); const version_1 = require("../version"); const cds_lexer_1 = require("./cds_lexer"); const Expressions = require("./expressions"); // todo: the names of the ABAP + CDS + DDL expressions might overlap, if overlapping the singleton will fail class CDSParser { parse(file) { if (file === undefined) { return undefined; } let tokens = cds_lexer_1.CDSLexer.run(file); tokens = tokens.filter(t => !(t instanceof tokens_1.Comment)); // console.dir(tokens); let res = combi_1.Combi.run(new Expressions.CDSDefineView(), tokens, version_1.defaultVersion); if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) { res = combi_1.Combi.run(new Expressions.CDSDefineAbstract(), tokens, version_1.defaultVersion); } if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) { res = combi_1.Combi.run(new Expressions.CDSDefineProjection(), tokens, version_1.defaultVersion); } if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) { res = combi_1.Combi.run(new Expressions.CDSAnnotate(), tokens, version_1.defaultVersion); } if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) { res = combi_1.Combi.run(new Expressions.CDSDefineCustom(), tokens, version_1.defaultVersion); } if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) { res = combi_1.Combi.run(new Expressions.CDSDefineTableFunction(), tokens, version_1.defaultVersion); } if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) { res = combi_1.Combi.run(new Expressions.CDSExtendView(), tokens, version_1.defaultVersion); } if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) { return undefined; } return res[0]; } } exports.CDSParser = CDSParser; //# sourceMappingURL=cds_parser.js.map