DSL generator
400 UAHЗадача состоит в том, чтобы реализовать программу, которая генерирует свою реализацию на C из файла, написанного на предметно-ориентированном языке (DSL) для определения конечного автомата, а сам генератор будет написан на Java (требуется версия 15 или выше).
Вход
Файл, написанный на DSL, содержит:
- события (
events) - ввод отдельных символов с клавиатуры, что вызовет переход в другое состояние, - события перезапуска (
resetEvents) — подмножество событий, всегда вызывающих переход в исходное состояние, - команды (
commands) — действия, которые выполняются автоматически при переходе в заданное состояние — конкретные операторы персонажей на экране, - и сами состояния (
state), опционально содержащие действия (actions) и переходы в видеudalosť -> nový_stav.
Упомянутые 4 основные части не имеют фиксированного порядка и могут повторяться. Однако определение запасов в состоянии должно предшествовать определениям переходов. Начальное состояние — это то, которое определено первым. Простой пример ввода выглядит следующим образом:
events {
next 'n'
reset 'r'
}
resetEvents {
reset
}
commands {
printX 'X'
}
state s1 {
next -> s2
}
state s2 {
actions { printX }
}Выход
На выходе генератора должен быть файл с исходным кодом программы на языке C. Он должен иметь следующее поведение после компиляции и исполнения:
- Изначально он устанавливает начальное состояние и выполняет соответствующие действия. В нашем примере это состояние
s1, без запаса. - Затем он ожидает события, т. е. символа из стандартного ввода. Игнорирует неподдерживаемые символы. Выполняет переход после чтения символа, принадлежащего событию. Таким образом, при вводе «n» происходит событие
next, котороеs1вызывает переход состояния в состояниеs2. - Сразу после перехода снова выполнит соответствующие действия. В частности, для состояния
s2это действиеprintX, которое печатает «X». Затем он снова ждет следующего события (шаг 2).
Если мы встречаем символ, соответствующий событию перезапуска (в нашем случае resetтогда r), мы переходим в исходное состояние ( s1).
-
192 привет. Я готов работать с вами. Пишите в личку для получения дополнительной информации. Мы можем договориться о цене
Актуальные фриланс-проекты в категории Java
Разработка Android-приложения плеера для сервиса онлайн-ТВ
27 000 UAH
Нужен Android-разработчик для создания нативного Android-приложения для сервиса онлайн-ТВ. Планируется две версии: для мобильных устройств: смартфоны и планшеты; для Android TV / Android STB: телевизионные приставки. Ориентировочные сроки: до 3 месяцев. Ориентировочный… Java, Разработка под Android ∙ 24 дня 21 час назад ∙ 31 ставка |