UNPKG

fauton

Version:

A library to test any finite automaton with arbitrary alphabets

25 lines (24 loc) 1.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.moveAndEpsilonClosureStateSet = void 0; const epsilonClosureOfState_1 = require("./epsilonClosureOfState"); function moveAndEpsilonClosureStateSet(transitions, epsilonTransitions, states, symbol) { const transitionRecordExtractedStates = new Set(); states.forEach((state) => { const statesForSymbol = transitions[state]?.[symbol]; if (statesForSymbol) { statesForSymbol.forEach((stateForSymbol) => transitionRecordExtractedStates.add(stateForSymbol)); } }); const finalStates = new Set(transitionRecordExtractedStates); if (epsilonTransitions) { transitionRecordExtractedStates.forEach((transitionRecordExtractedState) => { const epsilonClosuredStates = (0, epsilonClosureOfState_1.epsilonClosureOfState)(epsilonTransitions, transitionRecordExtractedState); epsilonClosuredStates.forEach((epsilonClosuredState) => { finalStates.add(epsilonClosuredState); }); }); } return Array.from(finalStates); } exports.moveAndEpsilonClosureStateSet = moveAndEpsilonClosureStateSet;