55
|
1 using System;
|
|
2 using System.Collections.Generic;
|
|
3 using System.Linq;
|
|
4 using System.Text;
|
|
5 using System.Threading.Tasks;
|
|
6
|
|
7 namespace Implab.Parsing {
|
|
8 /// <summary>
|
|
9 /// Интерфейс для определения ДКА, позволяет добавить состояния и определить переходы.
|
|
10 /// </summary>
|
|
11 public interface IDFADefinition {
|
|
12 /// <summary>
|
|
13 /// Добавляет состояние в автомат.
|
|
14 /// </summary>
|
|
15 /// <returns>Индекс добавленного состояния.</returns>
|
|
16 int AddState();
|
|
17 /// <summary>
|
|
18 /// Добавляет конечное состояние с указанными метками, если метки не заданы, то
|
|
19 /// добавленное состояние не будет конечным.
|
|
20 /// </summary>
|
|
21 /// <param name="tags">Метки состояния.</param>
|
|
22 /// <returns>Индекс добавленного состояния.</returns>
|
|
23 int AddState(int[] tags);
|
|
24 /// <summary>
|
|
25 /// Определяет переход между состояниями.
|
|
26 /// </summary>
|
|
27 /// <param name="s1">Исходное состояние.</param>
|
|
28 /// <param name="s2">Конечное состояние.</param>
|
|
29 /// <param name="input">Входной символ.</param>
|
|
30 void DefineTransition(int s1, int s2, int input);
|
|
31 /// <summary>
|
|
32 /// Размер входного алфавита.
|
|
33 /// </summary>
|
158
|
34 /// <remarks>
|
|
35 /// Размер входного алфавита определяет количество возможных выходов из одного состояния. <see cref="IAlphabet{TSymbol}.Count"/>
|
|
36 /// </remarks>
|
55
|
37 int AlphabetSize { get; }
|
|
38 }
|
|
39 }
|