view Implab/Parsing/IDFADefinition.cs @ 116:da56ba7b1aab v2

minor refactoring
author cin
date Tue, 23 Dec 2014 03:20:39 +0300
parents c0bf853aa04f
children 130781364799
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>
        int AlphabetSize { get; }
    }
}