Extensible languages: blurring the distinction between DSLs and GPLs

From LRDE

Revision as of 15:51, 18 June 2019 by Bot (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Abstract

Out of a concern for focus and concision, domain-specific languages (DSLs) are usually very different from general purpose programming languages (GPLs), both at the syntactic and the semantic levels. One approach to DSL implementation is to write a full language infrastructure, including parser, interpreter or even compiler. Another approach however, is to ground the DSL into an extensible GPLgiving you control over its own syntax and semantics. The DSL may then be designed merely as an extension to the original GPL, and its implementation may boil down to expressing only the differences with it. The task of DSL implementation is hence considerably eased. The purpose of this chapter is to provide a tour of the features that make a GPL extensible, and to demonstrate how, in this contextthe distinction between DSL and GPL can blur, sometimes to the point of complete disappearance.


Bibtex (lrde.bib)

@InCollection{	  verna.12.dsl,
  author	= {Didier Verna},
  title		= {Extensible languages: blurring the distinction between
		  {DSL}s and {GPL}s},
  booktitle	= {Formal and Practical Aspects of Domain-Specific Languages:
		  Recent Developments},
  publisher	= {{IGI} Global},
  editor	= {Marjan Mernik},
  isbn		= 9781466620926,
  doi		= {10.4018/978-1-4666-2092-6.ch001},
  year		= 2012,
  month		= sep,
  chapter	= 1,
  abstract	= {Out of a concern for focus and concision, domain-specific
		  languages (DSLs) are usually very different from general
		  purpose programming languages (GPLs), both at the syntactic
		  and the semantic levels. One approach to DSL implementation
		  is to write a full language infrastructure, including
		  parser, interpreter or even compiler. Another approach
		  however, is to ground the DSL into an extensible GPL,
		  giving you control over its own syntax and semantics. The
		  DSL may then be designed merely as an \emph{extension} to
		  the original GPL, and its implementation may boil down to
		  expressing only the differences with it. The task of DSL
		  implementation is hence considerably eased. The purpose of
		  this chapter is to provide a tour of the features that make
		  a GPL extensible, and to demonstrate how, in this context,
		  the distinction between DSL and GPL can blur, sometimes to
		  the point of complete disappearance.}
}