The design of SDF is the result of a number of requirements. This page discusses
these requirements.
Completeness of Syntax Definition
All aspects of the syntax of a language are defined in one specification and
in one formalism. This entails that lexical syntax, context-free syntax and
disambiguation information are all specified in the same formalism.
In contrast to LEX/YACC where lexical and context-free syntax
are defined in separate formalisms.
Orthogonality
Features that are available for some type of expression in one context should
be available for that type of expression in another context as well and should
mean the same thing.
For example, the iteration construct {A B}* should mean the same thing when
used in lexical syntax or context-free syntax.
Modular
It should be possible to extend a syntax definition with additional productions,
i.e., syntax definitions should be modular.
Expressive
Frequently occurring syntax patterns such as lists and optionals should not
have to be defined every time. In other words SDF should support the common
extensions of Extended BNF.
Extensible
The formalism itself should be extensible. It should possible to add some new abstractions to the formalism.