semantic_heuristic_factory.js 979 B

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