semantic_heuristic_factory.js 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.SemanticHeuristics = void 0;
  4. exports.SemanticHeuristics = {
  5. factory: null,
  6. updateFactory: function (nodeFactory) {
  7. exports.SemanticHeuristics.factory = nodeFactory;
  8. },
  9. heuristics: new Map(),
  10. flags: {
  11. combine_juxtaposition: true,
  12. convert_juxtaposition: true,
  13. multioperator: true
  14. },
  15. blacklist: {},
  16. add: function (heuristic) {
  17. const name = heuristic.name;
  18. exports.SemanticHeuristics.heuristics.set(name, heuristic);
  19. if (!exports.SemanticHeuristics.flags[name]) {
  20. exports.SemanticHeuristics.flags[name] = false;
  21. }
  22. },
  23. run: function (name, root, opt_alternative) {
  24. const heuristic = exports.SemanticHeuristics.heuristics.get(name);
  25. return heuristic &&
  26. !exports.SemanticHeuristics.blacklist[name] &&
  27. (exports.SemanticHeuristics.flags[name] || heuristic.applicable(root))
  28. ? heuristic.apply(root)
  29. : opt_alternative
  30. ? opt_alternative(root)
  31. : root;
  32. }
  33. };