Генерация кода для конечных автоматов
Engee поддерживает генерацию кода для блока Chart. Блок Chart позволяет описывать диаграммы состояний, графы переходов и их комбинации. Библиотека конечных автоматов Engee является эффективным инструментом разработки таких пользовательских алгоритмов для целевых устройств, где необходимо использовать сложные конструкции условий, циклов и переключателей.
В состояниях, действиях и условиях блока Chart генератором кода Engee поддерживаются следующие конструкции языка Julia:
-
Оператор
if-else/elseif -
Оператор
while -
Оператор
for … in M:N -
Арифметические операторы
+и-(унарные и бинарные),*,/,% -
Логические операторы
&&,||и! -
Операторы сравнения
<,<=,>,>=,==,!=(поддерживаются только бинарные, с двумя операндами)
Поддерживаемые генератором кода Engee возможности блока Chart:
-
Безусловные и условные переходы
-
Входные, локальные, выходные переменные типа
v(представлен типомFloat64в Julia) -
Несколько несвязанных диаграмм состояний, графов переходов
-
Несколько инструкций, записанных в одну строку через разделитель (
;) в теле действий переходов и в состояниях -
Многострочные инструкции в состояниях
-
Группы операторов
entry,during,exit,on -
Сокращенные наименования групп операторов Chart (
en,du,ex) -
Операторы темпоральной логики
after,at,before,elapsed,et,every,t,temporalCount -
Функции
floor(Int64,…)иceil(Int64,…) -
Комментирование в состояниях, теле условий и действий переходов
-
Поддержка механизма Backtracking (когда между состояниями есть промежуточные узлы)
-
Поддержка механизма суперпереходов, когда переходы между состояниями пересекают границы блоков-состояний. Это могут быть переходы между:
-
внешним состоянием и его вложенным состоянием, когда глубина вложенности больше единицы;
-
вложенными состояниями двух различных внешних состояний, не вложенных друг в друга.
-
-
Также поддерживаются суперпереходы по умолчанию, когда суперпереход начинается не в родительском состоянии, а приходит снаружи родительского состояния.