##// END OF EJS Templates
Added ResetState to RunnableComponent to reset in case of failure...
Added ResetState to RunnableComponent to reset in case of failure Added StateChanged event to IRunnable Renamed Promise.SUCCESS -> Promise.Success Added Promise.FromException Renamed Bundle -> PromiseAll in PromiseExtensions

File last commit:

r171:0f70905b4652 ref20160224
r205:8200ab154c8a v2
Show More
IDFATable.cs
53 lines | 1.8 KiB | text/x-csharp | CSharpLexer
using System.Collections.Generic;
namespace Implab.Automaton {
/// <summary>
/// Полностью описывает DFA автомат, его поведение, состояние и входные символы.
/// </summary>
/// <example>
/// class MyAutomaton {
/// int m_current;
/// readonly DFAStateDescriptor<string>[] m_automaton;
/// readonly IAlphabet<MyCommands> m_commands;
///
/// public MyAutomaton(IDFADefinition&lt;MyCommands,MyStates,string&gt; definition) {
/// m_current = definition.StateAlphabet.Translate(MyStates.Initial);
/// m_automaton = definition.GetTransitionTable();
/// m_commands = definition.InputAlphabet;
/// }
///
/// // defined a method which will move the automaton to the next state
/// public void Move(MyCommands cmd) {
/// // use transition map to determine the next state
/// var next = m_automaton[m_current].transitions[m_commands.Translate(cmd)];
///
/// // validate that we aren't in the unreachable state
/// if (next == DFAConst.UNREACHABLE_STATE)
/// throw new InvalidOperationException("The specified command is invalid");
///
/// // if everything is ok
/// m_current = next;
/// }
/// }
/// </example>
public interface IDFATable : IEnumerable<AutomatonTransition> {
int StateCount {
get;
}
int AlphabetSize {
get;
}
int InitialState {
get;
}
bool IsFinalState(int s);
IEnumerable<int> FinalStates {
get;
}
}
}