Frag is a dynamic programming language, specifically designed for the following tasks:
Tailorable Language: Frag provides an object system that is easily tailorable to new design
or programming situations.
Hence, it is easy to use Frag for building new languages (such as DSLs),
or integration with other languages (such as Java) or object systems
(such as the UML2 meta-model).
Building Domain-Specific Languages (DSLs):
Frag provides features to easily tailor its syntax to build new language
features or adapt existing ones - to build a concrete DSL syntax -
and Frag supports building meta-models in
Frag - to define a DSL's abstract syntax.
Supporting Model-driven Development (MDD):
Frag is designed to build DSLs and meta-models - two essential ingredients of
MDD. Furthermore, it can be used in combination with code generators, or to build
custom code generators.
Embeddable Language:
Frag is easily embeddable in the Java language in which it is implemented,
and it is also easily extensible using Java classes. Hence, it can be used e.g.
as a composition and configuration language for Java programs.
Even though Frag is designed for these tasks, it can also be used for many other
(e.g. general purpose) programming and design task. But there are also certain
limitations: For instance, the performance of some language elements in Frag are
inferior compared to native Java. In such cases it is advisable to build only the
high-level application parts in Frag, and more low-level parts in native Java.
There are the following resources to start working with Frag: