В последнее время, как часть моей повседневной работы, я изучал IBM Rhapsody и использовал ее для генерации кода на C ++ из UML.
Вчера меня поразило, что было бы здорово подумать о добавлении поддержки конечного автомата в мой компилятор C ++, поэтому я написал здесь несколько замечаний: http://ellcc.org/wiki/index.php/State_machines_and_Active_Classes
Мои мотивы для этого:
- Кажется, это крутая идея.
- Компилятор мог бы сделать намного лучшую семантическую проверку (с лучшей проверкой ошибок), чем текущий компилятор Rhapsody / normal C ++.
- Существует множество возможностей оптимизации, когда сам компилятор понимает структуру конечного автомата.
Я могу попытаться расширить мою грамматику, за исключением чего-то вроде предложения, чтобы посмотреть, насколько хорошо это работает.
Что вы думаете о предложении? Кажется ли это читабельным? Это кажется стоящим?
<Ч />
Edit:
Спасибо за ответы, рекомендующие конкретные библиотеки для создания конечных автоматов, но это был не мой вопрос. Я реализовал множество конечных автоматов, используя написанные мной библиотеки и код.
Я действительно искал идеи, критику и т. Д. О дизайне расширения конечного автомата для языка, подобного C ++, а не о том, будет ли это изменение подходящим для добавления в стандарт C ++. Думайте об этом как о доменном расширении, где мой мой домен - приложения управления в реальном времени.
Я начал реализацию расширения в моем компиляторе, как описано здесь: http://ellcc.org/wiki/index.php/State%5Fmachines%5Fand%5FActive%5FClasses
До сих пор концепция не должна была сильно меняться от предложения к реализации, но в деталях произошли некоторые изменения, и я уточняю свое понимание семантики проблемы.
Время покажет, имеет ли вся концепция какое-либо значение. ; -)