The project's aim is to ease design and implementation of domain
specific programming languages.
Combining expertices and representing expertice in a reusable form
are major concerns.
Howard language interpreters can be built with a tool, dulce, which
is described here. A scanner, a parser, and a type checker are
shared by all interpreters built with it. Contrary to other tools,
dulce cannot be used to build interpreters for general,
dulce implements some language design decisions that are common to
all the languages classified as Howard languages: decisions
pertaining to syntax and typing.
GNU C (with extensions) is the implementation language of dulce as
well as of all interpreters built with it.
Connect to SourceForge,
project dulce, to download
The common syntax pattern is essentially a variation over usual
function composition - e.g. composition of f and g as in
f(g(x)), rather than as in f ° g (or: g ; f somewhere).
Structured statements and some aspects of objects instantiations are
covered by this kind of composition. The corresponding notion of
objects allows members to be class-like.
Types are used in description of operations, i.e. in syntax
rules. Operations may be polymorphic, i.e. operations may apply to
operands of various types, typically restricted by some relation
among operand- and result-types. Externally defined operations may
introduce new type operators.
The common syntax pattern is used to combine externally and
internally defined operations. However, internally defined
operations cannot (yet?) introduce type operators that require type
A concious effort is required to learn the principles behind the
common syntax pattern.
Beware of two pitfalls concerning the syntax pattern:
it may be seen as too simple to deserve close attention.
it breaks with a basic principle of mathematical notation.