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.