##// END OF EJS Templates
DFA refactoring
DFA refactoring

File last commit:

r161:2a8466f0cb8a v2
r161:2a8466f0cb8a v2
Show More
IDFADefinition.cs
61 lines | 2.2 KiB | text/x-csharp | CSharpLexer
cin
Added initial JSON support...
r55 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Implab.Parsing {
/// <summary>
cin
DFA refactoring
r161 /// Полностью описывает DFA автомат, его поведение, состояние и входные символы.
cin
Added initial JSON support...
r55 /// </summary>
cin
DFA refactoring
r161 /// <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 IDFADefinition<TInput, TState, TTag> {
cin
Added initial JSON support...
r55 /// <summary>
cin
DFA refactoring
r161 /// Алфавит входных символов
cin
Added initial JSON support...
r55 /// </summary>
cin
DFA refactoring
r161 /// <value>The input alphabet.</value>
IAlphabet<TInput> InputAlphabet {
get;
}
cin
Added initial JSON support...
r55 /// <summary>
cin
DFA refactoring
r161 /// Алфавит состояний автомата
cin
Added initial JSON support...
r55 /// </summary>
cin
DFA refactoring
r161 /// <value>The state alphabet.</value>
IAlphabet<TState> StateAlphabet {
get;
}
cin
Added initial JSON support...
r55 /// <summary>
cin
DFA refactoring
r161 /// Таблица переходов состояний автомата
cin
Added initial JSON support...
r55 /// </summary>
cin
DFA refactoring
r161 /// <returns>The transition table.</returns>
DFAStateDescriptior<TTag>[] GetTransitionTable();
cin
Added initial JSON support...
r55 }
}