UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

34 lines 1.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.processSymbol = processSymbol; const process_value_1 = require("./process-value"); const convert_values_1 = require("../../../r-bridge/lang-4.x/convert-values"); const graph_1 = require("../../graph/graph"); const vertex_1 = require("../../graph/vertex"); const identifier_1 = require("../../environments/identifier"); /** * Process a symbol node in the AST for dataflow analysis. * If the symbol is `NULL` or `NA`, it is processed as a value. * Otherwise, it is treated as an unknown reference. */ function processSymbol(symbol, data) { if (symbol.content === convert_values_1.RNull || symbol.content === convert_values_1.RNa) { return (0, process_value_1.processValue)(symbol, data); } const sid = symbol.info.id; return { unknownReferences: [{ nodeId: sid, name: symbol.content, cds: data.cds, type: identifier_1.ReferenceType.Unknown }], in: [], out: [], environment: data.environment, graph: new graph_1.DataflowGraph(data.completeAst.idMap).addVertex({ tag: vertex_1.VertexType.Use, id: sid, cds: data.cds }, data.ctx.env.makeCleanEnv()), entryPoint: sid, exitPoints: [{ nodeId: sid, type: 0 /* ExitPointType.Default */, cds: data.cds }], hooks: [] }; } //# sourceMappingURL=process-symbol.js.map