POPART

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
    Simple
  • 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

POPART

The Pluggable and OPen Aspect RunTime (POPART) is available under GNU GENERAL PUBLIC LICENSE version 2.0 .

POPART is the first aspect-oriented runtime that provides a meta-aspect protocol. POPART is presented in the following paper to appear at AOSD 2009:

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: benchmark-report (opens in new tab)