##// END OF EJS Templates
fixed regression: race condition in Promise...
fixed regression: race condition in Promise DFA refactoring

File last commit:

r158:130781364799 v2
r160:5802131432e4 v2
Show More
IDFADefinition.cs
39 lines | 1.9 KiB | text/x-csharp | CSharpLexer
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Implab.Parsing {
/// <summary>
/// Интерфейс для определения ДКА, позволяет добавить состояния и определить переходы.
/// </summary>
public interface IDFADefinition {
/// <summary>
/// Добавляет состояние в автомат.
/// </summary>
/// <returns>Индекс добавленного состояния.</returns>
int AddState();
/// <summary>
/// Добавляет конечное состояние с указанными метками, если метки не заданы, то
/// добавленное состояние не будет конечным.
/// </summary>
/// <param name="tags">Метки состояния.</param>
/// <returns>Индекс добавленного состояния.</returns>
int AddState(int[] tags);
/// <summary>
/// Определяет переход между состояниями.
/// </summary>
/// <param name="s1">Исходное состояние.</param>
/// <param name="s2">Конечное состояние.</param>
/// <param name="input">Входной символ.</param>
void DefineTransition(int s1, int s2, int input);
/// <summary>
/// Размер входного алфавита.
/// </summary>
/// <remarks>
/// Размер входного алфавита определяет количество возможных выходов из одного состояния. <see cref="IAlphabet{TSymbol}.Count"/>
/// </remarks>
int AlphabetSize { get; }
}
}