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 місяців. Орієнтовний бюджет: 150 000 грн.… Java, Розробка під Android ∙ 25 днів 6 годин тому ∙ 31 ставка |