TigersEye
TigersEye is a framework for embedded DSLs.
The framework is the implementation of the Reflective Embedding Architecture (REA).
TigersEye implements a set of generic analyses and transformations. Further, it consists of a set of examples for embedded DSLs:
- Logo: a family of Logo dialects
- SimpleLogo: selection of the most important Logo commands
- CompleteLogo: contains most common Logo keywords (such as repeat, setpencolor, clearscreen)
- FunctionalLogo: Logo with lambda/functions (similar to the “do” keyword)
- ConcurrentLogo: Logo turtles will paint in parallel
- OptimizedLogo: executed sequential Logo programs in paralle (a static optimization that speculates to optimize every function application)
- AdaptiveOptimizingLogo: takes into account a dynamic optimization decision
- Analyses/Transformation: generic syntax check analysis, coding conventions for Logo, semantic validation analysis, syntactic sugar transformation
- FsmDSL: an embedding of a DSL for the specifation of finite state machines
- Functional: an embedding of lambda
- Structural: an embedding of simple data types
- Environment: an embedding of first-class environments
Alternative semantics for aspect-oriented abstractions can be defined by language designers using extensible aspect compiler frameworks. However, application developers are prevented from tailoring the language semantics in an application-specific manner. To address this problem, we propose an architecture for aspect-oriented languages with an explicit meta-interface to language semantics. We demonstrate the benefits of such an architecture by presenting several scenarios in which aspect-oriented programs use the meta-interface of the language to tailor its semantics to a particular application execution context.
- You can find the examples in de.tud.example.aosd2009
- The POPART architecture classes (from Sec. 3.2) can be found in de.tud.stg.popart.aspect.*
- The Debugging Meta-Aspect (from Sec. 4.1) can be found in de.tud.stg.popart.aspect.extensions.DebugMetaAspect
- The Ordered Meta-Aspect Manager (from Sec. 4.2) can be found in de.tud.stg.popart.aspect.extensions.OrderedAspectManager
- The PhoneManagementSystemComparator (from Fig. 12) can be found in de.tud.stg.popart.example.aosd2009.phone.PhoneManagementSystemComparator
- The Dynamic Meta-Aspect (from Sec. 4.3) can be found in de.tud.stg.popart.aspect.extensions.DynamicAspect
DSL Benchmark Contest
This an open source benchmark that compares different DSL approaches.
See documentation: (opens in new tab) benchmark-report