Какой метод стоит за функцией генерации кода инструментов UML? - PullRequest
1 голос
/ 28 июня 2010

Я студент инженерного факультета и принимаю решение о моем последнем проекте.

Одним из многих кандидатов является онлайн-инструмент UML со средствами генерации кода.Но я не брал классы разработки компилятора, поэтому я не очень осведомлен о методах генерации кода.

Я хочу знать о методах, которые я должен изучать, чтобы создать что-то подобное.Если эти методы так же сложны, как написание компилятора, возможно, мне придется отказаться от этой идеи.

Ответы [ 5 ]

3 голосов
/ 28 июня 2010

Компиляция действительно противоположна виду генерации кода, который вы описываете , поэтому я не думаю, что вам нужно знать, как написать компилятор.

Генерация кода может быть такой простой, как объединение текстовых строк или с использованием шаблонов , или такой сложной, как использование Reflection.Emit для создания классов во время выполнения.

Я бы начал с этой статьи в Википедии .

2 голосов
/ 29 июня 2010

Создание инструмента UML - это долгосрочный проект. Вам нужно много, чтобы приобрести разные экспертные знания, которые не могут быть известны только одному члену команды. Ваш академический проект слишком амбициозен.

Простой проект, который никогда не был выполнен, - это сгенерировать код из диаграммы активности или состояния. Вы не должны пытаться воссоздать графический редактор, потому что это очень очень сложно, а только взять экспорт xmi и сгенерировать из него код, используя анализатор xml. Это был бы хороший проект на 6 месяцев для вашей диссертации: -)

1 голос
/ 28 июня 2010

Большинство инструментов UML генерируют исходный код. Генерация, как правило, немного проще, чем компилятор. Например, диаграмма классов будет иметь коллекцию структур данных, представляющих классы и связи между этими классами (наследование). Чтобы сгенерировать вывод, вы проходите через объекты класса, и для каждого вы «распечатываете» представление этого объекта в синтаксисе целевого языка.

0 голосов
/ 11 июля 2010

Вы можете найти это здесь: http://yuml.me и http://askuml.com

0 голосов
/ 28 июня 2010

Я не уверен, какие именно возможности потребуются для генерации вашего кода, но инструменты UML, которые я использовал, не очень сложны в их генерации кода.ваши имена функций в них с аргументами, полученными из входных данных.Это не потребовало бы никакого понимания компиляторов.Большая часть трудностей связана с пользовательским интерфейсом и тем, как вы храните данные, чтобы упростить генерацию кода.

...