WG211/M13VanWyk
The value that domain-specific languages provide to their users is the domain-specific features they contain. These features provide notations from the domain of interest, as well as domain-specific analyses and optimizations. But domain-specific languages are sometimes a poor means of delivering these features to their users. An alternative approach is to provide domain-specific language features to programmers as composable language extensions that they can easily and reliably import into their general-purpose programming language, such as C or Java.
AbleC is a extendible specification of ANSI C into which programmers can import such extensions; examples include algebraic data types as in ML or Haskell, regular expression operators and literals as in Perl or Python, and matrix operations as in MATLAB. A distinguishing characteristic of AbleC is the modular analysis that extension developers can perform on their extension specifications to ensure that a working translator can be generated from the programmer chosen set of independently developed language extensions. These analyses ensure that the composed specification will define a deterministic parser and scanner and a well-defined attribute grammar for semantic analysis and translation. Thus, the programmer has some assurance that the language extensions that they choose will, simply, work well together.