Appendix A. A Tutorial D Grammar
I never use a big, big D—
—W. S. Gilbert: HMS Pinafore (1878)
This appendix gives for purposes of reference a simple BNF grammar for Tutorial D relational expressions and assignments. Details of nonrelational expressions, including aggregate operator invocations in particular, are omitted, and so are definitional operations such as those used to define base relvars and constraints. The following are also omitted:
SUMMARIZE, because (as explained in Chapter 5) this operator is somewhat deprecated
Aspects of the language not discussed in the body of the book
Also, the grammar is simplified in certain respects. In particular, it makes no attempt to say where image relations can and can’t be used, nor does it pay any attention to operator precedence rules. (As a result of this latter point, certain constructs permitted by the grammar—for example, the expression r1 MINUS r2 MINUS r3—are potentially ambiguous. Additional syntax rules are needed to resolve such issues, but such rules are omitted here. Of course, parentheses can always be used to guarantee a desired order of evaluation anyway.) A few further points of detail:
All syntactic categories of the form <... name> are assumed to be <identifier>s and are defined no further here.
Although the category <bool exp> is left undefined, it might help to recall that a relational comparison in particular is a special case.
As usual, all of the various commalists mentioned are allowed to be empty.
Expressions
<relation ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access