view Implab/Parsing/IDFADefinition.cs @ 158:130781364799 v2

refactoring, code cleanup
author cin
date Thu, 18 Feb 2016 14:34:02 +0300
parents c0bf853aa04f
children 2a8466f0cb8a
line wrap: on
line source

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; }
    }
}