посоветуйте архитектуру
От: v_su Мухосранск  
Дата: 08.11.10 15:44
Оценка:
Предыстория

Есть некий программный пакет П1 с входным языком Я1. Для удобного использования этого пакета я решил расширить его язык. Расширение заключается в добавлении дополнительных режимов к существующим командам языка. Команда в расширенном режиме разворачивается в набор команд на том же входном языке Я1. Алгоритмов генерации таких наборов может быть несколько (назовем их А1,А2,...) Для всего этого я создал dsl на ruby, который максимально близко повторяет синтаксис Я1. Так же реализовал несколько сменных алгоритмов. Все вроде худо-бедно работает.

Сейчас я решил расширить функционал своей поделки т.к. помимо моего любимого пакета П1 существует еще куча пакетов П2,П3,... со своими Я2,Я3,... которые умеют то что не умеет П1. Так же я хочу свои данные на Я2 которые я хочу обработать на П1. Все языки декларативные, по функциональности все достаточно похожи но есть и различия.

Хотел было дописать существующий код, но увы, понял что лучше начать сначала и по правильному

Планируя реализацию я решил что пока ограничусь Я1,Я2,Я3 и парой алгоритмов. Для языков буду создавать их dsl-аналоги ДЯ1..ДЯ3 на ruby (это упрощает разбор синтаксиса). Так же поразмыслив пришел к выводу что количество ДЯ и Я может и не совпадать и вообще это суть разные вещи.

Вопрос

Мой вопрос заключается в том как оптимальнее построить архитектуру приложения с такими требованиями:

1. Из любого из ДЯ1..ДЯ3 получать файл на любом из Я1..Я3 при помощи любого из А1..А2
2. Возможность как можно более безболезненного добавления новых элеметов в систему: нового входного языка(ДЯ), нового выходного языка(Я), нового алгоритма
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.