GrGen - GrGen

GrGen.NET
Grgen-256.png
ПарадигмаМультипарадигма: декларативный, императив, объектно-ориентированный
РазработчикСебастьян Хак, Рубино Гейсс, Мориц Кролл, Эдгар Якумейт и другие
Впервые появился2003 (2003)
Стабильный выпуск
GrGen.NET 4.5 / 9 апреля 2017 г.; 3 года назад (2017-04-09)
Печатная дисциплинаСтатичный, частично динамичный, сильный, безопасный, именительный падеж
Операционные системыКроссплатформенность (мультиплатформенный)
ЛицензияСтандартная общественная лицензия ограниченного применения GNU
Интернет сайтGrgen.сеть
Отладка последовательности, генерирующей снежинку Коха (правила слева, GrShell с выделенным текущим правилом ниже, yComp с выделенным совпадением на графике узлов справа)
Выполнение шага замены

GrGen.NET это инструмент разработки программного обеспечения что предлагает языки программирования (предметно-ориентированные языки ), оптимизированные для обработки структурированный граф данных. Ядро языков состоит из модульный правила перезаписи графа, которые построены на декларативный сопоставление и перезапись графа с образцом; они дополнены многими конструкциями, которые используются в императив и объектно-ориентированный программирования, и комплектуются языковыми устройствами, известными из базы данных языки запросов.

Перезапись графика Генератор компилирует языки в эффективные Сборки CLI (через C # -Code на промежуточном этапе), который может быть интегрирован через API в код, написанный на любом .NET-язык.GrGen может выполняться под Windows и Linux (Мононуклеоз необходимо) и является Открытый исходный код доступно под LGPL v3.

Для быстрого прототипирования и отладки интерактивный оболочка и (VCG-) просмотрщик графиков включены в пакет. Благодаря своим языкам и визуальной и пошаговой отладке, GrGen позволяет развиваться на естественном уровне абстракция представлений на основе графов, таких как используемые в инженерное дело, преобразование модели, компьютерная лингвистика, или конструкция компилятора (в качестве промежуточное представление ).

GrGen увеличивает продуктивность для такого рода задач намного больше, чем может быть достигнуто программированием на традиционном языке программирования; благодаря множеству реализованных оптимизаций производительности он по-прежнему позволяет получать высокопроизводительные решения. Его авторы утверждают, что система предлагает самую высокую комбинированную скорость разработка и исполнение доступен для алгоритмический обработка график -представления (основанные на их исполнении относительно разнообразных задач, поставленных на разных этапах конкурса Transformation Tool Contest (/ GraBaTs)).

Образец спецификации

Ниже приведен пример, содержащий модель графа и спецификации правил от GrGen.NET-решения до AntWorld-кейс позировал на Грабцы 08.

Модель графа:

класс узла GridNode {food: int; феромоны: int;}класс узла GridCornerNode расширяет GridNode;класс узла Муравейник расширяет GridNode {foodCountdown: int = 10;}класс узла Муравей {hasFood: boolean;}крайний класс GridEdge соединять GridNode [1] -> GridNode [1];крайний класс PathToHill расширяет GridEdge;крайний класс AntPosition;

Правила перезаписи:

правило TakeFood (curAnt: Ant) {curAnt -: AntPosition-> n: GridNode  AntHill; если {! curAnt.hasFood && n.food> 0; } модифицировать {        оценка {curAnt.hasFood = true; n.food = n.food - 1; }}}правило SearchAlongPheromones (curAnt: Ant) {curAnt -oldPos: AntPosition-> старый: GridNode <-: PathToHill- новый: GridNode; если {новые феромоны> 9; } модифицировать {удалить (oldPos); curAnt -: AntPosition-> новый; }}тест ReachedEndOfWorld (curAnt: Ant): (GridNode) {curAnt -: AntPosition-> n: GridNode  AntHill; отрицательный {n <-: PathToHill-; } вернуть (n);}

внешняя ссылка

Материалы конференции

Смотрите также