Language technology can be used in several ways to include domain-specificity into a hybrid kit for different audiences and situation. There are several opportunies for domain-specific``little languages''[#!bentley86!#], such as:
The following list illustrates some implementation choices:
Using Basic or C, the domain-specificity is offered as a library of parts.
C++ and Smalltalk make it easier to create frameworks and API's that shape components by inheritance and polymorphism.
Using macros or syntax extension capabilities in LISP and TCL, or using CPP, AWK or PERL, Yacc, or STAGE[#!cleaveland88!#] as preprocessor one adds concise, domain-oriented expressions to a standard language. These simplify parameter generation, consistent use of procedures and data, and creating data files, symbol-tables and other workproducts.
Yacc and Lex, LISP-based meta-compilers, and C-based Tree-Meta have been used in HP to produce a variety of instrument system programming languages. These configure and select parts of an instrument, create front-panel display and remote-port drivers, declare bindings to measurement routines, establish interfaces to higher-level analysis routines, and fill in data tables.
Within HP, practical systems combine several of these techniques at the same time, leading to some issues of consistency and interoperability. One way to ensure that several languages be consistent or interoperate, is to implement them using the same language kit, which can be embedded with the development and delivery environments. In addition to Lex and Yacc, small embedded interpreters (Xlisp, TCL, PERL) and simple-meta compilers (Tree-Meta, Pmeta) are quite attractive for this purpose.