Не могли бы вы порекомендовать библиотеку с открытым исходным кодом, написанную на F #, которая предоставляет общие типы для построения FA и основных алгоритмов (преобразование NFA в DFA, минимизация FA...)?
Библиотека конечных автоматов, написанная на F#
Ответы (3)
Моей первой мыслью было бы использовать монаду конечного автомата, которая была опубликована/написана/обсуждена/произведена несколько раз в блогах, пара ссылок ниже.
http://fsharpcode.blogspot.com/2008/12/f-state-monad-type-state-state-state-of.html
http://codebetter.com/blogs/matthew.podwysocki/archive/2009/12/30/much-ado-about-monads-state-edition.aspx
хотя это не дает вам желаемых переводов... Может быть, с этого стоит начать.
Вероятно, это не то, что вы ищете, но быстрый и грязный способ заставить некоторые вещи FA работать — написать эквивалентную контекстно-свободную грамматику для вашего FA, а затем использовать fsyacc?
Он не соответствует всем вашим требованиям: он написан на С# и, похоже, не поддерживает перевод в DFA или минимизацию. По крайней мере, его можно использовать из F# и использовать в качестве отправной точки. Я никогда не использовал его сам, поэтому я не могу ручаться за его пригодность или качество.
См. также реализация NFA/DFA в C#.