UNPKG

@abaplint/core

Version:
48 lines 2.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ABAPParser = void 0; const version_1 = require("../version"); const lexer_1 = require("./1_lexer/lexer"); const statement_parser_1 = require("./2_statements/statement_parser"); const structure_parser_1 = require("./3_structures/structure_parser"); const abap_file_information_1 = require("./4_file_information/abap_file_information"); const abap_file_1 = require("./abap_file"); class ABAPParser { constructor(version, globalMacros, reg) { this.version = version ? version : version_1.defaultVersion; this.globalMacros = globalMacros ? globalMacros : []; this.reg = reg; } // files is input for a single object parse(files) { const issues = []; const output = []; const start = Date.now(); // 1: lexing const b1 = Date.now(); const lexerResult = files.map(f => new lexer_1.Lexer().run(f)); const lexingRuntime = Date.now() - b1; // 2: statements const b2 = Date.now(); const statementResult = new statement_parser_1.StatementParser(this.version, this.reg).run(lexerResult, this.globalMacros); const statementsRuntime = Date.now() - b2; // 3: structures const b3 = Date.now(); for (const f of statementResult) { const result = structure_parser_1.StructureParser.run(f); // 4: file information const info = new abap_file_information_1.ABAPFileInformation(result.node, f.file.getFilename()); output.push(new abap_file_1.ABAPFile(f.file, f.tokens, f.statements, result.node, info)); issues.push(...result.issues); } const structuresRuntime = Date.now() - b3; const end = Date.now(); return { issues, output, runtime: end - start, runtimeExtra: { lexing: lexingRuntime, statements: statementsRuntime, structure: structuresRuntime }, }; } } exports.ABAPParser = ABAPParser; //# sourceMappingURL=abap_parser.js.map