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.