Генерация кода для конечных автоматов
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 (когда между состояниями есть промежуточные узлы)
-
Поддержка механизма суперпереходов, когда переходы между состояниями пересекают границы блоков-состояний. Это могут быть переходы между:
-
внешним состоянием и его вложенным состоянием, когда глубина вложенности больше единицы;
-
вложенными состояниями двух различных внешних состояний, не вложенных друг в друга.
-
-
Также поддерживаются суперпереходы по умолчанию, когда суперпереход начинается не в родительском состоянии, а приходит снаружи родительского состояния.